⋯ 137 unchanged lines
</header>
<div class="hero">
<h1>A production engine, rebuilt in two weeks.</h1>
<p class="sub">The quarter in one read: proof we ship fast, and a few things worth keeping whether or not you ever hire us.</p>
<h1>The best AI products aren't the smartest. They're the ones that change safely, every week.</h1>
<p class="sub">That is what we build: the evals, workflows, and infrastructure that let a team ship fast without shipping regressions. Four proofs from this quarter.</p>
</div>
<section class="sec">
<h2>The rebuild</h2>
<h2>Rebuilding without stopping the business</h2>
<div class="figures">
<div class="fig"><b>2 weeks</b><span>Java → Python rebuild, start to cutover</span></div>
<div class="fig"><b>2 weeks</b><span>to cut over, Java → Python</span></div>
<div class="fig"><b>0</b><span>rollbacks after launch</span></div>
<div class="fig"><b>~50%</b><span>less code, larger API surface</span></div>
<div class="fig"><b>0</b><span>releases frozen during the migration</span></div>
</div>
<p class="lede">A client's AI music-video engine had outgrown its first codebase. Reverts were frequent and the mobile apps broke in ways nobody caught until users did.</p>
<p>We rebuilt it from Java to Python, contract-first and verified against the real mobile clients before a line shipped, then cut over in <em class="k">two weeks</em> with nothing rolled back. If your AI product has outgrown its first codebase and now costs you speed, that is the work we do.</p>
<p class="note">This quarter we shipped 116 updates to production. The team is now 20, up from 15.</p>
<p class="lede">A consumer AI video app had outgrown its original engine and was slowing down with every release.</p>
<p>We rebuilt it and cut over in <em class="k">two weeks</em> with zero rollbacks, so the team kept shipping to users the whole time instead of freezing for a quarter. When an AI product outgrows its first codebase, that is the work we do: replace the foundation without stopping the business.</p>
<p class="note">This year the team grew to 20, and shipped to production every week of the quarter.</p>
</section>
<section class="sec">
<h2>More client work</h2>
<div class="work">
<div class="item">
<h3>Evals that turned prompt changes from guesswork into a gate</h3>
<p>For a client's AI product, answer quality lived in a hand-edited system prompt and knowledge base, with no way to tell whether an edit made answers better or worse. You shipped it and watched. We built evals that run against the exact prompt, knowledge, and model recipe production uses, then made them a gate in the release pipeline. Now <em class="k">193</em> automated tests and <em class="k">2</em> release gates stand between a content change and users, and prompt changes ship through a pull request with a rendered diff instead of a silent database write.</p>
<h3>Made prompt changes safe to ship</h3>
<p>For a B2B AI product, the content that most shaped answer quality was edited by hand with no safety net: you shipped an edit and hoped. We put evals in the release pipeline as a gate, so a change that would lower answer quality is caught before a customer sees it. <em class="k">193</em> automated checks now sit between an edit and production, and nothing ships unreviewed — so the team can improve the product every day without gambling on quality.</p>
</div>
<div class="item">
<h3>Live whiteboard extraction, 50–60% faster</h3>
<p>A live whiteboard that consultants watch during client sessions was extracted section by section, so users stared at an empty board until the last one finished. We fanned the sections out into concurrent calls and streamed each in the moment it completed, so the wait tracks the slowest section instead of the sum of all of them, with the shared prompt prefix cache-marked so the added concurrency bills at cache-read prices. Latency fell <em class="k">50–60%</em>, behind two kill-switches and a never-regress guard so a partial publish can never blank a populated field.</p>
<h3>Made the product feel 50–60% faster in the moment that sells it</h3>
<p>In a consulting-AI product, the live board is what a consultant shows the client, so its speed is the product's felt quality. We made that board render <em class="k">50–60%</em> faster and stream in as it builds, at cache-read pricing rather than full cost. The moment that matters most, live in front of a client, now feels instant.</p>
</div>
<div class="item">
<h3>Co-browsing a live whiteboard, with no account or install</h3>
<p>Showing a client a live whiteboard used to mean screen-sharing or exporting a file, and the first design only worked while everything ran on one machine. We now stream whiteboards over server-sent events as full-state snapshots: a REST call bootstraps the current state, SSE keeps it live, and Redis pub/sub carries changes across machines while Postgres stays the source of truth. Anyone can watch the real board update live, across any number of servers.</p>
<h3>Turned a capability that needed screen-sharing into a link</h3>
<p>Letting a client watch that board update live once meant screen-sharing or emailing a file, and only worked on a single server. We made it stream over the web as live snapshots, across any number of machines, with no account and no install. Friction became a link anyone can open.</p>
</div>
</div>
</section>
⋯ 21 unchanged lines
<p class="sec-sub">Products that are born out of our AI-first workflows.</p>
<a class="prod-row" href="https://steno.unravel.tech"><span class="pn">Steno</span><span class="pd">Meeting notes that write themselves, clean and searchable when the call ends.</span><span class="pv">steno.unravel.tech ↗</span></a>
<a class="prod-row" href="https://usething.ai"><span class="pn">thing</span><span class="pd">Ship your coding agents' output as live, commentable, versioned pages. This letter runs on it.</span><span class="pv">usething.ai ↗</span></a>
<a class="prod-row" href="https://tablo.unravel.tech"><span class="pn">Tablo</span><span class="pd">A tiny companion that watches your AI coding agents from a corner of the screen.</span><span class="pv">tablo.unravel.tech ↗</span></a>
<a class="prod-row" href="https://tablo.unravel.tech"><span class="pn">Tablo</span><span class="pd">Keeps a human in the loop on your AI coding agents, live from the corner of the screen.</span><span class="pv">tablo.unravel.tech ↗</span></a>
</section>
<div class="cta">
<h3>Weighing a rebuild?</h3>
<p>Thirty minutes, and we'll tell you straight whether it's worth doing, what it would take, and how fast we could do it.</p>
<h3>Planning an AI product, or a rebuild that can't afford downtime?</h3>
<p>Thirty minutes, and we'll tell you straight what it takes, what it's worth, and how fast we can do it.</p>
<a class="btn" href="https://unravel.tech/call">Book a call</a>
<span class="reply">or reply to this email — it reaches us directly at <a href="mailto:kapil@unravel.tech">kapil@unravel.tech</a></span>
</div>
⋯ 25 unchanged lines