<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Yatharth Sharma]]></title><description><![CDATA[Yatharth Sharma]]></description><link>https://yatharthsharma.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Yatharth Sharma</title><link>https://yatharthsharma.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 15:01:36 GMT</lastBuildDate><atom:link href="https://yatharthsharma.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Debrief is not a PDF chatbot — it recovers decisions with citations]]></title><description><![CDATA[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 f]]></description><link>https://yatharthsharma.hashnode.dev/debrief-is-not-a-pdf-chatbot-it-recovers-decisions-with-citations</link><guid isPermaLink="true">https://yatharthsharma.hashnode.dev/debrief-is-not-a-pdf-chatbot-it-recovers-decisions-with-citations</guid><category><![CDATA[RAG ]]></category><category><![CDATA[FastAPI]]></category><dc:creator><![CDATA[Yatharth Sharma]]></dc:creator><pubDate>Thu, 03 Sep 2026 05:18:02 GMT</pubDate><content:encoded><![CDATA[<p>Teams rarely lose information because they lack documents. They lose it because <strong>decisions, rationale, owners, risks, and dates</strong> are buried across notes, launch plans, and transcripts.</p>
<p>I built <strong>Debrief</strong> for <a href="https://openai.devpost.com/">OpenAI Build Week 2026</a> to recover those as a structured <strong>Decision Brief</strong>, then let you ask follow-ups that still point at the source.</p>
<ul>
<li><p>Live: <a href="https://debrief-psi.vercel.app">debrief-psi.vercel.app</a></p>
</li>
<li><p>Demo login: <code>demo@debrief.app</code> / <code>DemoBuildWeek2026!</code> (workspace: Launch Planning)</p>
</li>
<li><p>Code: <a href="https://github.com/YatharthSharma1309/debrief">github.com/YatharthSharma1309/debrief</a></p>
</li>
</ul>
<h2>The wedge</h2>
<p>A generic “chat with your PDF” answers in paragraphs. Debrief answers in <strong>rows</strong>:</p>
<ul>
<li><p>Decision + rationale + owner + confidence</p>
</li>
<li><p>Risks / contradictions</p>
</li>
<li><p>Dates and open questions</p>
</li>
<li><p>Each cell has a <strong>source chip</strong></p>
</li>
</ul>
<p>Then you can ask: <em>What did we decide about pricing and why?</em> and get a streaming answer with excerpts — not a hallucinated memo.</p>
<h2>How it is put together</h2>
<pre><code class="language-plaintext">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)
</code></pre>
<p>Frontend is on Vercel. API is on Railway. Database is Neon.</p>
<h2>What I had to get right</h2>
<p><strong>1. Extraction, not summarisation.</strong><br />The brief is a schema (decisions, risks, owners). The model fills that schema. A blob of “summary” is a failure.</p>
<p><strong>2. Citations on every claim.</strong><br />If a row cannot point at a chunk, it should not look as confident as one that can.</p>
<p><strong>3. Stale briefs.</strong><br />If the docs change after you saved a brief, the UI tells you to regenerate. Otherwise you trust last week’s launch call.</p>
<p><strong>4. Isolation.</strong><br />Workspaces keep one project’s notes from leaking into another.</p>
<h2>Try it in five minutes</h2>
<ol>
<li><p>Open the <a href="https://debrief-psi.vercel.app">live demo</a> and use the printed demo account.</p>
</li>
<li><p>Generate a brief from the seeded Launch Planning docs.</p>
</li>
<li><p>Ask: <strong>What did we decide about pricing and why?</strong></p>
</li>
<li><p>Ask: <strong>What is still unresolved before launch?</strong></p>
</li>
</ol>
<p>That is the product: recover the decision, then verify it against the source.</p>
<p>I am an AI full-stack engineer (React / Next.js / FastAPI / RAG). Portfolio: <a href="https://yatharthsharma.vercel.app">yatharthsharma.vercel.app</a>.</p>
]]></content:encoded></item></channel></rss>