Case study · Private markets · AI

Every number in the seller's deck, checked against the data room, with the page to prove it.

You're an analyst at a family office. You have 2 to 3 weeks to read a company's documents before the family invests. Data Room Check reads them with you. It states facts. You decide.

Try the live demo Code Fintech A and all its documents and numbers are fictional.
$0.72Moverpayment flagged before signing: the deck overstates revenue by $1.8M (10% stake at 4 times revenue)
4 of 4wrong numbers in the deck caught before the family decides
6 of 6deal risks surfaced, like a lawsuit and a loan due on a change of owner, including 2 no checklist named
1 clickfrom every result to its source page, so your associate spot-checks instead of re-reading
A result opened in the demo: the revenue on slide 4 conflicts with the audited accounts
The deck says revenue was $38.0M. The audited accounts say $36.2M. You see both pages, and the tool doesn't pick.
For
A family office investing alongside a bigger fund
Users
You, the analyst, and your associate, who signs off
Data
13 fictional files, 56 pages, 1 deck
Built with
Gemini, Python, Streamlit, Langfuse
TechniquesAILong-context reading: whole data room in one callAIHybrid RAG: embeddings + BM25, reciprocal rank fusionAIPageIndex: the AI navigates tables of contentsAITwo-stage RAG + PageIndexData engPDF ingestion to page-level passagesEvalCode-verified citationsEvalAnswer key written before the first runEvalPrompt versions compared, traced in Langfuse
01 · VISION

No investment decision rests on a number nobody checked.

The deck is written to sell. The data room holds the truth, across hundreds of files you don't have time to read. The vision: every claim checked, every file read, and every result one click from its source page.

02 · THE PROBLEM

Three things go wrong today.

1 · Decisions on wrong numbers

The family decides on figures the seller chose to show. You can only check the ones you have time for, so a wrong one can reach the decision.

2 · Decisions without the full picture

A lawsuit, a loan that must be repaid if owners change, a CFO who left. They sit in files you never had time to open.

3 · The same work, done twice

Your associate can't see what you checked or where, so they re-read the files before signing off.

03 · THE SOLUTION

The AI reads. Code checks. You decide.

  1. Every number in the deck is checked. The AI finds the matching figure in the data room. Code confirms the quote is on the cited page, does the arithmetic and sets the status: confirmed, contradicted, conflict or not found.
  2. Every file is read for red flags. 7 checks, every page, no search, so nothing is skipped. Plus anything unusual the list doesn't name.
  3. Every result shows its page. The quote is boxed on the source page. If code can't find it there, the result is labelled unverified, never shown as fact.
Every number in the deck with its status
Every number in your deck, with its status.
Red flags from every file
Red flags from every page of every file.
04 · HYPOTHESES AND IMPACT

One job, one bet, one number each.

Your jobHypothesisTarget, then resultExpected impact
When I get a deck, I want every number checked, so I never decide on a wrong one.If every number is checked against the data room, wrong ones get caught, because each mismatch shows both pages.4 of 4 wrong numbers flagged: 4 of 4Fewer decisions made on a wrong number
When I get a data room, I want every file read, so no risk depends on what I had time to open.If one red flag list runs over every page, fewer risks are missed, because no file waits for my time.6 of 6 red flags: 6 of 6, including both not on the listFewer risks found after the deal closes
When I hand over my work, I want my associate to trust it, so they spot-check instead of re-reading.If every result shows a quote code found on its page, checking takes one click.100% of results proven: 100%Sign-off time down (unobserved)

Results on prompt v3, all four search methods, scored against an answer key written before the first run. Guardrail: a result that fails the code check is never shown as fact.

05 · THE VALUE

What it's worth, and what it asks of you.

At 4 times revenue, the deck's $1.8M revenue gap is $7.2M of value paid for but not there. On a 10% stake, the family overpays $0.72M.

Illustrative, on fictional numbers. The legal claim and the loan clause also surface before signing, so you can ask for a lower price or for cover.

You, the analyst
You get
"I checked everything, and I can prove it."
Will you believe it?
Low to medium. You trust what you can check: the page is one click away.
How fast
1 to 2 minutes per deck.
What it costs you
Low. Upload a deck. You hand the first read to a tool and your documents to an AI provider.
Your associate
They get
"I can sign off without redoing the work."
Will they believe it?
Low until they spot-check a few pages.
How fast
Same day as your check.
What it costs them
Low. The habit of re-reading the files.

The weak link is belief, so the fix is built in: the source page beside every result, and "Not found" instead of a guess.

06 · LIMITATIONS

What this doesn't prove yet.

07 · SCOPE AND NEXT STEPS

What it won't do, and what comes next.

Non-goals
  • Advice or a price. The decision is yours.
  • Free questions about anything. A search can't prove a fact is absent.
  • Hundreds of files, privacy, logins. Out of scope for the prototype.
Next
  1. An unseen data room to prove the instructions work on new deals.
  2. A database of every check across deals: which sellers overstated revenue, how often the lead fund was right. It also feeds your financial model without retyping.
  3. Your own documents in place of the Fintech A data room.
  4. A scale test with hundreds of files.
  5. A test with 2 analysts to measure the hours saved.
RESOURCES

Go deeper.

Main learnings which search method wins, and the day search said a wrong number was right

The same AI and the same code checks, with four ways to choose what the AI reads. That choice decides the cost, the speed and what can be missed.

MethodWhat the AI readsStrengthHow it fails
A. One model callThe whole data room, every timeCan't skip a pageToo big and costly past a few hundred pages
B. RAG (search, then answer)The 8 passages closest to the numberCheapest, scalesSilently: misses a page and still says Confirmed
C. PageIndex (table of contents)Up to 6 sections the AI picks from headingsKeeps sections wholeWrong branch when files lack clear headings
D. RAG + PageIndexSearch keeps 3 files, then headingsFewest passages readA wrong file shortlist, or a wrong branch

What each method read for "Revenue FY2025: $38.0M"

Each square is one of the data room's 64 passages, one row per file.the AI read ita page that holds the answer. Hover a square for its text.

A: One model call · read 64 of 64 passages · right pages 3 of 3
Audited accounts 2024
Audited accounts 2025
Monthly accounts 2025
Revenue per customer
Contract: largest customer
Contract: customer 2
Contract: customer 3
Bank loan
Who owns the company
Board minutes
Law firm letter
Office lease
B: RAG · read 8 of 64 passages · right pages 3 of 3
Audited accounts 2024
Audited accounts 2025
Monthly accounts 2025
Revenue per customer
Contract: largest customer
Contract: customer 2
Contract: customer 3
Bank loan
Who owns the company
Board minutes
Law firm letter
Office lease
C: PageIndex · read 7 of 64 passages · right pages 3 of 3
Audited accounts 2024
Audited accounts 2025
Monthly accounts 2025
Revenue per customer
Contract: largest customer
Contract: customer 2
Contract: customer 3
Bank loan
Who owns the company
Board minutes
Law firm letter
Office lease
D: RAG + PageIndex · read 6 of 64 passages · right pages 3 of 3
Audited accounts 2024
Audited accounts 2025
Monthly accounts 2025
Revenue per customer
Contract: largest customer
Contract: customer 2
Contract: customer 3
Bank loan
Who owns the company
Board minutes
Law firm letter
Office lease

Which one wins

  • Small data room (fits in one call): A. It can't miss a page, and the extra cost is cents.
  • Real data room (hundreds of files): D. It reads the fewest passages and keeps sections whole.
  • B alone is the cheapest and the riskiest: when it misses a page, nothing looks wrong.
  • Red flags never use search. Only reading every page proves coverage.

A hypothesis: all four pass on this data room. The scale test is in the next steps.

The day search said a wrong number was right

On the first prompt, RAG confirmed the deck's $38.0M. It read the monthly accounts ($38.0M, with a $1.8M one-off fee) but never the audited accounts ($36.2M). Every quote it gave was real, so the code checks passed.

RAG, prompt v1: Confirmed (wrong) · read 6 of 64 passages · right pages 1 of 3
Audited accounts 2024
Audited accounts 2025
Monthly accounts 2025
Revenue per customer
Contract: largest customer
Contract: customer 2
Contract: customer 3
Bank loan
Who owns the company
Board minutes
Law firm letter
Office lease
One model call, prompt v1: Conflict (right) · read 64 of 64 passages · right pages 3 of 3
Audited accounts 2024
Audited accounts 2025
Monthly accounts 2025
Revenue per customer
Contract: largest customer
Contract: customer 2
Contract: customer 3
Bank loan
Who owns the company
Board minutes
Law firm letter
Office lease
RAG, prompt v3: Conflict (right) · read 8 of 64 passages · right pages 3 of 3
Audited accounts 2024
Audited accounts 2025
Monthly accounts 2025
Revenue per customer
Contract: largest customer
Contract: customer 2
Contract: customer 3
Bank loan
Who owns the company
Board minutes
Law firm letter
Office lease
Monthly accounts page 12
Monthly accounts, page 12: RAG read this.
Audited accounts page 3
Audited accounts, page 3: RAG never read this.

Checks catch a wrong quote. They can't catch a page that was never read.

The fix: at most 2 passages per file, so 12 look-alike monthly pages can't crowd out the one audited table.

How it was evaluated answer key, pass bar, 3 prompt versions, Langfuse

The bar to ship: every result proven by code (lineage 100%), no missed issue (recall 100%), at least 90% of flags real (precision). The answer key (4 wrong numbers, 6 right ones, 6 red flags) was written before the first run and never changed.

PromptA. One callB. RAGC. PageIndexD. RAG + PageIndex
v1Fail P 82% · R 90% · L 100%Fail P 80% · R 80% · L 100%Fail P 82% · R 90% · L 100%Fail P 82% · R 90% · L 100%
v2Fail P 100% · R 100% · L 95%Fail P 100% · R 90% · L 100%Pass P 100% · R 100% · L 100%Pass P 100% · R 100% · L 100%
v3Pass P 100% · R 100% · L 100%Pass P 100% · R 100% · L 100%Pass P 100% · R 100% · L 100%Pass P 100% · R 100% · L 100%

P = precision, R = recall, L = lineage. v3 passed again on a fresh rerun with every AI call live.

  • v1 to v2: the AI skipped the customer count when it differed from the deck, and flagged the deal's own terms.
  • v2 to v3: the AI tagged a quote with a year the page doesn't state, so code rejected it. RAG got its 2-per-file limit.

Traced in Langfuse: one number, per method

A. One model call
chain check-slide-claim
retriever retrieve-passages
generation find-evidence
guardrail verify-evidence
B. RAG
chain check-slide-claim
retriever retrieve-passages
embedding embed-passages
generation find-evidence
guardrail verify-evidence
C. PageIndex
chain check-slide-claim
retriever retrieve-passages
generation pick-sections
generation find-evidence
guardrail verify-evidence
D. RAG + PageIndex
chain check-slide-claim
retriever retrieve-passages
embedding embed-passages
generation pick-sections
generation find-evidence
guardrail verify-evidence

generation = an AI call · retriever = picking passages · embedding = the search index · guardrail = the code checks. Each prompt version is a Langfuse experiment scored on precision, recall, lineage, pages found and pass.

How it's built pipeline, cost and time per method
  1. Read the deck: the AI lists every checkable number. Code checks each quote is on its slide.
  2. Pick what to read: method A, B, C or D chooses passages from the 64 in the data room.
  3. Find evidence: the AI returns file, page, exact quote and value.
  4. Check it: code confirms the quote is on the page, the number is in the quote, the unit and year match; computes ratios; decides the status.
  5. Hunt red flags: every page of every file against 7 checks; code checks every quote and scans the wording for advice.
Passages the AI reads per slide number
A: One model callOne model call: 6464B: RAGRAG: 88C: PageIndexPageIndex: 6.56.5D: RAG + PageIndexRAG + PageIndex: 5.35.3
AI cost to check all 10 slide numbers (USD)
A: One model callOne model call: $0.135$0.135B: RAGRAG: $0.058$0.058C: PageIndexPageIndex: $0.094$0.094D: RAG + PageIndexRAG + PageIndex: $0.085$0.085
MethodPassages per numberTokens inTokens outCost, 10 numbersAI time, s
A: One model call64.058,91724,136$0.13591.3
B: RAG8.011,19713,103$0.05861.4
C: PageIndex6.526,17419,726$0.09483.2
D: RAG + PageIndex5.313,97719,971$0.08566.4

One fresh run per method, every AI call live. Price from Langfuse: $0.75 per million tokens in, $3.75 out (Gemini 3.8 Flash). RAG's search index takes 36 s to build, once per data room.

Trade-offs

ChoseOverGainCost
Code decides every statusLetting the AI judgeA result is proven or labelled unverifiedNumbers in words need parsing ("three products")
Read every file for red flagsSearching for themCoverage is provenCost grows with every page
Four methods side by sidePicking one up frontYou see what each misses and costs4 times the AI calls
Opportunity assessment the go/no-go document, written before any build

Data Room Check: Opportunity Analysis

Date: 2026-10-04 Owner: Alexandre Cela Status: Go (approved by Alex 2026-10-04)

Problem Statement

A family office (a company that invests one family's money) must decide on a deal in 2 to 3 weeks. A wrong number in the seller's slides, or a risk in an unopened file, can change that decision. Today, nobody may notice either one.

Current Situation

The seller shares a folder of documents, called the data room. An analyst reads it by hand and notes findings in a spreadsheet. They often rely on the lead investor's summary, and that investor wants the deal to close.

A concrete case (made up for the demo). Fintech A's slides say its largest customer is 12% of revenue. The customer list in the data room shows 31%. If that customer leaves, almost a third of revenue goes. Today, the analyst catches this only if they open that file.

Proposed Solution

An AI checker for the data room. A language model (an AI that reads and writes text) does the reading. Code checks its work. 1. Verifies every slide claim. The AI finds the matching figure in the data room. It marks each claim confirmed, contradicted or not found. 2. Hunts for every listed red flag in every file. The list is fixed: change of owner clauses, legal claims, contracts ending soon and more. The AI also notes other unusual facts. 3. Shows the lineage of every result. Each result carries its file, page and an exact quote. Code confirms the quote is on that page, and the numbers match, before the result is shown. Results that fail are labelled unverified.

The bar it must meet: 100% of results with verified lineage, and at least 95% of flags real. Below either, it doesn't ship.

It states facts and never recommends. The analyst and the associate (who signs off the analyst's work) decide.

Expected Impact: money

The family office makes money by paying the right price and avoiding losses it could have seen. Every number below is made up for this example.

  • Paying the right price. The slides say revenue of $38.0M. The audited accounts say $36.2M. At a price of 4 times revenue, that gap is $7.2M of value paid for but not there. On a 10% stake, the family overpays $0.72M.
  • Asking for protection before signing. A $2.1M legal claim, and a loan that must be repaid if owners change, surface before the deal closes. The family can ask for a lower price or for the seller to cover those costs.
  • Fewer hours per deal. Analyst and associate hours fall, so the same team can review more deals. The hours saved are unobserved.

Problems, hypotheses and success

One row per atomic problem: one job, one hypothesis, one metric. "Today" values and impacts are assumed, not measured.

# Problem Today Hypothesis Success metric Expected impact
1 Wrong numbers in the slides reach the decision Only numbers the analyst has time for get checked If every slide number is checked against the data room, then wrong ones get caught, because each mismatch shows both pages Planted wrong slide numbers flagged: 100% Fewer deal decisions made on a wrong number. Analyst hours re-checking slides: down (unobserved)
2 Risks sit in files nobody opened Only opened files get read If one warning-sign list runs over every file, then fewer risks are missed, because no file waits for the analyst's time Planted risks found: 100%, including 2 or 3 not on the list Fewer risks discovered after the deal closes. Files skipped for lack of time: 0
3 The associate can't see what was checked Spreadsheet notes, no page links If every result shows its page and a quote that code matched to that page, then the associate trusts it without re-reading, because checking is one click Results whose quote is found on the cited page: 100% Associate sign-off becomes spot-checks, not a re-read. Sign-off time: down (unobserved)

Must not get worse: claims shown as fact that failed the check: 0.

Not tackled here: - Retyping numbers for the financial model: needs a set list of fields. - Trusting the lead investor's summary: needs a sample summary to check. - Asking any free question: a search can't prove a fact is absent, so it can't support "nothing was missed." - Turning findings into a lower price: this is the investor's judgment.

How It Could Be Delivered

  • Data: made up. Fintech A as an older company with loans: 10 slides, 13 files, 9 known issues in an answer key.
  • Finding evidence for a claim, three ways compared: one model call with the whole data room; RAG (search passages by meaning, then answer); PageIndex (the AI walks each file's table of contents). The red flag hunt reads every page, with no search.
  • Results are computed once and stored, so the demo runs free. Details are in the PRD.

Value Equation (Hormozi)

Factor Analyst (uses it) Associate (signs off)
Dream outcome "I checked everything and I can prove it." "I can sign off without redoing the work."
Perceived likelihood Low to medium. Investors distrust AI answers they can't check. Low. They'll trust it only after spot-checking pages.
Time delay Results minutes after the folder loads (unobserved). Same day as the analyst's run.
Effort & sacrifice Upload the folder, review flagged rows, learn one new screen. Click through flagged rows instead of reading files.

Verdict. Belief is the weak factor for both. The cheapest lever is to show the source page and quote beside every result. Another is to say "not found" instead of guessing. The outcome doesn't need improving.

Recommendation

Go, as a portfolio prototype. The problem is plausible, the demo needs only fake data, and it adds a trust story Deck Rank and BDC Footnote Tape don't show. A user test with 2 analysts would make it a product case, not just a demo.

Sources: conversation with Alex 2026-10-04 (brief confirmed), ~/Documents/Company Tracker/company_scorer/demo/make_sample_decks.py, outputs/portfolio/deck-rank/linkedin.md, outputs/portfolio/bdc-footnotes/linkedin.md

Product requirements the lightweight AI PRD: behaviour contract, answer key, kill criteria

Data Room Check

Stage: Team Kickoff (lightweight AI PRD) Last Updated: 2026-10-04 Owner: Alexandre Cela Status: Draft Opportunity analysis: outputs/opportunity-analyses/data-room-check-opportunity.md (Go, 2026-10-04)

Disclaimer. Fintech A, its data room, its people and every number in this document are fictional, created for this prototype.


Hypothesis

A family office (a company that invests one family's money) has 2 to 3 weeks to decide on a deal. A wrong number in the seller's slides, or a risk in an unopened file, can change that decision. Today, nobody may notice either one.

Atomic problems (carried from the opportunity analysis). "Today" values and impacts are assumed, not measured.

# Problem Today Hypothesis Success metric Expected impact
1 Wrong numbers in the slides reach the decision Only numbers the analyst has time for get checked If every slide number is checked against the data room, then wrong ones get caught, because each mismatch shows both pages Known wrong slide numbers flagged: 4 of 4 Fewer deal decisions made on a wrong number. Analyst hours re-checking slides: down (unobserved)
2 Risks sit in files nobody opened Only opened files get read If one warning-sign list runs over every file, then fewer risks are missed, because no file waits for the analyst's time Known risks found: 6 of 6, including 2 not on the list Fewer risks discovered after the deal closes. Files skipped for lack of time: 0
3 The associate can't see what was checked Spreadsheet notes, no page links If every result shows its page and a quote that code matched to that page, then the associate trusts it without re-reading, because checking is one click Results whose quote is found on the cited page: 100% Associate sign-off becomes spot-checks, not a re-read. Sign-off time: down (unobserved)

Must not get worse: claims shown as fact that failed the check: 0.

Supporting evidence: none from users. The problem comes from how this kind of investing works. No analyst has confirmed it.


Strategic Fit

Why this. Every result is checked by code before it's shown. Deck Rank ranks decks. BDC Footnote Tape turns lender reports into a spreadsheet. Neither one checks a seller's claims against evidence.

Why now. It extends the private capital AI offer to a new buyer: the family office, through its analyst and associate.

Impact sizing. Not done yet: no deal volume or time-per-deal data exists. Alternatives considered are in Appendix B.


Expected Impact

If this ships, the analyst gets every slide number marked confirmed, contradicted or not found, and every file checked for the same warning signs, each with a page. The associate signs off from that record. If it doesn't ship, coverage still depends on which files the analyst had time to open. Time saved is unknown. A test with 2 analysts on one data room would measure it.


Value Equation (carried from the opportunity analysis)

Factor Analyst (uses it) Associate (signs off)
Dream outcome "I checked everything and I can prove it." "I can sign off without redoing the work."
Perceived likelihood Low to medium. Investors distrust AI answers they can't check. Low. They'll trust it only after spot-checking pages.
Time delay Results minutes after the folder loads (unobserved). Same day as the analyst's run.
Effort & sacrifice Upload the folder, review flagged rows, learn one new screen. Click through flagged rows instead of reading files.

Verdict. Belief is the weak factor. The cheapest lever is to show the source page and quote beside every result. Another is to say "not found" instead of guessing.


Non-Goals

  • Free questions about anything. A search can't prove a fact is absent.
  • Advice or a lower price. The decision is the investor's.
  • Hundreds of documents. This data room has 13 files. Search is built and measured (see trade-offs), but behaviour at scale isn't tested.
  • Privacy controls and logins. Out of scope for the prototype.

Trade-offs made: - Three ways to find evidence for a slide claim, compared on the same answer key. - A. One model call. The whole data room goes to the model at once. No search. It can't skip a page, and it stops working at roughly a few hundred pages. This is the baseline. - B. RAG (search, then answer). Pages are cut into passages. Each passage is turned into numbers that capture its meaning (embeddings). For each claim, the closest passages by meaning and by keyword go to the model. - C. PageIndex (follow the table of contents). Each file becomes a tree of section headings. The model reads the headings and walks down to the pages that matter. No embeddings. - B and C are more than 13 files need. They're built to learn both methods and to measure what each misses against A. - The red flag hunt never uses search. It reads every page of every file, because search can't prove a file was covered. - Checked once, stored. Each data room is checked when it loads. Reopening shows stored results and costs nothing.


Success Metrics

Targets are in the atomic problems table. Two extra metrics: - Correct slide numbers wrongly flagged: 0 of 6. - Evidence pages found, per method: the share of answer-key evidence pages that A, B and C each find, shown side by side. Each method also reports how many of the 4 known wrong slide numbers it flags.

The answer key lists every issue in the data room, from a full manual read before the first run. It's stored apart and never shown to the model.

Kill criteria: after 2 attempts to improve the AI's instructions, we stop and don't publish if either is true: - Lineage below 100%. Some results lack a file, a page and a quote that code finds on that page. - Precision below 90%. Of everything the tool flags (wrong slide numbers and red flags), fewer than 90% are real issues in the answer key. (Lowered from 95% by Alex on 2026-10-05.) - Recall below 100%. The tool misses any of the 4 wrong slide numbers or 6 red flags in the answer key. (Added 2026-10-05.)

Why: an unverified result sends the associate back to the files, false flags teach the analyst to ignore flags, and a missed issue is the problem this tool exists to solve.

Test set caveat: the prompts were tuned on this one data room (3 revisions, all logged in Langfuse). A pass here shows the method works on what it was tuned on. A second data room the prompts have never seen is needed to show it generalises.


Rollout Plan

  1. Data room and answer key. Passing: 13 files load, and every known issue sits on a known page.
  2. Checks and scoring. Passing: the metrics table is filled from a logged run, for A, B and C.
  3. Interface and case study. Passing: the interface loads in a browser and /portfolio-case-study goals pass.

The PM reviews each step before the next one starts.


AI Behavior Contract

Principle: the model reads and drafts, code checks and computes, the person decides.

Dimension Specification
Primary tasks Extract slide numbers. Find the matching evidence. Run the warning-sign list. Note other unusual facts.
Inputs Every page tagged with file name, page number and section heading. Slide claims: the pages found by method A, B or C. Red flags: every page of every file
Model output A list of claims. Each has a value, unit, period, source page and an exact quote.
Code checks The quote must appear on the cited page (close match). The number must appear in the quote with the same unit and period. Totals and shares are computed in code from cited rows.
Labels Confirmed, contradicted, not found or unverified. Each fact is marked stated, computed or inferred.
Never Recommend, rate the deal or guess. A claim that fails a check is shown as unverified, never as fact.
Logged Every run: input files, model name, raw model output, check results

Behavior examples:

Case Input Expected output
Good Slide 6: "Largest customer is 12% of revenue" Contradicted. Computed 31% from the customer revenue list, p.2. Both pages linked.
Good Slide 5: "Gross margin 68%" Confirmed. Audited accounts FY2025, p.4, quote shown.
Edge Slide 4: "Revenue FY2025 $38.0M". Monthly accounts say $38.0M. Audited accounts say $36.2M. Conflict. Both sources shown with dates. No pick between them.
Edge The model cites p.7 but the quote is on p.8 Unverified. Shown apart from the facts.
Reject "Should we invest?" The relevant findings, then: "The decision is yours." No recommendation words.

Open Questions

  • [ ] PDF reader library: decide at build step 2, with trade-offs shown. @Alex
  • [ ] Embedding model for B. Use the open-source PageIndex library for C, or build a small version. Does the demo show A, B, C or all three? @Alex
  • [ ] Public demo: stored results only, or live runs with the visitor's own model key? @Alex
  • [ ] Final product name before the case study. @Alex

Appendix A: Data room

Fintech A: payments software for mid-size retailers, founded 2014. A buyout fund leads the deal. The family office puts in money alongside it.

Files (13): pitch deck (10 slides) · audited accounts FY2024 · audited accounts FY2025 · monthly accounts FY2025 · customer revenue list FY2024 to FY2025 · top 3 customer contracts · loan agreement · ownership table · board minutes (last 4 meetings) · law firm letter · office lease.

Answer key: known issues (9):

# Type Slide says Data room shows On the list?
V1 Wrong number Largest customer 12% of revenue 31%, customer list n/a
V2 Wrong number Revenue kept from last year's customers 115% 104%, computed from customer list n/a
V3 Wrong number 410 customers 372, customer list n/a
V4 Conflict Revenue FY2025 $38.0M Audited $36.2M; monthly accounts $38.0M n/a
D1 Risk Loan must be repaid if owners change Yes
D2 Risk $2.1M claim from a former partner Yes
D3 Risk Largest customer's contract ends in 5 months Yes
H1 Risk CFO resigned, in board minutes No
H2 Risk Office rented from the CEO's company above market rent No

Correct slide numbers (6): gross margin, staff count, founding year, offices, loan size, products. They test that the tool doesn't flag correct numbers.

Warning-sign list (7 checks): change of owner clauses, legal claims, contracts ending within 12 months, unpaid taxes, loan covenant breaches (loan conditions broken), customer concentration over 20%, plus "other unusual facts."


Appendix B: Alternatives and risks

Alternatives considered: - Open question box with search (RAG). Not chosen: a search can't prove a fact is absent, so it can't support "nothing was missed." - Typed questions turned into database queries (text-to-SQL). Not chosen: it adds a second way to be wrong. - Keep Fintech A as an early-stage startup. Not chosen: older companies with loans are closer to typical family office deals.

Risks and recovery:

Risk Detection Fallback
The AI misses the 2 issues the red flag list doesn't name Neither found after 2 attempts to improve its instructions Remove that check; state the tool only finds what the list names
B or C misses evidence pages, so a claim reads "not found" when the data room has it Fewer evidence pages found than A on the answer key Show A's result; report the gap in the case study
The known issues are too easy, so the result proves little All 9 found on the first run with no prompt work Add 2 harder ones and report both runs
The tool marks itself correct Scoring reads the answer key only Answer key is written first, stored apart, and never passed to the model
The model invents a quote Quote not found on the cited page Unverified label; counted in the guardrail
How it was built with PM OS the product process, step by step
StageArtifactPM OS skill
OpportunityGo/no-go: 3 problems, value equation, Go as a prototype/opportunity-analysis
RequirementsLightweight AI PRD: behaviour contract, answer key, kill criteria/prd-draft
BuildData room, 4 methods, code checks, guided demo; 69 automated tests/code-first-draft
Evaluation3 prompt versions as Langfuse experiments; fresh benchmark runLangfuse agent skill
Case studyThis page/portfolio-case-study