Grounded answers, or none at all.
GroundCheck answers clinical-style questions only from its trusted sources, and refuses when it cannot ground a response. Watch the pipeline decide, then tune the thresholds and guards and watch the decision change.
Synthetic corpus. Document structure modelled on MedQuAD (NIH medical Q&A) and the FDA DailyMed drug-label format. Every condition, drug, and dose is invented.
Every question runs through a fixed pipeline. The decision to answer or refuse is deterministic and never depends on a live model call, so the system behaves the same with or without an LLM. Each stage below records a status and a timing. After you ask, the Pipeline trace shows the real run, and every step there is clickable for the detail of what happened, including the LLM judge's verdict on each claim.
The LLM as a judge
Grounding is decided in two layers. First, a deterministic embedding
similarity between each claim and its cited source must clear a
threshold. This is authoritative and reproducible. Second, when a live
provider is configured, a separate, cheaper model is shown only the
claim and its cited source and asked, strictly, whether the source
supports the claim. It returns JSON: {"supported": bool,
"reason": string}. The judge is corroboration, recorded in the
trace, never the deciding vote. So a flaky model can never turn a
refusal into an answer. Open the grounding step in the trace to read
the judge's verdict and reasoning for each claim.
Adjust the pipeline, then ask again. Lower the gate to answer more often, raise it to refuse more. Switch a guard off to see what an ungoverned system would have returned.
Minimum source similarity. Below this, refuse before generating.
How strongly each claim must match its cited source.
How many passages the retriever returns (top-k).
0 is deterministic. Higher makes the model's wording vary between runs.
Retrieved sources
Pipeline trace
Every document, embedded and projected to three dimensions with PCA, so similar documents sit near each other. This is the space the retriever searches. Drag to rotate. Ask a question and the retrieved sources light up in black, so you can see where in the corpus the answer came from.
This corpus is fully synthetic. Every condition, medication, lab marker, dosage, and procedure is invented for this demonstration. Nothing here is real and nothing is medical advice.
The document structure mirrors two real, public reference
formats so that retrieval and grounding are exercised realistically:
disease entries follow the
MedQuAD
question-type taxonomy (information, causes, symptoms, treatment,
monitoring, prognosis), and drug entries follow the FDA Structured
Product Labeling sections used by
DailyMed
(indications, dosage, contraindications, interactions, adverse
reactions). The records themselves are generated procedurally by
scripts/generate_corpus.py, seeded so the corpus is
reproducible.