Community Health Market Watch · Datable Services

Build dashboard — the graph, the ledger, and the spine as of August 24, 2026

MW_ENV=devsupabase: market-watch (us-west-1) views: explorer · map · progress · console · internal · milestones · cost · docket insights

Analyst console

These queues are open to read — what the readers detected, what entity resolution is unsure about, and what the document reader pulled out of each filing with its quote. Deciding now has a screen: the analyst console — sign in, act, and every decision is stamped with your identity and written where it cannot be edited afterwards. Enrollment is deliberate: an account alone decides nothing. Detections sit at REPORTED_SECONDARY or lower until an analyst acts — machine-read from public filings, not yet checked, and some of them wrong.

Milestones — M0→M9, with proof

Each milestone carries its definition of done from the build plan, what actually shipped, and a link to where the result lives on the platform. The critical path (M0→M1→M2→M3→M5→M6) is warm through M4; M5's depth waits on the contract by design. Statuses as of August 24, 2026.

M0

Infrastructure & scaffolding

done · Aug 8
Done when: an adapter writes a SignalEvent with a cached artifact and it survives a redeploy.

Monorepo, Supabase (Postgres + content-addressed artifact storage), the append-only signal ledger with its dedupe key and mutation-rejecting triggers, the ingestion-run ledger, and the RLS deny-by-default boundary. Proven by a clean-room rebuild: the cached Madera decision artifact survived and re-verified by hash.

M1

Graph schema + Case 01

done · Aug 9
Done when: Madera loads as Case 01; ownership_chain + ledger views answer correctly.

The entity graph (facility, organization, time-stamped ownership edges, geography, service lines) plus Madera's full ledger — 328 provable days of warning through closure, reopening, and the maternity unit that never returned. days_before_outcome matches the backtest row for row.

M2

Facility registry

done · Aug 9
Done when: every CA hospital resolves to a node with an ownership chain + birth volumes.

1,215 hospitals (CA + MA), 93.6% of open CA hospitals with full ownership chains from PECOS, birth volumes from HCAI 2019–2024 including the post-2021 form-change proxy, honestly labeled. Skilled nursing joined the registry on Aug 10 — 1,303 CA facilities from the iQIES file — because the AG docket's live transactions are nursing-home deals and the reader had nothing to resolve them to. SNF ownership and cost reports are separate CMS files, not yet loaded, and the explorer says so on every SNF record rather than showing an empty chart. The registry_* views are the deliberate public read layer.

M3

Ingestion spine

partial
Done when: a synthetic week replays: WARN filing → SignalEvent → facility ledger, no hands.

Live: WARN (time-travel replay proven), HCRIS financials, the AG docket watcher, CMS ownership/CHOW, CMS iQIES for skilled nursing, HCAI utilization + public funding — and the document reader, graded against curated ground truth before being trusted with new documents. Stored extractions make re-reading free: --reresolve replays every document against the current registry with no model calls, which turned 40 held events into ledger rows the day nursing facilities landed. Honestly stubbed: SNF enrollments/owners, 990s (needs EINs), EMMA/ratings (needs the issuer watch list), AHA (needs the license). Remaining for full DoD: scheduled runs (cron) instead of manual.

M4

Entity resolution

done · Aug 9
Done when: Madera corpus resolves with zero false merges; the Steward chain reconstructs.

Deterministic-first resolution with a human queue for everything fuzzy — 101 proposals queued, zero auto-applied, decisions reversible and ledgered. The Steward stress test reconstructed hospital → Steward entities → MPT-as-landlord entirely from public files, including the SEC-only sale-leaseback layer PECOS never records (diagram below).

M5

Case tranche 1

needs contract
Done when: 10 cases, every claim ≤2 clicks from a cached primary source.

Gated by design, not by engineering: deep tranche work is contract-scoped per the working understanding. Atlanta Medical Center is first after Madera — Linda will test the system against the case she knows. Tranche completion also triggers the demo-database split.

M6

Closure forecasting (scoring v1)

after the tranche
Done when: Madera + AMC score high at t−12mo; survivor controls don't; reasons print.

The dedicated predictive milestone, reframed per the Aug 10 1:1: closures are the pilot, and the artifact is the scored backtest beside the tranche's lead-time chart. Explainable-first: regularized logistic or gradient-boosted trees, every score decomposing into named reasons ("flagged because births fell below the level operators say forces closure"). Features are point-in-time honest — indexed by when a fact became publicly knowable, not when it happened, because cost reports land a year late and a backtest that ignores that lag would flatter itself. Ten cases makes the first validation directional, not publishable — the write-up will say so. The threshold library's engineered features double as the viral-card candidate generators (doc 09).

M7

Analyst console

seed live · Aug 9
Done when: unapproved scores are technically impossible to dispatch.

The seed is working: the three queues are on this page and open to read — resolution proposals with their evidence, ledger events with their workflow state, and reader extractions with verbatim quotes. Deciding runs through the pipeline tooling, because the gate is Postgres itself: SECURITY DEFINER functions that stamp the analyst's identity from their token, append-only writes, and anon denied on every write path. Remaining: a decision surface that doesn't put a password box on a public page, confidence-upgrade (supersede) flow, multi-analyst roles.

M8

Dispatch & packets

not started
Done when: a live SB 1300 filing produces a cited draft packet in under an hour of analyst time.

Writer drafts from APPROVED events only, every sentence carrying a source_id. Role taxonomy now includes union + employer segments and names CC Rapid Response as the tier-3 receiving channel; the shareable-card channel (receipt on the card + platform permalink) lands here too (doc 09).

M9

Demo surfaces

early
Done when: the 20-funder / 10-partner roadshow has something to react to.

The three views exist and are live (explorer, progress, internal) with facility permalinks throughout. The merchandising decision — map homepage, ticker, ranked watch list, cards, chat reader — deliberately waits for the stakeholder interviews; the candidate list is recorded as their stimulus set (doc 09).

What the graph holds

2,873
facility nodes
1,570 hospitals (CA · GA · MA) · 1,303 skilled nursing
1,303
nursing facilities
1,166 open · 325 chain operators named
3,193
organizations
PECOS-keyed · 17 PE funds · 13 REITs flagged by CMS itself
6,778
ownership edges
hospitals and nursing facilities, operators through parents
146
live ledger events
append-only; corrections supersede, never erase
73
cached source artifacts
sha256-addressed
106,431
financial metric rows
3,981 facility fiscal-years, HCRIS 2017→
1,862
birth-volume rows
267 OB service lines, 2019–2024
3,235
counties seeded
Census FIPS, all states
168
ingestion runs ledgered
failures recorded, never silent

The Steward pattern · reconstructed from public files

ownership_chain(Nashoba Valley Medical Center, 2023-06-01). Today's PECOS holds only Steward's post-collapse residue — the chain lives in the January 2023 vintage, and the landlord layer lives in MPT's SEC-filed master lease. PECOS never records landlords.

PECOS Hospital Enrollments + All Owners, 2023-01 vintages · Amended & Restated Master Lease Agreement 2021-08-27, EX-10.1 to MPT Q3 2021 10-Q (SEC EDGAR) · Nashoba closed August 2024, during the Steward bankruptcy

Ingestion spine

AdapterSourceYield so farStatus
edd/warn-noticesCA EDD WARN report (Tue/Thu)first hospital WARN caught Aug 17: Sharp Memorial (San Diego), filed Aug 11, 20 employees — in the analyst queuelive
cms/hcris-cost-reportsHCRIS vintages 2017→latest74,746 metric rows · 2,814 facility-yearslive
ca-dockets/ag-charities-watchoag.ca.gov nonprofit hospital docket177 documents tracked · page-diff per runlive
cms/pos-hospitals + enrollments + owners + chowCMS POS / PECOS (incl. historical vintages)1,570 hospitals (CA · GA · MA) · operators, parents, CHOW per statelive
cms/pos-snfsCMS iQIES POS — long-term care1,303 CA nursing facilities · 1,440 status rows · 325 chainslive
cms/snf-enrollments + snf-ownersCMS SNF Enrollments / All Owners1,128 of 1,166 open SNFs with operators (97%) · 3,665 parent-owner edges · 54MB national file cached gzippedlive
hcai/annual-utilization + public-fundingCHHS open data + hcai.ca.gov1,862 volume rows · 20 DHLP awardslive
readers/ag-docketAG PDFs — the hard 20%8 documents read · 2/2 vs curated ground truth · 40 events on re-resolve, $0live
courtlistener/bankruptcy-watchFederal bankruptcy dockets via RECAPbuilt Aug 24 — conservative name-match on operators of open facilities; anonymous runs paced, token raises limitsbuilt
cms/designation-watchCAH status from POS snapshots1,569 baseline rows · 84 CAH facilities under watch (44 CA · 40 GA) · diffs cleanlive
irs/form990ProPublica by EINblocked on EIN acquisition (M4 queue)stub
emma + ratings + gdeltbond disclosures · agencies · newsblocked on issuer watch list / readerstub
aha/annual-surveyAHA (licensed)activates with Community Catalyst's licensegated

Tools & what they cost

Everything the platform runs on, and what it actually bills. The distinction that matters: almost every data source is free, because the thesis is that the warning signs are already public. The money goes to infrastructure and to reading the hard 20% — the PDFs no structured feed covers. Figures are actuals where a bill exists and marked as estimates where one doesn't.

$9.89
total language-model spend to date — 8 documents read, every token accounted for in reader_extraction
~$25/mo
recurring run-rate today: Supabase Pro. Everything else is either free-tier or already paid for
$0
paid for data. CMS, HCAI, Census, SEC, EDD, and the AG docket are public records
ToolWhat it does hereBasisCost
Infrastructure — recurring
Supabase (Pro)Postgres, the append-only ledger, artifact storage, the API layer that enforces the approval gate, and analyst auth$25/mo + usage over the included 8 GB database / 100 GB storage$25/mo
39 MB db, 160 MB artifacts — far inside the allowance
VercelHosts the three surfaces and the marketwatch.datableservices.com subdomainShared with the existing Datable Services account; static pages, no serverless functionsno incremental cost
Domainmarketwatch.datableservices.comSubdomain of a domain already owned$0
Language-model reading — metered, the only variable line
Claude Opus 5 — readers/ag-docketReads AG docket PDFs and proposes dated, quoted events. The hard 20% no structured feed covers$5 / M input, $25 / M output. Prompt caching on the system prompt; stored extractions make re-reads free$9.89 to date
1.83M in / 29.7K out, 8 documents
— docket backlog169 documents still unread on the AG docketEstimate at $0.74–1.24 per document, the observed range (long PDFs cost more)$125–210 est.
— steady stateNew filings as the docket updates, a handful per weekSame per-document rate; re-resolution against a changed registry costs nothing~$5–15/mo est.
Data sources — public records, free
CMSProvider of Services (hospitals + iQIES long-term care), PECOS enrollment & ownership, CHOW, HCRIS cost reportsdata.cms.gov open data API$0
CA HCAIHospital annual utilization, birth volumes, Distressed Hospital Loan Program awardsCHHS open data + hcai.ca.gov$0
CA DOJ / Attorney GeneralThe nonprofit healthcare transaction docket — the earliest public signal we haveoag.ca.gov, scraped and cached$0
CA EDDWARN layoff noticesPublished report, twice weekly$0
SEC EDGARREIT master leases and sale-leasebacks — the ownership layer PECOS never recordsPublic filings$0
US CensusCounty geography, FIPS keysPublic files$0
IRS 990 via ProPublicaNonprofit financials (blocked on EIN acquisition)Free API$0
MSRB EMMAMunicipal bond disclosures — covenant breaches and rating actionsFree; blocked on building the issuer watch list$0
Licensed / not yet acquired
AHA Annual SurveyService lines and system membership. The loader is scaffolded, not builtInstitutional licence — Community Catalyst's to hold, not oursnot priced here
Ratings agenciesMoody's / Fitch / S&P actions on hospital debtPress releases are free; full feeds are enterprise-pricedfree tier only

What would change the run-rate: a curated demo database (a second Supabase project, roughly doubling the base) once tranche 1 lands; and scheduled ingestion, which adds compute but not licence cost. Scoring and dispatch add no new vendors — they are computation over data already held.

Resolution & review queues

44
succession links, auto-approved on deterministic evidence — Madera 050568→050856; North Adams Regional (closed 2014 / reopened 2024) found unprompted
101
fuzzy HCAI-id proposals waiting for an analyst — never auto-applied; the store refuses a resolver approval on fuzzy methods
109
live ledger events awaiting review — npm run review is the decision surface; nothing is releasable until an analyst works them
13
events rejected and kept — 12 machine restatements of curated Case 01 facts plus one facility mis-match, each withdrawn with its reason on the record, never deleted
8
DHLP awardees unresolved to facilities (name variants — Kaweah Delta→Kaweah Health) — M4 alias queue