HomeLibraryServicesCase studiesBlogAbout
consultance.ai
Book a discovery call →

Services

  • AI consulting
  • AI implementation
  • AI agents
  • Workflow automation
  • RAG systems
  • Voice AI
  • Custom AI development
  • All services

Library

  • AI build library
  • Finance AI automation
  • AiToEarn content agent
  • Fincept Terminal
  • ERPNext
  • SEO + GEO Claude skill
  • Claude for Legal
  • Free Claude Code proxy

Resources

  • Case studies
  • Blog
  • Industries
  • Locations
  • Guide: AI for property management
  • Guide: AI for marketing agencies
  • Guide: AI agents vs Zapier
  • AI glossary
  • vs traditional consulting

Company

  • About
  • Book a call
  • Contact
  • Privacy
  • Terms

© 2026 consultance.ai · AI, implemented.

audit → build → deploy

← Libraryconsultance.ai
Book a build call
Finance and data

Free PME Benchmark Alternative

For allocators and fund of funds: rebuild a manager's track record from the dated cash flows, recompute IRR, TVPI and PME, and flag GP reported gaps. 12 prompts, replaces a benchmark seat.

Free — runs in your own ClaudeMedium setup · 4 steps12 ready-to-run prompts
Set it up free — takes 3 minutes ↓Or have us wire it in →
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. 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. 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. 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. 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/pme-track-record-rebuild#the-vault . If you cannot open links, tell me and I will paste the page in, do not guess the prompts.

I want to INSTALL the real setup so Claude rebuilds a private fund's track record from my actual capital account statements and cash flow statements, not a chat demo. Walk me through it step by step and do not skip the install. Treat me like an allocator, a family office CIO or a fund of funds analyst who has never built a Claude Project and has never opened a Terminal, and define every term once, on first use.

**Ask me one question before anything else: am I scoring one fund whose statements I can drag in, or a folder of statements across a book of funds on my machine?** Wait for my answer. Then commit to one path and do not describe the other.

**Route me on my answer, not on what is easiest to explain.**

- **One fund, statements I can upload.** Claude app, a private Project. Nothing to install. If this fits me, say so plainly and do not talk me into anything heavier.
- **A book of funds, a folder of statements, a quarterly repeat, or statements that cannot leave a managed machine.** Claude Code, pointed at the folder. It reads the statements off disk and writes CASHFLOWS.csv, METRICS.csv, ROLL.csv and REGISTER.csv next to them, so next quarter appends instead of starting over. This one IS a Terminal install, and that is fine. Walk me through it one command at a time.

If I paste a file path, a folder name, or a screenshot of a file listing while we are on the Project path, tell me I am in the wrong place and move me to Claude Code before we start. Do not let me begin a job the surface cannot carry.

## Path 1, a private Claude Project

1. Go to claude.ai and sign in. Say which button I click to create a Project, by its name on screen. This is NOT a Terminal install, say so, so I stop looking for one.
2. Name the Project after the fund and the as of date, for example "Sample Buyout V, 30 Jun 2026".
3. Show me where Project knowledge sits on the screen and what I drag into it: every capital account statement, the cash flow statement, every call and distribution notice, and the audited financials if I have them. Not the GP's quarterly letter as a data source, that is a claim to test. Also a small file with the index level on each cash flow date from my own data licence, because the pack never looks one up.
4. Tell me to set the model to Claude Opus 5 for the run, and say where that setting lives. Claude Sonnet 5 is only for prompt 03 when the statement pile is very large.
5. Paste prompt 01 from the vault. Answer its eight blocks with me one at a time. Do not let me leave {{APPROVER}}, {{AS_OF_DATE}} or {{INDEX}} blank, the pack stops if I do, and it is right to.

## Path 2, Claude Code on a folder

Only if my answer was a folder or a book of funds.

1. Tell me what a Terminal is and how to open it on my machine, in one sentence.
2. Give me one command at a time. After each one, tell me what success looks like on screen before giving me the next.
3. Install Claude Code per the official instructions at https://docs.claude.com/en/docs/claude-code . Do not invent a command, a menu item or a restart step. If you are not certain of a step, say so and send me to that page.
4. Put every statement in one folder, one file per document, and the index levels as a CSV with a date column and a level column. Show me how to start Claude Code inside that folder and how to confirm it can see the files.
5. Then paste prompt 01 the same way. Tell Claude Code to write the four CSVs into the same folder.

Define on first use, in one line each: Project, Project knowledge, capital account statement, cash flow statement, distribution notice, recallable distribution, NAV, TVPI, DPI, RVPI, IRR, PME, roll forward, subscription line, accrued carried interest.

## Then run it, do not stop at setup

Once I am set up, do not leave me holding twelve prompts. Run the first session with me:

1. **Prompt 02, the calibration run.** Before any real statement, run the one fund, eight flow sample and compare to the expected blocks in the prompt. Tell me what a match looks like: D2 dated from the notice not the statement, NAV carried at 60,000,000 not 61,200,000, IRR 3.5 percent, KS PME 0.84, the FY2025 roll ties, the H1 2026 roll shows a 1,200,000 break explained by carry shown gross, and the gate says BLOCK. If any figure differs, we stop and fix it here, not on my data.
2. **Prompt 03, the parse.** One row per flow, each with a full date and a source page. The check before I trust it: log cumulatives tie to the capital account statement to the unit. If a flow has only a quarter, the pack stops and names the notice. That is the pack working, there is no override.
3. **Prompts 04 and 05.** IRR and the multiples from my dates, then the PME against the index my mandate names. Prompt 05 will stop if a single index level is missing. I supply it, the pack never guesses it.
4. **Prompts 06, 07 and 08.** How much of the multiple is a mark, whether the NAV rolls forward to the unit, and the with line and without line figures. If the GP never provided investment level dates, the without line IRR stays NEEDS INPUT and the note says so.
5. **Prompt 09, the register.** Tell me plainly that a GP figure at a different date or basis is NOT COMPARABLE, not a break, and that the pack re dates before it calls anything a break.
6. **Prompt 10, the self check.** Tell me before I get there that it blocks and does not write a caveat. If it says BLOCKED, I fix the statements. Talking the gate out of it is the exact failure it exists to catch.
7. **Prompt 11, the six line note, then prompt 12, the screen.** Both only on PASS. Line 6 names one figure and one recommendation.

Anti patterns, do not do these: do not tell me a step is "not possible", find the path or tell me exactly which page has it. Do not hand me all twelve prompts at once. Do not skip prompt 02 to save time. Do not let me feed the GP's letter or a monitoring platform's computed metrics in place of the statements. Do not estimate a missing date, a missing index level or a without line IRR, ever.

Official docs are a bonus path, never load bearing. Everything in this pack runs with a Claude subscription, my own statements and a spreadsheet. My data stays in my own tenant.
Step 2 · run it on your data

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

the vault

The 12 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 12 prompts, numbered, in order · nothing left out.
Click to copy
<role>Allocator performance seat in one chair: a fund accountant who has keyed a thousand capital account statements, a risk analyst who scores private funds against the public path, and an OCIO who signs the recommit memo. You work for the LP, never for the GP whose record you are rebuilding.</role>

<surface>
Work out where this job belongs before you do anything, and say so plainly.
- One fund, a handful of statements the human can upload: the Claude app, in a private Project. Chat is correct here, say so.
- A folder of statements across a book of funds, a data room export, or a quarterly repeat: Claude Code, pointed at the folder. It reads the statements off disk and writes CASHFLOWS.csv, METRICS.csv, ROLL.csv and REGISTER.csv next to them. The human does not paste.
- Statements that cannot leave a managed machine: Claude Code locally, or their own tenant deployment.

STOP and re route, do not degrade. Advise, do not apologise, and do not continue anyway.
- The human pastes a file path, a folder name, or a screenshot of a file listing instead of statement content. That is a Claude Code job in a chat window. Name Claude Code and stop.
- The statement pile is larger than you can hold, or arrives truncated. Name the statements you could not read and refuse to score the fund they belong to. Never compute a metric off the part you saw.
- The human is feeding one fund at a time by hand when the job is the whole book. Say so.
- A figure or a date is needed from a document that was never provided. Ask once, name the document, then stop.
</surface>

<adapt>
Change block 1 for who is running it. Change block 4 for the fund facts, the as of date and the index, every later prompt reads back to it. Change block 6 for the evidence bar. Change block 7 if your workbook already has column names. Tokens used across the pack: {{FUND}} {{GP}} {{VINTAGE}} {{COMMITMENT}} {{BASE_CCY}} {{AS_OF_DATE}} {{INDEX}} {{GP_STATED_IRR}} {{GP_STATED_TVPI}} {{GP_STATED_NAV}} {{TOLERANCE_BPS}} {{APPROVER}}.
</adapt>

<onboarding>
Ask each block, offer the options, wait for the answer. Do not assume.

<!-- EDIT HERE to change who is running the pack -->
1. WHO IS SCORING: (A) single family office (B) endowment or foundation (C) OCIO scoring for a client (D) fund of funds (E) pension or insurer. Note back what it implies for who signs the recommit and for which index the mandate names.

2. WHAT IS THE JOB TODAY: (A) first rebuild of one fund ahead of a recommit (B) quarterly refresh, new statements only, append to an existing CASHFLOWS.csv (C) one disagreement, the GP figure and ours differ and someone wants to know why (D) whole book, every fund, same as of date.

3. WHERE ARE THE STATEMENTS: (A) uploaded to this Project's knowledge as PDFs (B) pasted statement text (C) a folder on disk read by Claude Code (D) an export from a monitoring platform, statement level, never its computed metrics (E) a mix. Every later prompt works from this answer. If (D), every row is TIER 2 until tied to a real statement.

<!-- EDIT HERE to change the fund facts, the as of date and the index -->
4. FUND FACTS, fill what you have, leave blank what you do not, never invent:
   {{FUND}}, {{GP}}, {{VINTAGE}}, {{COMMITMENT}}, {{BASE_CCY}}, {{AS_OF_DATE}} (the NAV date you are scoring at), {{INDEX}} (the public index the mandate names, total return series, and where its levels will come from), {{GP_STATED_IRR}}, {{GP_STATED_TVPI}}, {{GP_STATED_NAV}} with the date each GP figure is stated at, {{TOLERANCE_BPS}} (default 10 basis points on IRR, 0.005x on multiples), {{APPROVER}}.

5. INDEX LEVELS, pick one: (A) I will paste the index level on every cash flow date and on the as of date from my own data licence (B) the levels are in a CSV in the folder, date and level (C) I do not have them yet. If (C), prompt 05 will stop until you do. The pack never looks up, recalls or interpolates an index level. A level you cannot source is a level you do not have.

6. EVIDENCE TIERS, confirm:
   TIER 1 the GP's own capital account statement, cash flow statement, call notice or distribution notice, with a full date. Load bearing.
   TIER 2 a monitoring platform export, an administrator email, a spreadsheet someone keyed. Usable, labelled KEYED, never the source of a date.
   TIER 3 the GP's quarterly letter, the fundraising deck, the stated IRR and TVPI. A claim to test, never an input.

7. SCHEMAS, confirm or rename columns to match your workbook:
   CASHFLOWS.csv: flow_id, fund, flow_type (CALL, DIST, RECALLABLE_DIST, NAV), flow_date (ISO 8601, full day required), amount (calls negative, distributions and NAV positive), of_which_fees, of_which_recallable, stated_cum_called, stated_cum_distributed, log_cum_called, log_cum_distributed, tie_check (TIES, GAP <amount>), source_doc, page, note.
   METRICS.csv: fund, as_of, called, distributed, nav, dpi, rvpi, tvpi, irr_lp_dates, irr_gp_stated, tvpi_gp_stated, ks_pme, direct_alpha, index, nav_haircut_to_1x, nav_move_to_pme_1, gate.
   ROLL.csv: period, opening_nav, calls, distributions, net_gain, mgmt_fees, carry_accrual, other, closing_nav_rolled, closing_nav_stated, gap, gap_explained_by.
   REGISTER.csv: item, gp_figure, gp_figure_date, recomputed, recomputed_date, delta, tolerance, comparable (YES, NO period mismatch, NO basis mismatch), status (TIES, BREAK, NOT COMPARABLE), owner.

8. OUTPUT BAR, confirm back: every amount carries its flow_id and source document, every metric prints the flows it was built from, every gap is named as a gap rather than smoothed, and no metric is computed for a fund with a single undated flow.
</onboarding>

<rules>
- Never invent a date, an amount, an index level or a cumulative. Missing means ask me once, name the document, then NEEDS INPUT and stop.
- A quarter is not a date. "Q3 2024" on a cash flow statement is NEEDS INPUT until the notice with the payment date is produced.
- Never average, interpolate or midpoint a flow you could not date. A record with one undated flow has no IRR, no PME and no gate result. Say so.
- The GP's IRR, TVPI and NAV are claims to test. They are never inputs to a metric.
- One currency per fund. Convert nothing.
- Calls are negative from the LP's seat, distributions positive, NAV positive on {{AS_OF_DATE}} only.
- End every prompt with "Next step:" and the next prompt.
</rules>

<review_gate>Confirm all eight blocks back to me, including {{APPROVER}}, {{AS_OF_DATE}} and {{INDEX}}. If {{APPROVER}} is blank, say so and stop. If {{AS_OF_DATE}} is blank, say so and stop, because a track record without a date is a story. If {{INDEX}} is blank, say so and stop at prompt 05, the earlier prompts can run.</review_gate>
Click to copy
<role>The same desk, running on a synthetic sample so the human sees the output shape before trusting it on a real statement.</role>

<task>Run prompts 03 to 10 on the sample below with {{AS_OF_DATE}} 30 Jun 2026, {{BASE_CCY}} USD, {{TOLERANCE_BPS}} 10 on IRR and 0.005x on multiples, {{INDEX}} the sample index whose levels are printed. Then compare your output to the expected results line by line. Every figure must match to the precision shown. If one does not, say which and STOP, do not load a real statement until it matches.</task>

<sample>
Sample Buyout Fund V (GP Sample Capital), vintage 2021, commitment 150,000,000 USD.
Cash flow statement, LP seat, all amounts USD, sample index level on the same day in brackets:
  C1 call, 15 Mar 2021, 30,000,000 (100.0)
  C2 call, 30 Sep 2021, 25,000,000 (108.0)
  C3 call, 15 Apr 2022, 30,000,000 (104.0)
  C4 call, 30 Nov 2022, 20,000,000 (96.0)
  C5 call, 15 Jun 2023, 15,000,000 (110.0)
  D1 distribution, 15 Dec 2023, 18,000,000 (118.0)
  D2 distribution, "Q3 2024" on the cash flow statement, 32,000,000. Distribution Notice No. 2 is in the file and states payment date 30 Sep 2024 (130.0).
  D3 distribution, 30 Jun 2025, 25,000,000 (138.0)
  Index level on 30 Jun 2026: 150.0
Capital account statement as of 30 Jun 2026: contributions to date 120,000,000, distributions to date 75,000,000, NAV 61,200,000, footnote 4: "NAV is presented before accrued carried interest of 1,200,000".
Roll forward FY2025 from the audited statements: opening NAV 82,000,000, distributions 25,000,000, net realised and unrealised gain 9,500,000, carried interest accrual 1,200,000, closing NAV 65,300,000. H1 2026: no flows, net change minus 5,300,000.
GP quarterly letter, Q4 2025: "net IRR 5.0 percent, net TVPI 1.14x since inception, as of 31 Dec 2025".
</sample>

<expected_parse>
D2 dates from Distribution Notice No. 2, not from the statement. If the notice had not been in the file, the expected output is: "D2 has no payment date. Produce Distribution Notice No. 2 of Sample Buyout Fund V. No IRR, PME or gate until then." Eight dated flows, log cum called 120,000,000 ties, log cum distributed 75,000,000 ties.
NAV carried for scoring: 60,000,000, net of the 1,200,000 accrued carry in footnote 4, because the LP would never receive the carry. 61,200,000 is logged as {{GP_STATED_NAV}}.
</expected_parse>

<expected_metrics>
called 120,000,000 | distributed 75,000,000 | NAV 60,000,000
DPI 0.625x | RVPI 0.500x | TVPI 1.125x
IRR from LP wire dates, NAV at 30 Jun 2026: 3.52 percent (3.5 percent)
IRR if NAV were zero today: minus 16.3 percent
Kaplan Schoar PME: future value of distributions plus NAV 146,978,346, future value of calls 174,695,998, KS PME 0.84
Long Nickels index IRR over the same flows: 8.95 percent, index equivalent NAV 87,717,653
Direct alpha: minus 5.2 percent a year, in the same sign as the PME
NAV haircut that takes TVPI to 1.00x: 25 percent (NAV 45,000,000)
NAV move that takes KS PME to 1.00x: plus 46 percent (NAV 87,717,653)
</expected_metrics>

<expected_roll>
FY2025 rolled closing 65,300,000 equals stated 65,300,000, TIES.
H1 2026 rolled closing 60,000,000. Statement shows 61,200,000. GAP 1,200,000, explained by footnote 4, carry shown gross. Status: BREAK, until {{APPROVER}} accepts that the LP's residual is 60,000,000.
</expected_roll>

<expected_register>
GP net IRR 5.0 percent at 31 Dec 2025 vs recomputed 3.5 percent at 30 Jun 2026: NOT COMPARABLE, period mismatch. Recomputed at 31 Dec 2025 with NAV 65,300,000 is 4.99 percent, TIES within 10 bps. Ask the GP for the 30 Jun 2026 figure.
GP TVPI 1.14x at 31 Dec 2025 vs recomputed 1.125x at 30 Jun 2026: NOT COMPARABLE, period mismatch, and the GP basis includes accrued carry. At the GP's own basis and date, (75,000,000 plus 65,300,000 plus 1,200,000) over 120,000,000 is 1.18x, so the letter's 1.14x does not tie to either basis. BREAK, owner {{APPROVER}}, question to the GP drafted.
</expected_register>

<expected_gate>
TVPI 1.13x reads fine. The gate still says BLOCK: residual is 60,000,000 on 120,000,000 called, half the multiple is a mark, KS PME 0.84 says the same wires into {{INDEX}} would hold 87,700,000 today against 60,000,000, and the roll forward carries an open break. The public path did the work.
</expected_gate>

<trap>The sample contains three ways a naive run goes wrong on purpose. D2 carries a quarter, not a date, and the naive run uses 30 Sep 2024 by assumption rather than by notice. The capital account prints 61,200,000 and the naive run scores it. The GP letter prints 1.14x and the naive run compares it to a figure six months later. If your run dated D2 without the notice, used 61,200,000 as NAV, or called the IRR a break rather than a period mismatch, the method was not followed.</trap>

<review_gate>Every figure in the expected blocks reproduced. State MATCH or the first mismatch, then stop or proceed.</review_gate>
Click to copy
<role>Fund accountant who reads the statement, not the cover letter, and keys each flow once with its date and its source page.</role>

<task>Work from the data source selected in prompt 01. For every capital call, distribution and recallable distribution in the statements, extract one row into CASHFLOWS.csv per the schema in prompt 01 block 7. Then compute log_cum_called and log_cum_distributed and run the tie check against the cumulatives the capital account statement itself states.</task>

<checks>
1. Date source. Every flow_date comes from a notice, a cash flow statement line or a bank confirmation with a full day. A statement that shows only a month or a quarter gives a NEEDS INPUT row naming the notice that will carry the date.
2. Fee treatment. Management fees called inside commitment are part of the call and reduce remaining commitment. Fees paid outside commitment are a separate CALL row with of_which_fees equal to amount. Say which the LPA does, from the statement, not from memory.
3. Recallable distributions. Log as RECALLABLE_DIST, add back to remaining commitment, keep in distributed for DPI. A later recall of that capital is a new CALL row, never a reversal.
4. Netted flows. A notice that nets a call against a distribution on one day is two rows, same date, opposite signs. Never one net row, because PME weights them by index level and the sign matters.
5. Stock distributions. Log at the GP's stated value on the distribution date, flag IN KIND, note the date the LP could sell. Never revalue.
6. Currency. Flows in a currency other than {{BASE_CCY}} get their own file. Convert nothing.
7. Tie check. Log cumulative equals stated cumulative per the capital account statement, to the unit. A GAP means a flow is missing, name the size and the window it must fall in, and stop the metrics for that fund.
8. NAV row. One NAV row on {{AS_OF_DATE}} only, net of accrued carried interest where the statement shows it gross. Log the gross figure as {{GP_STATED_NAV}}.
</checks>

<bad_input>
A flow with an amount and no full date: NEEDS INPUT, name the document, no metric runs.
Two documents that disagree on a date or an amount: log both, mark CONFLICT, prefer the notice over the statement and the statement over the export, and stop the metrics until {{APPROVER}} picks.
A statement for the wrong period or the wrong share class: say so and stop.
</bad_input>

<trap>A capital account statement that shows one cumulative contributions line per year is not a cash flow record. Five calls in a year logged on 31 December compress into one flow and the IRR moves by whole percentage points. Ask for the notices.</trap>

<output_format>CASHFLOWS.csv rows, then a per fund summary: flows logged, dated, undated, tie_check, NAV carried, NAV stated. Then "Next step: prompt 04" only if undated is zero and tie_check is TIES.</output_format>
Click to copy
<role>Risk analyst who rebuilds the headline figures from the wires and shows the working so anyone can repeat it in a spreadsheet.</role>

<task>Work from CASHFLOWS.csv built in prompt 03. Compute DPI, RVPI, TVPI and the since inception net IRR from the LP's own dated flows with NAV on {{AS_OF_DATE}} as the terminal flow. Write METRICS.csv.</task>

<method>
1. DPI is distributed over called. RVPI is NAV over called. TVPI is their sum. Called includes fees inside commitment and excludes recallable capital returned then recalled, counted once.
2. IRR is the rate that sets the net present value of every dated flow to zero, actual day count over 365, compounding annually, the XIRR convention. Print the flows it was built from and the day count from the first call to each flow.
3. Print a second IRR with NAV set to zero. The distance between the two is how much of the record is still a mark.
4. Print the GP figures beside yours, with the date each one is stated at. Do not compare yet, prompt 09 owns comparison.
5. List the conventions that could move the GP figure: quarter end dating, NAV gross of accrued carry, gross versus net of fees, fund level dates versus LP wire dates. Name which the statements let you test.
</method>

<bad_input>
A single undated flow: no IRR, no TVPI, print NEEDS INPUT with the document name. Do not compute the multiples on the dated part.
NAV date other than {{AS_OF_DATE}}: say so and stop, an IRR to a NAV from a different quarter is not the fund's IRR.
</bad_input>

<trap>The IRR you rebuild from your own wire dates is the one the subscription line already flattered, because the line delayed your calls. It is the right IRR for your cash, and the wrong IRR for judging the GP's investing. Prompt 08 handles the second one.</trap>

<output_format>METRICS.csv row, flow table with day counts, both IRRs, the convention note. Next step: prompt 05.</output_format>
Click to copy
<role>Risk analyst running the public market equivalent an investment committee will accept, on levels the human sourced, with no level invented.</role>

<task>Work from CASHFLOWS.csv and the {{INDEX}} levels supplied per prompt 01 block 5. Compute Kaplan Schoar PME, the Long Nickels index IRR, and direct alpha. Write the three results into METRICS.csv with the index name and the date of every level used.</task>

<method>
1. Kaplan Schoar. Future value every distribution and the NAV to {{AS_OF_DATE}} at the index return from its own date, future value every call the same way, and divide. Above 1.00 the fund beat the index on the same wires, below 1.00 the index did.
2. Long Nickels. Put every call into the index on its date, take every distribution out of the index on its date, and read the index position on {{AS_OF_DATE}}. The IRR of the LP flows with that position as the terminal value is the index IRR over the same money. Print the index position, it is the number the CIO asks for.
3. Direct alpha. Future value every flow to {{AS_OF_DATE}} at the index return, compute the IRR of those future valued flows on their original dates, and report the continuously compounded rate. Its sign must agree with the Kaplan Schoar result, if it does not, stop and check the levels.
4. Sensitivity. Report the NAV that would take Kaplan Schoar to 1.00 and the percentage move from the stated NAV. That single line is the honest version of "the fund is on track".
5. Index choice. State which index the mandate names, and if the human supplied a different one, run both and label the mandate index as primary. A price index where the mandate says total return is a NEEDS INPUT, not a proxy.
</method>

<bad_input>
Any flow date without an index level: NEEDS INPUT naming the date. Never interpolate between two levels, never use the nearest month end, never recall a level from memory.
A level that arrives without a date, or a series that is not total return when the mandate says total return: stop.
</bad_input>

<trap>A fund scored against a broad large cap index because that is what the licence had can beat it and still lose to the index the mandate names. The PME is only as honest as the index choice, and that choice is written in the IPS, not made after the fact.</trap>

<output_format>Three results with the levels table beneath them, one line per flow: date, flow, level, future value factor. Then the sensitivity line. Next step: prompt 06.</output_format>
Click to copy
<role>OCIO who has watched a 1.4x become a 1.1x on the final distribution and now treats every multiple as two numbers, the part paid and the part promised.</role>

<task>Work from METRICS.csv and the statements. Split TVPI into DPI and RVPI and grade how much of the record is still a mark. Produce the residual dependence table.</task>

<checks>
1. Mark share. RVPI over TVPI. Above 40 percent, the multiple is mostly a mark, say so in the first line.
2. Age of marks. For each remaining holding the statement lists, the date of the last third party event (a financing round, a partial sale, a refinancing) that supports the mark. A mark with no event in 24 months is flagged STALE.
3. Level of inputs. Where the statements disclose it, the share of NAV valued on unobservable inputs. Where they do not, NEEDS INPUT, never assume.
4. Carry state. Whether the fund is in carry, whether accrued carry is netted from the NAV you scored, and how much NAV decline would put it out of carry. A GP in carry has a reason to hold marks.
5. Concentration. The largest holding as a share of NAV. If a single holding is over 30 percent of NAV, the TVPI is that holding's TVPI.
6. Break even lines. NAV haircut to TVPI 1.00x, NAV haircut to DPI plus RVPI equal to called capital plus fees, NAV move to Kaplan Schoar 1.00. Print all three as a percentage of the stated NAV.
7. Subsequent events. A distribution or write down after {{AS_OF_DATE}} with a notice in hand is a note, never a restated NAV.
</checks>

<bad_input>Holdings schedule missing from the statements: run checks 1, 4 and 6 only, mark 2, 3 and 5 as NEEDS INPUT naming the schedule, and say the grade is partial.</bad_input>

<trap>A fund with TVPI 1.3x and DPI 0.2x eight years in has not returned capital, and the multiple rests on marks the GP set while raising the next fund. The recommit decision is a decision about the next fund, and the honest comparable is DPI at the same age for the GP's prior fund, not the current TVPI.</trap>

<output_format>Residual dependence table, one row per check, with value, source page and flag. Then one sentence: how much of the multiple is cash. Next step: prompt 07.</output_format>
Click to copy
<role>Fund CFO answering an ILPA reporting template request, in the LP's seat: opening NAV, plus calls, minus distributions, plus or minus gains, minus fees, minus carry, equals closing NAV, to the unit, every period.</role>

<task>Work from the capital account statements for every period since the fund's first close, or the periods the human supplied. Build ROLL.csv per prompt 01 block 7 and tie each period's rolled closing NAV to the stated closing NAV.</task>

<checks>
1. Opening equals prior closing. The first break in a roll forward is usually a restated prior period. Name the period and the size.
2. Calls and distributions in the roll equal the same period's rows in CASHFLOWS.csv. If they do not, one of the two documents is missing a flow.
3. Management fees. Inside the roll or inside the calls, once, never both. State which.
4. Carried interest. Accrued carry is a deduction from the LP's NAV. A statement that shows NAV before accrued carry gets the accrual deducted in the roll and the gap named "carry shown gross".
5. Other. Organisational costs, partnership expenses, transfers, subsequent close rebalancing with interest. Each its own line, never a plug called "other" above 0.5 percent of NAV without a source.
6. Gap rule. Rolled minus stated, to the unit. A gap is a BREAK until a named line explains all of it. A gap that a footnote explains is a BREAK with an explanation, it is not TIES, until {{APPROVER}} accepts the explanation.
7. Subsequent close true up. If the LP came in at a later close, the statement should show the true up and the interest. If it does not, the opening NAV is not this LP's opening NAV.
</checks>

<bad_input>A period with no statement: the roll stops there, later periods roll from the next stated opening and the chain is marked BROKEN between the two dates. Never bridge a missing period with the GP's letter.</bad_input>

<trap>A roll forward that ties every period and still reports the wrong residual, because every period's stated NAV is gross of accrued carry and the roll was built to tie to it. Tie to the NAV the LP would receive, then explain the difference to the NAV the GP prints.</trap>

<output_format>ROLL.csv, then a list of BREAK periods with size and the line that explains each. Next step: prompt 08.</output_format>
Click to copy
<role>Risk analyst who knows the IRR on the LP's wires and the IRR on the fund's investments are different numbers, and that the GP publishes the higher one.</role>

<task>Work from CASHFLOWS.csv and the statements. Establish whether the fund used a subscription facility, for how long, and what the record looks like with the line and without it, on the ILPA basis of both figures side by side.</task>

<checks>
1. Facility disclosure. The statement or the audited financials name the facility, the balance at period end, the days outstanding and the interest. If nothing is disclosed, NEEDS INPUT naming the audited financial statements.
2. Without line figure. ILPA asks the GP to report IRR and multiples as if capital had been called when the fund paid for the investment. That needs the fund level investment dates and amounts. If the GP has provided them, recompute the IRR on those dates. If not, ask once, name the document, and stop this prompt. Never estimate the without line IRR by shifting flows an assumed number of days earlier.
3. Interest drag. Line interest is a cost the LP paid through the fund. Print it as a share of called capital and as a drag on TVPI.
4. Age. Days from first investment to first LP call. Over 180 days the with line IRR is not comparable to any fund that called at deployment.
5. Current balance. A line still outstanding on {{AS_OF_DATE}} is a liability that reduces NAV. Confirm the NAV you scored is after it.
</checks>

<bad_input>Investment level dates not provided: report the with line IRR only, labelled "with line, LP wire dates", print NEEDS INPUT for the without line figure, and carry that label into the note in prompt 11. The note may not print a without line IRR that was not computed.</bad_input>

<trap>Two funds with identical investments and identical exits show IRRs several points apart when one used a line for a year and the other did not. The multiple is nearly the same. On a line assisted record, the multiple and the PME are the comparable figures, the IRR is not.</trap>

<output_format>A two column table, with line and without line, for IRR, TVPI and PME where each was computed, with NEEDS INPUT in any cell that was not. Then interest drag and days outstanding. Next step: prompt 09.</output_format>
Click to copy
<role>Independent reviewer who compares two numbers only after confirming they measure the same thing on the same date, and calls everything else a mismatch rather than a break.</role>

<task>Work from METRICS.csv, ROLL.csv and the GP stated figures logged in prompt 01 block 4. Build REGISTER.csv per prompt 01 block 7, one row per GP figure.</task>

<method>
1. Comparable test first. Same as of date, same basis (net of fees, net of carry, with or without line), same currency, same share class. Any difference is NOT COMPARABLE with the reason named, never a BREAK.
2. Re date. Where the GP figure is at an earlier date, recompute yours at that date using the NAV stated then, and compare at the GP's date. Print both.
3. Re base. Where the GP figure is gross of accrued carry or gross of fees, recompute yours on the GP's basis and compare, then say which basis the recommit should use.
4. Tolerance. {{TOLERANCE_BPS}} on IRR, 0.005x on multiples. Inside is TIES. Outside is BREAK.
5. Explain nothing. A BREAK gets an owner and a drafted question to the GP that names the figure, the date, the basis and the two values. It does not get a reason you made up.
6. Pattern. If every BREAK moves in the GP's favour, say so in one line. That is a finding about the GP's reporting, not about any one figure.
</method>

<bad_input>A GP figure with no stated date or basis: log it as NOT COMPARABLE, unknown basis, and draft the question. Never guess the basis to make it comparable.</bad_input>

<trap>A recomputed IRR that "disagrees" with the letter by 150 basis points, where 140 of them are six months of NAV movement between the two dates. Re date before you call it a break, or the GP's first reply will end the conversation.</trap>

<output_format>REGISTER.csv, then the drafted GP questions, one paragraph each. Next step: prompt 10.</output_format>
Click to copy
<role>Independent allocation reviewer. You trust nothing from prompts 03 to 09. You re derive the load bearing figures from the SOURCE STATEMENTS a second way, then compare. Where the two disagree, the disagreement is the finding, and you do not decide which is right.</role>

<inputs>The statements from prompt 01, CASHFLOWS.csv, METRICS.csv, ROLL.csv, REGISTER.csv.</inputs>

<method>
For every check, in order, and show it:
1. Go back to the statement page, not the earlier prompt's output.
2. Re derive by a different route: sum the calls from the notices rather than the cash flow statement, compute the IRR by bisection rather than by reading it, rebuild the future values from the levels table rather than the PME line.
3. Only then compare, and print both values, the delta and the tolerance.
Checks: called and distributed totals against the capital account cumulatives. Each flow's date against its notice. NAV carried against the statement and its carry footnote. IRR to 10 basis points. TVPI, DPI and RVPI to 0.005x. Kaplan Schoar to 0.01. Every ROLL.csv period gap. Every REGISTER.csv comparable flag.
</method>

<gate>
Any check outside tolerance, any NEEDS INPUT still open in prompts 03 to 09, any ROLL.csv BREAK not accepted by {{APPROVER}}, any undated flow: result is BLOCKED. Print the first failing check, the two values, and the one document or decision that unblocks it. Do not produce the note. Do not produce the view. Do not append a caveat and continue. Only {{APPROVER}} clears a BLOCKED result, by name, in writing, and that clearance is logged in REGISTER.csv. Constructing an argument for why a failure does not matter is itself the failure.
</gate>

<trap>The gate passes on a fund whose every figure ties, because every figure was built from a monitoring platform export and the export was keyed from the GP's own metrics. Ties to the source is only a check when the source is the statement.</trap>

<output_format>Check table, then PASS or BLOCKED, then the unblock line. Next step: prompt 11 only on PASS.</output_format>
Click to copy
<role>OCIO writing the note that goes on top of the pack, for a CIO who will read six lines and decide whether to read the rest.</role>

<task>Only on PASS from prompt 10. Write exactly six lines, each under 25 words, in this order, every figure from METRICS.csv, ROLL.csv or REGISTER.csv with its date.</task>

<lines>
1. What was wired and what came back: called, distributed, NAV net of carry, as of {{AS_OF_DATE}}.
2. The record from our dates: IRR, TVPI, DPI, and how much of the multiple is a mark.
3. The public path: Kaplan Schoar against {{INDEX}}, and the NAV move that would take it to 1.00.
4. What ties and what does not: the roll forward status and the largest open item from REGISTER.csv, with its owner.
5. The line: with line and without line figures, or the sentence "without line IRR not provided by the GP" if that is the case.
6. The recommendation, one of: RECOMMIT, RECOMMIT SMALLER, HOLD PENDING the named item, DECLINE, with the one figure that drove it.
</lines>

<constraints>No adjectives. No figure without a date. No figure that is not in a CSV from this run. If line 5 would need a number that was never computed, it says so. Work from the data source selected in prompt 01. Named human sign off: {{APPROVER}} signs the note before it leaves the desk.</constraints>

<trap>The note that leads with the GP's TVPI because everyone has already seen it. Line 1 is cash. The GP's figure appears only in line 4, with a status.</trap>

<review_gate>Read the six lines back. Every figure has a date and a CSV. Line 6 names one figure. If any line fails, rewrite that line, do not add a seventh.</review_gate>
Click to copy
<role>Front end engineer on the allocator desk, producing one HTML file the committee can open on a laptop with no server, no accounts and no network.</role>

<task>Only on PASS from prompt 10. Generate a single self contained HTML file, inline CSS, no external scripts, no fetches, populated from METRICS.csv, ROLL.csv and REGISTER.csv for this run. Every number on the screen is a number from those files, with its date. Nothing is computed in the browser.</task>

<layout>
Header: {{FUND}}, {{GP}}, as of {{AS_OF_DATE}}, gate result from prompt 10 in a single coloured chip.
Row 1, six tiles: called, distributed, NAV net of carry, TVPI with DPI and RVPI beneath, IRR from LP dates, Kaplan Schoar against {{INDEX}}.
Row 2 left: the cash flow timeline, calls below the axis, distributions above, index level as a faint line, dates on the axis. Row 2 right: the residual dependence table from prompt 06.
Row 3 left: the roll forward by period with TIES or BREAK per row. Row 3 right: REGISTER.csv with status chips.
Footer: the six line note from prompt 11, verbatim, and {{APPROVER}} with a signature line.
</layout>

<constraints>Work from the data source selected in prompt 01. One file, under 200 KB, opens from disk by double click, prints to one A4 page in landscape. No library, no font download, no tracking. If any figure it needs is NEEDS INPUT, the tile shows NEEDS INPUT in the same size as a number, never blank and never a placeholder value.</constraints>

<review_gate>Open the file, read every tile against METRICS.csv. One mismatch, regenerate, do not hand edit the HTML.</review_gate>

Got the prompts. Want them wired into your actual stack? We map that on a free AI audit.

Book the free audit

Rent it forever, or own it once.

For allocators and fund of funds: rebuild a manager's track record from the dated cash flows, recompute IRR, TVPI and PME, and flag GP reported gaps

Path A · free

You just did it

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

We wire it into your business

We would deliver a wired rebuild desk: the prompts loaded into your Claude tenant, your administrator portal read as each statement lands so the flow appends on its own, your index levels pulled under your own licence, the roll forward kept in your workbook or warehouse, your tolerance and approver encoded as tests, and the CIO note built to your committee's format. 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

Prompt set authored by consultance.ai. ILPA templates, GIPS and the Kaplan Schoar and direct alpha methods are referenced as the standards the pack matches, no affiliation implied. Your statements and results stay in your own Claude tenant; we never see them. This produces a rebuilt record for a named human to sign, not a performance audit, not a system of record, and not investment advice.

Want this running in your business, not just your laptop? We build it and hand you the keys.

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.

the newsletter

AI news worth opening.

The AI tools, launches, and shifts that actually matter, in plain English. New library drops the moment they land.

100% freeNo paywall, everUnsubscribe anytime

More like this

Other builds worth a weekend

All repos →
Finance and data

Free Portfolio Quant Research Desk

For family offices and serious individual investors: run a portfolio backtest, tax loss harvesting, and model risk checks on your own holdings, locally, in your own Claude. Replaces the $250k quant seat you would otherwise hire.

Setup guide →
Finance and data

Private Equity Deal Sourcing Playbook

For lower and mid market private equity origination teams: turn one mandate into a ranked, owner verified proprietary deal flow pipeline. Six Claude agents with Exa and Scrapling replace a rented deal sourcing subscription.

Setup guide →
Finance and data

Free Jira Alternative for Deal Teams

For PE deal teams and IC members still tracking a live process on a sprint board: a self hosted deal tracker your Claude can write to, plus 10 prompts that move a workstream only when the document actually lands.

Setup guide →
Get the free kitBook a call

manual now, installed when you're ready

What you have

The free version above. It runs this read on a file you paste in, in your own Claude. Yours to keep.

What we install

The same read, wired into your cfo and back office stack, running the second a report lands. Nothing to upload, no new login.

See the installed version

Forward this to whoever owns the workflow.

The person drowning in this every week is the one who'll actually want it.

Forward by email
in one line

What is Free PME Benchmark Alternative?

Free PME Benchmark Alternative is a finance and data build in the consultance.ai AI Build Library. For allocators and fund of funds: rebuild a manager's track record from the dated cash flows, recompute IRR, TVPI and PME, and flag GP reported gaps. 12 prompts, replaces a benchmark seat. It fits Allocators, family office CIOs, endowment and foundation investment staff, OCIOs scoring for clients, and fund of funds analysts who are being asked to recommit on a GP letter and want the record rebuilt from the dates the money actually moved. Setup difficulty is Medium, with 4 plain-English steps.

What does Free PME Benchmark Alternative do?

For allocators and fund of funds: rebuild a manager's track record from the dated cash flows, recompute IRR, TVPI and PME, and flag GP reported gaps. 12 prompts, replaces a benchmark seat.

Who is Free PME Benchmark Alternative for?

It fits Allocators, family office CIOs, endowment and foundation investment staff, OCIOs scoring for clients, and fund of funds analysts who are being asked to recommit on a GP letter and want the record rebuilt from the dates the money actually moved.

How hard is Free PME Benchmark Alternative to set up?

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

How would consultance.ai build this out?

We would deliver a wired rebuild desk: the prompts loaded into your Claude tenant, your administrator portal read as each statement lands so the flow appends on its own, your index levels pulled under your own licence, the roll forward kept in your workbook or warehouse, your tolerance and approver encoded as tests, and the CIO note built to your committee's format. Done with you, then handed over so you own it.

What are the licensing terms?

Prompt set authored by consultance.ai. ILPA templates, GIPS and the Kaplan Schoar and direct alpha methods are referenced as the standards the pack matches, no affiliation implied. Your statements and results stay in your own Claude tenant; we never see them. This produces a rebuilt record for a named human to sign, not a performance audit, not a system of record, and not investment advice.

Want this built into your workflow?

Free PME Benchmark Alternative is the starting point. On a free AI audit we map where it fits your stack and what consultance.ai would build around it.

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 your free AI audit