← System Design
SLW · Ford — entity layer plan

How Ford gets smarter about companies

The Data Engine spine went live on 8/8 — a fleet-wide store for mentions, sourced characterizations, relationships and new entities. So "data structures within Ford" is mostly not new Ford tables: it is wiring Ford to the engine, plus two small local pieces. Every report we feed Ford then stacks another sourced reading onto the one entity the whole fleet shares.

1 · Today — Ford's documents have receipts, its companies don't

Document side — provenance is structural

Shipped and running in Ford.

Datapoints are source-mandatory A fact cannot exist without its artifact + page; conflicting readings stay visible via the delta pass.
Shipped
Rich extraction already runs Company mentions with pages, market-map logo grids, newsletter stories, S-1 breakdowns — the raw material the spine wants.
Shipped
Engine connectivity exists Ford's admin already surfaces the engine's review queue through a session-gated proxy.
Shipped

Entity side — a flat row, cut off from the fleet

Why the 8/4 asks have nowhere to land in Ford alone.

Characterizations don't survive "Bessemer called this company X" has no home — sector is one FK, ours, last write wins.
Gap
No shared identity "Acme" and "Acme Inc" coexist; the bridge's registry field is a hardcoded null while the registry itself now holds 7,600+ entities.
Gap
No private/public state IPO status lives in a side list; the Companies registry can't filter to private-only.
Gap
don't rebuild the engine's organs inside Ford — wire Ford to them

2 · The layered record — curated row in Ford, sourced ledger on the spine

The engine owns the getting-smarter ledger

Ford's curated row stays ours and stays local. The accumulating readings live on the spine, where Terminal and Podcast already post — one ledger for the fleet, not one per app. Layer, never merge.

atlas.companies · Ford's curated row (unchanged, still ours)
namedomainstage sectordescription + registry_id → spine entity + listing_status

Spine data never writes into these scalars. Adopting a reading proposes a curated change through the existing approve flow — it never writes one directly.

on the spine — one row, one claim, one source · live since 8/8

tag · vertical AI — insurance ops on the entity · asserted by Bessemer, State of AI 2026 · as of May 2026 tag_assignment · p. 14Spine · live
mention · "the breakout in claims automation" verbatim passage, page locator, versioned extractor, document date mention · ford artifactSpine · live
edge · led_round, Series B typed + dated relationship; prose-derived edges queue for human confirm entity_edge · suggestedSpine · live

The 8/4 ask, delivered through the engine: upload the Bessemer report → Ford files it as today, plus posts mentions and tag assignments to the spine. A company never seen before becomes an entity proposal — propose-then-approve, never auto-created into the books.

3 · The work — three Ford waves, one engine-side feed

registry_id + resolve backfill

Join the fleet's spine

One additive column the bridge contract already promises, backfilled by the live resolve API. Unresolved names become entity proposals; Ford's duplicates surface as engine merge proposals — no local alias table needed.

Wave M1 · smallest step

Ford as spine writer

The Bessemer ask

Ford's extractors post mentions (passage + page) and characterizations (typed tags with salience, confidence, as-of) per ingested document. Free-text sectors ride the crosswalk. Same pattern Terminal and Podcast merged — behind a flag, off by default.

Wave M2 · flag off

listing_status

Private vs public · Ford-local

private · public · acquired · dissolved on the company row, plus ticker and exchange — computed by code from IPO listings and filings, never asserted by a model. Ingest gets the split; the registry gets a private-only filter.

Wave M3

People feed the registry

No rival people table

Ford's per-firm people rows (name, role, bio, roster status) become input to the engine's people extraction — already queued on the engine's own list. Ford displays people through the engine, as its admin already does for the queue.

Engine-side

Deliberately thin

What this doesn't do

No Ford assertion ledger, alias table, or people table — the spine owns those. LP-entity linking waits for the engine's LP Flow wiring. Ford's audience split (LP research vs companies) stays as-is.

Scoped out

Needs from Shawn

Three calls

Green-light M1 · the vocabulary call already gating the engine (alias-what-matches vs auto-create — Ford's sectors inherit it) · engine repo access for Michael (needed for the people work only, not M1–M3).

Open
Every locked decision holds DealFlow stays the resident owner · records layer, never merge · every fact carries source + as-of · derived flags computed by code · propose-then-approve · additive migrations, PR'd to Shawn · consumer-visible changes behind flags defaulting off.
M1 · registry_id M2 · spine writer M3 · listing status