The map, as data

Two endpoints carry the same graph the map draws, with the record version behind every edge. Read it, cite it, verify it.

Moved in the last 30 daysEntered in the last 30 daysArc weight: records that moved in the window

Endpoints

GET /map/graph.jsonThe whole graph of this edition: 2 companies, 7 firms, 2 sectors, every edge. Static file, regenerated on every build.
GET /map/<kind>/<slug>/view.jsonOne node with its first and second degree and the edges among them. One file per node; the same view the page at the same path renders.
GET /founders.jsonThe record itself in Anchored Record Format v1: every card, every version hash.
GET /registry.jsonThe registry of records and their anchoring status.

Nodes

id, kind, slug, label, subkind is company, firm or sector; id is kind/slug; sub is the founder (company), the type and city (firm) or the count (sector).
href, mapHrefThe record page and the map page for the node.
cardNo, category, sector, toneCompanies: the record number, the record category, the sector node id, the sector tone.
moved, entered, recentMoved, recentEnteredISO dates from the ledger: the newest content-changing version or applied update, and the mint; the booleans say whether each falls inside the window (30 days).
sourcesCompanies: the citations on the card, as {text, url}. Every claim on the card traces to one of these.
v, sha256, anchoredAt, proofHref, historyHrefCompanies: the latest anchored version, its SHA-256, when it was recorded, and where to verify it. null when a record has no ledger entry yet.
records, page, type, hqFirms: records backed, whether the firm has a page, its type and city (from the sourced entity file when one exists).
count, heatSectors: records in the sector, and heat = {d30, d90, d365}: how many of them entered or moved in each window as of meta.today.
factsCompanies: the typed facts read from the card by a tested grammar, each with provenance and a status. kind is one of company-name, founder-name, founded, round, raised-total, backer, exit, legal-entity, unparsed; status is source-checked (the card's sources), registry-confirmed, founder-confirmed, disputed, or unparsed (the text is kept, nothing is guessed); provenance carries method (card, registry, founder, partner), sourceText, sources, checkedAt and checkedBy. Amounts are integers in the stated currency; a round carries stage and year. In graph.json every company carries its facts; in view.json only the view's own node does (a neighbour's facts are at its own view.json).
x, y, agraph.json only: the overview position in the 1000-unit canvas and the angle on the ring.

Edges

backedfirm a backs company b, as stated on the card. prov = {record, v, sha256, anchoredAt, proofHref}: the record version that states this edge.
incompany a is in sector b.
cofirms a and b share at least one record. weight = the count, shared = the company ids, latest = the newest move among them.

The provenance rule

An edge is not a claim of its own. Every backed edge is stated by one version of one record; that version is hashed and the hash is timestamped to the Bitcoin blockchain. To verify an edge: open prov.proofHref, compare prov.sha256, and read the card's sources. A field is null when the record has no anchored version yet; nothing is inferred.

Example

{
  "a": "firm/a16z",
  "b": "company/oueida-stitch-core-banking-os",
  "kind": "backed",
  "prov": {
    "record": "oueida-stitch-core-banking-os",
    "v": 2,
    "sha256": "dae01df82b6b6e7562ec51deff9a4c559137fb19e127a39462e89373316d3321",
    "anchoredAt": "2026-07-15T05:43:46.759Z",
    "proofHref": "/proof/oueida-stitch-core-banking-os/"
  }
}

Terms

Static files, cached at the edge for a few minutes, free to read and to cite with attribution to Saudi of Tomorrow. v1 fields are never removed; new fields may be added. Generated 2026-09-03.