# Every number has a source.

A system of record for private equity where every number traces to its source document. Quarterly close went from weeks to days.

Company: VectorShift

Contribution: Engineering & product

Company tenure: VectorShift · Jul 2025–present. This is not a claim about individual project dates.

Context: 100+ portfolio companies · 10,000+ transactions

## TL;DR

Problem: Fund numbers lived apart from the documents that proved them, so every quarter end turned into a reconciliation exercise.

My call: Make provenance a product requirement. A number cannot exist in the record without the document it came from.

Outcome: Nothing left to reconcile at quarter end. Quarterly close dropped from weeks to days.

- Quarterly close: Weeks → days
- Portfolio companies: 100+
- Transactions: 10,000+

## Context

- Company: VectorShift (YC S23), enterprise AI platform with 100,000+ users
- My role: Built it as a software engineer, as part of the pivot into financial services
- Customers: Private equity and financial-services funds, $15B+ AUM across clients
- Scale: 100+ portfolio companies, 10,000+ transactions

Conceptual provenance chain. A reported figure keeps a path back to its source document. No customer data is shown.

## The problem

A private equity fund reports on every company it holds and every transaction behind those holdings. Investors, auditors and the fund’s own partners rely on those numbers.

Before Portfolio Engine, a reported figure and the document behind it lived in different places: exported spreadsheets, board packs, emailed financials. The number travelled. The proof stayed behind.

So at quarter end, the work was not calculating the numbers. It was finding out where each one came from and whether it still matched its source.

Evidence: Quarterly close was taking weeks. The same question kept coming up in reviews: where did this number come from?

## Constraints & non-goals

Scale. One record covering 100+ portfolio companies and 10,000+ transactions.

Financial reporting has no tolerance for plausible. A number has to be provable, not just likely to be right.

Source documents arrive in different formats from every portfolio company.

Out of scope: Replacing each portfolio company’s own accounting system. Generating commentary on performance. Get the record right first. Scenario modeling. That became a separate layer that never writes to the record.

## Options I weighed

Rejected: An audit trail as a separate feature Provenance would sit one click away from the decision, and nobody clicks. It also lets numbers exist without a source.

Rejected: AI extraction with a confidence score A score tells a reviewer to worry, not what to check. A fund needs the document, not a probability.

Chosen: Provenance built into the record itself Reconciliation becomes a property of the data model instead of a task someone does at quarter end.

## The spec

Users: Fund finance and operations teams who own quarterly close. Deal teams who present portfolio numbers. Investors and reviewers who question them.

Requirements: Every reported number links to the source document it came from. Figures are stored at company and transaction level, then rolled up to the fund. A reviewer can open the source from the number in one step.

Acceptance criteria: A figure with no source link cannot be saved to the record. Any fund-level number can be traced down to its transactions and their documents. Correcting a source updates every figure that depends on it, and keeps the history.

Guardrails: No number enters the record without a traceable source. Close time must not get worse while teams move onto the system.

## What shipped

1. Ingest. Documents from portfolio companies come in and are parsed.

2. Extract with a link. Each figure is stored together with a reference to the document it came from.

3. Roll up. Transactions and company figures aggregate into fund-level reporting.

4. Trace. Anyone looking at a number can follow it back to its source.

## What changed

Quarterly close dropped from weeks to days, because there was nothing left to reconcile.

The record now covers 100+ portfolio companies and 10,000+ transactions.

It became the ground truth that conversational exit modeling runs on top of.

Close time is the reported workflow outcome. Moving onto one record also removed manual consolidation, so I don’t credit provenance alone.

## Reflection

This reframed what an AI product is for me. The valuable part was not generating numbers. It was making them verifiable.

If I did it again, I would lock the provenance data model before building the first ingestion pipeline. Adding source links to early records later costs more than building them in.

The takeaway: Make source provenance part of the record, not an audit feature.

Last updated: 2026-09-13
