Multimodal, agentic triage decision-support for rural healthcare in the Global South. A phone photo plus a typed narrative becomes a top-3 condition guess, a Red / Yellow / Green urgency, and a structured pre-visit SOAP for the clinic doctor — contextualized by village distance, cost, and harvest season. It never diagnoses.
A community health worker (or the patient) sends a phone photo of a skin lesion plus a short text history. Path to Care runs the image and narrative through a multimodal agentic pipeline and returns:
Every patient-facing string passes through a deterministic
cardinal-rule rewriter that strips diagnostic phrasing
("you have X" → "signs suggest X") before it
leaves the API. The output is decision support, not a diagnosis.
NarrativeToSOAP signature.
--enable-lora.
:8000. The Next.js frontend talks to it directly.
Two complementary evaluations: a 30-case adversarial test set authored to probe the safety property (red flags, contradictions, off-distribution variants), and a 100-case held-out slice of the SCIN dermatology dataset to probe image-grounded classification.
Reward R = 1.0 exact / 0.5 adjacent /
0.0 off-by-two.
| Run | Mean reward | Exact match | FN Red → Green |
|---|---|---|---|
| Zero-shot baseline (Gemma 4 31B) | 0.983 | 96.7% | 0.0% |
| LoRA-tuned (180 MB adapter) | 0.983 | 96.7% | 0.0% |
Both runs hit the same ceiling — the single residual error is a Yellow → Green slip; no Red was missed. The headline here is the false-negative Red → Green rate at 0.0% — the safety property that matters in the field.
Top-1 accuracy on a held-out slice of the Stanford SCIN dermatology dataset, restricted to the 16 most-frequent conditions.
| Run | Top-1 accuracy | Δ vs baseline |
|---|---|---|
| Zero-shot baseline (Gemma 4 31B) | 28.0% | — |
| LoRA-tuned (same 180 MB adapter) | 35.0% | +7.0 pp / +25% rel |
A 32-second LoRA training run on the MI300X moved top-1 from 28% to 35% — a real learning signal beyond the saturated triage table above. Per-case results in results/scin_top16_topk_tuned.json and scin_top16_topk_baseline.json.
--enable-lora.
Path to Care never produces diagnostic statements. The output is always "signs suggest infection", never "you have cellulitis"; image output is always top-3 with confidence, never a single class label, never binary sick / healthy. Enforcement is defense-in-depth: a system prompt rule, a deterministic regex rewriter on every model output, and a unit test suite that fails the build on diagnostic phrasing.