1. 🎯 Sprint Summary
| Sprint | 1.2 (M1 PSPA · Patient Symptom PA) |
| Duration | 25 May - 7 Jun 2026 (2 minggu · 10 working days) |
| Module | M1 PSPA — Patient Symptom Personal Assistant |
| Goal | Patient-facing chat UI · 3-tier AI triage (red/amber/green) · symptom intake · escalation logic · bilingual (BM/EN) · pre-arrival chart pre-fill · post-visit follow-up reminders |
| Capacity | 4 FTE (2 BE + 1 FE + 1 prompt eng) + 0.5 Founder + 1.0 Doc Zam |
| Velocity target | 52 SP — but M1 epic estimated 55 SP (slight overrun risk · scope-trim plan ready) |
| Blocked by | Sprint 1.1 (M9 audit + Patient model + auth — all MUST be in main) |
| Blocks | Sprint 1.3 (M4 Doctor PA needs M1 chat history + triage output) |
| Demo date | 7 Jun 2026 (Friday) · Doc Zam clinical review walkthrough |
Sprint motto: "Pasien tak patut tunggu kaunter just to be told ini bukan kecemasan." Triage at home, not at the queue.
2. 🚦 Pre-Sprint Gate Checklist
Run 24 May 2026 (Saturday) before Monday kickoff. Refuse start if any ✗.
- Sprint 1.1 demo passed · M9 audit + Patient 11-section model in main
- Auth + RBAC functional · patient role + JWT issuance verified
- Triage CPG approved by Doc Zam · red/amber/green criteria locked in writing
- OpenAI API key in vault · gpt-4o-mini quota ≥ 5M tokens budgeted
- BM symptom corpus seeded · 200+ Malaysian colloquial symptom phrases tagged
- PII strip function from M9 reusable · symptom logs scrub names/IC before model call
- Feature flag
m1_triage_enabledcreated · default off until clinical sign-off - Citation enforcer guard rail validated · every triage answer must cite CPG source
- Mobile staging URL ready · m1-staging.medieco.alesa.my (LSWS subdomain)
- UX flow walked-through dengan Doc Zam · 3 personas mapped (acute / ambulatory / chronic)
3. 📋 Prerequisites
| Item | Owner | By | Why |
|---|---|---|---|
| CPG Triage Decision Tree v1 | Doc Zam | 23 May | Without this, AI hallucinates triage tiers |
| Patient onboarding flow wireframe | FE Lead + Doc Zam | 23 May | Sets expectation for 8-screen flow |
| Tailwind component library v1 | FE Lead | 22 May | Re-use Sprint 1.1 design tokens |
| Phone OTP gateway (WAHA) | BE | 24 May | Patient login = phone+OTP, no email |
| Bilingual prompt templates v1 | Prompt Eng | 24 May | BM-rojak handling + English fallback |
| Red-flag symptom blocklist | Doc Zam | 23 May | Auto-route to red tier · no AI judgement |
4. 🚥 Triage Logic — Locked Specification
3-tier triage with hard-coded blocklist (red) and AI judgement (amber/green). Every classification stored with citation + confidence + Doc Zam-approved CPG ref.
RED · Acute — Auto-classify if any blocklist symptom detected. Bypass AI. Show emergency screen + 999 button + nearest hospital GPS + "Pergi ke kecemasan SEKARANG". Examples: chest pain + shortness of breath, sudden one-sided weakness (FAST stroke), uncontrolled bleeding, anaphylaxis, suicidal ideation, severe pediatric fever <3mo.
AMBER · Same-Day — AI classification. Show: "Doktor patut tengok ko hari ini." Auto-book next available slot at registered clinic. Push WhatsApp reminder. Examples: persistent fever 3+ days, moderate dehydration, painful urination, asthma exacerbation (mild-mod).
GREEN · Self-Care — AI classification. Show home-care advice + red-flag warning signs + "Kalau jadi lebih teruk, balik buat triage semula." Examples: common cold <3 days no fever, mild abdominal pain post-meal, minor abrasion.
Confidence floor: If AI confidence < 75% → escalate to next tier. Never under-triage on uncertainty.
Citation required: Every classification stores
HITL gate: First 100 patient encounters require Doc Zam review within 24h before unlocking auto-classify mode.
Citation required: Every classification stores
cpg_ref (e.g., MOH-CPG-Pediatric-Fever-2024-§4.2) + raw reasoning trace (PII-stripped).HITL gate: First 100 patient encounters require Doc Zam review within 24h before unlocking auto-classify mode.
5. 📅 Day-by-Day Plan (10 Days)
D1Mon 25 May · Kickoff + Schema
Sprint planning ceremony · finalise SP estimates · DB migration:
Sprint planning ceremony · finalise SP estimates · DB migration:
symptom_intakes, triage_classifications, cpg_citations. Wire phone+OTP auth.D2Tue 26 May · Patient Onboarding UI
FE: 3-screen onboard (phone OTP, language pick, consent capture). BE: link patient to Patient model from M9. Prompt Eng: BM corpus prep.
FE: 3-screen onboard (phone OTP, language pick, consent capture). BE: link patient to Patient model from M9. Prompt Eng: BM corpus prep.
D3Wed 27 May · Symptom Intake Chat UI
FE: chat bubble interface · voice input optional · multilingual toggle. BE: streaming response endpoint /api/m1/chat with feature flag gate.
FE: chat bubble interface · voice input optional · multilingual toggle. BE: streaming response endpoint /api/m1/chat with feature flag gate.
D4Thu 28 May · Red Blocklist Engine
BE: hard-coded blocklist matcher · red-flag detection runs BEFORE LLM call. Unit tests for 50 blocklist phrases (BM + EN). Doc Zam reviews list → sign-off needed end of day.
BE: hard-coded blocklist matcher · red-flag detection runs BEFORE LLM call. Unit tests for 50 blocklist phrases (BM + EN). Doc Zam reviews list → sign-off needed end of day.
D5Fri 29 May · Amber/Green Classifier
Prompt Eng: classifier prompt · CPG citation enforcer · confidence threshold logic. BE: integrate gpt-4o-mini · token budget guard. End-of-week demo: red blocklist working.
Prompt Eng: classifier prompt · CPG citation enforcer · confidence threshold logic. BE: integrate gpt-4o-mini · token budget guard. End-of-week demo: red blocklist working.
D6Mon 1 Jun · Acute Escalation Flow
FE: red emergency screen (999 + GPS + map). BE: notify acute physician on-call (M3 Locator stub). Push notif via WAHA WhatsApp.
FE: red emergency screen (999 + GPS + map). BE: notify acute physician on-call (M3 Locator stub). Push notif via WAHA WhatsApp.
D7Tue 2 Jun · Same-Day Booking Integration
BE: amber path → query M7 admin slot availability (stub for now) · book + confirm. Pre-arrival chart pre-fill: symptom JSON appended to encounter.
BE: amber path → query M7 admin slot availability (stub for now) · book + confirm. Pre-arrival chart pre-fill: symptom JSON appended to encounter.
D8Wed 3 Jun · Post-Visit Follow-up Engine
BE: cron job 24h post-encounter · re-engage patient · "Apa khabar today?" feedback loop. Audit log every interaction (M9). End-of-day: feature-flag dry-run with internal team.
BE: cron job 24h post-encounter · re-engage patient · "Apa khabar today?" feedback loop. Audit log every interaction (M9). End-of-day: feature-flag dry-run with internal team.
D9Thu 4 Jun · HITL Review Dashboard
FE+BE: Doc Zam review console · queued classifications · approve/override/correct buttons. Override feeds back to fine-tune corpus. Acceptance test pass-through.
FE+BE: Doc Zam review console · queued classifications · approve/override/correct buttons. Override feeds back to fine-tune corpus. Acceptance test pass-through.
D10Fri 5 Jun · Hardening + Demo Prep
Bug fix · perf check (cold start < 2s · LLM < 4s p95) · E2E test suite green · staging frozen 5pm Friday. Demo deck prepped for Doc Zam Sat morning review.
Bug fix · perf check (cold start < 2s · LLM < 4s p95) · E2E test suite green · staging frozen 5pm Friday. Demo deck prepped for Doc Zam Sat morning review.
+Mon 7 Jun · Doc Zam Demo + Retro
9am demo · clinical sign-off · retro 11am · 1.3 kickoff prep 2pm.
9am demo · clinical sign-off · retro 11am · 1.3 kickoff prep 2pm.
6. 📦 Deliverables
| FR | Item | SP | Acceptance |
|---|---|---|---|
| FR-1.1 | Phone+OTP onboarding (3 screens) | 5 | Login < 30s · OTP via WAHA · session token issued |
| FR-1.2 | Bilingual chat UI (BM/EN toggle) | 8 | Streaming response · markdown render · voice input optional |
| FR-1.3 | Symptom intake form (structured) | 5 | 11-section patient profile auto-link · vitals (if wearable) |
| FR-1.4 | Red blocklist matcher (hard-coded) | 5 | 50+ phrases · < 50ms detection · 100% recall on tests |
| FR-1.5 | AI classifier (amber/green) | 13 | gpt-4o-mini · confidence floor 75% · CPG citation mandatory |
| FR-1.6 | Red emergency screen | 3 | 999 button · GPS routing · nearest hospital map |
| FR-1.7 | Amber same-day booking | 5 | Auto-book M7 slot · WAHA confirmation · chart pre-fill |
| FR-1.8 | Green self-care advice | 3 | CPG-cited home-care · red-flag warnings · re-triage CTA |
| FR-1.9 | Post-visit follow-up cron | 3 | 24h re-engage · feedback NPS · audit log |
| FR-1.10 | HITL review dashboard | 5 | Queue · approve/override · corpus feedback loop |
| TOTAL | 55 SP | Capacity 52 SP · scope-trim plan: defer FR-1.9 if Day-9 burn < 30% |
7. 👥 Team Capacity
| Role | Person | Allocation | Focus |
|---|---|---|---|
| Eng Lead / BE | — | 1.0 FTE | API + DB + auth integration |
| BE Dev | — | 1.0 FTE | Triage engine + booking integration |
| FE Dev | — | 1.0 FTE | Mobile-first chat UI · onboarding flow |
| Prompt Eng | — | 1.0 FTE | BM corpus · classifier prompt · CPG enforcer |
| Founder | Rosli | 0.5 FTE | Architecture + clinical alignment + retro |
| Clinical Lead | Doc Zam | 1.0 FTE (heavy) | CPG approval · HITL review · daily 30-min standup |
| QA | — | 0.5 FTE | E2E test · blocklist coverage · staging verification |
| DevOps | — | 0.5 FTE | m1-staging subdomain · WAHA gateway · OpenAI quota |
8. 🔔 Sprint Ceremonies
- Mon 25 May 9am — Sprint Planning (90 min): SP final · acceptance criteria walk · Doc Zam joins for CPG alignment
- Daily 9:30am — Standup (15 min): 3 questions per person · blockers escalated immediately
- Wed 27 May + Wed 3 Jun 4pm — Mid-sprint demo (30 min): show working WIP to Doc Zam · early correction
- Fri 29 May + Fri 5 Jun 5pm — Weekly retro (45 min): what worked · what didn't · 1 actionable improvement
- Mon 7 Jun 9am — Sprint Demo (60 min): Doc Zam clinical sign-off + stakeholder walk-through
- Mon 7 Jun 11am — Sprint Retro (60 min): velocity actual · estimation accuracy · risks for 1.3
9. 🩺 Doc Zam Sign-off Items
- Triage decision tree v1 — red/amber/green criteria locked, signed PDF in repo
- Red blocklist phrases (50+) reviewed and approved
- CPG citation map: each classifier output → MOH-CPG section ref
- 10 sample triage classifications HITL-reviewed (5 amber + 5 green)
- Confidence threshold (75%) clinically acceptable
- Escalation path (acute → emergency screen) tested live
- Bilingual prompt outputs reviewed for clinical correctness (BM rojak handling)
- Post-visit follow-up message templates approved
- Patient consent language reviewed (PDPA compliant)
- Final demo (7 Jun) — clinical sign-off in writing before 1.3 starts
10. 🎬 Demo Agenda — 7 Jun 2026 9am
| Time | Segment | Lead |
|---|---|---|
| 0-5 | Welcome · Sprint goal recap · velocity actual vs target | Eng Lead |
| 5-15 | Live patient onboarding (phone OTP → consent → first chat) | FE Dev |
| 15-25 | Live triage demo: 1 red (chest pain), 1 amber (fever), 1 green (cold) | BE + Prompt Eng |
| 25-35 | HITL dashboard walk · Doc Zam review console | FE Dev |
| 35-45 | Edge cases: BM rojak, low-confidence escalation, pediatric override | Prompt Eng |
| 45-55 | Audit log + PII-strip check (M9 integration verified) | BE |
| 55-60 | Doc Zam Q&A · sign-off / blocker call | Doc Zam + Founder |
11. 🛡️ Contingency
| Risk | Trigger | Response |
|---|---|---|
| Velocity overrun (55 vs 52 SP) | Day-9 burn < 30% | Defer FR-1.9 (post-visit cron) to 2.1 · keep MVP triage path |
| OpenAI quota exhausted | Token usage > 80% | Switch to local Llama 3.1-8B on dev server · degrade gracefully |
| BM corpus inadequate | Confidence < 75% on > 30% queries | Add 100+ phrases overnight · re-prompt · second-pass |
| Doc Zam unavailable | Clinical sign-off slip | HITL queue accumulates · feature flag stays off · ship with internal-only |
| Mobile UX broken | QA finds critical UX bug Day 9 | Hotfix Day 10 morning · accept 2hr scope cut |