130 lines
5.9 KiB
Markdown
130 lines
5.9 KiB
Markdown
# User Stories (Expanded) — Top tickets expanded into stories with Acceptance Criteria and Tasks
|
||
|
||
Convert each ticket into user stories using the persona. These are ready to copy into your tracker.
|
||
|
||
## Story 1 (T1.2) — Local DB & journaling core
|
||
Title: As a Senior PM, I want to create/edit/delete journal entries offline so I can capture thoughts quickly.
|
||
Priority: P0 | Estimate: 20h
|
||
Acceptance Criteria:
|
||
- I can create a new entry (title optional) and save it offline.
|
||
- The entry appears in my list immediately with timestamp.
|
||
- I can edit and delete an entry; deleted items move to soft-delete state.
|
||
- Search returns entries by text and tag.
|
||
Tasks:
|
||
- Choose local DB (SQLite/WatermelonDB) and implement models
|
||
- Implement CRUD operations and local persistence
|
||
- Add full-text search index
|
||
- Write unit tests for CRUD and search
|
||
|
||
## Story 2 (T1.3) — UI: Home/New Entry/Entry Detail/Tags
|
||
Title: As a user, I want a quick-capture UI and easy navigation so I can record entries quickly.
|
||
Priority: P0 | Estimate: 18h
|
||
Acceptance Criteria:
|
||
- Home shows recent entries with quick + FAB to create new entry.
|
||
- New Entry screen supports multi-line text, tag picker, and save.
|
||
- Entry detail shows transcript/audio (if any), edit, convert button.
|
||
Tasks:
|
||
- Implement navigation stack and screens
|
||
- Build tag picker component
|
||
- Connect UI to local DB
|
||
|
||
## Story 3 (T1.5) — Audio capture UI & file storage
|
||
Title: As a user, I want to record voice clips and play them back so I can capture thoughts hands-free.
|
||
Priority: P0 | Estimate: 12h
|
||
Acceptance Criteria:
|
||
- I can record/pause/stop audio clips up to 2 minutes.
|
||
- Recorded files are stored locally and playable.
|
||
- A "Transcribe" button is available on the entry detail screen.
|
||
Tasks:
|
||
- Build audio recorder using React Native Audio APIs / Expo Audio
|
||
- Store files in app storage and link to entry
|
||
- Add playback UI and controls
|
||
|
||
## Story 4 (T1.6 + T1.7) — Signed upload & client-server integration
|
||
Title: As the system, I must upload audio securely to server for transcription so that the transcription service can process it.
|
||
Priority: P0 | Estimate: 16h
|
||
Acceptance Criteria:
|
||
- Client requests signed upload URL for audio and successfully uploads to storage.
|
||
- Server creates a transcription job and returns jobId.
|
||
- Client can poll job status or receive push when transcript is ready.
|
||
Tasks:
|
||
- Implement /api/signed-upload
|
||
- Implement client upload flow (PUT to signed URL)
|
||
- Implement /api/transcribe/start to queue job
|
||
- Implement job status polling or push notification
|
||
|
||
## Story 5 (T2.1) — Whisper transcription worker
|
||
Title: As the system, I need to transcribe uploaded audio using Whisper and delete audio after transcription.
|
||
Priority: P0 | Estimate: 12h
|
||
Acceptance Criteria:
|
||
- Worker downloads audio, calls Whisper API, returns transcript and confidence.
|
||
- Raw audio is deleted from storage after successful transcription (TTL enforced).
|
||
- Transcript stored and linked to entry; client notified of completion.
|
||
Tasks:
|
||
- Implement worker to call OpenAI Whisper (or choice of provider)
|
||
- Implement audio deletion post-success
|
||
- Store transcript and publish result to client
|
||
|
||
## Story 6 (T2.3 + T2.4) — OpenAI generation proxy & client convert UI
|
||
Title: As a user, I want the app to produce LinkedIn-ready post variants from my entry so I can share insights quickly.
|
||
Priority: P0 | Estimate: 22h
|
||
Acceptance Criteria:
|
||
- Server returns 1–3 variants with hashtags and CTA based on tone preset.
|
||
- Client displays variants; user can select and edit before publishing.
|
||
- Token usage is logged for cost monitoring.
|
||
Tasks:
|
||
- Implement /api/generate-post proxy with prompt templates
|
||
- Build client convert UI to show variants and allow edit
|
||
- Add token usage logging
|
||
|
||
## Story 7 (T2.5) — LinkedIn OAuth & publish
|
||
Title: As a user, I want to connect my LinkedIn account and publish posts directly so I can share without manual copy/paste.
|
||
Priority: P0 | Estimate: 16h
|
||
Acceptance Criteria:
|
||
- User can connect LinkedIn using OAuth and grant w_member_social scope.
|
||
- Server stores access token securely; server posts UGC and returns success.
|
||
- Fallback share flow available if OAuth not set up.
|
||
Tasks:
|
||
- Implement OAuth Authorization Code flow server-side
|
||
- Implement /api/publish-linkedin endpoint
|
||
- Implement client flow for connect and publish
|
||
|
||
## Story 8 (T3.1 + T3.2) — Retention, soft-delete & consent logs
|
||
Title: As a user, I want retention controls and clear consent logs so I can manage my data and privacy.
|
||
Priority: P0 | Estimate: 16h
|
||
Acceptance Criteria:
|
||
- User can select retention window (30/90/365/indefinite).
|
||
- Soft-delete moves items to a trash that is purged after TTL.
|
||
- Consent logs record processing actions with timestamps and are viewable/exportable.
|
||
Tasks:
|
||
- Implement retention settings UI
|
||
- Implement soft-delete and purge engine (local & server if synced)
|
||
- Implement consent log storage and UI
|
||
|
||
## Story 9 (T3.3) — Cost controls & quotas
|
||
Title: As the operator, I want quotas and usage alerts to control API spend.
|
||
Priority: P1 | Estimate: 8h
|
||
Acceptance Criteria:
|
||
- Admin can set daily and monthly quotas for generation and transcription.
|
||
- System enforces quotas and informs users when limits are hit.
|
||
Tasks:
|
||
- Add usage tracking in server logs
|
||
- Implement enforcement and UI alerts
|
||
|
||
## Story 10 (T3.4) — Build & store prep
|
||
Title: As an operator, I want TestFlight/Play Store builds and store assets prepared so we can release the MVP.
|
||
Priority: P1 | Estimate: 12h
|
||
Acceptance Criteria:
|
||
- Test builds available for iOS and Android
|
||
- Privacy policy ready and linked
|
||
- Store screenshots and descriptions prepared
|
||
Tasks:
|
||
- Package builds, create metadata, upload to TestFlight/Play Console
|
||
|
||
---
|
||
|
||
If you want, I will now:
|
||
- Create epic parent issues in GitHub and link these stories (requires GH access), and/or
|
||
- Convert each user story into GitHub issues with the acceptance criteria included (I can run the import once you confirm method).
|
||
|
||
Say which next action you want: "create epics in GH", "create stories in GH", or "export stories JSON". |