Describe a symptom
Plain language. One or two sentences is enough. Mention duration and what changes it if you can.
Demo · Symptom Triage
Plain language in. Schema-validated structure out: body systems involved, ranked possible causes, red flags, and the questions a clinician will likely ask.
01 · How it works
Plain language. One or two sentences is enough. Mention duration and what changes it if you can.
Image-grounded findings come back in a separate field, so you can see when the model is reasoning from the picture vs. from text alone.
Body systems involved, ranked possible causes, red flags, and the questions a clinician will likely ask. Schema-validated before it reaches you.
02 · Run it
Live, calling Claude Sonnet 4.6 vision through a Netlify Function. Output is JSON-schema validated before render; malformed responses are rejected and retried.
Result
03 · Behind the demo
The model is Claude Sonnet 4.6 with vision, called from a
single Netlify Function. The same backend handles
text-only and image-plus-text prompts; when a photo is
present, the response includes a visual_findings
array, isolated so a reader can tell whether the image
actually informed the answer or whether the model reasoned
from the text alone.
Output is validated against a JSON schema at inference time. Malformed responses are rejected and retried before they reach this page. Hallucination containment is enforced by structure, not by training accuracy.
Symptom Triage v1 was a LoRA fine-tune of Qwen2.5-1.5B evaluated on a held-out symptom set. v2 trades the fine-tune for a larger, vision-capable foundation model and keeps the same schema as the contract surface.