MARS DATA PLATFORM

State of the Union

Where the substrate stands, what's left to reach production grade · 2026-08-27
448.9M
rows across 145 canonical tables
3.12M
persons
952K
companies
126K
deals (funding + M&A)
16.5M
relationship edges

MARS has crossed from "a funding-and-M&A pipeline" into a general SEC-and-public-records entity graph. The deal core is production-grade today; the newer wealth, people, and event layers are large but carry the resolution debt you'd expect from name-only sources. The work left is not ingest — it's resolution and enrichment: draining ~1.7M unresolved persons, executing ~92K queued merges, and thickening the ~117K operating companies. Signals' pipeline is now live and backfilling the event layer that was empty a month ago.

The core is production-grade

Deals — the original mission and the surface real customers touch — are mature: integrity-tiered, deduped by content hash + range window, swept historically, and gated at write. 95–98% of deals sit in the consumer-usable verified/vouched tiers.

Deal typetotalverifiedvouchedwarnconsumer-usable
Funding rounds83,75529,82849,3954,30794.6%
M&A deals42,5985,82135,50384097.0%
Private credit124,966124,79417299.9%
Real estate19,3942,31714,1972,88085.1%

The warn tier (extraction anomalies, unit-scale errors, huge-IPO escapes) is filtered from every consumer surface by contract, so the residual garbage never reaches a user. This is the layer to point a paying customer at today.

The entity graph

Canonical entities

Persons3,116,275
Companies951,844
Funds159,052
Investors (RIA/PE/VC)102,476
Institutions (schools)41,396
Thermal assets (flare)16,132
Advisors5,942

The relationship graph

Person ↔ person edges16,533,728
Person relationships3,468,503
Work-history links2,691,764
Education links444,544
Deal ↔ investor links144,395
Deal ↔ article links115,451

Private vs public — the mission lens

MARS exists to cover private companies — the Crunchbase / PitchBook game — so the split that matters isn't "has SEC data," it's traded vs not. And a CIK is not a public-company marker: hundreds of thousands of private companies carry one because they filed a Form D private placement. On the real axis — ticker — the platform is overwhelmingly private:

all companiesoperating coswith a funding deal
Private (not traded)943,382 · 99.1%111,149 · 95.3%24,605 · 86%
Public (has ticker)8,462 · 0.9%5,537 · 4.7%4,116 · 14%

So "77% carry a CIK" is a strength on private data, not a sign we're just reprocessing public filings — most of those CIKs sit on private Form D issuers, giving MARS SEC-grade identity resolution (strong-ID dedup, cross-linking, exact CIK/CRD joins) on companies CB and PB only hold as free-text names. Of the private set: ~728K are SEC-known (Form D), ~215K are purely news/web-sourced.

Under the hood: it's two populations, not one

The 952K company rows split cleanly by entity_kind, and the "low coverage" numbers are almost entirely honest substrate, not a gap:

entity_kindcountwhat it is
sec_shell_unknown526,701Form-D issuer shells — a name + CIK, correctly thin
investment_vehicle189,926SPVs / funds filing as companies
unknown93,757awaiting the entity_kind classifier tail
operating_company78,241the real, enrichable companies (81% have a domain)
operating_company_thin24,327operating, domain present, sparse detail
foundation_nonprofit18,480990-filers
op_co_no_domain14,118operating, no domain found yet

~117K genuine operating companies is the consumer-facing set — and 95% of them are private (only 5,537 publicly traded). The thin fields — description (61K), domain (91K) — are concentrated in the shells by design; the enrichment gap that does matter is on these operating companies, and it's tracked.

How connected are the companies?

Raw counts across all 952K look thin — but that's the shell dilution again (a Form-D issuer should have no employees or bios), so the meaningful denominator is the ~102K operating companies:

All 951,844 companies

Any deal (funding or M&A)77,4928.1%
— funding rounds28,7213.0%
— M&A55,3985.8%
Investors (via deals)25,3762.7%
People / employees150,67715.8%
SEC officers (Form D)186,34619.6%
At least one bio67,1877.1%
Person relationship-links324,68634.1%

The ~102K operating companies the set that counts

Have a deal63,27662%
Have people attached55,68754%
Have ≥1 bio44,57343%

Among the companies a customer would actually look up: ~6 in 10 have a deal, ~5 in 10 have people, ~4 in 10 have bios. A genuinely connected graph on the set that matters.

Deals and people are the strong dimensions on operating companies (62% / 54%). Bios (43%) and investors are the thinner ones — bios because the ADV/web crawl skews toward RIA/finance firms, investors because we only capture named backers and many rounds don't disclose. Those two are the enrichment levers with the most headroom.

Persons: the resolution frontier AMBER

3.1M persons is the headline growth story and the headline debt. 1.72M (55%) are flagged entity_resolution_pending — but that debt is not evenly spread. It's concentrated entirely in the two name-only mint sources, while every strong-ID-anchored source is clean:

Read "pending" as "minted, awaiting dedup" — not "unminted." Every one of these rows is a real person with a real name in the graph. entity_resolution_pending=TRUE is the resolution status: a name-only mint (e.g. a property owner off a deed) can't be auto-confirmed as new-vs-duplicate against the rest of the graph without the resolver pass. The mint worked; the dedup is what's outstanding.

Mint sourcepersonsunresolvedanchor
deeds (property owners)843,680843,680name + address only100% pending
bios (ADV / web crawl)1,241,236759,417name, some CRD61% pending
mars (SEC / news)835,013102,012CIK / news context12% pending
insider (Form 4)182,0662,315CIK strong-ID1.3% pending

The lesson is clean: where a strong ID exists (Form 4 CIK, ADV CRD, SEC), resolution is essentially solved. Where the source is a bare name off a property deed, it isn't — and can't be, without the deeds→persons linker and the tier-chain resolver doing their passes. "Production-grade persons" today = the ~1.4M strong-ID subset. The name-only tail is real data, correctly held out of consumer surfaces until resolved.

The new layers GROWING

Wealth & public records (deeds/donor)

Political donations268.5M
Foundation officers26.4M
FEC donors23.8M
Foundation grants13.2M
Property owners12.4M
Form 4 transactions11.5M

The raw wealth substrate. Vast, and mostly unlinked to the person graph — that linkage is the value unlock, not the ingest.

Signals & events (pipeline now live)

Signals deal events60,999
Appointment events51,884
Lawsuit events13,274
Government events9,619
Auditor-change / dividend11,205
Bankruptcy / windfall / breach4,642

The event layer that was empty a month ago. Signals' pipeline is done and backfilling — this fills the biggest gap in the graph.

Also live and daily-fresh: adv RAUM history (399K PIT rows) + regulatory events (9.9K), lp_data fund performance/commitments, flare thermal observations (1.0M), tranche debt maturity wall (1.2M), 13F manager AUM (194K).

How much deduping is left

Three distinct queues, very different sizes and difficulty:

Queueopenhow it drains
Person resolution backlog1,721,679deeds linker + tier-chain resolver + strong-ID passesthe big one
Merge candidates (executable)46,514merge_entities.py — machine-decided, ready to runmechanical
Merge review (needs judgment)45,333Qwen→Grok-web tier chainLLM
Gate review backlog45,220deal-dedup drainer (live) + person reviewdraining
Companies pending814essentially solveddone

Every mutation is logged to identity_decisions_v2 (6.97M rows) — the whole platform is reversible. The gate has processed 1.27M submissions (1.26M promoted, 45K in review, 32K cleanly rejected). Merging and un-merging are both gated verbs, so draining these queues is safe, auditable, and undoable.

What's left to reach production grade

  1. Drain person resolution (the 1.72M). Ship the deeds property-owner → persons linker, run the tier-chain resolver over the bios web/ADV tail. Strong-ID-first (CRD/CIK) where present; Qwen→Grok-web for name-only. This is the single biggest lever on graph quality.
  2. Put merges on a timer. 46.5K merge_candidate rows are machine-decided and executable now; move merge_entities to an hourly cadence so the queue stays near-zero instead of accreting.
  3. Thicken operating companies. Domain + description + ticker enrichment on the ~117K operating cos (the consumer-facing set) — the shells are fine as-is.
  4. Cross-source dedup. Resolve SEC-only shells against news-only operating companies that are the same real firm but share no strong ID — the last structural duplication class.
  5. Link wealth → people. The 268M donations / 12M property / 26M foundation-officer rows are only worth their weight once bridged to canonical persons. That bridging is the deeds/donor value unlock.
  6. Finish the guards. investors_v2 same-name-different-CRD (franken-investor), consolidate the name guards, close the last ungated writers. Small, known, tracked.

Bottom line

The deal core and strong-ID entity graph are production-grade now — that's a real, sellable dataset with integrity contracts and reversibility. The wealth, people-tail, and event layers are large and growing fast but gated behind resolution work that is understood, tooled, and reversible — not blocked. Nothing here needs new ingest; it needs the resolver and linker to finish their passes. Signals coming online closes the event gap that was the most visible hole a month ago.

MARS data platform · state-of-the-union · generated 2026-08-27 from live mars.*_v2 substrate. Row counts from planner statistics + exact counts on canonicals. Deal tiers, resolution flags, and queue depths are exact.