Eleven verticals share one substrate, one canonical entity model, one integrity contract. Six are live in production; five are scaffolded and waiting on either an owner, an external dependency, or a demand pull.
MARS is not one product with sub-modules — it is a platform whose surface is a canonical entity graph (companies_v2, persons_v2, investors_v2, institutions_v2, advisors_v2) plus deal/event tables that reference it. A new vertical spins up not by rebuilding infrastructure but by writing direct-to-v2 under its own methodology tag, borrowing the shared minting doctrine, the tier chain, the merge_entities executor, the audit health checks, the reversible identity ledger. The cost of a new vertical is small; the marginal value compounds because every consumer query can traverse the graph.
reit-*, credit-*, flare-*, bios-*, lp-*…). Merges, cleanups, and rollbacks land as ledgered decisions on identity_decisions_v2. Nothing is destructive.
| Table | Total rows | Last 7d | Latest | State |
|---|---|---|---|---|
| thermal_observations_v2 (flare) | 641,326 | 93,365 | 2026-07-27 | healthy |
| person_bios_v2 (bios) | 582,799 | 54,894 | 2026-07-27 | healthy |
| private_credit_deals_v2 (credit) | 98,309 | 15,470 | 2026-07-27 | healthy |
| fund_commitments_v2 (lp) | 1,033 | 1,033 | 2026-07-27 | healthy · phase 2 seeded |
| form_d_filings_v2 (SEC) | 765,922 | 696 | 2026-07-24 | healthy |
| funding_deals_v2 (core) | 79,643 | 383 | 2026-07-27 | healthy |
| merger_deals_v2 (core) | 37,075 | 336 | 2026-07-26 | healthy |
| form_144_v2 (SEC) | 115,561 | 168 | 2026-07-24 | healthy |
| real_estate_deals_v2 (reit) | 19,253 | 47 | 2026-07-26 | healthy |
Freshness column varies by vertical: news-ingest verticals use first_seen_at (earliest article mention, can predate ingest), operational verticals use ingested_at (when we wrote it). A row from 2015 landing today counts as fresh under ingested_at, which is the intent for backfill-heavy pipelines.
Owner: kee · Consumer: argos-mcp-server, hedge-fund pilots, editorial
Funding & M&A canonical from GDELT + Benzinga + PR wires + SEC. Phase G hourly delta canonicalization; five-layer quality controls; verified/vouched/warn integrity tiers; legacy_grouped_id parity vs Raul's mergers canonical (98.0% match).
This week: extractor drop-fix on valuation_pre/post_money_usd (10-day silent-zero bug), franken-division guard for Harmonic-class divestitures (421 new entities minted + 466 articles re-attributed), deal_stage ladder + is_definitive coverage now 94.9%.
Owner: kee/Claude · Consumer: futures (demand-gated) · Slug: reit
First test case of the platform-verticals pattern. GDELT metadata + Form D re-surface + selective news extraction covers ~1,684 distinct news domains at ~$0.28/mo BQ + $0 AI. Self-maintaining via three timers (ingest / weekly maintenance / daily health).
Proved the Qwen-vs-Grok line the hard way: when disambiguation requires world knowledge (which fund, which region, opco vs propco), Qwen fails fluently. The fix is a deterministic guard as the precision layer, Qwen as recall.
Owner: kee/Claude · Consumer: crown (Kalshi + BDC panel), futures (Hercules) · Slug: credit
Private credit deals aggregated to canonical via mars_private_credit_flow MCP tool. 98K rows and growing; ~15K in the last 7 days. Second-largest deal vertical after core funding.
Consumers: crown builds Kalshi ACQ signals off it; futures uses the BDC panel for Hercules valuation work.
Owner: kee/Claude · Consumer: Robin (advisor / RIA queries) · Slug: bios
SEC ADV Part 2B brochure extraction: name/title/prior employers/education/CRD into persons_v2. ~30,890 unique persons across 75K bios, 117K work-history rows, 49K education entries. Firm-fee extraction (Part 2A Item 5) added this month.
Killer query: 109 ex-Merrill advisors now at $1B+ RIAs. All served < 50ms from the bios_current_firm_v2 serving MV. MCP specs shipped; consumers query SQL directly today (donor MCP family planned).
Owner: kee/Claude · Consumer: crown (industrial-activity nowcast) · Slug: flare
The bet: nobody has an entity-resolved map of which company owns which thermal asset. VIIRS satellite data becomes a JOIN against the MARS graph, not the product. Registry pattern — 16,132 US plants / 1.32TW capacity / 641K observations back to 2012.
Weekly Parquet delivery to crown at s3://kscope-team-mail/crown/data/. Confounder gate (winter/summer) ran and passed at 0.79 vs raw 0.28. Steel-idle detector shipped; catches Dearborn 2020 (80.3% drop) — the exact deep idle presence-detector missed.
Owner: kee/Claude · Consumer: TBD · Slug: lp
Public pension PE disclosures → canonical LP graph. Phase 2 batch shipped 2026-07-25/26/27: CalPERS + CalSTRS + WSIB + Oregon PERS + PSERS = $217.2B commitments across 1,033 rows, 5 LPs. Fund substrate 157,472 canonical funds from Form D. Cost: $0 (Qwen where in-the-text).
Fuzzy linker generalized with three gates (first-word + Roman numeral + vintage ±2y) and two thresholds (0.90 auto / 0.70 review). Adding a new pension = 1 config entry + 1 ingest module.
Awaiting owner · Slug: insurance
Directory + SOURCES.md + SCHEMA.md scaffolded 2026-07-05. First fire can populate thousands of rows by filtering Adrian's SEC substrate to SIC 6300-6499 (insurance carriers). Do-not-ingest list codified (A.M. Best, S&P Insurance, Moody's, Preqin).
Awaiting owner · Slug: intl
Umbrella for region-specific sub-verticals (europe / india / sea / china / latam / mena / africa). GDELT source lists per region already ship in mars_feed.
Awaiting owner · Slug: signals
Structured extraction from the 8 categories mars core classify.py scores but skips (lawsuit / appointment / contract / product_announcement / financial_report / license_agreement / government_issues / dividend / auditor_change). Qwen at $0 marginal makes what was $32K/mo per category free. Superseded by v3 rewrite plan for these categories — may retire the scaffold in favor of inline v3 extractors.
Owner: kee/Claude · Consumer: Raul (wealth-score ranking) · Slug: prospects
Person-liquidity ranking for outreach targeting. Waiting on insider's form_4_transactions_v2 classified layer (adrian owns). Schema + contracts committed; MVP score sanity check ready.
Owner: kee · Slug: mars_v3 · Plan: 6mo, 5 phases
Parallel rewrite in a NEW codebase (/home/kee/code/mars_v3/); v1 stays untouched until Phase 4 cutover. Writes to same mars.*_v2 substrate under distinct mars-v3-* methodology tag alongside v1.
Target: v1 ~$1,400/mo → v3 ~$140/mo (−90%). Enabled by (a) v2 canonical entity substrate replacing domain-md5 discovery, (b) Qwen at ~25× lower cost than Grok for extraction, (c) Brave + requests beating Playwright + Bright Data on 95% of sites (bios team proof: ~$40 for 15.7K sites, 0 OOM, ~14× faster). Phase 0a Brave pilot shipped 2026-07-27.
Every vertical above has a company_id FK into the same companies_v2. A flare thermal asset's owner is the same company_id as a funding_deals_v2 row, a merger_deals_v2 acquirer, a form_d_filings_v2 issuer, an insider Form 4 owner CIK. That is the leverage — a query on "companies with recent Form 4 selling AND thermal activity down 30% AND private credit maturity within 90 days" is a plain JOIN across three verticals, not an integration project.
Every mint, merge, cleanup, and Qwen verdict lands on identity_decisions_v2 under a methodology tag (mars-*, reit-*, credit-*, bios-*, flare-*, lp-*, insider-*). This makes every substrate change reversible — a bad Qwen prompt or a misfired guard can be un-decided without collateral damage.
Non-negotiable across all deal verticals: integrity_tier IN ('verified','vouched') filter on every consumer query; amount_usd_converted for FX-normalized amounts; is_placeholder=FALSE on entity queries. The warn tier catches anomalies (a $1.75 trillion SpaceX "IPO" got auto-flagged with extract_guard + range_sanity failures) — skipping the filter eventually surfaces a garbage row to a user.
mars.*_v2
Generated for internal fleet-status readers