Jordan Croome
Case study

Obligor

A capital-intelligence platform for the AI infrastructure buildout. It reads what companies actually filed with the SEC, then shows where the money moves in a circle: a supplier investing in a customer who buys from the supplier. Arithmetic on public filings, with its working shown.

Client
Obligor
Year
2026
Role
Product design · Full stack · Data
Live at
obligor.io
Watch it work

Signal convergence

Where the evidence stacks. One signal is noise; five on one company is a finding.

5 max
1CoreWeaveCRWV
2OracleORCL
3NVIDIANVDA
4MicrosoftMSFT

The problem

Hundreds of billions are being committed to AI infrastructure, and the announcements do not distinguish between a customer buying something and a supplier funding its own customer to buy it. Both land in the press as demand. The difference is visible in the filings, but only if someone reads every 10-K and holds the whole graph of who financed whom in their head at once.

What I built

A platform that ingests SEC filings, builds a graph of capital relationships between the companies doing the building, and computes where that graph closes back on itself. It separates figures a company filed and had audited from figures it announced in a press release, and it never blends the two.
The argument, computed
2-HOP$100.0B IN LOOP
NVIDIAOpenAI$100.0BRETURNED TO SOURCE

NVIDIA → OPENAI → NVIDIA

NVIDIAinvests inOpenAI$100.0B
OpenAIpurchases fromNVIDIA-
hover to pause

This is the screen the whole product exists to produce. Each row is a path where money leaves a company and comes back: a two-hop loop where a chip supplier invests in a model lab that buys its chips, a four-hop loop running through a cloud provider and back. The hop count, the entities and the dollar value in each loop are computed from the graph rather than asserted.

Filed vs announced

audited filing figures and press-release figures are stored and labelled separately, never averaged together

Graph-native

capital relationships are edges, so a loop is something the system finds rather than something a human spots

Shows its working

every figure traces back to the filing it came from, because the argument is only as good as its sources

Scoring

Capital Intensity Score

Trailing-twelve-month capex as a share of revenue

V1 · 16 ranked
1CoreWeaveCRWV
-
2OracleORCL
-
3EquinixEQIX
-
4Meta PlatformsMETA
-
The ledger

Signal ledger

Every signal labelled new, escalating, persistent or resolved

0/4

Signals, not verdicts

A company is not scored good or bad. It accumulates named, individually checkable signals: capex far ahead of revenue, leverage exceeding revenue, thin interest coverage, a contracted backlog larger than revenue. Convergence is the finding. One signal is noise, five stacked on one company is a question worth asking.

Auditable by design

Every signal the system has ever raised is written to a ledger with its inputs, so a conclusion can be traced backwards rather than taken on trust. For a tool pointed at named public companies that is not a nice-to-have, it is the difference between analysis and an accusation.
Debt markets

Leverage

Long-term debt relative to revenue

15 ranked
1CoreWeave
-
2Equinix
-
3Vistra
-
4Broadcom
-
Alerts

Firing alerts

Where tracked metrics breach thesis thresholds, with the evidence

0 firing

Evaluating thresholds…

The public argument

The public argument

One checkable fact, and an invitation to go and check it

CoreWeave spent 0.0× its revenue building. Before the revenue existed.

CoreWeave, FY2023 · capex $2.9B against revenue $229M · filed with the SEC

FY2025 capex
$10.3B
FY2025 revenue
$5.1B
Capex is
2.0× revenue

The front door leads with one checkable fact and an invitation to go and verify it. That is the tone the whole product is built in: not an accusation and not a forecast, just arithmetic on filings that anyone can repeat. The page states its sources and carries the same disclaimer as the app.

The system

A TypeScript monorepo: a Next.js app, a separate API, and Python ingestion workers. Postgres with TimescaleDB for the filing time-series, Neo4j for the capital graph, Typesense for search, and Temporal orchestrating ingestion so a failed SEC fetch retries rather than silently leaving a gap.

Where it is

Live at obligor.io, at founding-access stage. No user numbers are claimed here because there are none worth claiming yet. What the work demonstrates is a hard data problem taken end to end: ingestion, a graph model, a scoring system, and an interface that makes a genuinely complicated argument legible on one screen.

Got a data problem nobody has made legible yet?

Tell me the job you want to stop doing