Teams rarely lose information because they lack documents. They lose it because decisions, rationale, owners, risks, and dates are buried across notes, launch plans, and transcripts.
I built Debrief for OpenAI Build Week 2026 to recover those as a structured Decision Brief, then let you ask follow-ups that still point at the source.
- Live: debrief-psi.vercel.app
- Demo login:
demo@debrief.app/DemoBuildWeek2026!(workspace: Launch Planning) - Code: github.com/YatharthSharma1309/debrief
The wedge
A generic “chat with your PDF” answers in paragraphs. Debrief answers in rows:
- Decision + rationale + owner + confidence
- Risks / contradictions
- Dates and open questions
- Each cell has a source chip
Then you can ask: What did we decide about pricing and why? and get a streaming answer with excerpts — not a hallucinated memo.
How it is put together
User → React (Vite)
↓ REST + SSE
FastAPI
├ JWT auth
├ document parse (PDF / DOCX / TXT)
├ embeddings → PostgreSQL + pgvector
├ Decision Brief (structured extraction)
└ RAG chat (cited follow-ups)
↓
OpenRouter (free models)
Frontend is on Vercel. API is on Railway. Database is Neon.
What I had to get right
1. Extraction, not summarisation.
The brief is a schema (decisions, risks, owners). The model fills that schema. A blob of “summary” is a failure.
2. Citations on every claim.
If a row cannot point at a chunk, it should not look as confident as one that can.
3. Stale briefs.
If the docs change after you saved a brief, the UI tells you to regenerate. Otherwise you trust last week’s launch call.
4. Isolation.
Workspaces keep one project’s notes from leaking into another.
Try it in five minutes
- Open the live demo and use the printed demo account.
- Generate a brief from the seeded Launch Planning docs.
- Ask: What did we decide about pricing and why?
- Ask: What is still unresolved before launch?
That is the product: recover the decision, then verify it against the source.
I am an AI full-stack engineer (React / Next.js / FastAPI / RAG). Portfolio: yatharthsharma.vercel.app.
Top comments (1)
Answering in rows instead of paragraphs is a real design choice rather than a formatting one, because a row forces the extractor to commit. Decision, owner, date and confidence are all falsifiable fields - a reader can look at one and say no, that was Priya, and that was October - while a paragraph can be vague enough to never be wrong. The hard case for this shape is contradiction across time: two documents that both state a decision about pricing, six weeks apart, where the second silently supersedes the first without ever saying so. Nothing in the text marks one as stale, so unless document dates are carried into the extraction and used for ordering, the brief will confidently show whichever chunk retrieved better. Do you resolve that by preferring the newest source, or by surfacing both rows and letting the reader pick?