> ## Documentation Index
> Fetch the complete documentation index at: https://docs.founder-sherpa.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What's New

> Product updates and improvements to Founder Sherpa.

<Update label="Week of July 6, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "Import", "AI"]}>
  ### Coach beliefs as testable, drop confusing belief-vs-hypothesis contrast

  "Check with AI" on a belief sometimes produced advice like \*"you need to go beyond beliefs and form testable hypotheses.

  ### New-customer acquisition growth (compounding driver)

  Adds an optional **`new_customers_growth`** driver to the Financial Model so monthly new-customer acquisition compounds month-over-month — the exact twin of the existing `fixed_cost_growth`.
</Update>

<Update label="Week of June 29, 2026" description="Latest improvements" tags={["New Feature", "AI", "Import", "Improvement", "Bug Fix", "Admin"]}>
  ### Reconcile with Business Model + Market (live-derive, implied share, statement view)

  Stops the Financial Model from making founders re-enter (and silently desync) numbers the Business Model and Market tabs already capture — and reformats the projection to read like a financial stat...

  ### Direct labor into COGS + Engineering & R\&D

  Refines the Business Model cost structure to match how founders actually think about costs:

  ### "How this works" diagram + collapsible driver sections (BM · FM · Key Metrics)

  Adds a collapsible **"How this works"** driver-flow diagram (**inputs → what the model computes → results**) plus **collapsible driver sections** to the Business Model, Financial Model, and Key Met...

  ### Stop long persona names distorting the FocusCard hero

  When a persona has a very long, user-entered name, the project **Status** page's "Do this now" hero (`FocusCard`) distorts badly: the eyebrow and heading collapse to one word per line, and on mobil...

  ### Full-width problem statement + 4-line clamp with Show more

  The project status page was disorganized — the "what do I do now/next" answer (`computeNextActions`) sat **last**, under a worthiness headline, two cycle bands, a gap matrix, and a viability-gate c...

  ### Project status page IA redesign (journey spine + focus + consolidated map)

  From the project dashboard, the **Interview** action modal's **"Log interview"** navigated to `…/titles/[titleId]/evidence/new` with **no `hypothesisId`**.

  ### Choose a belief on evidence/new instead of redirecting (follow-up B)

  From the project dashboard, the **Interview** action modal's **"Log interview"** navigated to `…/titles/[titleId]/evidence/new` with **no `hypothesisId`**.

  ### Log interview dead-ends at hypothesis-less evidence/new

  From the project dashboard, the **Interview** action modal's **"Log interview"** navigated to `…/titles/[titleId]/evidence/new` with **no `hypothesisId`**.

  ### Capture multiple beliefs across personas in Step 3

  In the project-creation wizard, **Step 3 held a single hypothesis**.

  ### Stop long text overflowing modal edges

  The **Add interview → "Choose a persona"** modal clipped long persona names past its right edge (e.g. `Warehouse Operations Manager (User, Decider, Influenc…`) with no ellipsis.

  ### Add a Contact us link to the sidebar footer

  Adds a **"Contact us"** item to the sidebar footer resources group, directly beneath **Docs**, opening the mail client to `wegchu@founder-sherpa.com`.

  ### Persist project rail across all project routes

  Replaces the project tearsheet's **top horizontal tab strip** with a **persistent vertical secondary nav** (`ProjectSideNav`) shown on the Status dashboard/map *and* every detail view.

  ### Ground manual evidence analysis in project context

  The manual **"Analyze with AI"** on the evidence form judged a note against one hypothesis with **no project grounding**, while the transcript/discovery path is project-aware.

  ### Perf: remove serialized Server-Action read latency (dashboard, project, persona)

  Removes multi-second "data trickles in" latency on the dashboard and project pages. Root cause (measured against production): read data was fetched via **Server Actions on mount**, and Next.

  ### Single create-project CTA + chooser, two-cycle how-it-works

  Landing on an organization dashboard, users met **three competing buttons** ("Describe an idea" / "Import interviews" / "New project") with no clear default — confusing, especially for a brand-new org.

  ### Persistent vertical secondary nav on the project tearsheet

  Replaces the project tearsheet's **top horizontal tab strip** with a **persistent vertical secondary nav** (`ProjectSideNav`) shown on the Status dashboard/map *and* every detail view.

  ### Guided linear project-creation wizard

  Replaces the create-project sheet + the confusing three-way **"Tell me about your idea"** empty state with a **guided linear wizard** on its own page.
</Update>

<Update label="Week of June 22, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Admin", "Import"]}>
  ### Make subscriber-migration script resilient to per-sub failures

  Implements **Section E (Migration & rollout)** of the flat-fee rework.

  ### Section E — migrate live per-seat subs to flat fee

  Implements **Section E (Migration & rollout)** of the flat-fee rework.

  ### Relabel plan caps as included allowances (flat-fee Section D)

  Completes the remaining **Section D** items of the flat-fee billing master spec (items 2/3 — typed rate fields + Sync — shipped in Phase 2). Pure admin-UI copy + one tested helper.

  ### Flat-fee plans + storage metered overage (Phases 1 & 2)

  Implements **Section C** + the **Section D** rate-field/sync slice of the flat-fee billing master spec. Reinterprets \`billing\_plans.

  ### Three verdict-first blocks + consolidated next-action

  Reorganizes the project dashboard into three verdict-first blocks and consolidates all to-dos into one cross-cycle Next-action block.

  ### Cross-cycle go/no-go verdict on the dashboard (Arc B #5)

  The Arc B capstone: a flag-gated **Viability Gate** card on the project dashboard (below the viability cycle, above the gap matrix) that answers \*"is this worth pursuing, what's the weakest link, w\...

  ### Stop wide tab content scrolling the whole page on mobile

  **Reported:** horizontal scrolling on mobile across the Business Model, Financial Model, and Key Metrics tabs.

  ### Unit-economics tab — LTV, CAC, payback, LTV:CAC (Arc B #4)

  Adds support for businesses with a long pre-revenue gestation period (e.g.

  ### Gestation / commercial-launch delay + adaptive horizon

  Adds support for businesses with a long pre-revenue gestation period (e.g.

  ### Output-first layout — projection above assumptions

  Reorders the Financial Model tab so the **output leads** (BLUF / overview-first), per the layout review.

  ### Contribution-margin P\&L subtotals in projection

  The projection table currently shows a combined 'Costs (variable + fixed)' row + 'Net profit'.

  ### Financial Model: per-unit / per-year basis + units-per-customer driver

  Arc B sub-project #3. Evidence-driven, flag-gated Financial Model: driver assertions → 24-month projection with **break-even month** + **runway**.

  ### Arc B #3: Financial Model (projection + runway + break-even, flag-gated)

  Configure Supabase client, environment variables, and database connection pooling.

  ### Arc B #2: Business Model (evidence-driven, flag-gated)

  Initialize Next.js 14+ project with App Router, TypeScript, Tailwind CSS, and ESLint configuration.

  ### Market Analysis (Arc B #1) — manual + AI, flag-gated

  Layers AI drafting (grounded in the project's own discovery data + web research) and internal evidence linking onto the manual Phase 1 Market Analysis surface.
</Update>

<Update label="Week of June 15, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Import", "Admin"]}>
  ### Read subscription period from SubscriptionItem (2025+ Stripe API)

  Cancelling a subscription in prod (workspace `founder-sherpa`) showed **no status change** on the billing tab — no "your subscription will end on…" notice.

  ### Trial-only billing: no Free plan, trial → locked, per-seat + plan catalog

  Reworks billing into a **trial-only model** — there is no perpetual Free plan; every new workspace starts on a free trial of the entry paid plan (Starter), and when the trial ends (or a paid plan i...
</Update>

<Update label="Week of June 8, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Import", "Admin"]}>
  ### Plan features & metering — per-model credit weights, cap enforcement, feature gates, admin tooling

  Adds super-admin tooling to manage what each plan unlocks, plus the enforcement behind it.

  ### Relax UUID validation in comp.ts to accept all valid Postgres UUIDs

  The super-admin billing tools (`/admin/workspaces` → **Grant credits** / **Override plan**, and `/admin/billing-health` → **Dismiss**) validated ids with Zod's strict `z.string().uuid()`.

  ### Project setup reminder — nudge users to add their thesis + problem statement

  Adds a benefit-led, dismissible reminder card at the top of the project **Overview** that nudges users to fill in their **business thesis** (`description`) and **problem statement** (`context`) whe...

  ### Don't recommend 'Validate with AI' until a hypothesis meets the evidence minimum

  The project dashboard's **Suggested Next Action** recommended "Validate your hypotheses with AI" as soon as a project had **any** evidence (and no insights yet), but AI validation requires a single...

  ### Upgrade Tailwind CSS v3.4 → v4.3 (CSS-first config)

  Migrates the app from Tailwind CSS 3.4 to 4.3 using the official `@tailwindcss/upgrade` codemod plus hand-fixes for the project-specific pieces.

  ### Hybrid import: reconcile interviews into an existing project

  Lets a user import interviews into an **existing** project.

  ### Phase 5: typography & voice polish — headings, mono numerals, sentence case

  > \[!NOTE] > **Low Risk** > Visual/token changes only—no auth, API, or data logic. Broad UI color shift may need visual QA across light/dark and existing hardcoded colors in components.

  ### Design system Phase 4: re-brand email + auth templates (tasks 4.1–4.5)

  Parent epic: #653

  ### Migrate remaining surfaces to design tokens + regression guard (Phase 3, PR D)

  Task 3.1 (PR A) of the \[design-system UI refactor plan]\(docs/strategy/plans/2026-06-10-design-system-ui-refactor-plan.

  ### Migrate components/admin + billing + settings + workspaces + invitations to design tokens (Phase 3, PR C)

  Task 3.1 (PR A) of the \[design-system UI refactor plan]\(docs/strategy/plans/2026-06-10-design-system-ui-refactor-plan.

  ### Migrate components/ai + import + evidence + interview-guides to design tokens (Phase 3, PR B)

  Task 3.1 (PR A) of the \[design-system UI refactor plan]\(docs/strategy/plans/2026-06-10-design-system-ui-refactor-plan.

  ### Design tokens sweep: components/projects + components/hypotheses (Phase 3, PR A)

  Task 3.1 (PR A) of the \[design-system UI refactor plan]\(docs/strategy/plans/2026-06-10-design-system-ui-refactor-plan.

  ### Design system phase 1: finish the token layer

  > \[!NOTE] > **Low Risk** > Visual/token changes only—no auth, API, or data logic. Broad UI color shift may need visual QA across light/dark and existing hardcoded colors in components.

  ### Design-system UI refactor plan + bundle ui\_kits component specs into the skill

  > \[!NOTE] > **Low Risk** > Visual/token changes only—no auth, API, or data logic. Broad UI color shift may need visual QA across light/dark and existing hardcoded colors in components.

  ### Add Value Proposition to the Interviews tab type filter

  The Interviews-tab hypothesis-type filter was hardcoded to three types — **Jobs to Be Done / Current Approach / Problem** — omitting **Value Proposition**, the 4th hypothesis type.

  ### UX Phase 3: Navigation / IA — read-map project view

  Realizes the **P3 "read/map demotion"** slice from the [UX Simplification master design](docs/strategy/2026-06-07-ux-simplification-design.md).

  ### Phase 2b: Import-First Onboarding (UX Simplification)

  Serves the **"I already did interviews"** founder. Drop transcript(s) on a brand-new project → the AI **discovers** people, beliefs, and evidence → confirm a **jargon-free** proposal → the dashboar...

  ### Phase 2a: Conversational Onboarding (UX Simplification)

  Makes first-run **conversational-first**: a founder describes their idea in plain language, the agent maps it onto personas + beliefs, and the dashboard reveals the structure as a payoff — no wizar...

  ### CoPilot 'Expand' loses chat history on fresh chats

  Opening the CoPilot, starting a **new** chat, then clicking **Expand to full screen** dropped the conversation — the full-screen view opened an empty chat.

  ### Phase 1: Project Status Dashboard (UX Simplification)

  Implements the user-facing UX redesign from the June 2026 strategy: stop demanding the domain ontology as *input* and reveal structure as *output*, applying **progressive disclosure** and a \*\*strea...

  ### Stop undefined .replace crash from static tool-call parts

  > Stacked on #922 (Seam 2/3). Base will retarget to `main` once #922 merges.

  ### Tool-call cards above the response with collapsed summary

  Phase B of the agent-native architecture strategy. Adds a per-workspace **inference mode** (`hosted` | `byo`) so a workspace can either use the platform's AI keys with metered credits (default) or ...

  ### Seam 2 + Seam 3: provider abstraction (BYO-key) + mode-aware metering

  Phase B of the agent-native architecture strategy. Adds a per-workspace **inference mode** (`hosted` | `byo`) so a workspace can either use the platform's AI keys with metered credits (default) or ...

  ### Seam 4 — command palette action layer

  Add a registry-driven **action layer** to the existing `Cmd/Ctrl+K` palette (`components/sidebar/CommandPalette.tsx`) so discovery verbs are reachable from anywhere with no navigation.
</Update>

<Update label="Week of June 1, 2026" description="Latest improvements" tags={["New Feature", "Bug Fix", "AI", "Admin", "Improvement", "Import"]}>
  ### Seam 1: Unify the verb layer (one tool registry, two adapters)

  Make `lib/chat/tools/*` the single **canonical, transport-agnostic** verb registry that both the in-app CoPilot (Vercel AI SDK) and the MCP server consume through thin adapters — so a verb is defin...

  ### Seam 1 verb-layer unification — spec + plan

  Adds the **Seam 1** design spec + implementation plan and updates the strategy doc's Seam 5 to carry the Streamable HTTP transport direction.

  ### UX strategy + architecture sketch for agent-native discovery

  Capture the brainstorm direction: keep the GUI as a read/map surface, make the CoPilot a universal action layer, add a BYO-model escape hatch (Cursor-style), and harden the MCP server into a first-...

  ### Update security contact email to [hello@expertcollective.org](mailto:hello@expertcollective.org)

  > \[!NOTE] > **Low Risk** > Single documentation mailto change with no runtime or security logic impact.

  ### Add Security & Data Protection trust page

  Adds a customer-facing **Security & Data Protection** trust page to the docs site, aimed at early-stage pilot customers who ask about our security posture before we have SOC 2.

  ### Tier-aware seat CTA + clear stale grace on live subscriptions

  Two billing correctness fixes surfaced while testing a Free→paid upgrade on a pro-tier plan that carries a **finite** seat cap (e.g. a single-seat "Solopreneur").

  ### Update local dev setup instructions

  > \[!NOTE] > **Low Risk** > Documentation-only; no application, auth, or data-handling code changes. > > **Overview** > Rewrites \*\*\`docs/local-dev-setup.

  ### Add NEXT\_PUBLIC\_BILLING\_ENABLED kill-switch

  Adds a single env-var kill-switch (`NEXT_PUBLIC_BILLING_ENABLED`) that disables **all** billing enforcement and hides **all** billing UI, while still allowing Stripe to be fully configured with \*\*t...

  ### Local Supabase + Stripe billing test setup

  Adds an isolated **local development** workflow for testing the Stripe billing system end-to-end without any risk to the remote Supabase project. `.env.local` (which points at remote) is never touched.
</Update>

<Update label="Week of May 25, 2026" description="Latest improvements" tags={["New Feature", "Bug Fix", "AI", "Admin"]}>
  ### Add Stripe sandbox setup & testing guide

  The billing implementation shipped across 8 phases but only had an implementation PLAN.md — no operator-facing guide for configuring Stripe and testing against the sandbox.
</Update>

<Update label="Week of May 18, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Admin", "Import"]}>
  ### Flip stale phase status flags to landed

  Phase 8 of the Stripe billing rollout (see [`docs/billing/PLAN.md`](../blob/main/docs/billing/PLAN.md)). Adds super-admin tooling for sales-led and operational scenarios:

  ### Phase 8 admin overrides, comps, and outbox health

  [`docs/billing/PLAN.md`](../blob/main/docs/billing/PLAN.md) — Phase 8.

  ### Phase 7 super-admin /admin/plans

  Gate transcript uploads on the workspace's plan storage cap. No new Stripe wiring — usage is summed from existing \`transcript\_imports.

  ### Phase 6 transcript storage cap

  [`docs/billing/PLAN.md`](../blob/main/docs/billing/PLAN.md) — Phase 6.

  ### Phase 5 seat metering

  [`docs/billing/PLAN.md`](../blob/main/docs/billing/PLAN.md) — Phase 5.

  ### Phase 4: Prepaid AI credits with auto-recharge

  Implements Phase 4 of the billing system: prepaid AI credits with concurrency-safe decrements, manual top-ups via Stripe Checkout, and owner-configurable auto-recharge.

  ### Token usage observability (Phase 3, #867)

  Persist every successful AI call's token usage to a new `ai_usage_records` table so the billing settings tab can show month-to-date AI spend and Phase 4 has the data it needs to decrement credits.

  ### Pro checkout + Stripe portal (Phase 2)

  [`docs/billing/PLAN.md`](../blob/main/docs/billing/PLAN.md) — Phase 2.

  ### Billing Phase 1: Stripe plumbing + Free plan foundation

  [`docs/billing/PLAN.md`](../blob/main/docs/billing/PLAN.md) — Phase 1.
</Update>

<Update label="Week of May 11, 2026" description="Latest improvements" tags={["Improvement", "New Feature", "AI", "Import", "Bug Fix", "Admin"]}>
  ### Add phased Stripe billing implementation plan

  Captures the approved plan for workspace-scoped Stripe billing with prepaid AI credits + auto-recharge, plan-tier caps (seats, projects, storage), and a super-admin-managed plan catalog.

  ### Trim project cards to logo + name + description + activity dot

  Closes #860

  ### Coerce string frequencies in commonPatternSchema

  Note: full `pnpm run lint` was attempted, but it still reports repository-wide formatting noise in unchanged files.

  ### Add structured AI output reliability

  Note: full `pnpm run lint` was attempted, but it still reports repository-wide formatting noise in unchanged files.

  ### "new activity since last visit" dot on project cards

  Add a subtle violet dot to each project card on the dashboard when something has changed in that project since the current user last opened it.

  ### Dealing with a extraneous parenthesis

  Dealing with a extraneous parenthesis.
</Update>

<Update label="Week of May 4, 2026" description="Latest improvements" tags={["Bug Fix", "AI", "Import"]}>
  ### Give PROJECT\_INSIGHTS realistic timeout headroom

  On the project tearsheet's **AI Insights** tab, clicking the **Refresh** button (or auto-refreshing on stale insights) returns the user-facing error:
</Update>

<Update label="Week of April 27, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "AI", "Bug Fix", "Import", "Admin"]}>
  ### Chat analysis background jobs

  Part of #839. Follow-up to #848 (option 2 quick fix).

  ### Epic: workspace-wide CoPilot AI assistant

  Convert the existing project-setup chat into a workspace-wide **CoPilot** accessible from a floating action button on every authenticated page.

  ### Raise INTERVIEWEE\_DISCOVERY timeout from 60s to 90s

  `POST /api/ai/interviewees/[titleId]` is intermittently returning **422** after \~60s when users click "Find Interviewees" from the persona prep tab.

  ### Constrain interview-question targetHypothesisType to selected types

  In the interview guide AI question suggester, when a user selects only one hypothesis type (e.g.

  ### Enrich interview-guide question prompt context

  The AI server action `suggestInterviewQuestions` ([lib/ai/actions.ts:5203](lib/ai/actions.ts#L5203)) and prompt builder `buildInterviewQuestionSuggestionPrompt` (\[lib/ai/prompts.ts:879]\(lib/ai/prompts.
</Update>

<Update label="Week of April 20, 2026" description="Latest improvements" tags={["New Feature", "AI", "Improvement", "Import", "Bug Fix"]}>
  ### Add CRUD tools for projects, personas, hypotheses, interviewees

  Users who create or refine projects through the chat interface cannot update fields like project name, description, problem statement, personas, hypotheses, or interviewees.

  ### Add LinkedIn URL and custom links fields

  Interviewee profiles currently store basic contact info (name, company, title, email, phone, notes) but lack any URL/link fields.

  ### Allow browsing all interviewees when AI extraction fails

  When the AI transcript parser doesn't identify an interviewee (empty name, "Unknown", or very generic), the `IntervieweeReview` component only shows a "Create new" form.

  ### Add interviewee matching to batch review

  The batch transcript import flow always creates new interviewees from AI-extracted data, with no option to match against existing workspace interviewees.

  ### Add per-file question review to batch transcript import

  In the single-file transcript import, users get full interactive control over AI-extracted questions via the `QuestionsReview` component: include/exclude individual questions, edit text, change cat...

  ### Show batch imports in Import History page

  The Import History page (`/projects/[id]/import`) only shows single-file transcript imports.

  ### AI-powered analysis for manual interview entries

  🤖 Generated with [Claude Code](https://claude.com/claude-code)
</Update>

<Update label="Week of April 13, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Import"]}>
  ### Fix full project ZIP export missing hypotheses and role data

  When exporting a project via "Export Full Project" (ZIP), the `titles-hypotheses.csv` file is missing data that users have created.
</Update>

<Update label="Week of April 6, 2026" description="Latest improvements" tags={["New Feature", "Bug Fix", "AI", "Improvement", "Import", "Admin"]}>
  ### Replace discovery journey diagram with setup-guide checklist

  Replace the circular pentagon/ring "Your discovery journey" visualization on the Project Overview tab with a linear accordion checklist — the standard SaaS setup guide pattern.

  ### Deduplicate near-duplicate evidence in chunked transcript merging

  When parsing long transcripts (>30K characters), the app splits them into overlapping chunks (20K chars, 2K overlap) and processes each chunk with AI in parallel.

  ### Move AI analysis calls to API routes to avoid Vercel 30s timeout

  When running an insights analysis, it times out with the following error in Vercel logs:

  ### Interviewee suggestions crash — GPT-5.2 reasoning model truncates JSON output

  The "Find Interviewees" AI feature on the Title Tearsheet page crashes with a JSON parse error. Users see a generic error instead of interviewee suggestions.

  ### Resolve Supabase auth token lock contention

  Browser console floods with `Lock "lock:sb-...-auth-token" was released because another request stole it` errors. Users intermittently see "Analysis not found" in the AI suggestion UI.

  ### Strip HTML tags from AI analysis quote displays

  Evidence `what_they_said` and `implications` fields store HTML from the RichTextEditor (e.g., `<ul><li><p>...</p></li></ul>`).
</Update>

<Update label="Week of March 30, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "AI", "Bug Fix", "Import", "Admin"]}>
  ### Migrate AI models to gpt-5.4 and fix reasoning model compat

  The "Find Interviewees" AI feature on the Title Tearsheet page crashes with a JSON parse error. Users see a generic error instead of interviewee suggestions.

  ### Remove automatic hypothesis creation when adding personas

  When a persona (title) is created, a PostgreSQL trigger (`create_title_hypotheses_trg`) automatically inserts 3 placeholder hypotheses (jtbd, current\_approach, problem) with generic titles like "Jo...

  ### Improve linked problems readability on VP hypothesis cards

  Linked problem statements on Value Proposition hypothesis cards render as truncated Badge chips (max 220px), making the problem text unreadable.

  ### Add Value Proposition hypothesis type with cross-persona problem linking

  Add a new `value_proposition` hypothesis type that users can manually create and link to one or more `problem` hypotheses across personas.

  ### Allow personas to have multiple role types

  Allow a single persona (title) to hold multiple buying-process roles (e.g., "VP of Engineering" as both Decider and User) instead of being limited to one `role_type`.

  ### Added .env.test to the gitingore

  Added .env.test to the gitingore.

  ### Move Find Interviewees AI call to API route to avoid Vercel timeout

  The "Find Interviewees" AI feature times out in production (app.founder-sherpa.com), showing: **"The AI returned an invalid response. Please try again."**

  ### Add hypothesis validation, notifications page, and fix changelog errors

  🤖 Generated with [Claude Code](https://claude.com/claude-code)

  ### Epic: Batch Transcript Import with Vercel Queues

  \#750 — Batch Transcript Import with Vercel Queues

  ### Integrate Sentry.io error tracking

  Add real-time error tracking, performance monitoring, session replay, and structured logging to the production application using Sentry.io (`@sentry/nextjs`).

  ### Chat-First Setup Wizard (Epic #736)

  Part of #736 — Chat-First Setup Wizard (Phase 1: Foundation)
</Update>

<Update label="Week of March 23, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Import", "Admin"]}>
  ### Add persona context to AI question suggestions and enforce concise format

  AI-suggested interview questions are too long and complex, overwhelming users.

  ### Migrate Find Interviewees to Sheet + add persistent tab view

  The "Find Interviewees" feature uses an old custom modal pattern (raw div overlay) instead of the app's standard Sheet component.

  ### Auto-resize textareas and rich text editing for long-form fields

  Users report that multi-line text boxes are hard to read because:

  ### Add Questions and Interviewees to sidebar navigation

  Users can't find the Question Catalog (`/questions`) or Interviewees list (`/interviewees`). Both pages exist but are completely absent from the sidebar.

  ### Improve worthiness score to penalize low hypothesis coverage

  The current worthiness formula `trueCount / (trueCount + falseCount) × 100` completely ignores active hypotheses with `dont_know` status.

  ### Increase hypothesis character limit from 750 to 2000

  Users report the 750-character hypothesis limit is too restrictive.

  ### Transcript import fails for chunked transcripts

  When importing a \~34K-character interview transcript with all associated hypotheses selected, the user sees: `{"success":false,"error":"AI failed to parse the transcript. Please try again."}`.

  ### Resolve project logo upload freezing at 'Uploading' state

  When editing a project's tearsheet and uploading a logo image, the UI freezes at "Uploading" with a spinner that never resolves.

  ### Add E2E tests for project creation wizard

  Add Playwright E2E tests for the Create Project wizard (modal on `/dashboard`). Tests cover the full creation flow, required-only fields, and validation error handling.

  ### Set up Playwright E2E testing with GitHub CI/CD

  Set up Playwright as the E2E testing framework for the project. This is the foundational issue — no tests are written yet, just the infrastructure.
</Update>

<Update label="Week of March 16, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Admin", "Import"]}>
  ### Hide Expand All button when no hypotheses have analysis data

  Hide Expand All button when no hypotheses have analysis data.

  ### Migrate modals to Sheet/Dialog components with draft persistence

  Comprehensive refactoring of form modals to improve user experience, data persistence, and accessibility. Currently 22 modal/dialog/sheet components exist across the app, with several pain points:

  ### Resolve onboarding wizard cycling back to step 1

  After completing a step in the project onboarding wizard (e.g., adding a persona in step 2), clicking **Continue** cycles the user back to step 1 (Problem Type) instead of advancing to the next step.

  ### Migrate Sidebar to Shadcn Sidebar

  Audit of the current custom sidebar implementation identified 13 improvement opportunities.

  ### Resolve TitleTearsheet empty space via PageHeader ReactNode slots

  The Title Tearsheet (persona detail page) has a large block of unused white space to the right of the persona description.

  ### Add super admin exemption to projects RLS policies

  Super admins who are only a **member** (not admin/owner) in a workspace get the error **"Cannot coerce the result to a single JSON object"** when trying to update a project's problem statement (or ...

  ### Add missing FK constraints to profiles for PostgREST joins

  Closes #694

  ### Design Polish and UI Design Consistency

  Comprehensive design polish audit identifying inconsistencies across the application's UI components, page layouts, design tokens, and accessibility patterns.

  ### RBAC UX polish — role-based permissions for workspace resources

  Polish the role-based access control (RBAC) experience so that owners, admins, and team members have clear, consistent CRUD permissions across workspace/organization resources.

  ### Perf: Performance Optimization — Caching, Query Optimization & Database Tuning

  Performance improvements including caching, query optimization, and database tuning for faster page loads and reduced server load.

  ### Add try-catch error handling to async operations

  This PR adds comprehensive try-catch-finally error handling to async operations across multiple components, improving error resilience and user experience by catching unexpected errors that may occ...

  ### Hide archived hypotheses and empty groups in Interviews tab

  The Interviews tab on the Project Tearsheet shows evidence grouped under archived hypotheses and also displays hypothesis groups with zero interviews, creating clutter.

  ### Check owner/admin role before project update to match RLS policy

  When a regular workspace member (not owner/admin) tries to save a project's description, the system returns a cryptic error: Cannot coerce the result to a single JSON object

  ### Add bulk archive action to Hypotheses tab

  Add a "Bulk Archive" action to the Hypotheses tab on the Project Tearsheet.

  ### Cascade delete guide items when referenced question is deleted

  Deleting a workspace as its owner fails with: `new row for relation "interview_guide_items" violates check constraint "interview_guide_items_content_check"`

  ### Add user-friendly duplicate error to updateTitle

  Closes #632

  ### Allow same persona name with different role types in same organization

  When adding personas during the project creation wizard for a work-related (corporations) project, creating two personas with the same name but different role types within the same organization thr...

  ### Use full page navigation after login to prevent redirect race condition

  After logging in, the site sometimes does not automatically redirect to the dashboard. Users need to do a hard refresh to access the dashboard.

  ### Password update form loses state on auth-triggered remount

  When resetting a password (especially after an invitation flow), the confirm new password form gets stuck — the user submits the form, sees a loading spinner, but never gets the success message or ...

  ### Replace theme submenu with inline icon buttons

  The current profile context menu uses a nested submenu (`DropdownMenuSub`) to expose Light / Dark / System theme options.

  ### Route auth email links through app callback instead of localhost

  When creating a new account, the confirmation email contains a link pointing to `http://127.0.0.1:3000`, producing a "This site can't be reached" error in the browser.

  ### Epic: Form UX Improvements — Visible Borders + Split Name Fields

  Some form fields appear borderless — users only see placeholder text with no visual affordance indicating the field is interactive. The Create Account form's Name field is one confirmed example.

  ### Include project problem statement in all AI features

  Several AI-powered features either fail to include the project's problem statement (`projects.context` column) or reference a non-existent column, resulting in less contextually accurate AI responses.

  ### Epic #611: Settings tab navigation + context-aware sidebar restructure

  The Organization Settings page (`/workspaces/[slug]/settings`) currently renders all sections (General, Members, Danger Zone) as a single long scrolling form with no navigation.

  ### Invite Flow UX - Streamlined Onboarding for Invited Users

  Streamline the invite-to-onboarding journey so invited users go from email to workspace access in a single, friction-free flow.

  ### Form UX improvements — visible borders and split name fields

  Two quality-of-life improvements to forms across the app:

  * **Visible input borders** — Increased the contrast of the `--input` CSS token in both light and dark mode so all form inputs have a clearly visible border. Previously, borders were nearly invisible against the background.
  * **First Name + Last Name on registration** — The Create Account form now collects **First Name** and **Last Name** separately instead of a single "Full Name" field. This prevents incorrect name splitting for compound first names (e.g., "Mary Jane Watson"). The admin Create User and Edit User forms already used split fields; they now write `first_name`/`last_name` directly rather than reconstructing a `full_name` string. Welcome emails also use the stored first name directly.
</Update>

<Update label="Week of March 9, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "Import", "AI", "Admin"]}>
  ### Remove website folder

  Moved webstie to report [CustDis/website](https://github.com/CustDis/website)

  ### Add Docs link to sidebar navigation

  Add a "Docs" link to the app's left sidebar navigation (`SidebarNav`) that opens the documentation site at [docs.founder-sherpa.com](https://docs.founder-sherpa.com) in a new tab.

  ### Update logos for docs site

  Update logos and favicon with place holder images.

  ### Workspace member management — roles, invitations, privacy & account lifecycle

  Streamline workspace and project membership, invitation flows, ownership transfers, and account lifecycle.

  ### Epic: Inline hypothesis AI validation flow

  Part of epic #581.

  ### Split Full Name into First Name + Last Name in admin user forms

  The Create User and Edit User forms in the admin panel now use separate **First Name** and **Last Name** fields.

  ### Show workspace name in settings breadcrumb

  The header breadcrumb on the workspace settings page (`/workspaces/[slug]/settings`) displays:

  ### Prevent false confetti/toast on first visit to existing projects

  When opening an existing, fully set-up project, the confetti animation and "Setup complete!" success toast fire on first visit (new browser, new device, or cleared localStorage).

  ### Move Admin entry point from sidebar nav to header

  The "Admin" link currently lives in the sidebar nav (`SidebarNav.tsx`) and is appended to the standard nav items when `isSuperAdmin` is true.

  ### Rename UI label "Workspace" -> "Organization" across user-facing copy

  The term "Workspace" is used throughout the app to describe the entity that groups projects and members. User testing feedback suggests "Organization" is a more intuitive mental model for this concept.

  ### Rename app from "Customer Discovery" to "Founder Sherpa"

  The app is named **Founder Sherpa**, but the codebase still uses "Customer Discovery" throughout — in page titles, metadata, email templates, auth screens, and UI copy.

  ### Move 'Create Your First Project' CTA above the fold on empty dashboard

  When a user has no projects in their workspace, the dashboard shows an onboarding empty state.

  ### Move workspace settings from switcher dropdown to sidebar nav

  Currently, the **Workspace Settings** link is buried inside the workspace switcher dropdown (`SidebarWorkspaceSwitcher`).

  ### Perf: optimize page performance with loading states, dynamic imports, and image optimization

  interviewees, admin, and settings routes for instant visual feedback ProjectTearsheet, TitleTearsheet, QuestionsPageContent) to reduce initial bundle size via code splitting optimization, lazy load...

  ### Analyze All modal unmounts on completion, showing estimate instead of results

  After running **Analyze All** on a project or title, the modal does not show the results/completion view.

  ### Add Founder Sherpa marketing website

  Scaffold a new Next.js 16 project in /website as a separate Vercel project. Includes:

  ### Preserve partial results and isolate failures in Analyze All

  When a user clicks **Analyze All** on the Project Tearsheet and the project has multiple titles, a single thrown error (server action timeout, network failure, unexpected exception) in any hypothes...

  ### Prevent infinite spinner on large transcript imports

  When a user uploads a `.txt` interview transcript of \~60,000 characters, the system accepts the file but the analysis spinner runs indefinitely — in the reported case, for over 10 minutes until the...

  ### Add user account settings page with profile, avatar, and password management

  > \[!NOTE] > **Medium Risk** > Touches authentication (password change flow) and introduces new database migrations and storage/RLS policies for avatar uploads; mistakes could impact account securit...
</Update>

<Update label="Week of March 2, 2026" description="Latest improvements" tags={["New Feature", "Improvement", "Bug Fix", "AI", "Import", "Admin"]}>
  ### Initial public documentation site

  Set up a public-facing documentation site using [Mintlify](https://mintlify.com) in the `docs-site/` directory. The docs will serve three audiences:
</Update>

<Update label="March 7, 2026" description="Email infrastructure, notification system, and documentation site" tags={["New Feature", "Improvement"]}>
  ### Email infrastructure and notification system

  Added email infrastructure using Resend for transactional emails. Includes welcome emails on first sign-in, workspace activity digest emails (daily and weekly), and notification preferences in user settings.

  ### Documentation site launch

  Launched the Founder Sherpa documentation site with comprehensive guides for all user roles, API reference, and changelog.
</Update>

<Update label="February 28, 2026" description="Interview guides, system question library, and persona descriptors" tags={["New Feature", "AI"]}>
  ### Interview guides

  Create structured interview prep guides scoped to personas. Select hypotheses to test, add catalog questions and custom notes, reorder items with drag-and-drop, and get AI-suggested questions.

  ### System question library

  Super admins can now manage a global question catalog. Workspace members see suggested questions that auto-copy to their catalog on use. Includes CSV bulk upload and workspace sync.

  ### Persona descriptors

  Personas now support three optional descriptor fields — description, demographics, and goals — for richer context when planning interviews.
</Update>

<Update label="February 20, 2026" description="AI-powered transcript import" tags={["New Feature", "AI", "Import"]}>
  ### Transcript import

  Upload `.txt` interview transcripts and let AI extract structured evidence, identify interviewees, and match questions from your catalog. Supports Zoom, Otter.ai, Rev, Google Meet, Microsoft Teams, and manual notes.
</Update>

<Update label="February 2026" description="Core platform features" tags={["New Feature"]}>
  ### Discovery Journey

  The 5-step customer discovery cycle is now visualized as an interactive diagram on every project's Overview tab, guiding teams from persona definition through interviews to insights.

  ### AI quality checks

  Problem statements and hypotheses now include AI-powered quality validation with real-time heuristic scoring and detailed improvement suggestions.

  ### Workspace management

  Full workspace and team management with role-based access control (Owner, Admin, Member), member invitations, role changes, and ownership transfer.
</Update>
