Explore the build library
consultance.ai
Deal Copilot
Build libraryControlsAboutCase studiesBlogBook an audit
consultance.ai

Systems

WorkflowsDeal CopilotPrivate knowledgeFinance automationBuild library

Company

About usCase studiesBlogContact

Start a conversation

Free AI auditfounder@consultance.ai

Teams

Investment bankingCFOs & financePrivate equityPrivate creditReal estateProperty managementProfessional servicesOther industriesAll industries

Legal

Privacy policyTerms of service

Our approach

Audit the workflow.Build in your environment.Hand over a system you own.
Build something useful © 2026 consultance.ai
Build library/Claude Diligence Desk

Finance and data

Claude Diligence Desk

For PE deal teams and corp dev: 24 Claude skills from mandate screen to IC memo, with EBITDA, cash and debt stress checks, every figure cited to its page.

Medium setup4 steps27 prompts
Open the setup guide Discuss an implementation
Finance and data

Start with the guided setup

Follow the setup below in your own workspace. For a demonstration of the prompt-copying process, open the optional walkthrough.

Watch the setup walkthrough
Step 1 · setup
Three minutes, four steps, nothing to install by hand

Claude sets it up for you. You just paste.

Never used Claude? It is free and takes 30 seconds to open. Copy the instruction below, paste it into Claude, and it reads this page and walks you through everything, one question at a time.

  1. Tell Claude how to talk to you

    One tap. It changes how much Claude explains, and how slowly it goes. You can change it any time.

  2. Copy your setup instruction

    A short instruction plus a link to this page lands on your clipboard. First copy asks for your email once. That unlocks every button across the whole library.

  3. Open Claude in a new tab

    Free account, no card, 30 seconds. This tab stays open so you can come back.

    Open claude.ai
  4. Paste, send, and answer one question

    Claude reads this page, asks one question about your work, then guides you step by step until your first output is right. If anything looks wrong, tell Claude what you see, and it fixes it with you.

▸Prefer the full prompt instead of the link? (optional)
Click to copy
I am comfortable copy-pasting and following instructions, but I am not a developer.
There is nothing to install for this one and no commands to type: it all happens inside Claude. If any instruction below implies a Terminal, translate it into the equivalent click path for me instead.
- Plain English. Define jargon the first time it appears.
- One step at a time, then wait for me to confirm before the next one.
- Tell me what success looks like at each step, and diagnose any error before moving on.

Follow the instructions below with those rules applied.

If you can browse the web, open and read this page in full first, it has the complete guide and every prompt you will run (the vault is under the-vault anchor): https://consultance.ai/library/claude-diligence-desk#the-vault . If you cannot open links, tell me and I will paste the page in, do not guess the prompts.

You are the consultance.ai setup concierge. Voice: calm, practical, one step at a time. Define any term the moment you use it. If a path is blocked, give the next best one.

This is the Claude Diligence Desk: 24 skills from the mandate screen to the IC memo, plus the shared rules and a test deal. A skill is a plain text file that gives Claude one job, the inputs it needs and when to stop and ask. Two skills run small calculation engines from the open source PE_mvp repo (MIT licence). Do not dump both paths. Ask one question, then walk only the path they pick.

**First message to the user, ask ONLY this:**
"Where does your data room live: a few files you can upload to the Claude app, or a folder or export on your computer? Reply app or folder."

Before either path, say this once: your files are processed by Anthropic under your own Claude account. Nothing comes to consultance.ai. For a live data room, use a Team or Enterprise plan, or turn model training off in your Claude privacy settings first.

**APP (Claude app, not a Terminal install):**
1. This is not a Terminal install. They paste prompts from the page into the Claude app.
2. Create a new Project named for the target, and select Claude Opus 5.5 in the model picker.
3. Paste prompt 01, the shared rules, into the Project instructions or the first message.
4. Paste prompt 02. The fake data room is inside it. Good output: growth is price led (81 percent of the recurring delta), the plan legs fall 6,420,000 short, the CDD case is 44,092,000, diligence EBITDA is 7,400,000 against management's 10,100,000, the price restates to 13.65x, and the covenant breaks on a 5 percent revenue fall when the term sheet's debt service of 2,850,000 is used.
5. In the app, skip desk-setup. mandate-screen and debt-stress show the arithmetic by hand.
6. Only when every line matches the answer key, upload the real data room and run each skill in order.

**FOLDER (Claude Code):**
1. Open a terminal in an empty folder for the desk and start Claude Code with the command claude. Success: Claude Code's prompt appears.
2. Run desk-setup. It clones the repo, then one command at a time: cd PE_mvp, git checkout db100279c749800b02bc2fb82aa6aada9afc1289, uv venv .venv --python 3.11, source .venv/bin/activate, uv pip install "pydantic==2.7.0" pytest. Success: python -m pytest tests -q prints 2 passed.
3. Python: run python3 --version. A stock Mac shows 3.9, which is fine here, because uv venv --python 3.11 downloads Python 3.11 into the desk on its own. Without uv, install Python 3.11 from python.org first.
4. If uv is missing, ask your Claude to find the official uv install page with its own web search and copy the command from there.
5. Then prompt 02 on the test deal, then the real data room.

**Claude Code path, the desk folder (Claude does the install):**
If this was pasted into Claude Code, or they pick Claude Code, use this path. You run each command yourself, one at a time, and show the result. The user only approves.
Check Python first with `python3 --version`. It must be 3.10 or newer; a stock Mac ships 3.9.6, so if it is older they install Python from python.org, then run the check again.
1. Mac or Linux: `mkdir -p ~/consultance-desks && cd ~/consultance-desks && curl -fsSL -o desk.zip https://consultance.ai/library/downloads/claude-diligence-desk-desk.zip && unzip -q desk.zip && rm desk.zip`
   On Windows, send them to the "Download the desk folder (.zip)" button on the page, then step 3.
2. Success: `ls -a ~/consultance-desks/claude-diligence-desk/.claude/skills` lists 27 folders. The `.claude` folder is hidden, which is normal; never move files out of it.
3. Claude Code loads skills from the folder it was started in, so this session cannot see them yet. Tell the user to type `/exit`, then run: `cd ~/consultance-desks/claude-diligence-desk && claude`. If Claude Code asks whether to trust the folder, they say yes. If typing `/` shows none of the desk commands, Claude Code was started outside the folder or the trust question was answered no, or the folder is not the one holding .claude/skills: quit, `cd` into the folder, run `claude` again.
4. In the new session they type `/onboard`. It asks its questions once and saves the answers to desk/profile.md. Then `/calibrate`. Every later step is one command: type `/` to see the list. START-HERE.md in the folder has the order.

**First session drill, either path:**
- Prompt 01 first (/onboard in the desk). It asks the thesis and the worry before anything else.
- Prompt 02 (/calibrate) on the test deal. Every line must match before real data.
- data-room-ingest on the real room. The OPEN list it writes is the first request list you send the seller.
- reconcile-gate before any memo. A BLOCK means a number does not tie; a missing document becomes a condition.

Common errors: the README of PE_mvp says cd PE_mvp/pe-deal-sourcing-mvp, but that folder does not exist, so use cd PE_mvp. Installing the full requirements file pulls a scraper, a vector database and a local model the desk never uses: install pydantic only. A debt stress run without the term sheet's debt service uses the engine's 7 year repayment default and looks far worse than the real deal.

This is preparation for a deal team, not financial due diligence, a quality of earnings report, or legal or investment advice. A named human owns the IC view.
Step 2 · run it on your data

Step 1 set it up. These 27 prompts do the work.

the vault

The 27 prompts

Grab the whole pack as one file, or tap any prompt below to copy it on its own. Placeholders that look like {{THIS}} get swapped for your own numbers — and if you ran Step 1, Claude fills them in for you.

One .md file · all 27 prompts, numbered, in order · nothing left out.
Use Claude Code? Get the desk folder

Every prompt below, ready as a skill. Unzip it, open the folder in Claude Code, type /onboard. It asks your questions once and remembers the answers. Keep the hidden .claude folder inside.

Click to copy
CLAUDE DILIGENCE DESK: SHARED RULES

1. WHERE TO RUN IT
- One target, a few documents: the Claude app, in a private Project. desk-setup, mandate-screen and debt-stress then show the arithmetic by hand.
- A data room folder, a managed machine, or the same desk on every target: Claude Code, opened in that folder. Outputs land as files.
Model: select Claude Opus 5.5 in the model picker. Claude Sonnet 5 only for the first bulk read of a very large room.
Privacy: your materials go only to your own Claude account, never to us. Use Team or Enterprise, or turn model training off, before a live data room.

2. BEFORE THE FIRST RUN
Ask first: the thesis in one line, and what worries you most. Record both. Every skill says whether its finding bears on the thesis.
Then, one at a time: {{TARGET}}, {{SECTOR}}, bidder type, {{LTM_END}}, {{AUDITED_REVENUE}}, {{PLAN_Y1}}, {{ENTRY_MULTIPLE}} and the EBITDA it is struck on, the debt offer, {{IC_DATE}}, and the named sign off person.
A missing item gets a plain default, labelled ASSUMED: bidder PE platform, IC date "before IC", no entry multiple (returns-check then skips). Audited revenue has no default: without it, run only data-room-ingest.

3. STOP RATHER THAN GUESS
- A file path or folder listing pasted into chat: this is a Claude Code job. Say so and stop.
- A truncated or unreadable input: name it, and do not score that workstream.
- A figure needs a document you do not have: ask once, name it, mark it OPEN in OPEN_ITEMS.csv (owner: deal team, before IC, ASSUMED).
- An engine default standing in for a figure the room holds: replace it, or label the output ASSUMED and name the default.
A stop blocks only the outputs that need the missing input. Everything else still runs.

4. LABELS ON EVERY FIGURE
REPORTED (document id and page, or sheet) · CALCULATED (arithmetic shown; engine outputs list their inputs) · ASSUMED (who set it) · MARKETING (CIM, teaser, seller study, management letter: it makes a question, never a number) · EXPERT (call id: raises a question, never overrides a document) · NOT IN SOURCE.
Weight: audited accounts, signed contracts, bank statements, the transaction file and filings carry a finding alone. CRM, plan, budget packs and management schedules are REPORTED but never the only support for a deal breaker.

5. THREE FLAG TAGS
- CHANGES THE DECISION: moves the price, the CDD case, debt capacity or go or no go. It reaches the memo.
- WORTH A QUESTION: only if the answer could move plan revenue or EBITDA by more than 2 percent, or entry value by more than a quarter turn. It goes to OPEN_ITEMS.csv.
- EXPLAINED BY CONTEXT: one line under "Checked, normal". Closed for good.
A missing document needs no tag: it is OPEN, and the memo lists it as a condition. Test every flag against the list below first.

6. LOOKS WRONG, IS NORMAL (pattern | why normal | when not)
- Q4 carries the most revenue | budget spend before year end | Q4 share more than 3 points above the prior two years, or Q1 credit notes follow
- NRR above 100 with lower logo retention | small accounts churn, large ones expand | one account supplies most of the expansion
- Backlog falls while bookings hold | multi year contracts burn down | bookings also fall
- The plan grows faster than last year | every plan does | a leg has no build, or needs a win rate never reached
- The founder owns the top accounts | normal below about 100 million revenue | no second named owner, and contracts expire within 24 months of close
- Gross margin dips for one year | a named migration | no named cause, or it repeats
- An expert disagrees with the CRM | experts remember their own deals | the plan depends on the expert's figure
- Founder or CEO pay above market is added back | the buyer pays a market salary | no benchmark, or the owner keeps the excess
- Bank receipts differ from revenue less the receivables change | asset sales, VAT, deposits | no named item behind the gap
- Change of control termination in a customer contract | common in enterprise contracts | the account is material and no consent is planned
- Annual auto renewal with a long notice period | the customer must act early to leave | none

7. STANCE
A neutral colleague working for the bidder. Do not hunt for problems or take a seller claim as proof. An engine score informs judgment, never replaces it.

8. FILES
SCREEN, INDEX, MARKET, BRIDGE, COHORT, PLAN, EBITDA, STRESS, FLAGS and OPEN_ITEMS, each a .csv with a source and label column. BRIDGE legs: opening, price, volume, cross_term, new_logo, churn, downsell, ma, fx, one_time, closing.

9. HANDOFF (every skill ends with this)
Read and not read · Outputs · Checks: pass, fail or not run · Open items with the document needed · Bearing on the thesis · Next skill · Sign off needed.
Click to copy
Run every skill on this sample and compare to the key. A mismatch means stop and find out why. Some documents are missing on purpose.

SAMPLE: Harlow Systems, field service software, UK and Ireland, one entity.
Thesis: "a sticky installed base we can grow with price and new logos." Worry: "the plan looks rich, and so does the EBITDA."
Tokens: LTM_END 2026-06-30, AUDITED_REVENUE 42,000,000 GBP, PLAN_Y1 54,600,000, ENTRY_MULTIPLE 10.0x management adjusted EBITDA.
Screen: mandate default weights, minimum scale SMALL_BUSINESS. Harlow: B2B SaaS, 210 staff (D02 p.14), client portal, cloud stack, hiring, no e commerce, buy and build case (D01 p.8), founder status not stated. Penrose Field: the same signals, headcount not disclosed.

DATA ROOM
D01 CIM, 48 pages. p.11 repeats the D09 market figure. p.22 calls Sandhill "our largest customer". p.30: CEO Dana Reyes owns the top three accounts.
D02 Audited FY26. p.6 revenue 42,000,000. p.9 EBITDA 8,400,000. p.10 fixed costs 70 percent of total costs (revenue less EBITDA). p.11 maintenance capex 1,203,000, 3.0 percent of recurring revenue. p.14 average staff 210. p.12 receivables 6,600,000, prior year 5,200,000.
D03 Audited FY25. p.6 revenue 36,500,000.
D04 Revenue by customer by month, 610 customers, ties to D02 and D03. "Seats": 41,200 FY25, 41,900 FY26. "Quarters": Q4 FY26 13,020,000, Q4 FY25 10,950,000, Q4 FY24 9,420,000 of 31,400,000. "One time": Brightwater migration revenue 1,900,000 in FY26, direct cost 600,000, none in FY25. "Customers": Sandhill 4,620,000, Northgate Water 3,150,000. "Owners": a named account director and a 2028 contract end on each top three account. Cohort tab starts 2023-07; 190 customers first invoiced before that.
D05 FY27 plan. p.3: 54,600,000, built as price up 5 percent of the 42,000,000 opening, 60 new logos at 96,000, churn 4 percent of opening. p.9: 11 reps, 9 hires, 7 month ramp.
D06 Budget packs, as approved: FY24 33,000,000, FY25 39,800,000, FY26 46,000,000 (pp.2, 5, 8). Actuals 31,400,000, 36,500,000, 42,000,000. Totals only.
D07 Sandhill reseller agreement, signed. p.1: resells to 140 end customers.
D08 CRM. Qualified pipeline 18,900,000, trailing eight quarter win rate 19 percent, all segments.
D09 Calder study: "market 1,900,000,000 growing 14 percent", in the same three segments Harlow reports. No method.
D10 Call E1, a former sales director: "we won about 35 percent of utility deals."
D11 Management EBITDA schedule. p.2: reported 8,400,000, plus CEO pay 300,000, plus Brightwater migration costs 600,000 (the D04 direct cost), plus restructuring 800,000, adjusted 10,100,000. CEO paid 520,000. p.3: restructuring is severance for 9 roles.
D12 Debt offer. p.1: price 10.0x adjusted EBITDA of 10,100,000. p.2: term loan 30,000,000, cash at close 2,000,000, all in rate 8.5 percent, 1 percent annual amortisation, net leverage covenant 4.5x.
D13 Pay survey p.4: market CEO base pay for this size 220,000.
D14 Bank FY26: receipts 41,300,000. p.7: 700,000 from the sale of the van fleet.
D15 Northgate agreement, signed. p.8: may terminate on 90 days notice after a change of control. p.2: initial term to 2028, then renews yearly unless 12 months notice.
Not in the room: Calder method, cohorts before 2023-07, Sandhill sell through, the win rate series by segment, FY24 audited accounts, the payroll register for the severed roles, an exit case.

ANSWER KEY
| Skill | Expected | Working |
| mandate-screen | Harlow 90.0, Tier 1 (30, 25, 15, 20). Founder unknown scores 5 of 15: ASSUMED, ask. Penrose knocked out on scale UNKNOWN: missing data, not a decline. OPEN: headcount. | engine, inputs listed |
| data-room-ingest | 15 documents. OPEN: the seven missing items, each with the skill it blocks. | |
| room-questions | "FY24 audited revenue?" NOT IN SOURCE. D06 shows 31,400,000 as a board pack actual, REPORTED, not audited. | |
| market-size | No TAM or SAM. D09 is MARKETING: segments mirror Harlow's, no method. SOM OPEN. | 42.0 / 1,900 = 2.2 percent, not presented |
| growth-split | Clean base 40,100,000, delta 3,600,000. Volume 620,146, price 2,930,072, cross 49,783, one time 1,900,000 apart. Price is 81 percent of recurring growth on seats up 1.7 percent. | 36,500,000 / 41,200 = 885.92. 40,100,000 / 41,900 = 957.04. 700 x 885.92. 71.12 x 41,200. 71.12 x 700 |
| cohorts | STOP on the full base: 190 censored. Report the 420 uncensored, coverage stated. | |
| plan-backtest | Legs sum to 48,180,000, not 54,600,000: 6,420,000 unexplained. Achievement 95.2, 91.7, 91.3 percent. Implied win rate 30.5 against 19 percent. CDD case 44,092,000. | 42.0 + 2.1 + 5.76 less 1.68. 5.76 / 18.9. 40.1 + 2.005 + 3.591 less 1.604 |
| ebitda-adjustments | CEO 300,000 accepted, EXPLAINED BY CONTEXT. Migration 600,000 rejected and Brightwater contribution 1,300,000 removed. Restructuring 800,000 OPEN. Diligence EBITDA 7,400,000, up to 8,200,000. | 8.4 + 0.3 less 1.3. 1.9 less 0.6. 520,000 less 220,000 |
| proof-of-cash | Expected 40,600,000. Bank 41,300,000 less the 700,000 van sale ties. EXPLAINED BY CONTEXT. | 42.0 less (6.6 less 5.2) |
| net-debt | Net debt 28,000,000. Debt service 2,850,000. | 30.0 less 2.0. 30.0 x 8.5 percent + 0.3 |
| debt-stress | Inputs: revenue 40,100,000, EBITDA 7,400,000, net debt 28,000,000, covenant 4.5, fixed share 0.70, debt service 2,850,000. Base 3.78x, headroom 18.9 percent, DSCR 1.63. Breaks at a 5 percent fall (4.76x): CHANGES THE DECISION. On management EBITDA it holds to 10 percent (4.01x). | engine |
| returns-check | Price 101,000,000 is 13.65x diligence EBITDA. At 10.0x the value is 74,000,000, 27,000,000 lower: CHANGES THE DECISION. Grid OPEN: no exit case. | 10.0 x 10.1. 101.0 / 7.4. 10.0 x 7.4 |
| red-flags | Sandhill is a channel: end customer concentration unknown, not 11.0 percent. CHANGES THE DECISION until sell through. Q4 31 against 30 and 30, and the founder accounts: EXPLAINED BY CONTEXT. | 4.62 / 42.0. 13.02 / 42.0, 10.95 / 36.5, 9.42 / 31.4 |
| contract-review | Northgate (7.5 percent) can terminate on change of control: CHANGES THE DECISION, consent before signing is a condition. The 12 month notice: EXPLAINED BY CONTEXT. | 3.15 / 42.0 |
| expert-reconcile | E1's 35 percent is EXPERT; D08 says 19 percent; the document stands. WORTH A QUESTION: request the segment win rate series, because the plan needs 30.5 percent. | |
| reconcile-gate | PASS. The plan gap and the price on unsupported EBITDA are findings, not blocks. OPEN items become conditions. | |
| ic-memo | Conditional. Plan not supported: underwrite about 44.1 million revenue and 7.4 million EBITDA. The price is 13.65x that EBITDA and the covenant breaks on a 5 percent revenue fall. Conditions include sell through, the payroll register and Northgate consent. | |
The traps: revenue per customer up 17 percent is one price rise plus a one time project, not expansion. Adding back the migration costs while its revenue stays in counts it twice. The engine's default debt service of 5,540,000 assumes a 7 year straight line repayment the offer does not have.
A run that flags Q4, the founder, the CEO pay or the van sale, presents a market size, fills a missing figure, or keeps the engine default has failed.
Click to copy
<unit name="tools-setup">
Follow the shared rules in prompt 01.
Needs: the systems the human wants read directly (VDR, CRM, data services). Upload stays the default.
Method:
1. Search the web yourself for each vendor's own official connector or export. Show the publisher, the access asked for and the cost on their plan.
2. Install only what the human approves, read only, with their own sign in. Keys never go in chat. One test call each.
<trap>A connector named after the vendor may not be the vendor's. Check the publisher.</trap>
Stop: no official connector means upload or export. Every skill still runs.
Output: what is connected and tested and the handoff. Next: desk-setup.
</unit>
Click to copy
<unit name="desk-setup">
Follow the shared rules in prompt 01.
Needs: Claude Code, git, uv.
Method:
1. In the desk folder, check this tree exists and print ls -R: engines/run_engines.py, engines/stress_inputs.json, engines/screen_inputs.json, tests/test_engines.py, templates/. If you did not download the desk folder, write these files first.
2. Beside the desk folder, one command at a time:
   git clone https://github.com/aiambo08/PE_mvp.git
   cd PE_mvp
   git checkout db100279c749800b02bc2fb82aa6aada9afc1289
   uv venv .venv --python 3.11
   source .venv/bin/activate
   uv pip install "pydantic==2.7.0" pytest
   The repo README says cd PE_mvp/pe-deal-sourcing-mvp. That folder does not exist.
3. Tests first: from the desk folder, with PE_MVP_DIR set to the clone, run python -m pytest tests -q. Pass is 2 passed.
4. Only FinancialStressEngine and DynamicPEScoringEngine are used. They import pydantic only.
<trap>Installing the full requirements file pulls a scraper, a vector database and a local model the desk never calls. A failure there looks like the desk is broken. Install pydantic only.</trap>
Stop: a test fails on a fresh clone: confirm commit db100279 before touching code.
Output: ls -R and the test result and the handoff. Next: target-profile.
</unit>
Click to copy
<unit name="target-profile">
Follow the shared rules in prompt 01.
Needs: CIM or teaser, website, filings, a headcount source.
Method:
1. Fill: business model, scale by headcount (micro under 10, small 10 to 49, medium 50 to 249, large 250 to 999), footprint, founder or family led, recurring revenue, certifications, digital signals, buy and build case.
2. A CIM claim fills a field only where a document you hold agrees.
3. No source: UNKNOWN or null. Never fill from the sector norm.
4. Write the JSON in the shape of engines/screen_inputs.json.
<trap>"200+ experts" on a website reads as headcount. It often counts contractors. Prefer filings or payroll, and say which.</trap>
Stop: no scale source means UNKNOWN and a headcount request. The other fields still fill.
Output: the profile with a source per field and the handoff. Next: mandate-screen.
</unit>
Click to copy
<unit name="mandate-screen">
Follow the shared rules in prompt 01.
Needs: the mandate (weights, knockouts), target-profile output.
Method:
1. Write active criteria, weights (rescaled to 100), knockout_b2b and knockout_min_scale into engines/screen_inputs.json. Read the mandate back in one line.
2. Run python engines/run_engines.py screen engines/screen_inputs.json. Tier 1 is 75 or more, Tier 2 50 to 74.
3. List each target's UNKNOWN or null fields. Founder null earns 5 of 15: label it ASSUMED.
4. Split: knocked out on a fact, knocked out on UNKNOWN, or scored.
<trap>A knockout on UNKNOWN scale reads as a failed target. It is an unsized one. Send it back to target-profile.</trap>
Stop: no mandate means no screen, unless the human accepts the default weights, labelled ASSUMED.
Output: SCREEN.csv with unknown fields and the handoff. Next: data-room-ingest.
</unit>
Click to copy
<unit name="data-room-ingest">
Follow the shared rules in prompt 01.
Needs: the data room.
Method:
1. INDEX.csv: doc_id, title, period, pages, type, weight per rule 4, read status.
2. Page number every figure you will use. Read tables as tables: keep each column with its header, never join across a page break.
3. Check against the request list: three years audited, revenue by customer by month with units, the plan build, approved budgets, CRM with win rates, backlog and deferred revenue, price history, churned customers, top contracts, reseller sell through, market study method, EBITDA adjustments with support, payroll, bank statements, the debt offer, the exit case.
4. Each gap is an OPEN row naming the skills it blocks.
5. A study, price list or customer list older than a year before LTM end is stale. Accounts and budgets never are.
<trap>A large room feels complete. Count against the request list, not the file count.</trap>
Stop: an unreadable or locked file is listed and not used.
Output: INDEX.csv, OPEN_ITEMS.csv and the handoff. Next: room-questions or market-size.
</unit>
Click to copy
<unit name="room-questions">
Follow the shared rules in prompt 01.
Needs: INDEX.csv and the room.
Method:
1. Search the room, not memory. Quote the line with doc_id and page.
2. Give the source's weight: audited, signed, management, CIM.
3. Two documents disagree: show both, say which weighs more.
4. Not in the room: NOT IN SOURCE, and name the document that would answer it.
<trap>A board pack actual looks audited. It is management's number until the accounts agree.</trap>
Stop: a missing document gets NOT IN SOURCE and an OPEN row, never an estimate.
Output: the answer with its cite and the handoff. Next: the skill the question bears on.
</unit>
Click to copy
<unit name="market-size">
Follow the shared rules in prompt 01.
Needs: revenue by service code, unit counts, price per unit, any study with its method.
Method:
1. Define the market from what customers are billed for, not the CIM's label.
2. TAM = units x price, each sourced. No market unit count: no TAM.
3. Published figure: spend pool or revenue pool. Strip in house spend.
4. TAM to SAM through four gates with evidence: geography, size band, channel, certifications.
5. SOM = SAM x obtainable share, filled later by competitive-teardown and plan-backtest. OPEN for now.
<trap>A study whose segments match the target's own reporting was probably paid for by the seller. Label it MARKETING.</trap>
Stop: no market unit count or price means no TAM or SAM, and an OPEN item. growth-split and cohorts still run.
Output: MARKET.csv and the handoff. Next: competitive-teardown.
</unit>
Click to copy
<unit name="competitive-teardown">
Follow the shared rules in prompt 01.
Needs: CRM lost deals, tender awards, competitor filings, call notes.
Method:
1. Competitors from lost deals, tenders and calls, not the CIM slide.
2. Their revenue from filings, by segment and geography. Not filed: NOT IN SOURCE.
3. Share on two or more estimators: filed revenue, headcount x revenue per head, capacity, contested win rate. Report the spread.
4. Price position from paid prices, never list prices. Switching cost from observed switch time and notice periods.
<trap>Net revenue in two countries over gross spend everywhere gives a tiny share and endless runway. Same basis and geography first.</trap>
Stop: no competitor revenue means share from capacity only, or unknown.
Output: competitor table and share range and the handoff. Next: revenue-bridge.
</unit>
Click to copy
<unit name="revenue-bridge">
Follow the shared rules in prompt 01.
Needs: audited accounts, revenue by customer by month, backlog and deferred revenue.
Method:
1. The transaction file by year must equal audited revenue. If not, find the filter.
2. Bridge on the BRIDGE legs only. Without a new and lost customer split, volume is a net leg and new_logo, churn and downsell stay blank. An unexplained leg above 10 percent of the delta stops the bridge.
3. Name and strip one time revenue: projects, migrations, true ups.
4. Backlog: firm, funded, non cancellable orders only.
<trap>Record backlog can be a pull forward before a price rise, or orders the customer can cancel.</trap>
Stop: a year without audited accounts is not bridged. Never tie to management accounts instead.
Output: BRIDGE.csv with the audited tie at both ends and the handoff. Next: growth-split.
</unit>
Click to copy
<unit name="growth-split">
Follow the shared rules in prompt 01.
Needs: revenue with units or seats, the one time items.
Method:
1. Strip one time revenue from both years.
2. Price per unit = recurring revenue / units.
3. Volume = change in units x prior price. Price = change in price x prior units. Cross term = change in price x change in units, on its own line.
4. Legs plus one time sum to the reported delta. Name any residual.
5. One sentence headline with the number.
<trap>Revenue per customer up sharply is often one price rise on flat units plus a one time project.</trap>
Stop: no unit count means total growth only, REPORTED, and a request for the volume schedule.
Output: the split with working and the handoff. Next: cohorts.
</unit>
Click to copy
<unit name="cohorts">
Follow the shared rules in prompt 01.
Needs: revenue by customer by month with a stable id.
Method:
1. Cohort = first invoice month. A first invoice before the file starts is censored and left out.
2. COHORT.csv with logos on every row, denominator held at t0 revenue.
3. Logo retention, GRR (capped at 100) and NRR, revenue and equal weighted.
4. Month 12 against month 0, never month 6.
5. Cohort revenue each period must tie to total revenue.
<trap>A curve flattening near 90 percent often means the cohorts that went to zero were dropped.</trap>
Stop: censored customers or a failed tie mean no full base figure. Report the uncensored base with coverage. Under 80 percent coverage, no headline number.
Output: COHORT.csv and the three measures and the handoff. Next: plan-backtest.
</unit>
Click to copy
<unit name="plan-backtest">
Follow the shared rules in prompt 01.
Needs: the plan build, LTM actuals, approved budgets for three years, pipeline, win rates, rep history.
Method:
1. Bridge LTM to plan by the plan's own legs. If they do not sum to the plan, show the gap and tag it CHANGES THE DECISION. The steps below still run: the gap is a finding about the plan.
2. Start from the clean base. A one time item in the opening inflates every later year.
3. Backtest table: year | budget as approved | actual | achievement | page. With leg budgets, haircut each leg by its own achievement. With totals only, no blanket haircut: build each CDD leg from evidence (new logos = pipeline x historical win rate; price and churn from the plan unless history contradicts).
4. Implied win rate = new business / qualified pipeline. A trailing average cannot prove a rate was never reached: request the quarterly series.
5. Name the leg that breaks the plan if halved. Write PLAN.csv.
<trap>A modest growth rate can still be impossible. The limit is sales capacity and the win rate it needs.</trap>
Stop: no plan build or LTM actuals stops the test. Missing budgets are OPEN and a disclosed haircut.
Output: PLAN.csv and the CDD case against management's and the handoff. Next: ebitda-adjustments.
</unit>
Click to copy
<unit name="ebitda-adjustments">
Follow the shared rules in prompt 01.
Needs: audited EBITDA, the adjustments schedule, support for each item, the one time revenue list.
Method:
1. Start from audited EBITDA, REPORTED. One EBITDA.csv row per item: management's value and yours.
2. Per item: did the cost happen (a document), will it stop after close (a reason), does its matching revenue stay. Accept, reduce, reject, or OPEN without support.
3. Owner pay: accept the excess over a sourced market rate, never over zero.
4. One time revenue: remove its contribution (revenue less direct cost), adjusted for or not.
5. Diligence EBITDA = audited plus accepted items less removed contributions. Show the range with and without each OPEN item.
<trap>Adding back a one time project's costs while its revenue stays in counts the project twice. Remove the contribution instead.</trap>
Stop: an item without support is OPEN and sits in the range, never accepted.
Output: EBITDA.csv and the diligence EBITDA range and the handoff. Next: proof-of-cash.
</unit>
Click to copy
<unit name="proof-of-cash">
Follow the shared rules in prompt 01.
Needs: bank statements, audited revenue, opening and closing receivables.
Method:
1. Expected receipts = revenue less the rise in receivables. Add sales tax if the bank holds gross receipts.
2. Bank receipts for the same period, REPORTED.
3. Name each difference: asset sales, loans, deposits, intercompany, refunds, each with a statement line.
4. An unnamed difference above 2 percent of revenue is CHANGES THE DECISION until named.
<trap>Receipts above revenue look like strong collection. They can be a loan, an asset sale or a deposit.</trap>
Stop: no bank statements means proof of cash is OPEN. Everything else runs.
Output: the cash tie and the handoff. Next: net-debt.
</unit>
Click to copy
<unit name="net-debt">
Follow the shared rules in prompt 01.
Needs: the debt offer, cash at close, debt like items in the accounts.
Method:
1. Net debt = gross debt less cash at close. List debt like items (deferred consideration, unpaid tax, earn outs) apart, and whether the covenant counts them.
2. Interest = gross debt x all in rate. Repayment = the offer's amortisation, never an assumed straight line.
3. Debt service = interest + repayment, arithmetic shown.
4. Record the covenant ratio, its EBITDA definition and test frequency.
<trap>A covenant on the lender's adjusted EBITDA can pass while yours fails. Write down which EBITDA each covenant uses.</trap>
Stop: no debt offer means debt service is ASSUMED, the stress run is labelled ASSUMED, and the offer is OPEN.
Output: net debt, debt service and covenant terms and the handoff. Next: debt-stress.
</unit>
Click to copy
<unit name="debt-stress">
Follow the shared rules in prompt 01.
Needs: clean revenue, diligence EBITDA, net debt, covenant ratio, debt service, the fixed cost share from the accounts.
Method:
1. Write engines/stress_inputs.json: revenue, ebitda, net_debt, max_covenant_ratio, fixed_cost_ratio, annual_debt_service, and maintenance_capex_pct if the accounts give it. Each value with its source.
2. Run python engines/run_engines.py stress engines/stress_inputs.json. It tests falls of 0, 5, 10, 15 and 20 percent. Outputs are in thousands.
3. Read per shock: leverage (net debt / EBITDA), breached, headroom, DSCR (EBITDA less capex less tax, over debt service).
4. Run it on diligence EBITDA and on management EBITDA, same revenue. The gap between the two breaks is the finding.
5. In the Claude app, do the 0 and 5 percent rows by hand.
<trap>Without annual_debt_service the engine assumes 5.5 percent interest and repayment over 7 years, which can make a serviceable loan look unpayable. Always pass the offer's figure.</trap>
Stop: no debt offer means the run is ASSUMED. EBITDA at the engine floor of 1 is a loss: say so.
Output: STRESS.csv for both runs and the break points and the handoff. Next: returns-check.
</unit>
Click to copy
<unit name="returns-check">
Follow the shared rules in prompt 01.
Needs: the price and the EBITDA it is struck on, diligence EBITDA, net debt, any exit case.
Method:
1. Implied multiple = price / diligence EBITDA. Value at the offered multiple on diligence EBITDA, and the gap.
2. Equity cheque = price less net debt.
3. With an exit case: MOIC = (exit EBITDA x exit multiple less exit net debt) / equity cheque, three by three grid.
4. A gap above a quarter turn is CHANGES THE DECISION.
<trap>A sector normal multiple struck on unsupported EBITDA hides a higher real multiple. Restate it first.</trap>
Stop: no exit case means no grid. The restatement still runs.
Output: the restated price and any grid and the handoff. Next: red-flags.
</unit>
Click to copy
<unit name="red-flags">
Follow the shared rules in prompt 01.
Needs: revenue by customer, reseller agreements, CIM claims, account owners.
Method:
1. Top 10 and 20 by ultimate parent. A reseller is a channel: request sell through and show both bases. A channel above 10 percent with unknown end customers is CHANGES THE DECISION until sell through arrives.
2. Revenue renewing in the 24 months after close, with owners.
3. Key people: check for a second named owner and contract terms before flagging.
4. Each CIM retention claim against cohorts: MARKETING against CALCULATED.
5. Share of revenue under price caps or most favoured terms. Tag each flag in FLAGS.csv with its thesis link.
<trap>When the largest account is a reseller, top ten concentration can hide hundreds of end customers or one.</trap>
Stop: no revenue by customer stops concentration. Never take it from the CIM.
Output: FLAGS.csv with "Checked, normal" and the handoff. Next: contract-review.
</unit>
Click to copy
<unit name="contract-review">
Follow the shared rules in prompt 01.
Needs: signed top contracts, revenue by customer.
Method:
1. Each contract above 2 percent of revenue: change of control, termination for convenience, assignment, exclusivity, most favoured terms, price caps, renewal and notice. Quote clause and page.
2. Weight each term by the account's revenue share.
3. Change of control termination on a material account: CHANGES THE DECISION, consent before signing as a condition.
4. A large account with no contract in the room is OPEN.
<trap>Annual auto renewal with long notice reads as weak. It is often the strongest term: the customer must act a year early.</trap>
Stop: a draft contract carries no finding on its own.
Output: the contract table with cites and tags and the handoff. Next: expert-guides.
</unit>
Click to copy
<unit name="expert-guides">
Follow the shared rules in prompt 01.
Needs: OPEN_ITEMS.csv, FLAGS.csv, the expert list with roles.
Method:
1. Pick three to five answerable open items. Former staff for process, customers for switching and price, competitors for share.
2. Per expert: six to ten neutral questions, each tied to an open item. Include the shortlist, what would make them leave, how a price rise landed.
3. Buyer and end user separately.
4. Ask for churned customers and lost prospects, not only the seller's names.
<trap>Seller and banker expert lists lean positive. State the revenue coverage of the list first.</trap>
Stop: no expert list means guides by role, and the list is OPEN.
Output: the guides and the handoff. Next: expert-reconcile, after the calls.
</unit>
Click to copy
<unit name="expert-reconcile">
Follow the shared rules in prompt 01.
Needs: call notes with ids, the room.
Method:
1. One row per answer: claim, call id, matching document and page, agrees or conflicts.
2. Conflict: the document stands. If a plan leg or flag depends on it, WORTH A QUESTION with the settling document.
3. Nothing depends on it: EXPLAINED BY CONTEXT.
4. Like with like: a segment figure against an all segment one is not a conflict yet.
<trap>A confident expert number is one person's memory of their own deals.</trap>
Stop: no call notes means this skill waits.
Output: the reconciliation table and the handoff. Next: reconcile-gate.
</unit>
Click to copy
<unit name="reconcile-gate">
Follow the shared rules in prompt 01.
Needs: the sources and every output file.
Method:
1. From source first: audited revenue, growth split, plan leg sum, top customer share, audited EBITDA and accepted items, net debt and debt service.
2. Then compare: bridge ends equal audited; cohorts tie (NOT RUN when censored, a condition not a fail); growth residual under 2 percent; diligence EBITDA rebuilds; the stress run used the offer's debt service; every CHANGES THE DECISION flag has a page.
3. BLOCK only for arithmetic that does not tie or an integrity failure (no source, a file changed after reading, an engine default left in place). A missing document is a condition, not a block.
4. On a block, run every other check anyway and list all results.
5. Default if nobody acts: after a BLOCK the memo is held and the sign off person gets the break list; after a PASS with conditions the memo is issued conditional and the conditions go to the seller.
<trap>The usual failure is arguing a break away. That explanation is itself the finding.</trap>
Stop: a skill that did not run is NOT RUN, never passed.
Output: PASS or BLOCK per check, conditions, the default outcome and the handoff. Next: ic-memo.
</unit>
Click to copy
<unit name="ic-memo">
Follow the shared rules in prompt 01.
Needs: every output, the thesis and worry.
Method: fill in this order, nothing added.
1. The view: do we believe the plan and the EBITDA, at what numbers, and what it means for the bid.
2. Thesis test: each pillar supported, partly or not, with its exhibit.
3. CHANGES THE DECISION findings, each with its effect and owner.
4. Market and competition: size or why not, share range, durability.
5. Customers: concentration on both bases, retention, contracts, expert view.
6. Plan: management against CDD case, every haircut, the breaking leg.
7. Earnings, cash and debt: diligence against management EBITDA, proof of cash, net debt, the covenant break, the restated multiple.
8. Conditions: each OPEN item, its document, sensitivity, owner, deadline.
9. Checked, normal, one line each. 10. Sign off line.
<trap>Under time pressure the untested assumption drops out. Section 8 is never empty on a real deal.</trap>
Stop: after a BLOCK, no memo. The break list and open items only.
Output: the memo and the handoff. Next: ic-teaser.
</unit>
Click to copy
<unit name="ic-teaser">
Follow the shared rules in prompt 01.
Needs: the memo.
Method:
1. Headline: the view with its number.
2. Five lines: the business, CDD case against plan, diligence against management EBITDA, restated multiple, covenant break.
3. Top three decision findings with pages, then the conditions.
4. Copy every figure from the memo. Anything not in the memo is cut.
<trap>A teaser is where a softer number creeps back in because it reads better.</trap>
Stop: no memo, no teaser. After a BLOCK, the break list only.
Output: teaser.md and the handoff. Next: deal-view.
</unit>
Click to copy
<unit name="deal-view">
Follow the shared rules in prompt 01.
Needs: this run's output files only.
Method:
1. Top line: the view with a number.
2. Six tiles: SAM and SOM, price share of recurring growth, NRR and GRR, management against CDD case, diligence against management EBITDA, the covenant break.
3. Sections for every output file, then conditions and checked normal.
4. Each figure shows its label and page on hover. Unknown shows as unknown.
5. One file, no network, no outside scripts or fonts, a print stylesheet.
<trap>A plausible number is easy to make up for an empty panel. Unknown shown as unknown is a finding.</trap>
Stop: after a BLOCK, only the break list and open items.
Output: deal-view.html, a check that every number appears in an earlier output and the handoff. Next: the named person signs.
</unit>

From a working build to an operating system.

For PE deal teams and corp dev: 24 Claude skills from mandate screen to IC memo, with EBITDA, cash and debt stress checks, every figure cited to its page.

Path A · free

Run the build independently

The setup rail and every prompt above are free and stay free. The cost is your time, and the risk of wiring it wrong on live data.

Back to the prompts
Path B · done with you

Connect it to your operation

We would deliver a private deal room: the desk loaded into your Claude account, read only connectors to your VDR and CRM, your own LBO model and debt terms wired into the stress test, and a sign off step so no untied number reaches IC. Done with you, then handed over so you own it.

Book a build call
data safety

Before you use live numbers

  • • Run last quarter's numbers first. Live data is not a test bed.
  • • Nothing here uploads to us. It runs in your own Claude account, on your own machine.
  • • A named human reviews and signs every output before it reaches a board, lender, or client.
  • • Mask account numbers and names to the minimum the task needs.
the fine print

Straight answers on ownership

Skill set authored by consultance.ai. The scoring and stress engines come from the open source PE_mvp repo by aiambo08 under the MIT licence; no affiliation is implied. Your deal data stays in your own Claude account; we never see it. Respect each VDR and data provider's terms. A named human owns the IC view.

Bring this workflow into your operation.

Book a build callBack to the library

Want this wired into your stack instead of running it yourself? That is our AI deal desk and finance automation service.

Newsletter

New builds, as they ship

One short note when a new build ships: what it does, who it is for, and how to run it in your own Claude.

Free. One email a week at most. Unsubscribe in one click.

More like this

Related builds

All builds
Finance and data
Finance and data

Month End Close AI Agent Team

For controllers and CFOs: a 12 agent month end close team in your own Claude that preps reconciliations, accruals, entries and flux notes as a structured review. You approve every ledger post.

Setup guide
Finance and data
Finance and data

Ramp Claude Connector Setup Guide

For controllers and finance ops teams on Ramp: Claude setup steps plus 12 read only prompts for spend baseline, close readiness, accruals and flux. Replaces the manual Ramp export to Excel.

Setup guide
Finance and data
Finance and data

Claude and NetSuite Setup Guide

For controllers, CFOs and FP&A leads on NetSuite: the setup steps for Oracle's Claude connector plus 12 read only prompts for close, receivables, payables and cash.

Setup guide
Get the free kitBook a call

Share with your workflow owner.

Bring the relevant team into the conversation with the build and setup guide.

Forward by email
in one line

What is Claude Diligence Desk?

Claude Diligence Desk is a finance and data build in the consultance.ai AI Build Library. For PE deal teams and corp dev: 24 Claude skills from mandate screen to IC memo, with EBITDA, cash and debt stress checks, every figure cited to its page. It fits PE and growth equity deal teams, corp dev, and independent sponsors who want a full buy side read on a target in their own Claude, from the screen to the IC memo. Setup difficulty is Medium, with 4 plain-English steps.

What does Claude Diligence Desk do?

For PE deal teams and corp dev: 24 Claude skills from mandate screen to IC memo, with EBITDA, cash and debt stress checks, every figure cited to its page.

Who is Claude Diligence Desk for?

It fits PE and growth equity deal teams, corp dev, and independent sponsors who want a full buy side read on a target in their own Claude, from the screen to the IC memo.

How hard is Claude Diligence Desk to set up?

Medium to set up — one guided setup instruction covering 4 plain-English steps, plus 27 ready-to-run prompts on the resource page.

How would consultance.ai build this out?

We would deliver a private deal room: the desk loaded into your Claude account, read only connectors to your VDR and CRM, your own LBO model and debt terms wired into the stress test, and a sign off step so no untied number reaches IC. Done with you, then handed over so you own it.

What are the licensing terms?

Skill set authored by consultance.ai. The scoring and stress engines come from the open source PE_mvp repo by aiambo08 under the MIT licence; no affiliation is implied. Your deal data stays in your own Claude account; we never see it. Respect each VDR and data provider's terms. A named human owns the IC view.

Connect this build to your workflow.

Discuss how Claude Diligence Desk fits your systems, controls, and team. We define the integration, review process, and deployment requirements with you.

This build comes from our AI consulting and AI implementation practice — see the full AI in finance guide and how we work with CFO teams.

Book an audit