Home

Roadmap · living document · last updated 2026-05-12

Product roadmap

Source of truth for what's shipped and what's next. Regenerated every turn the agent ships meaningful work.

User journey

Where the user is in the loop right now. Each stage links to its screen or its milestone. Status pills reflect the current build state — not the design intent.

  1. 01Land
    Done

    Hero · paste link / drop file / pitch

  2. 02Drop
    Done

    URL, screenshot, PDF, repo, prompt

  3. 03Critique
    Done

    5 dim letters · radar · climb-next

  4. 04Chat with Steve
    Done

    Council chat · verdict · master prompt

  5. 05Pick a fix
    Done

    Sticky FixPicker beside the chat

  6. 06Save & see AIQ
    Done

    Continue CTA · login · auto-save · AIQ

  7. 07Build
    In progress

    Open the saved critique on dashboard

  8. 08Ship
    Not started

    Publish proof · evidence stamps (M2)

  9. 09Profile
    Done

    /v/handle · rolling AIQ · sparkline

  10. 10Share
    Not started

    LinkedIn · college · internship (M2.5)

Milestones

IDMilestoneStatus
M0App shell, auth, profiles, RLS baselineDone
M1Public `/aiq` methodology + rolling AIQ on profilesDone
M2Council scoring pipeline (5 voices, 5 dims, confidence intervals)Not started
M3Capstone rubric builder + dual-track submission viewNot started
M4Sponsor console + band-gated visibilityNot started

M0App shell, auth, profiles, RLS baseline

Done

Acceptance: Signup → profile created → `/v/:handle` renders empty state.

  • TanStack Start app shell with route tree
  • Lovable Cloud auth (email + Google), email confirmation required
  • `profiles` table with handle, display name, bio, mode
  • `user_roles` table + `has_role()` security-definer function
  • RLS deny-by-default on all 32 tables
  • `/v/:handle` renders for empty profile

M1Public `/aiq` methodology + rolling AIQ on profiles

Done

Acceptance: Picker has a "Deep scan" tab. Scan returns 3 picked voices (each with reason + deepest question) and a 5-dimension probe of the idea. Anchor pool trimmed 25 → 15. Forbidden-copy guard committed.

  • `/aiq` route exists
  • Download spec (.docx) + open canonical spec (.md) buttons
  • Render full aiq-spec.md verbatim (markdown → React, GFM tables)
  • Anchor TOC for the 12 sections
  • Council voice matrix renders as a real Word-like grid
  • Score band table shows 0–100 and 200–1000 in parallel columns
  • `/v/:handle` shows rolling AIQ score + band chip + "as of" timestamp
  • Sparkline renders from existing critique history
  • Anchors trimmed 25 → 15 (3 per discipline)
  • `councilProbe` server fn (Gemini 2.5 Flash, structured Zod output)
  • Picker "Deep scan" tab with reason + deepest question per voice
  • 5-dim probe (desirability / feasibility / viability / defensibility / ethics)
  • `src/lib/copy-rules.ts` — forbidden scarcity-copy patterns
  • Wire deep_scan context into `chatWithCouncil` system prompt

M2Council scoring pipeline (5 voices, 5 dims, confidence intervals)

Not started

Acceptance: A user can share their AIQ to LinkedIn / X / copy-link from `/v/$handle` with a generated OG card. Verified outcomes (internship, college app, job, client win, press) can be tagged to a critique and surfaced on a public, opt-in `/outcomes` wall feeding the homepage proof rail.

  • Migration: `scores`, `council_runs`, `rubric_versions` tables + RLS
  • Critique pipeline writes real `council_runs` + per-dim `scores` (rubric v2.0.0) on every successful grade; UI surfaces a "Council v2.0.0 saved" badge with `needs_review` flag
  • Edge function: pick 3 of 5 voices by declared project type
  • Edge function: 5-dim scoring with per-dim confidence interval (per-voice variance)
  • Project → 4-lens back-compat projection in `aiq.ts`
  • Drift / low-confidence dims flagged for human review before publish
  • Real global counter (pitches, countries, median AIQ, top climber) wired from `critiques` + `profiles` aggregates, cached 10 min
  • OG image route `/og/v/:handle.png` — score, band, radar, weakest lens
  • One-click share to LinkedIn / X / copy-link from `/v/$handle` and `/dashboard`
  • "Add to LinkedIn" deep-link prefilled with handle + tier
  • Migration: `outcomes` table (kind, note, proof_url, critique_id, public) + RLS
  • `/dashboard/outcomes/new` capture form
  • Public `/outcomes` wall (opt-in, moderated) feeding homepage `OutcomesRail`
  • `/v/$handle` CTAs: "Use as Common App link", "Use as Antler / YC application link"

M3Capstone rubric builder + dual-track submission view

Not started

Acceptance: Educator can author a rubric. Capstone submission shows school grade and AIQ side-by-side. School grade does **not** feed rolling AIQ.

  • Migration: `rubric_criteria` table + RLS for educator role
  • Migration: `capstone_submissions.school_score` jsonb column
  • `/educator/rubrics` builder UI (criteria, weights, anchors)
  • `/capstone/:id` dual-track view
  • Confirm school grade is excluded from `aiq_rolling` recompute

M4Sponsor console + band-gated visibility

Not started

Acceptance: Sponsor can filter builders by band/skills. Intro request routed via mentor with audit log entry.

  • `/sponsor` search with band, skills, track, region filters
  • Bounty visibility gated by band (Maker+ for paid, Architect+ for invite-only)
  • Intro request routed through mentor with accept/decline by builder
  • PII redaction enforced — no raw email exposure

Changelog

  • 2026-05-11Council 2.0 shipped: anchors trimmed 25→15, new `councilProbe` server fn, "Deep scan" picker tab with reason + deepest question per voice + 5-dim probe. `copy-rules.ts` guard added (NYU prof feedback: kill scarcity copy).
  • 2026-05-11`/roadmap` route added (renders parsed `status.md`). Roadmap docx now also written to `public/lwl-roadmap.docx`. Header nav link added.
  • 2026-05-10`/aiq` rebuilt to render full aiq-spec.md verbatim. Living roadmap docx generator added (`scripts/gen_roadmap_docx.mjs`). M0 + M1 marked done. First `/mnt/documents/lwl-roadmap.docx` shipped.
  • 2026-05-10`/aiq` summary page + spec download/open buttons added.
  • 2026-05-10AIQ v2 spec ratified at `.lovable/aiq-spec.md` (rubric_version 2.0.0). Word-doc export at `aiq-spec-v2.docx`.
  • 2026-05-10PRD rebuilt at `.lovable/plan.md` (22 sections).
  • 2026-05-11Launchpad polish: pitch field + tune row + council made chunky/visible (one bordered card under input). Council picker now syncs from typed pitch/URL into Deep scan (probeContext) and Auto chip surfaces the pitch it'\''s reading.
  • 2026-05-11Homepage: removed dead Agency band + flat footer. Added "The world is scoring" global AIQ strip (pitches, countries, median, top climber) and "What an AIQ unlocks" outcomes rail (internship, college app, LinkedIn). New M2.5 milestone (Share & Outcomes) added; journey strip on /roadmap now ends with Share.
  • 2026-05-11M1.5 closed: deep-scan probe (3 picked voices + 5-dim probe) is now plumbed from `CouncilPicker` → `CouncilChat` → `chatWithCouncil` server fn and injected as a `DEEP SCAN CONTEXT` block in the system prompt. Steve answers anchored to the probe's deepest questions, not just the critique JSON.
  • 2026-05-11M2 kicked off: shipped scoring-pipeline schema (`rubric_versions` seeded with `2.0.0`, `council_runs`, `scores` with confidence-interval columns + `needs_review` flag). All three deny-by-default RLS, owner-only on runs/scores, public read on rubric_versions. Added `getCouncilRunForCritique` server-fn reader so UIs can detect rubric version on rated critiques.
  • 2026-05-12M2 scoring pipeline wired end-to-end. `persistCouncilRun` server-fn writes one `council_runs` row + N `scores` rows (rubric_version=2.0.0, ±5 confidence band, `needs_review` when score<40, idempotent per critique+rubric). Critique page calls it after `saveCritique`, then re-fetches via `getCouncilRunForCritique` and surfaces a "Council v2.0.0 saved · N dims" badge in the result header (warns when any dim flagged `needs_review`).
AIQRoadmap