# 01 — Product overview

## What we are building

A **Next.js** web app where a **customer** chats in natural language about mortgage protection. The app:

1. Answers using **RAG + GPT-4o-mini** (not ungrounded sales copy).
2. **Extracts facts** from the conversation into a live **ApplicantProfile**.
3. Shows that profile in a side panel, grouped like the mortgage **dataset**.
4. Advances a **process tracker** through steps **0–11** from the mortgage **process** guide.
5. Never claims a carrier bind. Soft UW is coaching only.

## Users (v1)

| Role | Experience |
|------|----------------|
| Customer | Chat, see their profile, see which step they are on, consent to apply |
| Licensed agent (later) | Same case, briefing pack from step 8 | 

v1 can be **customer self-serve interview**. Steps 8–11 still appear on the tracker; the app hands off to a human/e-app rather than issuing a policy itself.

## Sale complete (from process HTML)

Issued policy **or** submitted application pending issue, covering the mortgage balance for the named insured(s), with premium acknowledged and delivery/requirements in process. The chat UI must not label “sold” earlier than that.

## Customer-visible vs internal

The process HTML includes **BMI + tobacco (step 3)** and **disease interview (step 4)**. The dataset requires those fields for SI routing. The Next.js mortgage **shell** still runs the full journey.

When the tracker is on step 3, retrieve **BMI** stores (not mortgage FAQ that forbids height/weight). When on step 4, retrieve **health** stores. Do not mix all three vector files into one index.

## Non-goals (v1)

- Binding quotes or carrier e-app integration (stub confirmation number is enough).
- Training GPT-4o-mini.
- Health-only or BMI-only standalone apps (those are later products using the same pattern).
- Merging `data/verticals` into `data/knowledge`.

## Success

A customer can complete chat through **loan facts + who to cover**, see `loan_balance`, `loan_term_years`, and `coverage_on_whom` on the profile, and see the stepper sit on **P-LOAN / step 2–3** with missing required fields highlighted from the dataset checklist.
