Dashboard 3 of 4 · Quarterly · PCAP extraction

Private Fund Recon

Three-way reconciliation for ~160 private fund positions across MSCI, Backstop, and PDF capital account statements (PCAPs). Includes a scatter-plot explorer with selectable X/Y systems and metrics, plus a column-visibility picker so you only see what matters.

161
Private funds
3
Quarterly periods
3
Source systems
7
Metrics per system
On this page: Why it exists Data sources Salient features How to use

01Why this exists

Private funds report quarterly via capital account statements (PCAPs) — PDFs that arrive separately for every fund, in every fund's own template. By the time they're loaded into Backstop and then aggregated into MSCI's quarterly export, three versions of the truth exist for each fund:

For 160+ funds, manually reading three sources and tracking which ones agree is a multi-day quarterly exercise. This dashboard collapses it into one screen with a scatter plot and a filterable table. A glance tells you which funds agree (dots on the diagonal) and which ones don't.

Concrete pain killed: The quarterly private fund recon used to be a three-day exercise across Excel, the PCAP folder, and the Backstop UI. The dashboard shows you the problem funds in seconds.

02Data sources & pipeline

This dashboard is a static snapshot of a live FastAPI + SQLite backend. The live version supports adding annotations, marking cells crossed-off, and proposing fix transactions; the demo shows the read-only view.

SourceFormatTables touched
MSCI quarterly exportExcelmsci_snapshot — commitment, unfunded, paid-in, distributions, NAV, TVPI, DPI
Backstop holdings exportExcelbackstop_snapshot — same 7 metrics + manager name + matched-by
Capital account statements~100 PDFs per quarterpdf_extraction — same 7 metrics extracted via the Anthropic API with confidence scores
Fund metadataBackstop master listfund — fund name, asset class, vintage, currency, canonical name
The PCAP extraction replaces a vendor contract. Reading capital account statements is the part of fund-ops most firms outsource. Vendors like Canoe Intelligence, Backstop's PCAP service, and Cogent build entire businesses around it — an investment office of this size typically pays $50k–$300k+ per year in subscription fees, plus per-statement charges on top, for the same work. Here the pipeline reads every PCAP directly through the Anthropic API, returns a structured object the recon engine can join against MSCI and Backstop in real time, and costs roughly a few cents per statement.

For each PDF the LLM is asked to produce a structured JSON: commitment, unfunded, paid-in since inception, distributions since inception, ending NAV, DPI, TVPI. Every field comes back with a page reference, the verbatim text snippet it was pulled from, and a confidence label (high / medium / low). Low-confidence extractions get flagged for human verification in the dashboard's live mode — so the auto-extraction is fast where the PDF is unambiguous and conservative where it isn't. The verbatim snippet means a reviewer can audit any number back to the page and line in the original statement.

Funds are matched across sources using a cascade: MSCI ID first (when present), then Cambridge ID, then BNY IAS account number, then fuzzy name match. The match method is stored alongside the snapshot so the recon team can see how confident the join is.

03Salient features

📊

Scatter plot explorer

Pick any X system, any Y system, and any of seven metrics — the scatter re-plots in real time. Dots on the dashed diagonal agree perfectly; off-diagonal dots are the recon gaps.

🎚

Column visibility picker

21 metric columns plus 4 static columns. The picker opens from the toolbar; check or uncheck any column. Selections persist in localStorage and group colspans auto-update.

📐

Column resizers

Drag the right edge of any column header to resize. Double-click the grip to reset to auto width. Works even with the grouped two-row header.

📅

Period selector

Switch between quarterly periods (e.g. 2025-06-30 → 2025-09-30 → 2025-12-31). The scatter, status cards, and table all re-render.

🔍

Asset class filter + search

Drop down to filter to one asset class (Buyout, Growth, Venture, Real Assets, etc.) or type a fund name in the search box to scope the table.

🏷

Status badges

Each fund is auto-tagged: Match (≤ 5% delta) · Variance (5–20%) · Mismatch (> 20%) · Unmatched (one side missing).

04How to use it

Demo URL: private-recon.html.

1

Land on the dashboard

Top is the brand strip and period selector (defaults to the most recent quarter). Below: four summary cards (funds shown / match / variance / mismatch), then the scatter plot, then the table.

Default view — toolbar, summary cards, scatter, table.
Default view — toolbar, summary cards, scatter, table.
2

Read the scatter plot

X axis defaults to MSCI NAV ($M), Y axis to Backstop NAV ($M). The dashed line is y = x — any dot on it means the two systems agree perfectly. Dots are colour-coded by match status. Hover any dot to see the fund's name and exact MSCI and Backstop NAV.

Scatter plot — MSCI NAV (x) vs Backstop NAV (y), with diagonal reference line.
Scatter plot — MSCI NAV (x) vs Backstop NAV (y), with diagonal reference line.
3

Switch the metric

Use the Metric dropdown above the scatter. NAV is the default; you can also pick Commitment, Unfunded, Paid-in, Distributions, TVPI, or DPI. The axes auto-relabel and switch between $M (for cash metrics) and x-multiples (for TVPI/DPI).

Scatter switched to TVPI — axes auto-update to x-multiples.
Scatter switched to TVPI — axes auto-update to x-multiples.
4

Compare different system pairs

Change the X or Y dropdown to compare any two systems. MSCI vs PCAP highlights where the analytics platform disagrees with the manager's own statement; Backstop vs PCAP highlights back-office data-entry differences.

Scatter switched to MSCI vs PCAP — shows where MSCI disagrees with the manager's statement.
Scatter switched to MSCI vs PCAP — shows where MSCI disagrees with the manager's statement.
5

Browse the full table

Below the scatter, every fund has its own row. Three super-headers group the columns: MSCI (blue), Backstop (amber), PCAP (violet). Inside each group: Commitment, Unfunded, Paid-in, Distributions, NAV, TVPI, DPI — 7 metric columns per system.

Table close-up — grouped headers and colour-tinted cells per system.
Table close-up — grouped headers and colour-tinted cells per system.
6

Open the column visibility picker

Top-right of the toolbar, click the Columns dropdown. A panel appears with every column grouped by system. PCAP commitment, unfunded, paid-in, and distributions are hidden by default (because the source data is sparse for those fields). Uncheck any column to hide it; group super-headers auto-update.

Tip — Selections persist per-page in localStorage. Use the Reset button to restore the original defaults.
Column picker open — per-group checkboxes for all 25 columns.
Column picker open — per-group checkboxes for all 25 columns.
7

Resize columns to taste

Drag the right edge of any column header. The cursor turns into a resize handle. Double-click to reset to auto width. Useful when fund names get long.

Tip — Resizing works under the grouped header too — the JS attaches grips to the leaf row, not the super-header row.
8

Filter by period & asset class

Pick a different period from the leftmost dropdown to see prior quarters. Pick an asset class (Buyout, Growth, etc.) to scope the table to one strategy. The scatter and summary cards re-render in sync.

Filtered to one asset class — scatter and table both scoped.
Filtered to one asset class — scatter and table both scoped.
9

Search by fund name

Type into the Filter box to scope by fund name (or asset class substring). Useful for finding a single fund quickly when you have 160 to choose from.

Toolbar — period, search, asset-class filter, column picker.
Toolbar — period, search, asset-class filter, column picker.
10

Read the summary cards

The four cards at the top tell you the state of the recon at a glance: how many funds are shown after filters, how many match, how many have variance (5–20%), how many mismatch (> 20%). Cards re-count on every filter change.

Summary stats — counts of funds shown, matched, variance, mismatch.
Summary stats — counts of funds shown, matched, variance, mismatch.