Skip to content
FonteumPublic-records evidence

TRUST CENTER · ARCHITECTURE & PORTABILITY

No proprietary lock-in. Standard Postgres, standard Node, standard Python.

Fonteum's architecture is intentionally common-stack so an acquirer's infrastructure team can take ownership in days, not months. This page states the actual stack, the disaster-recovery posture, and the export path.

Current stack

Application layer. Next.js (App Router, Node 24 runtime) deployed on Vercel. Edge middleware + serverless functions. No proprietary Vercel-only APIs (Edge Config, KV, etc.) on the critical path; everything portable to any Node host (Fly, Railway, Cloudflare Workers, AWS Lambda + ALB).

Data layer. Supabase managed Postgres 16. Standard Postgres — no Supabase-specific extensions on critical tables. Row-level security policies are SQL; portable to any Postgres host (RDS, Cloud SQL, Crunchy Bridge).

Ingestion layer. Python + SQL scripts run as scheduled jobs. Each ingestion script is framework-agnostic; reads from public CMS / OIG endpoints, writes to Postgres via the standard pg driver. No orchestration framework lock-in (no Airflow / Dagster / Prefect dependency).

Static asset layer. Next.js static exports + SVG charts in `public/research/charts/`. CDN-distribution-agnostic.

Recovery objectives

RTO (Recovery Time Objective): <4 hours for full database export + redeploy on a fresh Postgres host. Demonstrated in quarterly DR drills (results published below on completion).

RPO (Recovery Point Objective): <24 hours for snapshot-cadence data. Public-record source data is reconstructible from CMS / OIG primary sources; the only persistent state with sub-24h RPO is owner-claim records (Postgres point-in-time recovery, 7-day window).

Backup posture. Supabase managed daily backups (7-day retention) + hourly WAL archiving (24h window). Customer-scoped audit-pack exports are deterministic from the public-source snapshots; no separate backup needed.

Acquirer portability path

Day 0 — review. Public-source data layer (CMS / OIG) is reconstructible by anyone with public-internet access; no acquirer migration required for that tier.

Day 1-2 — Postgres export. `pg_dump` from Supabase → restore to acquirer Postgres host. ~14M rows total (provider records + provenance + snapshots). Single operator + a normal connection completes the export-restore cycle.

Day 2-3 — Node redeploy. Application clones from GitHub; environment variables set on acquirer host; Next.js build + deploy. Cloudflare DNS cutover takes ~5 minutes.

Day 3-5 — ingestion-job migration. Python scripts deployed to acquirer scheduler. Smoke-test against new host.

Total: <1 week for a full takeover by an acquirer's IT team. No proprietary code, no vendor handoff, no licensed component to renegotiate.

Disaster-recovery drill schedule

Quarterly DR drill: full export-restore + redeploy + smoke-test. Results published on this page on completion.

Most-recent drill: TBD — first DR drill scheduled Q3 2026 once Sprint 1 catalogues lock + ingestion frequencies stabilize. Results will be posted here with the actual RTO measured (target ≤ 4h).

Drills are run against a clean acquirer-style host (a new Supabase project) so the procedure reflects the actual takeover scenario, not a same-environment refresh.

What’s on file, by the numbers

Platform snapshot · 2026-08-11

13.4Mproviders & companiesProviders, organizations, owners, and facilities on file
26.2Msource-linked factsSource-linked field facts in the dated platform snapshot
90sources with dataDistinct snapshot source IDs with at least one positive record count
73fresh sourcesDistinct source IDs whose latest positive-data snapshot falls within the preceding 45 days
111sources integratedActive registry rows; integration does not establish a load
13state Medicaid jurisdictionsDistinct states represented in the state-exclusions serving table

Integrated, with-data, and fresh-observation counts are separate. No platform-wide source-completeness count is published. Completeness is source-specific and must be evaluated against the named source's expected scope. State coverage is a separate jurisdiction measure.

Source authority is record-specific

Use the issuer named on the record.

Fonteum spans federal, state, and global public publishers. A source page or returned record identifies its issuer and dataset where that metadata is available. A platform registry count does not assign every page to one authority or establish loaded, fresh, or complete coverage.

Browse source records and their stated limitations →

Reproducible by design

Inspect the evidence each published figure actually supplies.

Source and date

Research pages expose the named public file and observation date where those fields are available. Source-file SHA-256 coverage is separate; facts do not currently link deterministically to signatures.

Available derivation

Studies with a retained release and committed derivation link the SQL or method used. Other studies state the evidence and reproduction limits they actually have.

Daily observations

Dated table row-count observations can detect local drift. They do not imply that an upstream publisher released or Fonteum ingested new data that day.

Named medical review

Reviewed by Jennifer Montecillo, MD, medical reviewer. Non-practicing medical reviewer.

Read the full provenance and attestation methodology →

Request access