Skip to content
FonteumPublic-records evidence
Scheduled jobs · Reference

109 scheduled jobs across two systems. Each job lives in exactly one.

Fonteum runs scheduled work across two cron systems: Inngest (for jobs that need step-level retries, event emission, or observability) and Vercel cron (for lightweight HTTP-only operations). Ownership is decided by the AGENTS.md §cron-doctrine decision tree; the tools/cron-ownership-check.sh CI gate blocks any job that lands in both systems or is missing from this page.

/sources → /freshness → /docs/source-coverage →

1. Inngest functions (103)

Step-orchestrated work — retries, observability, event emission.

Inngest owns work that needs structured failure handling. Source pullers (network can flap), identity-linker (multi-step batch), webhook-deliverer (per-recipient retry), and citation-discoverer (rate-limited external API) all rely on Inngest’s step primitives + dashboard observability.

Job IDSchedule (UTC)Source filePurpose
usage-meter-reporter*/10 * * * *src/inngest/functions/usage-meter-reporter.tsEvery 10 min (§metered-api): drain the api_usage_events outbox to Stripe Billing Meters. Idempotent (dedups on event id); no-ops safely without STRIPE_SECRET_KEY. Inngest because it calls an external API with retries.
ai-content-qa0 20 * * 0src/inngest/functions/ai-content-qa.tsWeekly Sunday 20:00 UTC AI content-QA: flag-gated (AI_CONTENT_QA_ENABLED=1). Classifies money pages as ok/thin/stale/duplicate; writes proposals to ai_review_queue. Never edits live pages.
ai-entity-summaries0 22 * * 0src/inngest/functions/ai-entity-summaries.tsWeekly Sunday 22:00 UTC AI entity-summary scaffold: flag-gated (AI_ENTITY_SUMMARIES_ENABLED=1, default OFF). Scaffold only — no-ops until implementation is reviewed. Writes to ai_review_queue only.
ai-link-suggestions0 21 * * 0src/inngest/functions/ai-link-suggestions.tsWeekly Sunday 21:00 UTC AI embedding-based link suggestions: flag-gated (AI_LINK_SUGGESTIONS_ENABLED=1). Uses OpenAI text-embedding-3-small to find semantically similar pages; writes link proposals to ai_review_queue. Never modifies live pages.
care-compare-asc-monthly0 6 1 * *src/inngest/functions/care-compare-asc-monthly.tsMonthly CMS Care Compare ASC refresh reminder; emits fonteum/source.refresh_due for the operator-triggered ASC ingest.
care-compare-dialysis-monthly0 6 1 * *src/inngest/functions/care-compare-dialysis-monthly.tsMonthly CMS Care Compare Dialysis refresh reminder; emits fonteum/source.refresh_due for the operator-triggered dialysis ingest.
compliance-change-detector0 5 * * *src/inngest/functions/compliance-change-detector.ts§pillar5-compliance-change-feed — daily 05:00 UTC. Diffs current in-force exclusion / compromised-flag / ownership (CHOW) facts against the compliance_change_events watermark; records new LEIE/SAM/state exclusions, OIG CIAs, CMS penalties, and CHOW ownership changes; fans out fonteum/compliance.change_detected for subscribers.
cwv-anomaly-monitor0 11 * * *src/inngest/functions/cwv-anomaly-monitor.tsDaily 11:00 UTC CWV + data-freshness anomaly monitor: runs PageSpeed Insights against curated pages, checks row-count baselines on key tables, writes anomaly rows to selfheal_anomaly_log, and alerts operator on regressions.
citation-discoverer0 9 * * *src/inngest/functions/citation-discoverer.tsDaily OpenAlex poll for papers citing Fonteum data; populates discovered_citations moderation queue.
daily-refresh-stale-check0 9 * * *src/inngest/functions/source-refresh-reminders.tsLogs sources that have not refreshed within their declared cadence; surfaces in /freshness degraded badge.
health-check0 7 * * *src/inngest/functions/health-check.tsDaily Inngest dashboard ping confirming the function-registration round-trip is alive.
lead-capture-canary*/15 * * * *src/inngest/functions/lead-capture-canary.tsEvery 15 min synthetic lead-capture canary: posts a dummy pilot-intake lead, confirms the row exists, deletes it, and alerts the operator if persistence fails.
link-404-watchdog0 1 * * *src/inngest/functions/link-404-watchdog.tsDaily 01:00 UTC 404/broken-link watchdog: HEADs sitemap URLs, queues 404s in selfheal_redirect_queue with auto-inferred redirect destinations where safe. Operator reviews + approves before any redirect is promoted.
identity-linker*/5 * * * *src/inngest/functions/identity-linker.tsPolling job that resolves NPI ↔ PECOS-ID ↔ CCN ↔ LEIE provider identity links in batches.
indexnow-retry-nightly0 2 * * *src/inngest/functions/indexnow-retry-nightly.tsNightly retry of failed IndexNow URL submissions persisted to failed_indexnow_submissions (F-12).
m16-ai-referral-share0 22 * * 0src/inngest/functions/moat-m16-ai-referral.tsWeekly Sunday 22:00 UTC AI referral traffic share: pulls Plausible referral data for AI assistants and writes an ai_referral_share row to moat_metrics.
m4-fhir-api-usage0 8 * * 1src/inngest/functions/moat-m4-fhir-api-usage.tsWeekly Monday 08:00 UTC FHIR API usage tracker: reads 7d of fhir_request_logs, classifies requests by user-agent class and FHIR resource type, and writes fhir_api_usage rows to moat_metrics.
m6-press-mentions0 11 * * 1src/inngest/functions/moat-m6-press-mentions.tsWeekly Monday 11:00 UTC press-mention tracker: queries DataForSEO News for brand mentions, dedupes by URL, enriches each domain with its DR, and writes press_mention rows to moat_metrics.
m7-email-list-growth0 7 * * 1src/inngest/functions/moat-m7-email-list-growth.tsWeekly Monday 07:00 UTC email-list growth tracker: reads email_subscribers, computes new/unsub/total by source over the trailing 7 days, and writes email_list_growth rows to moat_metrics.
m8-internal-link-health0 8 * * 1src/inngest/functions/moat-m8-internal-link-health.tsWeekly Monday 08:00 UTC internal-link graph audit: crawls the sitemap, counts inbound internal links per page, and writes orphan/violation/healthy/avg_inbound rows (doctrine G7) to moat_metrics.
m9-topical-authority0 1 1 * *src/inngest/functions/moat-m9-topical-authority.tsMonthly (1st, 01:00 UTC) topical-authority score: counts pages with GSC impressions per topic cluster and records newest-page rank, writing topical_authority rows to moat_metrics.
m13-performance-regression0 6 * * 1src/inngest/functions/moat-m13-performance-regression.tsWeekly Monday 06:00 UTC performance-regression monitor: runs PageSpeed Insights against curated pages and writes per-metric LCP/INP/CLS/FCP/TBT pass/fail rows (doctrine G3) to moat_metrics.
m15-dataforseo-spend0 9 * * 1src/inngest/functions/moat-m15-dataforseo-spend.tsWeekly Monday 09:00 UTC DataForSEO spend tracker: queries the account balance API and writes balance + burn_rate rows (cost_dataforseo) to moat_metrics; alerts when balance < $10.
moat-m1-ai-citation0 4 * * 2src/inngest/functions/moat-m1-ai-citation.tsWeekly Tuesday 04:00 UTC AI citation-count tracker: queries assistants for Fonteum dataset citations and writes an ai_citation_count row to moat_metrics (headline moat metric).
moat-m11-fhir-empty0 * * * *src/inngest/functions/moat-m11-fhir-empty.tsHourly FHIR empty-bundle monitor: GETs each FHIR resource endpoint and flags any that return an empty Bundle (total=0), writing a fhir_empty_resource row to moat_metrics.
m19-velocity0 23 * * 0src/inngest/functions/moat-m19-velocity.tsWeekly Sunday 23:00 UTC founder-velocity metric: counts merged PRs + route/table growth over the trailing 7 days (GitHub API) and writes an m19_velocity row to moat_metrics.
m2-research-scorecard0 3 * * 1src/inngest/functions/moat-m2-research-scorecard.tsWeekly Monday 03:00 UTC research-study scorecard: classifies each published study as compounding or decaying from GSC impression trend and writes a research_scorecard row to moat_metrics.
m17-doctrine-pass-rate0 4 * * 1src/inngest/functions/moat-m17-doctrine-pass-rate.tsWeekly Monday 04:00 UTC doctrine-gate pass-rate metric: runs the doctrine gates across research/methodology pages and writes an m17_doctrine_pass_rate row to moat_metrics.
m18-fhir-partner-ping30 8 * * 1src/inngest/functions/moat-m18-fhir-partner-ping.tsWeekly Monday 08:30 UTC FHIR partner-ping tracker: reads 7d of fhir_request_logs, flags requests from enterprise healthcare-data vendor user-agents (Komodo, Definitive, Verisys, …) as enterprise probes, and writes alert-fired m18_fhir_partner_ping rows to moat_metrics (acqui-hire diligence signal).
moat-digest-weekly0 1 * * 1src/inngest/functions/moat-digest-weekly.tsWeekly Monday 01:00 UTC (09:00 PHT) founder digest: reads 14d of moat_metrics, computes top-3 movers + week-over-week deltas across all 19 metrics, collects fired alerts, and emails the summary via Resend to MOAT_DIGEST_RECIPIENT.
methodology-publisher0 7 * * *src/inngest/functions/methodology-publisher.tsDetects methodology version bumps + emits fonteum/methodology.published event for downstream consumers.
moat-m10-route-integrity0 */6 * * *src/inngest/functions/moat-m10-route-integrity.tsEvery-6-hours route integrity check across all CRITICAL_ROUTES; emails operator if any route returns 404/500 or a FHIR bundle returns total=0.
moat-m3-snapshot-depth0 1 * * 1src/inngest/functions/moat-m3-snapshot-depth.tsWeekly Monday 01:00 UTC snapshot historical-depth metric: counts retained research_snapshots vintages per dataset and writes a snapshot_depth row to moat_metrics (the data-moat metric).
records-request-reminders0 8 * * *src/inngest/functions/records-request-reminders.tsScans outstanding public-records requests; emails operator when SLA breach is imminent (e.g. AZ ROC PR-0006673).
seo-schema-watchdog0 3 * * *src/inngest/functions/seo-schema-watchdog.tsDaily 03:00 UTC SEO/schema regression watchdog: fetches curated production pages, validates title/meta/H1/canonical/JSON-LD presence, runs a cross-page duplicate-title/duplicate-meta-description pass, writes results to selfheal_seo_checks, and alerts operator on failures.
seo-autopilot-phase30 14 * * 1src/inngest/functions/seo-autopilot-phase3.ts§seo-autopilot-phase3: weekly Monday 14:00 UTC SEO Page-Quality Autopilot readout. READ-ONLY — reads gsc_page_metrics / gsc_query_metrics / gsc_index_coverage / page_quality_runs and emails the State-of-SEO digest. Loop 6: mines GSC queries, classifies junk (dataset-ID/API-code) vs buyer-intent, flags title/meta rewrite candidates + pages ranking on junk. Loop 5: flags indexed-but-zero-impression thin pages into the remediation queue + routes the GSC coverage backlog. Headline KPIs are indexation %, score-band movement, and CTR-gap closure — never keyword rank. Emits flags; mutates no content.
ingestion-health-digest0 15 * * *src/inngest/functions/ingestion-alert-monitor.tsDaily 15:00 UTC autopilot-hardening integrity digest: reads open source_schema_drift events, recent source_snapshot_quarantine incidents, and degraded source_health_status rows, then sends ONE consolidated operator alert when anything is wrong. Read-only; silent on a clean run. Closes the notify-don't-rot gap so a broken or drifting pipe is a same-day email, never silent rot.
integrity-anchor-daily0 16 * * *src/inngest/functions/integrity-anchor-monitor.tsDaily 16:00 UTC external timestamp attempt (moat-defense #126): submits the signed chain head and latest attestation root to public OpenTimestamps calendars and appends the returned proof to timestamp_anchor_attempts. Evidence checks append immutable timestamp_anchor_verifications rows. Neither path updates legacy timestamp_anchors, and a stored attempt is not independent mainnet validation.
integrity-anchor-upgrade0 */6 * * *src/inngest/functions/integrity-anchor-monitor.tsEvery-6-hours OpenTimestamps evidence poll (moat-defense #126): re-checks append-only attempts and inserts a new immutable timestamp_anchor_verifications row for the result. It never flips or updates a legacy timestamp_anchors status; public mainnet evidence requires an authentic retained block header and a successful proof check.
integrity-chain-liveness0 * * * *src/inngest/functions/integrity-anchor-monitor.tsHourly integrity-chain liveness guard: reads chain_state.last_extended_at and raises a hard operator alert when the signed chain has not advanced for more than six hours. Read-only on integrity state.
integrity-self-audit30 16 * * *src/inngest/functions/integrity-anchor-monitor.tsDaily 16:30 UTC integrity self-audit (moat-defense #126): re-derives EVERY signed chain link (the N-key self-test) + cross-checks a witness sample against the recorded hashes, and emails the operator on any HARD breach (HASH_MISMATCH / WITNESS_INVALID / CHAIN_BROKEN). Read-only; silent on a clean run. So a DD audit is never the first time the proof runs.
snapshot-staleness-watchdog0 4 * * *src/inngest/functions/snapshot-staleness-watchdog.tsDaily 04:00 UTC research_snapshots staleness watchdog: for each active snapshot-bearing source, compares the freshest snapshot_date against the source's own refresh_cadence_days, writes snapshot_stale rows to selfheal_anomaly_log, and alerts operator when any provenance snapshot has gone stale.
sitemap-orphan-audit0 5 * * 3src/inngest/functions/sitemap-orphan-audit.tsWeekly Wednesday 05:00 UTC sitemap/orphan/internal-link audit: flags orphan pages (0 inbound), pages below the 3-link doctrine threshold, and sitemap URLs returning 404. Writes to selfheal_page_audit.
site-crawl-monitor0 3 * * 1src/inngest/functions/site-crawl-monitor.tsWeekly Monday 03:00 UTC full-site render-and-assert crawl (sitemap + edge-parameter coverage + boundary edge-cases). Asserts HTTP 200, no error/empty/fallback state, resolved links, JSON-LD, metadata, visible-first SSR, and data-truth; persists the failure set to site_crawl_runs and emails ONLY new failures vs the prior run.
recapture-loop-daily0 8 * * *src/inngest/functions/recapture-loop.ts§moat-recapture: forward-ready daily-tier loop for recapture-enabled sources that do not own a dedicated source-puller function. Dedicated sanctions pullers are excluded to prevent duplicate refreshes.
recapture-loop-weekly0 8 * * 1src/inngest/functions/recapture-loop.ts§moat-recapture: weekly-tier recapture loop (same engine as the daily loop, scoped to weekly-cadence recapture-enabled sources). No-ops cleanly when no weekly source is wired yet.
recapture-loop-monthly0 8 1 * *src/inngest/functions/recapture-loop.ts§moat-recapture: monthly-tier recapture loop (1st of month). Forward-ready for monthly-cadence bitemporal sources.
recapture-loop-quarterly0 8 1 1,4,7,10 *src/inngest/functions/recapture-loop.ts§moat-recapture: quarterly-tier recapture loop (1st of Jan/Apr/Jul/Oct). Forward-ready for quarterly-cadence bitemporal sources.
recapture-loop-annual0 8 1 1 *src/inngest/functions/recapture-loop.ts§moat-recapture: annual-tier recapture loop (Jan 1). Forward-ready for annual-cadence bitemporal sources.
recapture-loop-static0 8 1 1 *src/inngest/functions/recapture-loop.ts§moat-recapture: static-tier recapture loop (Jan 1 drift safety-net). Forward-ready for slow-reference bitemporal sources.
recapture-watchdog0 13 * * *src/inngest/functions/recapture-watchdog.ts§moat-recapture: daily 13:00 UTC freshness-SLO watchdog. Any recapture-enabled source past its cadence interval + grace gets exactly one deterministic auto-re-run; escalates by email if the re-run did not land; folds in upstream-degraded sources; then pings the external dead-man-switch (DEADMAN_HEARTBEAT_URL) so an outside monitor knows the watchdog ran.
recapture-accuracy-monitor0 17 * * *src/inngest/functions/recapture-accuracy-monitor.ts§moat-recapture: daily 17:00 UTC accuracy monitor. Samples N current stored facts per recapture-enabled source, re-fetches the live government source, and writes the measured per-source accuracy % to data_quality_runs. Alerts the operator on any sub-threshold source; silent when clean.
refresh-reminder-<family>per-source from cron-sources.cron_expressionsrc/inngest/functions/source-refresh-reminders.tsFamily-specific cadence reminder that nags the operator to refresh a source on schedule (NPPES, Care Compare, etc.).
source-health-monitor*/15 * * * *src/inngest/functions/source-health-monitor.tsHEAD probe per source upstream URL; flips source_health_status row + emits fonteum/source.health_status_changed.
source-schema-drift-monitor0 8 * * 1src/inngest/functions/source-schema-drift-monitor.tsWeekly Monday 08:00 UTC schema-fingerprint check per registered source (URL resolves + file format + depended-on columns present). Records drift to source_schema_drift and fails loud when a publisher changes a column/format/URL.
source-puller-bea-regional0 6 1 10 *src/inngest/functions/source-puller-bea-regional.tsAnnual October BEA Regional pull — area-level GDP + per-capita income.
source-puller-bls-oews0 6 1 5 *src/inngest/functions/source-puller-bls-oews.tsAnnual May BLS OEWS pull — occupational employment + wage statistics.
source-puller-cpsc0 8 * * 1src/inngest/functions/source-puller-cpsc.tsWeekly CPSC pull — complete federal product-recall corpus with signed source snapshot.
source-puller-cfpb-enforcement-actions0 8 * * *src/inngest/functions/source-puller-cfpb-enforcement-actions.tsDaily CFPB enforcement-actions full-corpus pull and attestation.
source-puller-fincen-enforcement-actions0 8 * * *src/inngest/functions/source-puller-fincen-enforcement-actions.tsDaily FinCEN enforcement-actions full-corpus pull and attestation.
source-puller-ncua-enforcement-actions0 8 * * *src/inngest/functions/source-puller-ncua-enforcement-actions.tsDaily NCUA administrative-orders full-corpus pull and attestation.
source-puller-sec-edgar0 8 * * *src/inngest/functions/source-puller-sec-edgar.tsDaily SEC EDGAR full entity-corpus pull and attestation.
source-puller-sec-enforcement0 8 * * *src/inngest/functions/source-puller-sec-enforcement.tsDaily SEC enforcement all-pages pull and attestation.
source-puller-sec-iapd0 8 * * *src/inngest/functions/source-puller-sec-iapd.tsDaily SEC IAPD full-feed pull and attestation.
source-puller-cftc-enforcement-actions0 8 * * *src/inngest/functions/source-puller-cftc-enforcement-actions.tsDaily CFTC enforcement-actions all-pages pull and attestation.
source-puller-dea-registrant-enforcement0 8 * * *src/inngest/functions/source-puller-dea-registrant-enforcement.tsDaily DEA registrant-enforcement Federal Register pull and attestation.
source-puller-cms-pos0 8 1 1,4,7,10 *src/inngest/functions/source-puller-cms-pos.tsQuarterly CMS Provider of Services (POS) pull — CCN facility identity backbone.
source-puller-cms-ncci-mue-edits0 8 1 1,4,7,10 *src/inngest/functions/source-puller-cms-ncci-mue-edits.tsQuarterly CMS NCCI MUE edits pull — current-quarter maximum-units limits.
source-puller-eu-sanctions15 8 * * *src/inngest/functions/source-puller-eu-sanctions.tsDaily 08:15 UTC EU sanctions refresh — fetches the full FSF XML, applies bitemporal changes, and registers the upstream evidence through the signed snapshot path.
source-puller-fda-enforcement-actions0 8 * * 1src/inngest/functions/source-puller-fda-enforcement-actions.tsWeekly FDA enforcement pull — all openFDA drug, device, and food recall partitions plus Warning Letters pages.
source-puller-hrsa-hpsa0 6 1 1,4,7,10 *src/inngest/functions/source-puller-hrsa-hpsa.tsQuarterly HRSA HPSA pull — Health Professional Shortage Area designations.
source-puller-leie0 6 1 * *src/inngest/functions/source-puller-leie.tsMonthly OIG LEIE pull — federal program exclusions list.
source-puller-ofac-sdn0 8 * * *src/inngest/functions/source-puller-ofac-sdn.tsDaily 08:00 UTC OFAC refresh — fetches SDN plus Consolidated XML, attests one deterministic composite ZIP, and applies bitemporal changes.
source-puller-pecos0 6 * * 0src/inngest/functions/source-puller-pecos.tsWeekly Sunday CMS PECOS PPEF pull — Medicare provider enrollment status.
source-puller-phmsa-pipeline-enforcement0 8 1 * *src/inngest/functions/source-puller-phmsa-pipeline-enforcement.tsMonthly PHMSA pull — complete Pipeline Safety Enforcement raw export with bitemporal history.
source-puller-uk-sanctions30 8 * * *src/inngest/functions/source-puller-uk-sanctions.tsDaily 08:30 UTC UK sanctions refresh — fetches the complete UKSL XML, applies bitemporal changes, and registers the upstream evidence through the signed snapshot path.
source-puller-un-sanctions45 8 * * *src/inngest/functions/source-puller-un-sanctions.tsDaily 08:45 UTC UN sanctions refresh — fetches the consolidated Security Council XML, applies bitemporal changes, and registers the upstream evidence through the signed snapshot path.
state-of-fonteum-digest30 13 * * 1src/inngest/functions/state-of-fonteum-digest.ts§self-healing-remediation: weekly Monday 13:30 UTC State of Fonteum digest. Reads remediation_log + source_recapture_state and rebinds freshness to proved transitions in the attested snapshot ledger (read-only), then emails the self-healing scoreboard — auto-remediation rate, sources healed, escalations, dead-lettered, and freshness-SLO compliance. Workflow execution and content freshness remain separate. The positive-scoreboard counterpart to the alert watchdogs; emails every week as the proof the platform runs unattended.
ingestion-failure-alert
event: inngest/function.failed
eventsrc/inngest/functions/ingestion-alert-monitor.tsAutopilot-hardening: listens for inngest/function.failed scoped to the autonomous ingestion crons (source pullers, Care Compare monthly ingests, daily snapshotter) and sends a Resend operator alert when one fails after exhausting retries. A failed pull is a flagged missed refresh, never corruption.
event-emitter
event: fonteum/source.snapshot_inserted
eventsrc/inngest/functions/event-emitter.tsFans source-snapshot-inserted events into downstream consumers (webhook-deliverer, methodology-publisher).
refresh-manual-trigger
event: source.refresh.manual_triggered
eventsrc/inngest/functions/source-refresh-reminders.tsOperator-fired manual refresh of a source family — re-runs the puller out-of-cadence.
webhook-deliverer
event: webhook.delivery.queued
eventsrc/inngest/functions/webhook-deliverer.tsPer-recipient webhook delivery with backoff retry; consumes events emitted by the source-snapshot pipeline.
dataset-snapshot-webhook-fanout
event: fonteum/source.snapshot_inserted
eventsrc/inngest/functions/dataset-snapshot-webhook-fanout.tsPillar 5 dataset webhooks — fans each new source snapshot to one delivery event per active dataset.snapshot_published subscriber.
compliance-feed-deliverer
event: fonteum/compliance.change_detected
eventsrc/inngest/functions/compliance-feed-deliverer.ts§pillar5-compliance-change-feed — HMAC-signed POST of each detected compliance change to active compliance_feed_subscriptions matching the event_type; logs every attempt to compliance_feed_deliveries with 6-retry exponential backoff.
dataset-webhook-deliverer
event: fonteum/dataset.delivery_requested
eventsrc/inngest/functions/dataset-webhook-deliverer.tsPillar 5 dataset webhooks — delivers one Ed25519-signed snapshot-published POST to one subscriber with Inngest backoff retry.
fhir-bulk-export-worker
event: fhir.bulk.export.requested
eventsrc/inngest/functions/fhir-bulk-export-worker.tsProcesses FHIR R4 Bulk Data Access ($export) job requests; writes NDJSON output, updates job status.
nsa-compliance-quarterly0 9 15 3,6,9,12 *src/inngest/functions/nsa-compliance-quarterly.tsQuarterly NSA/surprise-billing compliance score computation across IDR + MRF datasets.
hospital-margin-annual0 9 1 12 *src/inngest/functions/hospital-margin-annual.tsAnnual hospital financial margin computation from HCRIS cost reports; runs each December 1.
chain-extender*/5 * * * *src/inngest/functions/chain-extender.tsPolls snapshot_attestations for unchained rows; links previous_link_hash to extend the attestation chain.
endpoint-uptime-monitor*/5 * * * *src/inngest/functions/endpoint-uptime-monitor.ts5-min /api/health transport-reachability ping; records result in endpoint_uptime_checks for rolling 24h/30d uptime % on /status. Pipeline freshness, source completeness, and incidents are separate status dimensions.
entity-perception-probe0 5 * * 2src/inngest/functions/entity-perception-probe.tsWeekly Tue 05:00 UTC (§entity-perception-tracker, Layer D): probes how the 4 AI assistants + Google SERP describe Fonteum, classifies each healthcare_only/multi_vertical/mixed, appends to entity_perception_captures to trend the multi-vertical-vs-healthcare-only share on /owner. Read-only on the live web; env-keyed (LLM keys + DataForSEO); degrades to empty when keys unset. Inngest because it calls external APIs with retries.
freshness-watchdog0 14 * * *src/inngest/functions/freshness-watchdog.tsConfigured daily freshness audit: fetches /api/freshness, compares last_updated against declared cadence, and is intended to email the operator on threshold breaches. The schedule is not evidence that a run succeeded.
snapshot-archive0 3 * * *src/inngest/functions/snapshot-archive.tsConfigured for 03:00 UTC content-addressed NPPES + PECOS snapshots to S3. Deduplication and dataset_snapshots indexing describe the job path; consult the loaded/status date for the latest successful run.
risk-signal-refresh0 4 * * *src/inngest/functions/risk-signal-refresh.tsConfigured for a 04:00 UTC refresh of exact public exclusion-list records in provider_risk_signals. The schedule does not prove a successful load; consult the serving coverage date.
risk-signal-refresh-error-alert
event: inngest/function.failed
eventsrc/inngest/functions/risk-signal-refresh.tsEvent-triggered: listens for inngest/function.failed scoped to risk-signal-refresh and sends a Resend operator alert.
daily-dataset-snapshotter15 6 * * *src/inngest/functions/daily-dataset-snapshotter.tsDaily 06:15 UTC integrity observation. Before the 2026-08-01 cutover it preserves the frozen count-observation-v1 path. At and after the cutover it emits exact row-Merkle evidence only for oig_leie, pecos_ppef, and hrsa_shortage_areas, and fails closed unless the source producer has banked and sealed an immutable exact-row capture. This job is not an upstream source refresh.
source-row-history-capture-daily45 8 * * *src/inngest/functions/row-history-capture.tsDaily 08:45 UTC private history follower over sealed row-Merkle observations. The first eligible full rowset opens a baseline; a changed content hash closes missing exact-row intervals and opens new ones, while an unchanged hash records a dated zero-diff capture. It does not write snapshot, serving, or freshness tables.
moat-m12-sitemap-drift0 */12 * * *src/inngest/functions/moat-m12-sitemap-drift.tsEvery-12-hours sitemap drift detector: fetches sitemap-index recursively, HEAD-checks all URLs (10s/10-worker), diffs vs prior run url_set, writes sitemap_drift row, fires alert if broken>0 or dropped>5.
moat-m14-cms-freshness0 3 * * *src/inngest/functions/moat-m14-cms-freshness.tsDaily 03:00 UTC CMS data freshness check — fetches upstream modified date from data.cms.gov API for 5 datasets, compares to our source_snapshots, computes lag_days, emails operator per stale source (lag > 14 days).
journorequest-monitor*/30 * * * *src/inngest/functions/journorequest-monitor.tsEvery-30-min scraper of Twitter #journorequest (via Nitter) and Qwoted public opportunities; keyword-matches against tier config; stores in journalist_requests table; sends Tier 1 matches via Resend immediately.
journorequest-digest0 1 * * 1-5src/inngest/functions/journorequest-monitor.tsMon-Fri 01:00 UTC (09:00 PHT) Tier 2 daily digest email bundling all unnotified Tier 2 journalist request matches from the prior 24h; silent on zero matches.
gsc-triage-daily30 6 * * *src/inngest/functions/gsc-triage-daily.tsDemand Gate Loop 1 (demand-gate-v1): daily GSC drift detector. Reads Search Console (live API when credentials present, CSV-imported gsc_* tables otherwise), excludes dataset-UUID / raw-API / single-entity-name queries, and writes RETITLE / PUSH / BUILD_CANDIDATE / REPOINT_OR_DEINDEX rows to gsc_triage_queue. Surfaced at /admin/gsc-triage.
bulk-snapshot-on-demand
event: fonteum/bulk.snapshot.requested
eventsrc/inngest/functions/bulk-snapshot-on-demand.tsOn-demand internal source puller for collecting raw source snapshots. Generic CSV-gzip URLs are not published from this worker; only source-specific files listed in the public bulk manifest are downloadable.
2. Vercel cron (6)

HTTP boundary ticks — most fire-and-forget; one liveness watchdog exception.

Vercel cron owns lightweight HTTP operations and one deliberate Vercel-boundary watchdog. Most entries complete quickly without step orchestration. ops-heartbeat is the exception because its external deadman must detect a Vercel scheduler, proxy, or invocation failure before the application can create a ledger row. Defined in vercel.json crons[]; each entry maps to a src/app/api/cron/<name>/route.ts handler.

Job IDSchedule (UTC)Source filePurpose
ping-new-urls17 * * * *src/app/api/cron/ping-new-urls/route.tsHourly IndexNow submission for current Fonteum brand, dataset, and research URLs.
provenance-audit0 7 * * *src/app/api/cron/provenance-audit/route.tsNightly 07:00 UTC provenance source health check — HEAD/GETs every cited source_url, logs reachability + latency + content-SHA drift to provenance_audit_log; surfaces on /admin/provenance-audit.
ops-heartbeat17 17 * * *src/app/api/cron/ops-heartbeat/route.tsDaily strict operations heartbeat — the Vercel-boundary watchdog exception: persists ledger checks and incident evidence, dispatches required operations alerts, and pings the dedicated deadman only after an observable green completion. It remains Vercel-bound so a missed deadman ping detects scheduler, proxy, or invocation failures that produce no application ledger row.
platform-stats-snapshot30 7 * * *src/app/api/cron/platform-stats-snapshot/route.tsDaily dated snapshot of headline platform-coverage counts into platform_stats_snapshots; invalidates both production cache domains, regenerates the homepage, /sources, discovery artifacts, and API docs, then verifies the published observation date.
schema-audit0 6 * * 0src/app/api/cron/schema-audit/route.tsWeekly Sunday rich-results / Schema.org test against every public surface; logs to schema_audit_reports.
submit-gsc-sitemaps15 3 * * *src/app/api/cron/submit-gsc-sitemaps/route.tsDaily Google Search Console submission for the canonical Fonteum sitemap.
3. Picking a system

Decision tree — including the Vercel-boundary watchdog exception.

  1. Does the job need step-level retries, idempotency, or step-orchestration? → Inngest.
  2. Does the job emit events that downstream Inngest functions consume? → Inngest.
  3. Does the job need observability beyond simple HTTP-200/non-200? → Inngest.
  4. Lightweight HTTP-only operation that completes in seconds and does not need step orchestration? → Vercel cron.
  5. ops-heartbeat is the explicit Vercel-boundary watchdog exception: use Vercel cron when an external deadman must detect a scheduler, proxy, or invocation failure before an application ledger row can exist.

When unclear, default to Inngest — it is strictly more capable. The documented ops-heartbeat boundary watchdog is the narrow exception. The tools/cron-ownership-check.sh CI gate blocks any job that lands in both systems and any job that is missing from this page’s registry.

What’s on file, by the numbers

Platform snapshot · 2026-07-24

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
79fresh 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