| Transition | Status | Trigger |
|---|---|---|
| π΄ to π’ | Allowed | External barrier lifted |
| π‘ to π’ | Allowed | Founder provided data / decision / document / input |
| π’ to π΅ | Allowed | Task completed; commit landed |
| π΅ to anything | Forbidden | π΅ is irreversible |
| π’ to π‘ | Exception only | Requires written explanation in commit |
| π’ to π΄ | Forbidden | Cannot quietly punt to "external" |
| New π΄ | Forbidden | Personal has no external blockers as of 2026-05-07 |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PR.1 | Personal registration landing page at /personal/signup. Spec + copy delivered for frontend tab (TricksterMinister/ORBIS_PROJECT_V2); page voice grounded in Perplexity research. Closes when frontend ships. | B | 2026-05-08 | spec 7b28660 | |
| PR.2 | Phone (WhatsApp) verification flow: OTP via WhatsApp template, store in manager_profiles upon submit | B | 2026-05-07 | 6057cea | |
| PR.3 | Email verification flow: confirmation link sent via SES or similar, mark manager_profiles.email_verified | B | 2026-05-07 | d8f1c7b | |
| PO.1 | Personal-specific anketa: 10 questions, career-path focus. Final v3 grounded in Perplexity research (NYC hospitality recruiter questions, what pros track, contact-note habits, morning ritual, voice). Backend POST /api/personal/signup wired. | A | 2026-05-08 | ece68bf | |
| PO.2 | Submit handler: anketa response auto-creates manager_profile, fires intro WhatsApp template, schedules first daily strategic brief | B | 2026-05-07 | 0dd157c |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PT.1 | Decide trial duration and conversion model. DECISION 2026-05-08: 14 days for Personal Universal (pilots stay on 60d). Wired into config.personalTrialDays. | A | 2026-05-08 | 86e33f8 | |
| PT.2 | Trial activation + expiry behavior. DECISION 2026-05-08: auto-downgrade to free_limited tier at expiry; basic tools keep working, premium tools paused, WhatsApp checkout link sent. Per-tool gating follow-up. | B | 2026-05-08 | f115d18 | |
| PT.3 | Trial-end behavior: WhatsApp template "trial ending in 3 days", "trial expired - upgrade or downgrade to limited", actual feature gating in tools (gracefully degrade) | B | 2026-05-07 | 164acd3 |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PP.1 | Stripe checkout link creation for Personal monthly subscription. DECISION 2026-05-08: keep current STRIPE_PERSONAL_PRICE_ID as-is until first real paid Personal client. | B | 2026-05-08 | 86e33f8 | |
| PP.2 | Stripe webhook to manager_profiles.plan='paid' on checkout.session.completed. Idempotent. (Architecture exists in webhook/stripe.js - audit + extend) | B | 2026-05-07 | bac8af1 | |
| PP.3 | Subscription cancellation flow: WhatsApp command "ΠΎΡΠΏΠΈΡΠΊΠ°" or web cancel page, Stripe cancel_at_period_end, downgrade tools at period end | B | 2026-05-07 | c84fd17 | |
| PP.4 | Smart Drafter one-time addon checkout (price ID STRIPE_SMART_DRAFTER_PRICE_ID already in env). Activate on payment. Lifetime grant per stripe-client.js current config | B | 2026-05-07 | f528684 |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PD.2 | Wire lib/decision-support.js into Personal Universal: pre-send hook on send_email tool. DECISION 2026-05-08: enabled only for pilots (manager_profiles.pilot_cohort IS NOT NULL). Override via PD2_SCOPE env (pilot|all|off). | A | 2026-05-08 | 86e33f8 |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PE.1 | Synthetic E2E: full Personal signup-to-trial-to-paid flow on staging tenant. Run via test script that mocks WhatsApp + Stripe webhook. Verify all 4 manager_profile state transitions | B | 2026-05-07 | 689bd57 | |
| PE.2 | Real E2E: signup-to-paid + 5+ tools. DECISION 2026-05-08: subsumed by FG.5 family-georgia 8-week observation (same workflow on the nephew's real number); closes when FG.5 closes. | C | 2026-05-08 | decision only | |
| PE.3 | Real E2E: daily brief + weekly state + spending crons across one full week. DECISION 2026-05-08: subsumed by FG.5 family-georgia 8-week observation. | C | 2026-05-08 | decision only |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PC.1 | Identify first Personal client candidate. DECISION 2026-05-08: defer until family-georgia pilot week 7. Family-georgia is the only Personal pilot until then; non-family Personal client picked after we read 8-week observation results. | A | 2026-05-08 | 86e33f8 | |
| PC.2 | Soft-launch sequence + first-7-days failure-mode capture. DECISION 2026-05-08: merged into FG.5 family-georgia 8-week observation (same workflow, same failure-mode capture). | C | 2026-05-08 | decision only | |
| PC.3 | Final QA on a fresh test tenant before public/wider launch (analogue of Q.1 in Business plan). Folds in PE.2 + PE.3 | D | 2026-05-07 | ae107f9 |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PQ.1 | Verify all Personal crons respect quiet-hours rule (no Personal WhatsApp outbound before 10:00 AM local time per founder rule). Audit each of 9 Personal crons; add quiet-hours guard where missing | B | 2026-05-07 | 975fef3 | |
| PQ.2 | Document timezone handling: each manager_profile has timezone field; crons schedule send time in UTC but compare to manager local time before firing | B | 2026-05-07 | f461b47 |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PG-A | Audit trail event-bus emissions for Personal-side actions (career-radar email-classified, manager-spending-summary delivered, decision-support flagged, contact-reconnect drafted). Same fire-and-forget pattern as Business Watchdog audit trail. Estimated: 6 to 10 hours total | B | 2026-05-07 | 7b44aed | |
| PG-B | MVP/Pro scope. DECISION 2026-05-08: MVP = all tools, no caps. Pro split decided AFTER family-georgia exit-report informs which features hit cost ceilings or need limiting. | A | 2026-05-08 | decision only | |
| PG-C | Personal-side memory growth model. Verify agent_memory archival pattern handles Personal users at scale (each Personal user accumulates ~150 to 300 rows/month from morning briefs, weekly states, captured wins/incidents, contact memories). Companion to Business Universal GAP-I but Personal-specific | B | 2026-05-07 | 116af9b | |
| PG-D | Personal-side cron observability: route Personal cron failures into Sentry orbis-personal project (already wired via lib/sentry-router.js path detection but verify) | B | 2026-05-07 | 4e5e006 |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| PI.1 | manager_profiles.pilot_cohort + pilot_notes columns + admin-only endpoint to create a manager with trial_expires_at = now + Nd and no Stripe gate. Idempotent create-or-update by whatsapp_number | B | 2026-05-08 | 1605338 | |
| PI.2 | Bilingual system prompts: read manager_profiles.language (ka / en / ru) and inject the matching language directive into all Claude / Gemini prompts. Default stays en | B | 2026-05-08 | 1d8c04e | |
| PI.3 | Pilot weekly digest cron: every Sunday 18:00 UTC, scan all rows where pilot_cohort IS NOT NULL, summarize their week (tools used, sessions, errors, language quality) and WhatsApp the digest to the founder | B | 2026-05-08 | abedca7 | |
| PI.4 | First-job-seeker persona adaptations: when manager_profiles.persona = 'first_job_seeker', daily-strategic-brief leads with career-development not spending; career-radar tunes for first-restaurant-job not Senior Sommelier; spending tracker stays silent until expenses appear | B | 2026-05-08 | 649aca3 | |
| PI.5 | scripts/pilot-report.js exit-report scaffolding: takes a pilot_cohort tag + date range, dumps agent_memory + conversations_personal + agent_event_log rows for that cohort into a markdown report with usage counts, language quality flags, recurring failure modes | B | 2026-05-08 | e618a4b |
| ID | Task | Stage | Color | Date | Commit |
|---|---|---|---|---|---|
| FG.1 | Bilingual anketa for 17-year-old hospitality student. 8 final trilingual questions (EN+RU+KA). KA finalized by founder 2026-05-08. Frozen const in lib/family-georgia-anketa.js with field-target map; ready for WhatsApp anketa flow or PI.1 admin pre-fill. | A | 2026-05-08 | fdcb228 | |
| FG.2 | KA WhatsApp content for 4 lifecycle moments. Founder approved Claude KA drafts as-is. Free-form bodies (trial_warning + trial_expired) wired in trial-expiry cron with per-language switch. Meta-template submit (whatsapp_otp_code_geo + personal_onboarding_welcome_geo) deferred as separate operational task. | A | 2026-05-08 | 5579d0a | |
| FG.3 | Nephew onboarding data collected: full name, WhatsApp +995..., email, language preference (ka / en / mix), English level (1 to 10), pilot_cohort = 'family-georgia-1'. Inserted via PI.1 admin endpoint with trial_expires_at = now + 60 days | A | 2026-05-08 | ||
| FG.4 | Nephew consent + briefing: founder explains 2-month pilot, feedback collection at end, that this is not yet a finished product. Captured as a single row in agent_memory with type 'pilot_consent' | A | 2026-05-08 | ||
| FG.5 | Live launch + 8-week observation: signup -> WhatsApp anketa -> daily strategic brief tuned to first-job-seeker persona -> weekly digest to founder -> exit report at week 8 via PI.5. Folds in PE.2 + PE.3 real-execution | C | 2026-05-08 |