Nobody misses a side letter obligation on purpose.

They miss it because the person who negotiated it left in 2023. Because the commitment was one of forty that closed that quarter. Because the obligation is a single sentence on page nineteen of a document that has been opened twice since it was signed.

And you find out the way everyone finds out: an LP's counsel, mid re-up diligence, asks whether you've been sending the quarterly ESG report their letter requires.

10obligation types recognised
5owner teams an obligation can be routed to
0obligations stored without a clause citation

The problem isn't finding the side letter. It's knowing what's in it.

Ask a fund operations team where their side letters live and you'll get a confident answer: the data room, filed under each commitment. Fine.

Now ask a harder question: which obligations are due this quarter, and who owns each one?

That answer lives in three places at once — a partner's memory, a spreadsheet someone maintained until they didn't, and the documents themselves. None of the three is queryable. All three drift.

The gap isn't storage. It's that a signed PDF is not a workflow.

A document you can find is not the same as an obligation you can track. Storage is not compliance.

What we built

The Side Letter Obligations Agent reads the executed side letter attached to each capital commitment and pulls out every commitment it creates — reporting cadences, fee arrangements, co-investment rights, notice requirements, transfer restrictions, excuse rights, confidentiality terms, key person provisions, MFN clauses.

Each extracted obligation arrives with the clause it came from.

Then it stops. Nothing goes live until your counsel approves it.

InvestorObligationTypeTriggerOwnerNext dueStatus
Northgate PensionQuarterly ESG reportReportingWithin 45 days of quarter-endIR14 Feb 2026● Active
Northgate PensionManagement fee rebate — 15bpsFeesAnnually, on anniversaryFinance30 Jun 2026● Active
Ashford Family OfficeCo-invest right of first offerCo-investmentOn each new dealDeal team◆ Armed
Ashford Family OfficeNotify on key person departureKey personOn eventLegal◆ Armed
Beacon EndowmentMFN election windowMFNOne-timeLegal11 Mar 2026⚠ Pending review
Obligation Matrix — fictional data

Two things in that table matter more than the rest.

Every row has an owner. An obligation cannot be approved without one — a named person or one of five teams. "The fund" is not an owner. Someone is on the hook, by construction.

Not every row has a date. This is the part most tools get wrong.

Half of a side letter has no due date at all

"Notify the investor if a key person departs." "Offer a right of first refusal on co-investments." "Honour MFN if a later LP gets better terms."

These aren't calendar items. They're conditions. A tool that only models due dates either drops them or invents fake deadlines for them.

We model six trigger shapes instead:

  1. Calendar event — recurs on a schedule (quarterly, annually), carrying a standard iCal RRULE
  2. One-time — a single dated deadline
  3. Fund event — fires when something happens at the fund
  4. Deal event — fires on a new investment
  5. Status change — fires on a state transition
  6. Ongoing — a standing condition with no discrete trigger

Dated obligations project straight onto the task board with reminders attached. The other four stay Armed — visible in the matrix, owned, waiting. When the key person actually leaves, you fire the obligation, give it a deadline, and a task exists that second.

An obligation without a due date is not less important. It's more dangerous — because nothing reminds you it exists.

⚙️ Under the hood: the constraint that makes it usable

Here is the design decision that took the longest and matters the most.

An AI-extracted obligation cannot be saved without a clause citation. Not "we prompt for one" — the model refuses the write:

validates :source_clause, presence: true, if: :extracted_by_ai?

The extraction prompt instructs the model to omit any obligation it can't cite. The review gate drops uncited rows before they're persisted. And the database constraint backstops both, so a plausible-sounding obligation with no clause behind it cannot reach your counsel's queue even if the first two layers fail.

Why go to three layers for one field?

Because the failure mode of AI on legal documents isn't missing an obligation. It's confidently producing one that isn't in the document. A reviewer who finds one invented obligation in a queue of forty stops trusting the other thirty-nine — and correctly so. The citation isn't a nice-to-have feature. It's the thing that makes the review economical: counsel checks a claim against a named section instead of re-reading the letter.

The same principle governs what happens when a side letter is amended and you re-extract:

  • Approved obligations are never overwritten. A changed extraction lands as a new row flagged as a delta, sitting beside the approved one. Counsel reviews the diff.
  • Rejected clauses never come back. If your counsel said no to an interpretation once, re-running extraction doesn't resurface it next quarter.
  • Pending drafts are refreshed in place — the review queue stays current without accumulating near-duplicates.

The rule underneath all three: the agent may propose, only a human may promote. Re-running it is always safe, which is what makes people actually run it.

NoYesApproved + datedApproved, no dateExecuted side letteruploaded to commitmentAgent extractsobligations + clause refsClausecited?Discardednever shownCounsel review queueapprove · correct · rejectTask boardreminders + escalationArmedfire on the eventFulfilment recordwho · when · how

Then the calendar takes over

Once approved, a dated obligation becomes a task with the fund's own reminder machinery behind it:

  • Ahead of the due date — to the owner, using that obligation's lead time (7 days by default; set it to zero to suppress the early nudge)
  • On the due date — to the owner
  • After — repeated on your configured escalation cadence, copied to the team you nominated

Each person gets one consolidated email per day, worst first — not one email per obligation. That distinction is the difference between a system people read and a system people filter.

Completing the task records a fulfilment: who satisfied the obligation, when, and how. Over a fund's life that becomes the answer to the question that started this article — asked by an LP's counsel, three years later, about a report someone else was supposed to send.

📊 The impact

Before: executed side letters filed by commitment, obligations tracked in a spreadsheet and a partner's memory, and no way to answer "what's due this quarter across all LPs" without reading documents.

After: one filterable matrix across every investor in the fund — by obligation type, owning team, due-date range, review status, or MFN relevance — with a named owner on every approved row and a fulfilment record behind every completed one.

The number that matters isn't hours saved. It's this: the count of obligations your team can currently name, without opening a document, is the count you're actually managing. For most funds that number is well below what they've signed.

You don't have a side letter problem until you have a re-up. Then you have one, in front of the person deciding whether to re-up.

What to take from this

  1. Inventory before you automate. Pull every executed side letter for one fund and list the obligations by hand. The length of that list is the business case — and you can do it this week without buying anything.
  2. Give every obligation a name, not a department. "IR handles it" is how things get missed at handover. One person, on the record.
  3. Track the undated ones hardest. Event-driven obligations — key person, MFN, co-invest rights — carry the most legal weight and have the least natural reminder. They need a home even when nothing is due.
  4. Demand a citation from any AI touching legal documents. If an extraction tool can't tell you which section an obligation came from, you haven't saved review time — you've moved it, and added a verification job that didn't exist before.
  5. Keep the human gate, permanently. Not as a training-wheels phase. Extraction proposes; counsel decides. Re-running should always be safe.

See it on your own structure

If you're running twenty or more LPs with negotiated letters, the interesting exercise isn't a demo of ours — it's the inventory in takeaway #1. Do that first.

If the list surprises you, DM me and I'll walk you through how we model it, including the trigger shapes that don't have due dates.

Question for the fund ops and IR people here: how does your team currently track an obligation that has no due date — the MFN clause, the co-invest right, the key person notice? I've yet to hear two firms answer this the same way.