Background & Context
Under GDPR and CCPA regulations, users must be able to request and download a complete copy of their personal data. Currently, compiling all user data (meetings, transcripts, action items, organizations, and AI summaries) on-the-fly during a single HTTP request will result in timeouts for power users. We need to leverage our existing bullmq infrastructure to process data export requests asynchronously in the background.
Acceptance Criteria
Technical Implementation Notes
- Dependencies: You may need to introduce a library like
archiver or jszip to handle the creation of the .zip file within the worker.
- Security: Ensure the generated download link is authenticated or uses a secure, expiring presigned URL. Do not expose static files publicly.
- Error Handling: If the worker fails, it should retry automatically (configured via BullMQ) and eventually send a failure notification email if all retries are exhausted.
Out of Scope
- Account deletion (right to be forgotten). This is handled in a separate epic.
- Exporting raw audio/video files (only transcripts and structured data are required for this iteration).
{
"assignedAt": null,
"lastActivityAt": null,
"reminder12SentAt": null,
"reminder18SentAt": null,
"expiredAt": null,
"welcomeSentAt": "2026-07-13T17:25:22.326Z",
"welcomeSource": "claim",
"guidance": {},
"processedClaimCommentIds": [
4960720933
],
"processedUnclaimCommentIds": []
}
Background & Context
Under GDPR and CCPA regulations, users must be able to request and download a complete copy of their personal data. Currently, compiling all user data (meetings, transcripts, action items, organizations, and AI summaries) on-the-fly during a single HTTP request will result in timeouts for power users. We need to leverage our existing
bullmqinfrastructure to process data export requests asynchronously in the background.Acceptance Criteria
data-export-queueis initialized inserver/services/queueService.js.POST /api/user/request-data-exportis created, which adds a job to the queue and returns a202 Acceptedresponse.userIdacross all relevant collections (User, Meetings, Memberships)..ziparchive..zipfile is securely saved to a temporary local directory or a cloud storage bucket (e.g., AWS S3).nodeMailerservice to send an email to the user containing a secure, time-limited download link.Technical Implementation Notes
archiverorjszipto handle the creation of the.zipfile within the worker.Out of Scope
{
"assignedAt": null,
"lastActivityAt": null,
"reminder12SentAt": null,
"reminder18SentAt": null,
"expiredAt": null,
"welcomeSentAt": "2026-07-13T17:25:22.326Z",
"welcomeSource": "claim",
"guidance": {},
"processedClaimCommentIds": [
4960720933
],
"processedUnclaimCommentIds": []
}