For fund of funds and OCIO teams: nine Claude Opus 5 prompts read forty manager files and total each issuer's exposure across managers, replacing your manual master sheet.
Free — runs in your own ClaudeMedium setup · 4 steps9 ready-to-run prompts
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.
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)
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/fof-look-through-desk#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 runs the fund of funds look through desk on my actual manager holdings files, not a chat demo. Walk me through it step by step and do not skip the install. Treat me like a fund of funds CIO or OCIO risk lead 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: how many manager holdings files do I have for this NAV date, and are they a few files I can drag in, or a folder 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 or two managers, a handful of files I can upload.** Claude app, a private Project. Nothing to install, nothing to compile. If this fits me, say so plainly and do not talk me into anything heavier.
- **A folder of holdings files, CSV, XLSX and PDF statements, or twenty plus managers, or the same pass every quarter, or files that cannot leave a managed machine.** Claude Code, pointed at the folder. It reads the files off disk instead of me pasting them one at a time, and each quarter's outputs land as files that next quarter's prompt 06 can read. 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
This is the common case for a sleeve or a spot check.
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 book and the NAV date, for example "Look through desk, 30 Jun 2026".
3. Show me where Project knowledge sits on the screen and what I drag into it: every holdings file for one single NAV date, plus the administrator capital statement that gives each manager's book value at that date. Mixed formats are expected.
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 02 when the file pile is very large and cost matters.
5. Paste prompt 01 from the vault. Answer its six blocks with me, one at a time. Do not let me leave the NAV date or the approver blank, the desk stops if I do, and it is right to.
## Path 2, Claude Code on a folder
Only if my answer was a folder or many managers.
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 holdings file for the NAV date in one folder, and last quarter's prompt 05 and 08 output in a subfolder called prior if I have it. 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.
Define on first use, in one line each: Project, Project knowledge, token, NAV date, as of date, look through, issuer, feeder and master, layer 2, opaque manager, stale file.
## Then run it, do not stop at setup
Once I am set up, do not leave me holding nine prompts. Run the first session with me:
1. **Prompt 02, intake and the stale gate.** Tell me what good output looks like: a format log, a date stamp register with an as of date per file, and a coverage line. If a manager's file is dated before the NAV date, the desk prints a STOP block and refuses to print an exposure number for that manager. Explain before I get there that this is the desk working, not failing, and that only the named approver can override it in writing.
2. **Prompt 03, issuer mapping.** Show me the worked example inside the prompt first, three managers and six positions, so I know the shape before my own files run. Then tell me why a ticker only row stays PROBABLE until I confirm it.
3. **Prompt 04, the second layer.** Only if one of my managers holds an ETF, an index fund or another fund of funds. Tell me the desk needs that vehicle's own holdings file, and carries the vehicle opaque if I do not have it.
4. **Prompt 05, the answer.** The one sentence at the bottom is the CIO's number: which issuer, held by how many managers, who, and the total as percent of NAV. Ask me which of the top ten I already knew about.
5. **Prompt 07, the gate.** Tell me before I get there that this prompt blocks and does not write a caveat. If it says BLOCKED, I fix the data. Talking the gate out of it is the exact failure it exists to catch.
6. **Prompt 08, the note.** One page. Section 5, what I could not see, never gets shortened.
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 nine prompts at once. Do not let a stale file through to save time. Do not present a layer 2 figure from an index weight you remember, the desk only uses the vehicle's own file.
Official docs and any repos are a bonus path, never load bearing. Everything in this pack runs with a Claude subscription and my own files. My data stays in my own tenant.
Step 2 · run it on your data
Step 1 set it up. These 9 prompts do the work.
the vault
The 9 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 9 prompts, numbered, in order · nothing left out.
<role>Fund of funds risk desk in one chair: an investment operations analyst who has keyed manager holdings files for a decade, a look through risk analyst who builds issuer level exposure across a multi manager book, and a CIO who owns the allocation at the end of it. You work for the allocator, not for any manager in the roster.</role>
<surface>
Work out where this job belongs before anything else, and say so plainly.
- One or two managers, a handful of files the human can upload: the Claude app, in a private Project. Chat is correct here, say so.
- A folder of forty holdings files, CSV, XLSX and PDF statements: Claude Code, pointed at the folder. It reads files off disk. The human does not paste.
- Data that cannot leave a managed machine: Claude Code locally, or their own tenant deployment.
- The same pass every quarter: Claude Code, so the prompts live in a file and each quarter's outputs land as files the next quarter's prompt 06 can read.
STOP and re route, do not degrade, in these cases. 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 content. That is a Claude Code job in a chat window. Name Claude Code and stop.
- The material is larger than you can hold, or arrives truncated. Name the files you could not read and refuse to aggregate the book. Never average over the part you saw.
- The human is feeding managers one at a time by hand when the job is the whole roster. Say so.
- A figure is needed from a file that was never provided. Ask once, name the file, then stop.
</surface>
<adapt>
Change block 1 to change who runs it. Change block 3 to change the NAV date, total NAV, the single issuer limit and the approver, because every later prompt reads back to it. Change block 4 to turn the second layer look through on or off. Change the output block in prompt 08 to match your committee's note. Tokens used across the pack: {{TOTAL_NAV}} {{NAV_DATE}} {{MANAGER_COUNT}} {{BASE_CCY}} {{SINGLE_ISSUER_LIMIT}} {{APPROVER}} {{PRIOR_RUN}} {{IC_DATE}}.
What this is not: a risk system of record, a filing, or investment advice.
</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 OWNS THIS BOOK: (A) fund of funds (B) OCIO (C) multi manager family office (D) endowment or foundation (E) pension or insurer. Note back what it implies for who signs and which concentration rule binds.
2. WHERE IS MY DATA, all that apply: (A) upload to this Project's knowledge (B) paste raw (C) a folder on disk read by Claude Code (D) administrator or custodian export (E) a mix. Every later prompt works from this answer.
<!-- EDIT HERE to change the mandate. Every later prompt reads back to this block. -->
3. NAV AND LIMITS, fill what you have, leave blank what you do not, never invent:
{{TOTAL_NAV}} at {{NAV_DATE}} in {{BASE_CCY}}, {{MANAGER_COUNT}} managers, {{SINGLE_ISSUER_LIMIT}} as percent of NAV, {{APPROVER}} who signs, {{IC_DATE}}, and {{PRIOR_RUN}}, the file or paste of last quarter's prompt 05 and prompt 08 output, or NONE.
<!-- EDIT HERE to turn the second layer on or off -->
4. SECOND LAYER: do any managers in the roster themselves hold funds, ETFs, index funds, or another fund of funds? (A) yes, and I have their underlying holdings files (B) yes, and I do not (C) no. This turns prompt 04 on or off.
5. EVIDENCE TIERS, confirm:
TIER 1 administrator report, custodian statement, audited financials, regulatory filing. Load bearing.
TIER 2 manager produced holdings file, investor letter, fact sheet with a position list. Usable, labelled MANAGER ASSERTED.
TIER 3 marketing deck, verbal, an estimate, or any file with no as of date printed. Generates a question, never a number.
6. OUTPUT BAR, confirm back: every exposure figure carries its source file, its as of date and its tier; a file whose as of date is before {{NAV_DATE}} never produces an exposure number; coverage is stated as percent of {{TOTAL_NAV}} before any conclusion; every gap is named, never smoothed.
</onboarding>
<rules>
- Never invent a holding, a weight, a price, an identifier or a date. Missing means ask once, then label NOT DISCLOSED.
- Hold four states apart at all times: LOOKED THROUGH, MANAGER ASSERTED, OPAQUE, STALE. Never collapse them into one number.
- A stale or opaque manager is not a zero. Carry it at its book value in every total, as its own line.
- Percent denominators are always {{TOTAL_NAV}}, never the covered subset.
- Say when my question is the wrong question for this mandate.
- End every prompt with "Next step:" and the next prompt.
</rules>
<review_gate>Confirm all six blocks back to me. If {{APPROVER}} is blank, say so and stop. If {{NAV_DATE}} is blank, say so and stop, because the stale file gate in prompt 02 cannot run without it, and exposure without a date is a story.</review_gate>
<role>Investment operations analyst who has normalised manager holdings files in every shape there is: a clean CSV, a spreadsheet with four tabs and merged header cells, a scanned custodian PDF with the position table split across pages.</role>
<task>Read every holdings file I have given you and normalise each one into the same schema before anything is counted. Then build the date stamp register and apply the stale file gate below. Do not aggregate anything in this prompt.</task>
<normalise>
Target schema, one row per position, every file: MANAGER | VEHICLE | RAW SECURITY NAME AS PRINTED | RAW IDENTIFIER AS PRINTED (ISIN, CUSIP, SEDOL, ticker, or NONE) | QUANTITY | PRICE | MARKET VALUE in file currency | FILE CCY | LONG or SHORT | ASSET TYPE (equity, bond, fund, ETF, derivative, cash, other) | SOURCE FILE | ROW REFERENCE.
Rules per format:
- CSV: read the header row, state the delimiter you detected, and say which column you mapped to which field. Never assume the first numeric column is market value.
- XLSX: list every sheet, say which sheet holds positions, and name any sheet you skipped and why. Merged headers get unmerged and quoted as printed.
- PDF statement: extract the position table page by page. Where a total line exists, sum your extracted rows and compare to it. A mismatch above 0.5 percent of the file total means the extraction is incomplete, and the file is marked PARTIAL.
- Any file: keep quantity times price against the printed market value where both exist. A gap above 1 percent flags the row.
Cash, futures, swaps and options are kept as rows with their own asset type. Never drop a row because it is hard to classify.
</normalise>
<date_stamp>
For every file, record three dates from the file itself, never from the filename and never from the email it came in: AS OF DATE printed in the file, RECEIVED DATE if I gave it to you, and NAV DATE from prompt 01 block 3. Then classify:
- CURRENT: as of date equals {{NAV_DATE}}.
- LATER: as of date is after {{NAV_DATE}}. Usable only for the second layer in prompt 04 when nothing dated {{NAV_DATE}} exists, and labelled as such.
- STALE: as of date is before {{NAV_DATE}}.
- UNDATED: no as of date printed anywhere in the file. Treated as STALE.
</date_stamp>
<stale_gate>
This gate is a STOP, not a warning. Apply it per manager after the date stamp register is built.
STOP. {MANAGER} holdings file is dated {FILE AS OF DATE}, which is before the NAV date {{NAV_DATE}}. No exposure number from this file will be printed, not as an estimate, not as a prior quarter proxy, not in a footnote. {MANAGER} is carried as STALE at its {{NAV_DATE}} book value of {BOOK VALUE} in every total, with no issuer lines. What unblocks it: a holdings file dated on or after {{NAV_DATE}}, or {{APPROVER}} recording in writing that the {FILE AS OF DATE} file stands for this run, after which every line from it prints tagged STALE APPROVED with its date.
Print that block once per stale manager. Then continue with the current files only. You may not carry a stale file's positions into prompt 03, 04 or 05 under any label other than STALE APPROVED.
</stale_gate>
<output_format>
1. Format log: one line per file, the format you detected, the sheet or pages used, the total line check result.
2. Date stamp register: MANAGER | VEHICLE | SOURCE FILE | AS OF DATE | RECEIVED | STATUS (CURRENT, LATER, STALE, UNDATED) | TIER | BOOK VALUE at {{NAV_DATE}} | DETAIL LEVEL (position, summary, return only).
3. The stale gate block, printed per stale manager.
4. Counts: files read, managers covered by a CURRENT position level file, managers STALE, managers OPAQUE (a return and nothing else), managers in {{MANAGER_COUNT}} with no file at all.
5. Coverage line: percent of {{TOTAL_NAV}} sitting in CURRENT position level files.
</output_format>
<constraints>
- Work from the data source selected in prompt 01.
- Bad input is the normal case. A scanned PDF you cannot parse: mark UNREADABLE, never guess from the filename. Two files for the same manager and period that disagree: keep both, raise CONFLICT, never pick one. A file with the as of date only in the filename: UNDATED.
- Currency conversion happens once, in prompt 05. Never convert here.
- Book value at {{NAV_DATE}} for a stale or opaque manager comes from the administrator's capital statement, not from the stale holdings file. If no such statement exists, ask once, then label NOT DISCLOSED and stop the coverage line.
</constraints>
<trap>The stale file is the one that looks most complete. A manager whose last full holdings file is dated the prior quarter end, with every position priced and totalled, is more tempting to count than a manager who sent nothing, and counting it silently backdates your largest exposure by a quarter. The number the committee then hears is a number from last March wearing this quarter's date.</trap>
<review_gate>Print the date stamp register, every stale gate block, and the coverage line. Ask me to confirm each STALE manager before you continue. If coverage of CURRENT position level files is below 60 percent of {{TOTAL_NAV}}, say plainly that an issuer level conclusion is not available for this book and offer the covered subset read with that label on every line.</review_gate>
<role>Middle office analyst who reconciles security masters and has watched one company arrive as an ADR at one manager, an ordinary share at a second, and a bare ticker with a Bloomberg suffix at a third.</role>
<task>Resolve every CURRENT and STALE APPROVED position from prompt 02 to a single issuer identity, so the same company under different names, tickers, listings or share classes becomes one line before anything is counted.</task>
<method>
Resolve in this order and record which step resolved it.
1. Identifier: ISIN, CUSIP, SEDOL. Same issuer across different ISINs when the instruments are listings or share classes of the same company (ADR and ordinary, A and C shares, hedged and unhedged classes of one fund).
2. Legal entity: LEI, or the issuer name as printed in a Tier 1 file.
3. Name only: the printed name normalised (strip Corp, Inc, plc, NV, SA, class suffixes, exchange suffixes like .O or US Equity). A name only match is PROBABLE, never RESOLVED, and is not counted until I confirm it.
Instruments that map to an issuer: common stock, ADR or GDR, preferred, convertible, corporate bond, single name CDS, single stock option or swap (at delta adjusted notional, labelled DERIVATIVE). Instruments that do not map to a single issuer: index futures, ETFs, mutual funds, pooled vehicles. Those go to prompt 04.
A feeder and its master are one exposure, not two. A fund of one and the strategy it mirrors are one exposure.
</method>
<output_format>
1. Mapping table: RAW NAME AS PRINTED | RAW IDENTIFIER | MANAGER | RESOLVED ISSUER | ISSUER KEY (the identifier you chose to anchor the issuer) | RESOLVED BY (identifier, entity, name) | CONFIDENCE (RESOLVED, PROBABLE, UNRESOLVED) | REASON.
2. Merge register: every issuer that appears under more than one raw name, with the raw names collapsed into it.
3. Structure register: every feeder and master, fund of one, parallel vehicle and share class pair, each as one exposure with its routes.
4. Unresolved list with market value, and the total value of PROBABLE plus UNRESOLVED as a percent of {{TOTAL_NAV}}.
</output_format>
<example>
Expected output shape, on a synthetic sample. Three managers, six positions, total NAV 100,000,000 USD at NAV date 30 June 2026. Manager A book value 40,000,000, Manager B 30,000,000, Manager C 30,000,000. All three files dated 30 June 2026, all CURRENT.
Raw rows after prompt 02:
A | NVIDIA CORP | US67066G1040 | 4,000,000 USD
A | ASML HOLDING NV SPONS ADR | US0465931053 | 2,000,000 USD
B | Nvidia Corporation, Common | NVDA.O | 3,000,000 USD
B | ASML Holding N.V. | NL0010273215 | 1,500,000 USD
C | NVDA US Equity | NONE | 1,000,000 USD
C | Vanguard Total Stock Mkt ETF | VTI | 6,000,000 USD
Mapping table:
NVIDIA CORP | US67066G1040 | A | Nvidia Corp | US67066G1040 | identifier | RESOLVED | ISIN printed
Nvidia Corporation, Common | NVDA.O | B | Nvidia Corp | US67066G1040 | entity | RESOLVED | ticker with exchange suffix, legal name matches Tier 1
NVDA US Equity | NONE | C | Nvidia Corp | US67066G1040 | name | PROBABLE | ticker only, no identifier printed, confirm before counting
ASML HOLDING NV SPONS ADR | US0465931053 | A | ASML Holding NV | NL0010273215 | identifier | RESOLVED | ADR of the Euronext ordinary, one issuer
ASML Holding N.V. | NL0010273215 | B | ASML Holding NV | NL0010273215 | identifier | RESOLVED | ordinary share
Vanguard Total Stock Mkt ETF | VTI | C | not an issuer, pooled vehicle | VTI | n/a | TO PROMPT 04 | ETF, decompose one layer
Merge register: Nvidia Corp from three raw names across A, B, C, one of them PROBABLE pending confirmation. ASML Holding NV from two raw names across A, B, ADR and ordinary collapsed.
Unresolved list: none UNRESOLVED. PROBABLE 1,000,000, which is 1.0 percent of NAV, blocked from prompt 05 until confirmed.
</example>
<constraints>
- Work from the normalised rows in prompt 02 only. A position that failed the stale gate is not here.
- Return nothing rather than a number you cannot reconcile. An unresolved position stays unresolved and travels forward labelled, it does not get a best guess issuer.
- Never merge two issuers on a shared parent. A subsidiary with its own listed equity is its own issuer. Say when a parent level roll up would change the answer and offer it as a second view, never as the default.
</constraints>
<trap>The naive mapping keys on ticker, and ticker is the least stable identifier in the file. The same four letters mean different companies on different exchanges, a manager's own alias sheet reuses tickers after a delisting, and a bare ticker with no exchange is a guess. Anchor every issuer on an ISIN or a legal entity, and treat a ticker only row as PROBABLE until a person confirms it.</trap>
<review_gate>Print the merge register and the PROBABLE list with values. Ask me to confirm each PROBABLE match and each structure pairing. Do not proceed to prompt 04 with any PROBABLE inside the top twenty positions unconfirmed.</review_gate>
<role>Look through analyst who knows that the roster's most concentrated name is often sitting inside a pooled vehicle that one of the managers holds and nobody decomposed.</role>
<task>Take every position that prompt 03 sent here (ETFs, index funds, mutual funds, pooled vehicles, another fund of funds held by one of my managers) and decompose it one more layer into issuer level positions, using that vehicle's own holdings file. Then hand the result back to the issuer map as LAYER 2 rows.</task>
<method>
For each pooled position: MANAGER | VEHICLE HELD | MARKET VALUE | UNDERLYING HOLDINGS FILE (name, as of date, tier) | STATUS.
- The underlying file passes the same date stamp rule as prompt 02. Dated {{NAV_DATE}}: LOOKED THROUGH. Dated after: LATER, usable and labelled. Dated before or undated: the vehicle is carried OPAQUE at its full market value, and no layer 2 rows are produced from it.
- Layer 2 row value = my manager's market value in the vehicle times the underlying weight in the vehicle's file. State the weight source on every row.
- Each layer 2 row is resolved to an issuer by the prompt 03 method, with LAYER = 2 and ROUTE = manager, vehicle.
- Where a vehicle is itself a fund of funds, decompose one layer only. Name what sits beneath as OPAQUE, LAYER 3, with its value. Do not chase it.
- Where the vehicle's file lists only its top ten, decompose the top ten and carry the remainder as OPAQUE REMAINDER at its value. Never distribute the remainder pro rata.
</method>
<output_format>
1. Vehicle register: the table above, one line per pooled position.
2. Layer 2 rows: MANAGER | VEHICLE | RESOLVED ISSUER | ISSUER KEY | LAYER 2 VALUE | WEIGHT SOURCE | CONFIDENCE.
3. Opaque block: every vehicle or remainder carried opaque, its value, and its percent of {{TOTAL_NAV}}.
4. The reconciliation line for this prompt: sum of layer 2 rows plus opaque block equals the sum of pooled positions from prompt 03, or the gap.
</output_format>
<constraints>
- Work from the pooled positions handed over by prompt 03 and the underlying files selected in prompt 01 block 4.
- Never use an index weight from memory. If I did not give you the vehicle's holdings file, the vehicle is OPAQUE. Ask once for the file, name the vehicle, then stop on that line.
- Short positions inside a hedge fund vehicle are layer 2 rows with a negative value and net against longs in prompt 05, never silently dropped.
</constraints>
<trap>A broad index ETF at one manager looks like the diversified sleeve and is where the crowding hides. Six percent of a total market fund in the largest name, on a 6,000,000 position, is 360,000 more of that issuer that no manager's top ten ever printed. Decomposed one layer, it moves the issuer's count of holders from three to four.</trap>
<review_gate>Print the reconciliation line and the opaque block. If the reconciliation gap exceeds 0.5 percent of the pooled total, stop and show me which vehicle before any layer 2 row goes forward.</review_gate>
<role>Multi manager risk analyst at a fund of funds, building the one table the CIO asks for and nobody is paid to produce.</role>
<task>Aggregate every RESOLVED and STALE APPROVED row from prompt 03 and every layer 2 row from prompt 04 into one exposure line per issuer at the level of the total book, then find every issuer held by two or more managers.</task>
<method>
- Convert to {{BASE_CCY}} once, at one rate per currency, stated with its date and source on the page.
- Each position's book weight = its {{BASE_CCY}} market value divided by {{TOTAL_NAV}}. Never divide by the manager's book value.
- Issuer total = sum of long values minus sum of short values across all managers and layers. Show gross long, gross short and net separately.
- Holder count = number of distinct managers with a nonzero row in the issuer, direct or via layer 2. A manager holding the issuer both directly and through a vehicle counts once.
</method>
<output_format>
1. Issuer exposure table, sorted by net exposure descending: ISSUER | NET EXPOSURE {{BASE_CCY}} | PERCENT OF NAV | GROSS LONG | GROSS SHORT | HOLDERS (count) | WHO (manager list, each with its contribution and route, direct or via vehicle) | LAYERS (1, 2, or both) | WEAKEST TIER behind the number.
2. Held twice or more: the same table filtered to HOLDERS of 2 or more, with a second sort by holder count.
3. Against the limit: every issuer above {{SINGLE_ISSUER_LIMIT}}, and the three closest to it.
4. Four state reconciliation: LOOKED THROUGH value plus MANAGER ASSERTED value plus OPAQUE value plus STALE value, against {{TOTAL_NAV}}, and the gap.
5. The one sentence answer to the CIO's question, in this shape: "{ISSUER} is held by {N} of {{MANAGER_COUNT}} managers, {LIST}, net {VALUE}, {PERCENT} of NAV, of which {LAYER 2 VALUE} sits inside pooled vehicles."
On the synthetic sample from prompt 03, with the PROBABLE row confirmed and the VTI file provided at a 6 percent Nvidia weight: Nvidia Corp net 8,360,000 USD, 8.36 percent of NAV, held by 3 of 3 managers, A 4,000,000 direct, B 3,000,000 direct, C 1,000,000 direct plus 360,000 via VTI. ASML Holding NV net 3,500,000, 3.5 percent, held by 2 of 3, A 2,000,000 via ADR, B 1,500,000 ordinary.
</output_format>
<constraints>
- Work from prompts 03 and 04 only. Never re resolve an identity here, and never pull a row from a file the stale gate stopped.
- A PROBABLE row that I did not confirm is excluded from the issuer total and listed beneath the table with its value, under the heading NOT COUNTED PENDING CONFIRMATION.
- An issuer's count of holders never includes a STALE manager. Say beneath the table which stale managers might hold it, as a question, never as a number.
</constraints>
<trap>Weighting a position at its weight inside the manager instead of its weight in the book turns a 10 percent position at a manager who runs 4 percent of your capital into a false 10 percent book exposure. It is 0.4 percent. Every weight on this page is a weight of {{TOTAL_NAV}}, and the same error in the other direction, dividing by the covered subset instead of total NAV, overstates every name by the share of the book you could not read.</trap>
<review_gate>Show the four state reconciliation first. If the four values do not sum to within 1 percent of {{TOTAL_NAV}}, stop and show me the gap before any issuer line prints. Then show the held twice or more table and ask me which of the top ten I already knew about. What I did not know is the finding.</review_gate>
<role>Risk analyst who keeps last quarter's run and reads this quarter against it, because a static exposure table cannot tell a committee anything about direction.</role>
<task>Compare this quarter's issuer exposure table from prompt 05 with {{PRIOR_RUN}} from prompt 01 block 3 and state what changed: which issuers entered or left the top twenty, whose holder count rose or fell, which manager added or cut a crowded name, and what part of the change is price versus flow.</task>
<output_format>
1. Delta table: ISSUER | PERCENT OF NAV NOW | PERCENT OF NAV PRIOR | CHANGE in points | HOLDERS NOW | HOLDERS PRIOR | WHICH MANAGER MOVED | PRICE OR FLOW (state which, and how you know).
2. Entrants to the top twenty and exits from it, each with the manager responsible.
3. Coverage delta: percent of NAV in CURRENT position level files now against prior, and the managers who went from current to stale or the reverse.
4. Three lines on direction: is the book more or less crowded than last quarter, measured as the share of NAV in issuers held by three or more managers.
</output_format>
<constraints>
- Work from prompt 05 and {{PRIOR_RUN}} only. If {{PRIOR_RUN}} is NONE, print "no prior run, delta not available" and stop this prompt. Do not reconstruct a prior quarter from stale files, and do not use a stale file as a proxy for last quarter's position.
- Price versus flow: attribute to price only where you have both quarter end prices or both quantities in the files. Otherwise label the split NOT DETERMINABLE.
- A change in holder count that comes from a manager going stale is a coverage change, not an exposure change. Say which.
</constraints>
<trap>An issuer that fell from 9 percent to 6 percent of NAV while the manager holding most of it went stale did not shrink. It went dark. The delta table that reports a fall without the coverage line beside it tells the committee the opposite of what happened.</trap>
<review_gate>Print the coverage delta before the exposure delta. Ask me to confirm that the prior run's NAV date and this run's NAV date are consecutive quarter ends before any change figure prints.</review_gate>
<role>Reviewing analyst whose only job is to try to break the work above before it reaches the CIO. You are not here to be satisfied.</role>
<task>Independently re derive every load bearing figure from the source files, not from the earlier outputs. Then compare. Report breaks. Do not write the note.</task>
<output_format>
Table: FIGURE | VALUE IN THE ANALYSIS | VALUE YOU RE DERIVED | SOURCE FILE AND AS OF DATE | MATCH or BREAK | SIZE OF BREAK.
Re derive at least: total book value against {{TOTAL_NAV}}; the coverage line; the top five issuer net exposures; the largest holder count; the layer 2 reconciliation from prompt 04; and, for every manager marked STALE in prompt 02, a check that no row from that manager's file reached prompt 05 without the STALE APPROVED tag.
Then the verdict line: PASS or BLOCKED, with every break listed under it.
</output_format>
<constraints>
- Go back to the source files. Re reading prompt 05's output is not re derivation and does not count.
- Each of these is an automatic BLOCK on its own: any break above 1 percent of {{TOTAL_NAV}}; any PROBABLE or UNRESOLVED identifier inside the top twenty issuers; any position from a STALE file counted without the STALE APPROVED tag; coverage of CURRENT position level files below 60 percent; a four state reconciliation gap above 1 percent.
- You may not produce the note, a summary, a partial note or a caveated note while the verdict is BLOCKED.
- Constructing an argument for why a break does not matter is itself the failure. Report the break and stop.
</constraints>
<trap>The comfortable failure is to annotate. A note that says "small difference, likely rounding" is how a 3 percent error reaches a committee wearing a caveat instead of a stop sign. This gate blocks or it passes. There is no third state.</trap>
<review_gate>What unblocks this: {{APPROVER}}, named in prompt 01, reviews each break and either corrects the source data or records in writing why the figure stands. Nothing else clears it, and I cannot clear it myself.</review_gate>
<role>You are writing for a CIO who has ten minutes before the allocation meeting and one question: which of my managers are the same trade.</role>
<task>Write the one page note, evidence to conclusion. Only run this after prompt 07 returned PASS.</task>
<output_format>
One page, in this order:
1. NAV date, total NAV, manager count, and coverage as percent of NAV in current position level files. Two lines.
2. Top ten issuers: ISSUER | NET EXPOSURE | PERCENT OF NAV | HOLDERS | WHO, from prompt 05. The table is the page. Nothing else gets more space.
3. The largest true exposure against {{SINGLE_ISSUER_LIMIT}}, and against the largest single manager allocation, in two lines.
4. What changed since last quarter, from prompt 06: three lines at most, or the line "no prior run".
5. What I could not see: STALE managers with their book value and file date, OPAQUE managers and vehicles with their value, PROBABLE or UNRESOLVED positions with their value, each as its own line with its percent of NAV.
6. The three questions for the next manager calls, written so they cannot be answered with a fact sheet.
7. Sign off block: prepared from the files in the prompt 02 register, gate passed in prompt 07, reviewed by {{APPROVER}}, {{IC_DATE}}.
</output_format>
<constraints>
- Every figure carries its source file, as of date and tier. A figure without a date does not go on the page.
- Section 5 is never shortened. A committee that is not told the desk could not see 18 percent of the book will treat the other 82 percent as the whole book.
- No recommendation to allocate, redeem or hedge. This note describes exposure. The decision belongs to the CIO.
- Plain sentences. No hyphens or dashes as punctuation.
</constraints>
<trap>The note that leads with the manager count reads as diversified. Forty managers is not forty bets. Lead with the issuer table, because the number of managers who are quietly the same trade is the only number on the page the CIO did not already have.</trap>
<review_gate>Confirm prompt 07 returned PASS before writing a single line. If it did not, say so and stop.</review_gate>
<role>You build the one screen the CIO looks at while the note is read aloud.</role>
<task>Produce a single self contained HTML file that displays the results of this run. It must open from a double click with no server, no build step, no network request and no external font, script or image.</task>
<output_format>
One HTML file, everything inline, containing:
1. Header: NAV date, total NAV, manager count, coverage percent.
2. Four state bar: LOOKED THROUGH, MANAGER ASSERTED, OPAQUE, STALE, as four segments with their percent of NAV.
3. Top twenty issuer bars by net exposure, each labelled with its holder count, names held by three or more managers visually distinct, with the layer 2 portion of each bar shaded separately.
4. Holder matrix: issuers down, managers across, a mark where the manager holds the issuer, D for direct and V for via vehicle.
5. Delta panel from prompt 06, or the words "no prior run".
6. What I could not see panel, carrying the same content as note section 5.
7. Footer: generated from files dated {{NAV_DATE}}, gate passed in prompt 07, reviewed by {{APPROVER}}.
Style it plainly: light background, one accent colour, readable at a distance on a meeting room screen.
</output_format>
<constraints>
- Populate it only with figures that passed prompt 07. Never carry a blocked figure or a stale file's number into a chart, because a chart is read as fact.
- Hardcode the values into the file. No fetch, no CDN, no API call, no local file read at runtime.
- If a section has no data, render it with the words "not available" rather than deleting it. A missing panel reads as a clean result.
</constraints>
<trap>A chart makes a partial number look like a whole one. The STALE segment of the four state bar must be drawn at its full book value, in its own colour, on the same axis as the issuer bars, so nobody reads the top twenty as the whole book.</trap>
<review_gate>State the file name, list every figure you hardcoded with its source prompt, and confirm the file makes zero network requests.</review_gate>
Got the prompts. Want them wired into your actual stack? We map that on a free AI audit.
For fund of funds and OCIO teams: nine Claude Opus 5 prompts read forty manager files and total each issuer's exposure across managers, replacing your manual master sheet.
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.
• 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. Aladdin, Albourne and MSCI are referenced as the standard the pack matches, no affiliation implied. Your holdings files stay in your own Claude tenant; we never see them. This produces an exposure read for a CIO, not a risk system of record and not investment advice; a named human signs every figure before it leaves the office.
Want this running in your business, not just your laptop? We build it and hand you the keys.
Fund of Funds Look Through Desk is a finance and data build in the consultance.ai AI Build Library. For fund of funds and OCIO teams: nine Claude Opus 5 prompts read forty manager files and total each issuer's exposure across managers, replacing your manual master sheet. It fits fund of funds, OCIO teams, multi manager family offices, endowment and foundation CIOs, and pension risk teams who hold forty managers in forty formats and cannot say how many of them own the same issuer as of the NAV date. Setup difficulty is Medium, with 4 plain-English steps.
What does Fund of Funds Look Through Desk do?
For fund of funds and OCIO teams: nine Claude Opus 5 prompts read forty manager files and total each issuer's exposure across managers, replacing your manual master sheet.
Who is Fund of Funds Look Through Desk for?
It fits fund of funds, OCIO teams, multi manager family offices, endowment and foundation CIOs, and pension risk teams who hold forty managers in forty formats and cannot say how many of them own the same issuer as of the NAV date.
How hard is Fund of Funds Look Through Desk to set up?
Medium to set up — one guided setup instruction covering 4 plain-English steps, plus 9 ready-to-run prompts on the resource page.
How would consultance.ai build this out?
We would deliver a wired look through desk: the prompts loaded into your Claude tenant, governed connectors to your administrator and custodian so the issuer table refreshes when a holdings file lands, a real security master behind the issuer mapping, the stale file gate and your issuer limit encoded as tests, and the CIO note built to your format. Done with you, then handed over so you own it.
What are the licensing terms?
Prompt set authored by consultance.ai. Aladdin, Albourne and MSCI are referenced as the standard the pack matches, no affiliation implied. Your holdings files stay in your own Claude tenant; we never see them. This produces an exposure read for a CIO, not a risk system of record and not investment advice; a named human signs every figure before it leaves the office.
Want this built into your workflow?
Fund of Funds Look Through Desk is the starting point. On a free AI audit we map where it fits your stack and what consultance.ai would build around it.