The detector spots basal cell carcinoma.
The trust layer makes the call worth trusting.
SecondLook reads skin-pathology slides for basal cell carcinoma with a detector built on 129,364 labeled tiles. On every confident call it runs a spellcheck - checking where the model looked - so you trust the reads that pass and take a second look at the ones that don't.
before · corner heat
after · on tissue
Same tile. Same 1.00 confidence. Drag to compare where each model looked.
Attention sits on tissue. The check passed and the finding stands.
High score, but the heat is on a corner or edge. Routed for human review.
Evidence is unclear, or the check fails closed. No call is made.
A model can be confidently wrong.
Two detectors can post the same 1.00 score on the same tile. One read the lesion. The other locked onto a padding corner and never saw it.
The metrics can't tell them apart. The attention map can.
A spellcheck for the model's work, never the slide.
On a confident positive, the trust layer reads the score, the attention, and the heatmap - then returns a verdict in plain language. The detector's call never changes; the doctor keeps the final say.
Same tile. Same confidence. Opposite trust.
Two EfficientNet-B4 models, identical but for one training change. Before learned a shortcut and stared at a corner. After reads tissue. Aggregate metrics stay high on both - only the attention map separates them.
Built on a real dataset, shown in the open.
Metrics are tile-level, on an internal held-out split of one dataset (Heidelberg), patient-disjoint.
The demo is hosted. The whole thing is open.
Both checkpoints ship in the repo, so you can reproduce the before / after attention without retraining. Claude's check calls the Anthropic API with your own key, kept server-side.
See where it looked.
Open Compare on a positive tile and watch corner heat become FLAGGED and tissue heat become VERIFIED - same detector, different trust.