9 to 5 · Internal app at Freshpaint
ROI Calculator
Turns a prospect's numbers into a business case deck, and an order form when they're ready to sign.
0numbers written by the AI. Every figure in the deck comes from the calculator
What it does
A rep types in a prospect's numbers and the calculator works out what Freshpaint is worth to them: revenue won back, risk taken off the table, tools they can drop. Those numbers fill a client-ready slide deck that AI helps write, and when the deal is ready, an order form priced from the same package.
Why it's cool
A business case used to take a rep days of spreadsheets and slides, and decks written with general AI tools went out with numbers that were simply wrong. Here every number comes from the calculator, and the AI is never allowed to write one.
The impact
From discovery call to client-ready business case in one sitting, with every figure in the deck traceable back to the calculator.
Under the hood
Context
Business cases are the sales team's most important asset on any serious deal, and they were being built by hand: a spreadsheet for the math, slides for the story, and a general-purpose AI assistant to write it up. That assistant couldn't do math reliably, so decks reached prospects with wrong numbers.
Build
A FastAPI service on Fly.io in three environments, each with its own Postgres, behind Freshpaint's Google sign-in. The brief pulls the deal from HubSpot and call transcripts from Gong, and Claude extracts each figure together with the quote it came from. The ROI model is one pure function over four value levers (revenue growth through the funnel, retention, risk and tool consolidation), across 11 healthcare sub-verticals and three scenarios, with risk scaled from eight real pixel-tracking settlements. Decks are built from 21 HTML slide templates with fixed text slots and character budgets: Claude Opus writes the copy section by section, but numbers only ever appear as placeholders the calculator fills in, and a server-side guard rejects any stray quantity in the model's output. Text that overflows its box is shortened, export is blocked until everything fits, and headless Chromium renders each slide to PDF and PPTX, with the model exported to Excel with live formulas. Pricing is versioned and immutable, and each deal is pinned to the version it was quoted on, so the order form always matches the business case. 910 tests, including byte-for-byte parity fixtures, gate every deploy.
Result
Live on Fly.io for Freshpaint's sales team. A rep goes from call notes to a client-ready deck, an Excel model and an order form in one sitting, and every number a prospect sees traces back to the calculator.
Stack
Python, FastAPI, Claude API, Playwright