Model card
Version: v1 · 2026-08-13 · Source of truth: docs/MODEL-CARD-groundcheck.md
What Groundcheck is (and is not)
Groundcheck is a contractor and business verification engine. It ingests public-record data (Secretary-of-State filings, statewide contractor-license rosters, municipal permit records, federal and state adverse-record sources) and publishes trust reports about named real businesses and contractors.
Groundcheck is not:
- A background-check service. It does not run criminal, credit, or employment vetting on individuals.
- An FCRA-regulated consumer report.Groundcheck is not a Consumer Reporting Agency, and its outputs are not “consumer reports” as defined by 15 U.S.C. §1681a(d). FCRA-styled internal symbols (
gateAdverseForIntegrity, the §1681i-styled dispute route, files undersrc/lib/compliance/fcra-*) are shorthand for accuracy guardrails, not a legal claim. - A recommendation to hire, avoid, or contract with any specific entity. Reports are informational.
The real legal exposure is defamation and accuracy. The failure modes that create liability are wrong-entity anchoring, ungated adverse claims, and stale data presented as current. The system is designed to fail closed, never open: weak signal or uncertain identity suppresses or caveats output.
Model pins
Synthesis
Canonical id PRIMARY_SYNTHESIS_MODEL in src/lib/trust/synthesize-v2-prompt.ts. Used for narrative synthesis over already-gated, already-scored evidence.
Trust scrapers
Used for narrow field-level extraction inside the scraper pipeline (payloads scrapers cannot parse structurally on their own).
Both pins are enforced by .github/workflows/model-pin-guard.yml. The forbidden next-major opus id (assembled at CI time; the literal string is banned in this repo, so it does not appear here) will fail CI on any PR that reintroduces it (cost multiplier, and a different effort default the pipeline does not want).
What the LLM does
- Field-level extraction from HTML, JSON, or PDF payloads that scrapers cannot parse structurally.
- Natural-language synthesisof the report’s descriptive prose over evidence that has already cleared identity anchoring, per-source verdict emission, and the adverse gate.
What the LLM does not do
- It does not decide whether to publish an adverse claim. That is
gateAdverseForIntegrity— deterministic TypeScript. - It does not decide the composite score. That is deterministic code, shared with the Broker Defense product.
- It does not decide identity anchoring. That is
search_roster_entities+entity-search.ts. - It does not decide refusal. The evidence-floor scrub is a Postgres trigger, and the rendering side (
refusal-copy.ts) maps stored machine codes to user copy with an own-property check that fails closed on unknown codes.
The gate that decides whether an adverse claim is publishable is never an LLM. If you are reading a public write-up that says an LLM makes that decision on Groundcheck, that write-up is wrong. Cite this page.
Known failure modes
Summarized here; the full list with mechanism links lives in the methodology page.
- Stale corpora. Every surfaced datum carries an as-of / staleness caveat.
- Walled boards. A handful of state licensing boards sit behind managed anti-bot interstitials or CFAA/ToS boundaries that reputable proxies will not clear.
- Phoenix / fraud-spine lane is gate-deadlocked. Publishable population today is zero and the ceiling is bounded by acquisition, not algorithm.
- Coverage-matrix status is a stored value, not a live measurement.
validatedmeans reachable, not covering. - Web-search floor dependency. For grade-D states without an ingested roster or free portal, the retrieval-provider seam is the only licence-answer mechanism; its liveness depends on external credential state.
- Retention gap on historical evidence. A subset of older evidence rows pre-date the retention chain and do not carry a stored artifact.
- Bindable-but-thin subjects. Identity anchoring can succeed while corroboration for a score does not — the report suppresses the numeric verdict.
Change log
- v1 · 2026-08-13. Initial model card. Synthesis pinned to
claude-opus-4-7; scrapers pinned toclaude-sonnet-4-6. Refusal vocabulary: four codes persrc/lib/trust/refusal-copy.ts. Coverage authorities named:gc_state_license_required+licenseLaneForState(). Adverse gate identified as deterministic (gateAdverseForIntegrity), not LLM-decided.
For any numeric claim — coverage grade split, row counts, freshness — the source of truth is node scripts/ci/dod-scoreboard.mjs and docs/AUDIT-groundcheck-2026-08-02.md. Numbers do not live on this page.