The system of record for a family's investments
This is the application I built and run as the family office's core platform: the one place where every entity, investment, property, loan, account and dollar of the family's capital is recorded, reconciled and reported. It is captured here page by page as a static site over an invented book, so you can click through exactly what the office uses every working day without seeing anything that belongs to it.
What it is, and who uses it
A family office that holds a few hundred private investments through dozens of legal entities, owns a portfolio of properties each run by a different manager, lends to its own projects and operating companies, and still has to close its books every month and file its taxes every spring, outgrows spreadsheets quietly and then all at once. For years this office ran on a set of linked workbooks, a general ledger that did not know what a deal was, and a few people who remembered how the pieces fit together. This platform replaced that, one domain at a time, until the workbooks could be retired.
It is used daily by everyone who touches the money. The controller runs the month-end close in it, against the QuickBooks postings it pulls in, and reconciles cash, brokerage and vendor statements from the same screens. The investment side records marks, distributions and capital calls, and reads performance by deal, vintage, manager and asset class. The real-estate side reviews every property's monthly package, approves the translated figures and compares managers on the numbers they sent. The principal reads a dashboard, a personal financial statement and a weekly cash report that all come from the same rows. In tax season the K-1 tracker, the booked-income check and the capital roll-forward replace the spreadsheet that used to be built from scratch each year.
Two ideas run through all of it. The first is attribution: a deal is stored once per holding entity, and the ownership chain attributes every dollar to the family exactly once, so the dashboard, the entity pages and the deal pages can never disagree about what the family owns. The second is provenance: every figure that came from somewhere else — a manager's statement, a sponsor's notice, a QuickBooks posting, a document filed by the sibling Documents app — keeps a link back to the thing it was read from, so a number on screen can always be checked against the page that produced it.
The capabilities
Investments and the ownership chain
Every deal is stored once per holding entity, and the entity graph attributes each dollar to the family exactly once. Invested capital, marks, realised proceeds and the family's effective share roll up from the holding entity to the dashboard, the org chart shows how, and the sold and non-marketable books keep their own history.
Distributions from the ledger
Each distribution is classified from the actual transaction lines into operations, return of capital and sponsor economics, and tied out against the sponsor's notice. DPI, RVPI and TVPI by deal, vintage, manager and asset class are computed from those postings, so a multiple on screen can be traced to the lines behind it.
Real estate, statement by statement
Every property carries its manager's monthly package. A chart-of-accounts mapping translates each manager's own format into one set of standard terms, a tie-out proves the translated figures add up to the printed totals, and the raw workbook stays one click from any number. NOI, debt service and cash flow are compared across properties and periods and against budget and underwriting.
Cash and treasury
Balances by account and entity, a thirteen-week forecast, expected cash from every stream the book is owed, recurring-cash detection over the QuickBooks ledger, a cash grid by deal, outgoing wires with their approval files, brokerage balances and the weekly cash report that goes out on a schedule.
The month-end close
A close checklist, a reconciliation centre, weekly cash and check-deposit checklists, brokerage and financial-statement tracking, and the QuickBooks financial reports themselves, so the close is a list of states that someone can read rather than a sequence someone has to remember.
Tax season as data
Which K-1s and 1099s are expected and which have arrived, which entities file what and when, booked income checked line by line against QuickBooks, a capital roll-forward per deal, 1031 exchanges with their deadlines, and the exception reviews that fall out of the season.
Loans, intercompany and shared expenses
Loans receivable with balances, rates, maturities, payments, notes and documents; a loan intake for new requests; the intercompany journal between entities; and the expenses one entity pays on behalf of another, allocated on recorded keys rather than by hand.
Operations, insurance and risk
Bills with a CEO approval step, vendor statements, subscriptions detected from the card ledger, property tax bills, insurance policies with their limits and renewals, risk registers against appetite thresholds, a business-continuity plan for every system the office depends on, entity compliance filings and legal matters.
Reporting
A report centre that knows the status of every report the office produces, a personal financial statement, performance and allocation views on an invested or a market basis, budget versus actual, a portfolio pack, important dates, and a report card that grades each property manager on the figures they sent.
Eleven screens, one book

Portfolio dashboard
The whole book on one screen: what was invested, what it is marked at, what has come back and the allocation across asset classes, with the entity-level and deal-level drill-downs one click away.
Open →
Investments
Every deal the office holds, with the entity that holds it, the family's effective share through the ownership chain, invested capital, the mark and the realised proceeds to date; filterable by status, asset class and manager.
Open →
One deal
A deal's page: returns to date, the distribution history month by month with each payment classified, the capital calls, documents on file, the QuickBooks links behind the figures and the entity chain that attributes it to the family.
Open →
Entities
The legal entities and the ownership chain that rolls every deal's dollars up to the family, as an org chart and as a list, with each entity's filings and compliance status.
Open →
Allocation
The portfolio cut by asset class and sub-type, on an invested or a market-value basis, attributed to the family once; the same cut by entity, manager and vintage.
Open →
Performance
DPI, RVPI and TVPI per deal and for the book, rolled up by asset class, vintage and manager, with the cash flows the multiples are computed from.
Open →
Real estate
The property book: units, occupancy, NOI, debt and capital projects for every building, with valuation inputs, refinancing and the 1031 exchanges in flight.
Open →
RE Financials
Every property's manager statements translated into one chart of accounts: NOI, debt service and cash flow by month, compared across properties and against budget and underwriting, with the raw workbook one click from any number and a tie-out that shows what the translation could not place.
Open →
Loans
Loans receivable with balances, rates, maturities and the payments that have come in, the notes and documents on each, and the intake queue for new requests.
Open →
Treasury
Cash by account and entity, with what is expected to arrive and leave in the weeks ahead, the outgoing wires and their approvals, and the thirteen-week forecast.
Open →
Tax
K-1s and 1099s expected and received by year, returns by entity, booked income against the ledger, the capital roll-forward and the action items the season leaves behind.
Open →What you are looking at
The Family Office platform is the system of record for a single family's investments: every deal, the entity that holds it, what was put in, what it is worth, and every dollar that has come back. It replaced a set of linked workbooks, and most of its rules exist because a workbook once got them wrong.
Some of the parts worth a look:
- One deal, many rows. A deal held through several entities is stored once per holding entity, and every figure is attributed to the family exactly once through the ownership chain, never twice.
- Returns come from the ledger. Distributions are classified from the actual transaction lines (operations, capital, sponsor economics), so the multiples on screen can be traced to the postings behind them.
- Real estate is its own book. Each property carries its statements, debt, capital projects and valuation inputs, and the dashboard rolls them up by state, manager and stage.
- The tax season is tracked, not remembered. Which K-1s are expected, which arrived, which entities file what and when, and the action items that fall out of the review.
How it is built
Python and Flask on PostgreSQL, with SQLAlchemy models over a schema of some one hundred and forty tables; server-rendered Jinja pages with Alpine.js for the interactive parts and Chart.js for the charts. It runs as a web service and a separate worker process, so an overnight job or a long import can never take a page down.
- QuickBooks Online is the ledger of record. Its postings are pulled into the platform through the QuickBooks API and kept as a mirror, and every cash, close, booked-income and recurring-cash page reads those same rows rather than a copy of its own.
- Documents arrive from the sibling apps. The Documents app files each manager package into the office's library and the platform ingests it, translates it through the manager's chart-of-accounts mapping and keeps the ingest as the provenance of every figure; the Stocks app publishes the public-equities positions the dashboard consolidates.
- Translation is data, not code. Each manager's format is a set of mapping rows from their account names to the platform's standard terms, edited in the app; a line the mapping does not know is reported on the tie-out rather than silently dropped.
- An audit trigger in the database records every insert and delete on the sensitive tables, with the session, the application and the connection that made it, outside the reach of application code.
- Office add-ins for Excel and Outlook let the team file a document, pick a record or pull a figure without leaving the spreadsheet or the mail client.
- Over ten thousand tests, checked by mutation: each defect a test guards against is re-introduced on purpose to prove the test can actually fail. Boot-time migrations run under a database advisory lock, every push deploys through a serialised safe-deploy, and every database and repository is captured nightly to two object stores, one of them immutable, from which the whole platform has been rebuilt in a rehearsal.
The code itself is private. If you would like to walk through it, get in touch.