Case study · Document platform · Built with Claude Code
OuterDocs: PandaDoc replaced by a contractor's own document platform
A US commercial contractor ran its proposals, RFPs and contracts on PandaDoc, Google Drive and a CRM that did not talk to each other. We built their own document platform. A rep now gets a finished request for proposal from one click on a deal, and AI checks every page against the design it came from.
- Client
- US commercial construction contractor with three brands
- Industry
- Construction
- Engagement
- April 2026 to today, with releases to production most days
- Our team
- One developer working with Claude Code
- Client's team
- The founder as product owner and designer, and the developer of their CRM
- What we built
- Document platform (web app and API), PandaDoc migration, CRM integration, AI document generation and review
- Built with
- Claude Code
- AI in the product
- Claude reviews every page; a separate writing model fills the text
- Status
- Live
- 3,670PandaDoc documents moved in, with their signing certificates
- 69master templates across three brands
- About 6 minfrom one click on a deal to a finished, reviewed RFP
- 0files lost moving 15,846 files off Google Drive
The problem
Every bid the contractor sends starts in their CRM, gets estimated, and ends as a branded document: a request for proposal for the estimators, a construction proposal for the client, then a contract. That work was spread across PandaDoc for the documents, Google Drive for the files, a project board for status and the CRM for the deal.
Staff retyped the same facts into each one, and the documents drifted from the company's own design. The company decided not to renew PandaDoc, which set four goals:
- Keep everything already signed. Every PandaDoc document and template, with its signed PDF and signing certificate, searchable and openable.
- Look exactly like the company's designs. Each document type and brand as a master template that matches the designer's files.
- Work from the CRM. One click on a deal makes a correct document without retyping, and its status flows back to the deal.
- Run the business on it. Signing, approvals, roles and workspaces good enough for the whole team to leave PandaDoc.
What we built
A page editor for business documents.
Text, tables, images, fields and signature blocks placed exactly on the page. Pricing tables have optional items, and variables fill from the deal.
1,879 frontend tests
The full PandaDoc history, moved in.
A sync engine downloaded every document and template and sorted each one into the company's 21 document types. Signed copies keep their signing certificates beside them.
3,670 documents · 499 certificates
The company's designs as editable masters.
The designer works in HTML. An importer reads each design into the editor block by block, with the same fonts, colours and positions.
69 masters · 97% of words in place
Signing, approvals and roles.
Signing links and reminders, view-only documents, approval rules with thresholds, and five built-in roles plus custom ones.
115 database changes, none of them destructive
One click from the CRM.
“Generate RFP” on a deal picks the brand, workspace and master, sends the bid's data and shows live progress with a Cancel button. The document opens with no second login.
Status returns to the CRM as it changes
Off Google Drive with nothing lost.
Every file moved into the platform's own storage in the folder layout people knew. Each copy was checked by size and checksum before it was linked.
15,846 files · 0 failed
How an RFP is made
How the AI is kept in check
A master is a fixed design filled with an example project's words. Real bids do not fit that shape, so the platform writes the bid into the master and then checks the result. Three rules apply to every change the AI makes:
- Nothing invented. Every number, sum, date and address it writes must appear in the bid's data. Otherwise it is dropped.
- Nothing lost. A rewrite may replace the master's example wording, but never a line already written for this bid.
- Only measured problems get more room. A block grows or shrinks only when the printed page shows its text cut off.
These rules came out of testing. We ran the review on five real bids, looked at every page, and turned each mistake into a rule with a test.
Illustration of a real fix from the review.
Results
| Before | Now |
|---|---|
| Documents in PandaDoc, files in Google Drive, status on a project board, deals in the CRM | One document platform linked to the CRM |
| Staff retyped the same facts into each tool | One click on a deal fills the document from the deal's data |
| Each RFP assembled by hand | A finished RFP in about six minutes, with every page reviewed |
| Documents drifted from the company's design | 69 master templates read in from the designer's own files |
| A PandaDoc renewal coming up | PandaDoc can be retired, with 3,670 documents and 499 certificates kept |
Figures measured on 11 November 2026.
Under the hood: stack, models and timeline
Stack: React, Vite and TanStack on the front end. FastAPI and PostgreSQL on the back end. Supabase storage, Playwright for printing, hosted on Railway and Vercel.
Models: Claude Opus 5.5 designs new documents and reviews each page. A lower-cost model writes the bulk of the text. Every document records what its own model calls cost.
Measured cost: the page review costs $1.46 to $1.65 per RFP and the writing $0.15 to $0.17, measured on two real bids on 11 November 2026.
How the two apps connect: the document platform and the client's CRM stay separate products with their own databases. They talk through an API key for the CRM's requests, signed webhooks for status, a one-time sign-in hand-off and one shared workspace switcher.
Timeline:
| When | Phase | What shipped |
|---|---|---|
| Apr to May | Foundations | PandaDoc sync engine, first document builder and data model |
| Jun to Jul | The builder | Tables, attachments, roles, templates by type, AI document building, importing a PDF as an editable copy |
| Aug to Sep | A real product | A reference library of 23 designs, companies, brands, workspaces and roles, sign-up and Google sign-in, signing emails |
| Oct | Redesign and migration | The founder's new interface, approvals, view-only documents, the PandaDoc archive viewer, the migration plan |
| Nov | Integration and AI quality | Generate RFP from the CRM, 69 exact masters, storage off Google Drive, single sign-in, the page review |
By the numbers: 3,359 commits, 3,587 backend tests and 1,879 frontend tests.
How it was built: one developer worked with Claude Code across the whole stack. Twice-weekly client meetings were transcribed and broken into items, and most items shipped within a day. Each day ended with a written update.
Have a tool you want to stop renewing?
Tell us what it does for you today on a 30-minute call. You leave with a plan and a cost, in writing.
Book a discovery call