Skip to the page
spine.fyi

A field notebook. One clinical desk, walked through control by control, with every figure re-taken from the live page and the minute it was taken written in the margin.

Entry 03 · the symptom checker

Notebook: The Symptom Checker

Walked through 22 September 2026every figure re-taken live, times in UTC~1,150 words

Most symptom checkers are built around the moment they give you an answer. This one is built around the moment it refuses to.

The kicker above the heading reads Orientation — not triage. The standfirst under it does the rest of the work: It will not name a diagnosis and it will not tell you that you are fine — only a clinician who can examine you can do either. Further down the page, in the disclosure block, it goes further still: It will never tell you that you are fine. Rare conditions are deliberately absent, so an empty list means nothing at all — and the page says that too, rather than letting an empty result read as reassurance.

219, 22, 85 — counted, not quoted

The page prints its own scale in a footer line: The register holds 219 conditions across 22 regions, described by 85 symptoms. That line is generated at render time from the data, which means it can only be checked by checking the data.

So I downloaded the live js/conditions.js — 359,504 bytes, fetched at 22:34:29 UTC — and ran it, counting the arrays myself. CONDITIONS.length is 219. REGIONS.length is 22. Summing the symptom lists across all 22 region keys gives 85. The page states the register correctly in all three places.

The regions are anatomical and then not: Head, Face, Eyes, Ears, Nose & sinuses, Mouth & throat, Neck, Chest, Heart, Lungs, Abdomen, Pelvis, Back, Shoulders, Arms, Hands, Hips, Legs, Feet — and then Skin, Mental and General, which are not places on a drawing. The figure card says so out loud: skin, mood and whole-body symptoms are chips only. Small honesty, and it stops the body map from pretending to a completeness it cannot have.

The Rx.Luxury symptom checker before anything is picked: a kicker reading
The checker at rest, 1440×1200, captured 2026-09-22 22:37:15 UTC.
  1. 1The kicker sets the ceiling before the tool sets an expectation.
  2. 2The refusal, in the standfirst, where a competitor would put a promise.
  3. 3The counter starts at the whole register and falls. It never counts up toward an answer.
  4. 4Four steps, numbered, with the fourth one called Distinctions rather than Result.
  5. 5The register’s own scale, stated on the page. I counted it in the data and it is right.

One chip, 219 to 7

I picked a single chest symptom — chest pain on exertion — and the counter fell from 219 to 7. The line under the workspace explained the arithmetic rather than the outcome: Narrowed to 7 of 219 conditions on the register — 7 involve at least one of them. That is a count of candidates, not a ranking of likelihood, and the page keeps saying so.

Then the fourth step does something I have not seen a consumer checker do. Instead of listing what is left, it asks the one question that splits the survivors most evenly, and tells you why it picked that question: One answer that splits what is left most evenly — a no tells it as much as a yes. For my seven, it offered Fatigue, annotated 3 of 7 survivors involve this, with the rest queued behind it in order of how much each would settle — cough 2 of 7, wheeze 2 of 7, swollen ankles 2 of 7, shortness of breath 6 of 7.

That is binary search with its working shown, and showing the working is the part that matters. The number beside each option is the reason the option is there. A reader who does not care can ignore it; a reader who does can see that the tool is narrowing a list rather than closing in on a verdict.

The same checker after one symptom is picked: the counter now reads
After one chip, 1440×1200, captured 2026-09-22 22:38:02 UTC. The urgency chips above the progress bar are the defect described below.
  1. 1The counter, now 7. It falls toward a shortlist, never toward a name.
  2. 2What you said, kept visible and removable, so the shortlist is never a black box.
  3. 3The distinction step, with its own selection rule printed above it.
  4. 4The arithmetic restated in words at the foot of the workspace.

Two things that are wrong

The urgency chips do not fit their own pills. Beside the counter, the shortlist is broken down by urgency — five urgent, two routine, for my seven. It renders wrong. The element carrying the text 5 urgent measures twenty pixels by eight; the numeral falls below its pill and the word runs straight through the progress bar underneath it, so the strip reads as a struck-out smear rather than two figures. I reproduced it at 1440 and at 1280 pixels wide in the paper edition. It is a small CSS defect in the one component on the page whose job is to make a number legible.

A two-times enlargement of the counter strip: a large figure reading 007 with
Detail at 2× from the screenshot above, cropped by me, not otherwise altered. The numerals have dropped out of their pills and the word urgent is struck through by the bar.

    The room index is a version behind. The health room at labs.llc/health/ describes this desk as a symptom checker — 148 conditions, narrowed live as you describe yourself. I fetched that page at 22:42 UTC: the string 148 appears five times in it and the string 219 does not appear at all. The desk itself counts 219, and I counted 219 in the data.

    The fair reading is not that anybody is inflating a figure — the stale number is the small one. The tool outgrew its own summary card and the card was not re-cut. But it is exactly the failure that the estate’s own register code warns about in a comment I read on the way through: the most persistent bug here is a page stating a number its data cannot support. It applies to the room index as much as to a city page.

    Verdict, such as a notebook gives one

    The register is in the same family as an NHS symptom page or a Merck symptom table — a reference you read, not an oracle you consult — and it behaves like one. It orients. It narrows. It explains every number it shows you while it is showing it. And at the end it hands you a shortlist and a sentence saying the shortlist is not a diagnosis and that an empty one is not reassurance.

    A checker that will not tell you that you are fine is a harder product to love and a much easier one to trust. Fix the urgency chips and re-cut the room card, and the thing you are left with is a piece of consumer health software whose defining feature is the answer it declines to give.

    Standing noteThis notebook reviews software. It is not medical advice, it does not diagnose anything, and it does not recommend treatment. The imaging lab described here displays medical images: it windows them, pages through them and reads their headers. It does not interpret them, does not detect findings and does not produce a report. If something is severe, sudden or frightening, call your local emergency number.