MVP + Phase 1 | Apple Notes Edition
⸻
🎯 Purpose
This document defines what must be built, using clear user stories and acceptance criteria across the three key journeys: • Client Experience • Candidate Experience • Recruiter Operations • Finance & Admin • AI & Automation • Legal & Contracts • Talent Reuse & Availability
These stories avoid UI descriptions — those belong in the UX Guide — and avoid technical specifics — those belong in the Architecture Guide.
⸻
🟦 EPIC 1 — Client Experience (SCRUM-36)
Goal: Clients must discover, evaluate, contract, and onboard talent instantly.
⸻
💬 Story CX-01 — Browse Blurred Profiles (Instant Match Entry)
As a client, I want to browse anonymized candidate cards so I can evaluate talent quality without revealing identities.
Acceptance Criteria: • Cards show blurred photo, initials, anonymized ID, skills, stack, timezone, rate. • PDFs appear blurred and non-downloadable. • Video thumbnail appears blurred. • Clicking opens a blurred modal with psychometric icons. • Scraping protections active (rate limit, Cloudflare). • Role-based visibility strictly enforced.
⸻
💬 Story CX-02 — Unlock Full Profiles After MSA
As a client, I want full profile visibility after signing the MSA so I can review detailed information securely.
Acceptance Criteria: • DocuSign signature → webhook → n8n → Supabase updates msa_status=true. • UI automatically unlocks full candidate view. • Reveals full video, unblurred PDF, full skill matrix, background summary.
⸻
💬 Story CX-03 — Instant Match Results
As a client, I want instant recommendations of currently-available talent so I can hire immediately without waiting days.
Acceptance Criteria: • “Available Now” filter returns candidates with status 🟢. • Sort by availability timestamp + reliability score. • If pool has < X matches → system triggers 48h curated shortlist flow.
⸻
💬 Story CX-04 — Thumbs Up / Down Feedback
As a client, I want to rate profiles quickly so the system learns my preferences.
Acceptance Criteria: • Feedback stored: client_id, candidate_id, value, timestamp. • Syncs to Airtable within 30 seconds. • Influences ranking on next refresh.
⸻
💬 Story CX-05 — Book Interviews (Cal.com)
As a client, I want to schedule interviews directly so I don’t depend on back-and-forth with recruiters.
Acceptance Criteria: • Inline booking modal. • Auto-sync to calendars. • Reminders at 24h and 1h. • Airtable field interview_status = scheduled.
⸻
💬 Story CX-06 — Review & Sign SOW
As a client, I want to sign a statement of work inline so hiring becomes seamless.
Acceptance Criteria: • SOW auto-generated with role, rate, duration, start date. • DocuSign inline signing. • Webhook updates Supabase sow_status=true.
⸻
💬 Story CX-07 — Stripe Payment
As a client, I want to pay instantly after signing so onboarding can start without delays.
Acceptance Criteria: • Stripe checkout loads inline. • Webhook updates payment_status=succeeded. • Invoice PDF URL stored in Supabase.
⸻
💬 Story CX-08 — Onboarding Dashboard
As a client, I want a clear progress tracker so I know exactly what comes next.
Acceptance Criteria: • Steps: MSA → SOW → Payment → Kickoff. • Confetti animation on completion. • Auto-updates via Supabase.
⸻
🟩 EPIC 2 — Candidate Experience (SCRUM-50)
Goal: Talent applies once, becomes reusable forever, and controls visibility.
⸻
💬 Story CA-01 — Apply Through WhatsApp or Web
As a candidate, I want to apply easily so I can join the TalentQuote pool with minimal friction.
Acceptance Criteria: • WhatsApp → n8n → Airtable creates record tagged “New”. • CV upload optional but recommended.
⸻
💬 Story CA-02 — CV Parsing
As a candidate, I want my skills extracted automatically so my profile is accurate without manual entry.
Acceptance Criteria: • GPT-4o extracts skills, seniority, languages, tools. • Accuracy ≥ 90%. • Parsed data stored in Supabase.
⸻
💬 Story CA-03 — AI Interview (Async)
As a candidate, I want to complete an interview at my own pace so I don’t depend on scheduling.
Acceptance Criteria: • Video or audio responses allowed. • n8n triggers psychometric analysis. • HeyGen generates intro video automatically.
⸻
💬 Story CA-04 — TalentScore (Basic)
As a candidate, I want a fair, lightweight evaluation so clients understand my communication style.
Acceptance Criteria: • Scores for empathy, clarity, confidence. • Stored in Supabase psychometrics. • Visible to recruiters, blurred to clients until MSA.
⸻
💬 Story CA-05 — Update Availability
As a candidate, I want to update my availability so I receive relevant opportunities.
Acceptance Criteria: • Toggle 🟢 🟡 🔴. • Auto-degrade to 🔴 after 72 hours without confirmation. • WhatsApp reminders triggered by n8n.
⸻
💬 Story CA-06 — Confirm Missing Skills
As a candidate, I want to validate skills the AI inferred so my profile remains accurate.
Acceptance Criteria: • WhatsApp prompt sent automatically. • 80% sync success within 5 minutes.
⸻
🟧 EPIC 3 — Recruiter Operations (SCRUM-81)
Goal: Recruiters approve, enrich, and manage reusable talent efficiently.
⸻
💬 Story RO-01 — Active Roles Sync
As a recruiter, I want roles to appear automatically so I don’t manually create records.
Acceptance Criteria: • Client form → n8n → Airtable creates role entry.
⸻
💬 Story RO-02 — Candidate Tracker
As a recruiter, I want to move talent across pipeline stages so I can maintain quality control.
Stages: New → Interview → Video → Approved → Published
Acceptance Criteria: • Moving stage triggers corresponding n8n workflow. • Supabase mirrors final state.
⸻
💬 Story RO-03 — Approve or Reject Candidates
As a recruiter, I want to validate final candidate quality so only strong profiles become visible to clients.
Acceptance Criteria: • Approval → candidate appears in Wized dashboards. • Rejection logged with reason.
⸻
💬 Story RO-04 — Video Generation Status
As a recruiter, I want to track HeyGen jobs so I know when a video needs attention.
Acceptance Criteria: • Status visible in Airtable. • Failed jobs trigger Slack alert.
⸻
💬 Story RO-05 — Verify Availability via WhatsApp
As a recruiter, I want automated availability checks so I don’t manually chase candidates.
Acceptance Criteria: • WhatsApp automation success ≥ 95%. • Non-response = auto-set to 🔴.
⸻
🟫 EPIC 4 — Finance & Admin (SCRUM-93)
💬 Story FA-01 — Stripe Invoices
As finance, I want invoices stored automatically so accounting becomes seamless.
Acceptance Criteria: • Webhook → Supabase stripe_events. • PDF URL stored securely.
⸻
💬 Story FA-02 — Client Subscriptions
As finance, I want subscription events synced so MRR/ARR stays consistent.
Acceptance Criteria: • Stripe → n8n → Airtable/Supabase update. • Sync runs daily.
⸻
💬 Story FA-03 — Failed Payments
As finance, I want alerts on overdue invoices so I can take action quickly.
Acceptance Criteria: • Slack notification if overdue > 7 days. • Retry attempts visible in dashboard.
⸻
🟪 EPIC 5 — Legal & Contract Infrastructure (SCRUM-120)
💬 Story LG-01 — MSA Signing
Acceptance Criteria: • DocuSign webhook validates signature. • Supabase updates msa_status=true.
⸻
💬 Story LG-02 — Store MSAs & SOWs
Acceptance Criteria: • Digital signature hash + timestamp stored. • Documents retrievable within 5 seconds.
⸻
🤖 EPIC 6 — AI & Automation Engine (SCRUM-112)
💬 Story AI-01 — Analyze Candidate Videos
Acceptance Criteria: • Scores stored in candidate_metrics. • Process completes in ≤ 60 seconds.
⸻
💬 Story AI-02 — Generate HeyGen Video
Acceptance Criteria: • n8n composes script + metadata. • HeyGen returns video. • Stored in Supabase and Cloudflare Stream. • Blurred pre-MSA, full post-MSA.
⸻
💬 Story AI-03 — Recommend Reusable Profiles
Acceptance Criteria: • Candidates with high performance + availability marked ⭐ Reliable. • Reuse acceptance rate ≥ 50%.
⸻
🟦 EPIC 7 — Talent Reuse & Availability (SCRUM-146)
💬 Story TR-01 — Store & Reuse Talent
Acceptance Criteria: • CVs + interviews stored for cross-client reuse. • Sync every 24 hours.
⸻
💬 Story TR-02 — Contract End Alerts
Acceptance Criteria: • Slack + dashboard alerts 30 days pre-end.
⸻
💬 Story TR-03 — Reactivate “Available Soon”
Acceptance Criteria: • Auto-set to 🟡 14 days before expected end.