BMAD-METHOD/bmad/bmm/agents/hand-off/PRD.md

5.9 KiB
Raw Blame History

PRD: AI Journaling → LinkedIn Posts (Mobile-first MVP)

Version: 2025-10-07 Author: Business Analyst (Mary)

Purpose

Provide a clear product requirements document for an AI-driven mobile-first journaling app that helps professionals capture text and voice entries, transcribe audio, and convert entries into LinkedIn-ready posts using OpenAI. The product is privacy-first (local-first default), integrates with Whisper for transcription and LinkedIn for publishing, and is designed to be built by a single operator with $5k for API/infra costs over a 3-month MVP timeline.

Scope

MVP includes:

  • Local-first journaling (text), tags, search, offline support
  • Audio recording and Whisper transcription (basic pipeline)
  • OpenAI-driven post generation with 3 tone presets (professional, thoughtleadership, casual)
  • Draft editor with redaction/anonymize toggle
  • LinkedIn OAuth + publish endpoint; fallback share flow for demos
  • Basic analytics: entries, conversions, publish counts
  • Privacy & retention settings (default: 90 days) and consent logs

Out of scope (MVP):

  • Full cloud sync by default (opt-in only)
  • Advanced analytics/engagement metrics
  • Scheduled posting, multi-language support

Success metrics (for MVP validation)

  • Product usage: 100 active users generating 13 posts/week within 1 month of launch
  • Cost control: Average generation + transcription cost ≤ $0.50 per active user per week
  • Retention: At least 25% of users use the app weekly after 30 days
  • Time to post: From entry capture to publish ≤ 5 minutes (happy path)
  • Privacy: No raw audio retained server-side beyond TTL; users can export and delete data

Personas

Primary

  • Senior Product Manager at a mid-size SaaS company. Busy, wants to turn daily learnings into LinkedIn posts to build credibility.

Secondary

  • Individual contributors (engineers/designers) who want to document wins and publicize insights.
  • Consultants/freelancers who want to showcase work and build networks.

User Journeys

  1. Quick Text Capture
  • User opens app → taps + → writes a short entry → tags → saves locally.
  • User taps Convert → selects tone → app generates variants → user edits → Publish (LinkedIn or fallback).
  1. Voice Capture → Transcribe → Convert
  • User records audio (2060s) → uploads via signed URL → Whisper transcribes → client displays transcript → user edits/anonymizes → Convert → Publish.
  1. Search & Reuse
  • User searches by tag/date → selects past entry → converts/adapts → publish or schedule.
  1. Privacy Flow
  • Default: everything stored locally. For cloud features, user explicitly opts-in and gives consent. Processing to OpenAI/Whisper occurs only after user confirms.

Functional Requirements

  • FR1: Create/Edit/Delete journal entries locally (offline-first). (MUST)
  • FR2: Tagging and full-text search across entries. (MUST)
  • FR3: Audio recording with playback & file persist. (MUST)
  • FR4: Signed upload flow for audio and serverless transcription job (Whisper). (MUST)
  • FR5: OpenAI proxy endpoint to generate 13 post variants with hashtags and CTA. (MUST)
  • FR6: Draft editor with inline edit and redaction, anonymize toggle. (MUST)
  • FR7: LinkedIn OAuth + UGC publish endpoint + fallback share flow. (MUST)
  • FR8: Settings for retention (default=90 days), anonymize behavior, telemetry opt-in. (MUST)
  • FR9: Processing logs (transcribe/generate/publish) and consent records. (MUST)

Non-functional Requirements

  • NFR1: End-to-end TLS for all network traffic. (MUST)
  • NFR2: Raw audio deleted from server storage within TTL ≤ 1 hour. (MUST)
  • NFR3: At-rest encryption for optional cloud sync. (MUST if cloud sync enabled)
  • NFR4: Scalable serverless functions with rate-limiting and quota enforcement. (MUST)
  • NFR5: Token and cost monitoring with alerts (monthly & per-day). (MUST)
  • NFR6: Client works offline; queue jobs for transcription when online. (MUST)

Data model (simplified)

  • Entry
    • id, user_id, text, tags[], created_at, updated_at, status (draft/published), audio_ref (optional), transcription_id
  • Transcript
    • id, entry_id, text, language, confidence, created_at
  • Variant
    • id, entry_id, text, hashtags[], tone, created_at
  • PublishEvent
    • id, entry_id, variant_id, provider, provider_id, status, timestamp
  • ConsentLog
    • id, user_id, action (transcribe/generate/publish), timestamp, consent_given

API summary (serverless)

Refer to SERVERLESS-API-SPEC.md for endpoints. Key endpoints:

  • /api/signed-upload (POST)
  • /api/transcribe/start (POST)
  • /api/transcribe/callback (internal)
  • /api/generate-post (POST)
  • /api/publish-linkedin (POST)
  • /api/usage (GET)
  • Store minimal personal data and only with explicit consent for cloud sync or publish actions.
  • Provide export (JSON/MD) and account delete routes. Ensure backups respect retention rules.
  • Provide clear privacy policy in app and during onboarding.

Constraints & Assumptions

  • Single operator builds/operates app; $5k budget for APIs & hosting. Use low-cost models and limit variants to control spending.
  • LinkedIn API access may require app review; implement fallback share flow for MVP.

Timeline & Milestones

  • M0: Prepare dev accounts, serverless skeleton (1 week)
  • M1: Core journaling + audio + signed upload (weeks 14)
  • M2: Transcription + generation + LinkedIn integration (weeks 58)
  • M3: Privacy, retention, testing & store prep (weeks 912)

Acceptance Criteria (overall)

  • All P0 FRs implemented and demoable in staging with sample LinkedIn publish (or fallback).
  • Processing logs and retention settings work as specified.
  • Cost per active user remains within estimated budget after 30 days of sample usage.

Open questions

  • Monetization specifics for paid tiers and pricing (deferred until validation).
  • Full cloud sync encryption approach for production-grade privacy (need architect input).

Document created for handoff and PRD review. Update owners and timelines as needed.