Design a premium, AI-powered Idea Evaluation & Founder Guidance System that helps founders decide whether to pursue, pivot, or kill an idea — produces clear actionable next steps (not generic advice), feels like a sharp opinionated advisor (not a motivational coach), is simple and fast, and becomes something founders return to weekly for clarity and direction.
"A brutally honest, highly intelligent partner who understands me, my idea, and tells me exactly what to do next."
Diagnose BEFORE prescribing. Never generic. Every action must include exact people, exact scripts, exact assumptions to validate.
- Backend: FastAPI + Motor (MongoDB).
- LLM: provider abstraction in
backend/llm_provider.py. Switches viaLLM_PROVIDERenv var:emergent(default) — usesemergentintegrations+ Universal Keybedrock— usesanthropic[bedrock]SDK with AWS credentials- Both run in worker thread via
asyncio.to_threadto keep the event loop responsive.
- Auth: provider abstraction in
backend/auth_provider.py. Switches viaAUTH_PROVIDERenv var:emergent(default) — Emergent-managed Google OAuth, sessions indb.user_sessionsjwt— email + password (bcrypt) + signed JWT insession_tokencookie- Both share the same cookie name and
get_current_user_from_tokenAPI so the rest of the app is unchanged.
- Async job pattern for long-running LLM calls.
- LLM: provider abstraction in
- Frontend: React 19 + react-router-dom 7. Tailwind + custom CSS. No heavy UI framework — sharp editorial Swiss/Stripe-Notion feel.
- Calls
GET /api/auth/configonce on boot to detect provider; landing CTA + nav adapt automatically;/loginand/registerroutes are mounted only in JWT mode.
- Calls
- Storage: MongoDB collections — users, user_sessions (emergent only), ideas, diagnoses, checkins, diagnosis_jobs.
- First-time founder — needs bluntness about assumptions, less jargon
- Technical builder — push hard on distribution, not features
- Non-technical founder — push hard on scrappy validation without building
- Repeat founder — skip basics, go deeper on strategic risks
- ✅ Landing page (editorial, sharp, opinionated)
- ✅ Google Sign-in (Emergent OAuth) + founder-type picker
- ✅ 8-step progressive Idea Intake
- ✅ Async AI Diagnosis (Claude Sonnet 4.5): verdict (pursue/pivot/kill) + one-line headline + diagnosis + "what you're missing" insight + kill conditions + momentum signals + 4 scores (FMF/WTP/Momentum/Execution Risk) + competitor signal + 3-5 hyper-specific this-week actions with copyable scripts
- ✅ Dashboard with per-idea verdict badges, scores, streak
- ✅ Weekly Check-in flow — re-diagnoses based on what was done; verdict may flip
- ✅ Idea Evolution timeline (history of verdicts)
- ✅ Streak tracking (resets if >14 days between check-ins)
- ✅ Action toggle (mark done)
- ✅ Public Share link (
/share/:slug) — shows verdict + insight + scores + action titles/why ONLY; scripts (how) and assumptions redacted. Tweet/LinkedIn share buttons. Virality driver. - ✅ Export to PDF — browser print with dedicated print CSS (hides nav/buttons, pages diagnosis cleanly)
- ✅ .ics Calendar reminder — weekly recurring "Friday 9am" check-in invite, downloadable from idea page
- ✅ Revoke share link
GET /api/— healthPOST /api/auth/session— exchange session_id → session_token cookieGET /api/auth/me,POST /api/auth/logout,POST /api/auth/founder-typePOST /api/ideas|GET /api/ideas|GET /api/ideas/{id}|DELETE /api/ideas/{id}POST /api/ideas/{id}/diagnose→{job_id, status:"pending"}GET /api/ideas/{id}/diagnose/jobs/{job_id}→ polling endpointPOST /api/ideas/{id}/actions/{action_id}/togglePOST /api/ideas/{id}/checkinsGET /api/dashboard/summaryPOST /api/diagnoses/{id}/share|DELETE /api/diagnoses/{id}/shareGET /api/share/{slug}— PUBLIC, no auth
- Backend: 18/18 pytest passing (iteration 2). Async diagnose validated end-to-end. Polling non-blocking. Share redaction verified.
- Frontend: Landing + public share page verified via screenshot. Authenticated dashboard requires real Google OAuth in-browser.
- No per-user rate limit on
/diagnose(LLM spend risk) create_ideaand friends don't use FastAPIDepends()— boilerplate-heavy but works- Share slug uniqueness relies on
secrets.token_urlsafe(8)entropy (not DB-unique index) - EMERGENT_LLM_KEY budget exhausted during testing — user must top up at Profile → Universal Key → Add Balance
- P0: Server-side email reminders (SendGrid/Resend) for weekly check-ins — currently .ics only
- P0: Rate limiting + concurrent-job cap on /diagnose
- P1: "Delta summary" — AI-generated diff between weekly diagnoses ("Last week you were at KILL, this week PIVOT because…")
- P1: OG image generation for share pages (dynamic verdict card)
- P2: Founder referral loop ("invite 2 founders to get 1 free diagnosis")
- P2: Weekly email digest with top action + accountability nudge
- P2: Multi-idea portfolio view & idea comparison
- P2: Kill-log (archive of killed ideas + lessons)
- 2026-04-24: v1 shipped. Landing, intake, async diagnosis, check-ins, evolution, share, PDF, ICS, founder-type adaptation. Async job pattern to handle >60s LLM calls via preview ingress.