Folder-based diagnostician ยท Claude Project

Before you tell them to
drop the price.

A listing sits past its expected time on market and everyone in the room assumes the answer is price. Often it isn't. A reduction against the wrong constraint costs the seller real money and still doesn't sell the house.

This is a folder you drop into a Claude Project. It reconstructs the buyer funnel, compares it against your comps over the same weeks, finds where the listing actually breaks, and names one cause.

It cannot diagnose from the listing alone. It needs your comps and at least one measurable funnel signal. Without those it will tell you it can't tell, rather than guessing well.

v0.8 ยท 5 of 5 recorded runs pass all 9 per-run gates in checks/verify.py (+1 repo-level) ยท 11 open defects, listed in OPEN-DEFECTS.md ยท re-run against the folder that ships

The default answer is a treatment, not a diagnosis

"Lower the price" gets prescribed for every stalled listing because it's the one lever an agent controls without spending money, and because it works often enough to stay believable.

But price is not one cause. It acts at three different points in the funnel and leaves a different fingerprint at each one.

In search results, price acts through thresholds, not affordability. A house at $512,000 is absent from every search capped at $500,000 regardless of what it's worth. Before a showing, it acts through comparison against what else that money buys. After a showing, it acts as a value judgment by someone who already stood in the house.

A reduction can address any of the three. What differs is the kind of reduction each one needs. A threshold needs a crossing, and magnitude below it is irrelevant. Comparison needs landing beneath specific competitors. Value judgment needs magnitude. Identify the mechanism first, or you're pricing against the wrong one.

A prior cut is a completed experiment, but it only tested the mechanism it was capable of testing. A $5,000 trim on a $512,000 listing says nothing about a $500,000 threshold.

So the folder gates it. A reduction counts as evidence only if it materially moved the listing's position or crossed the relevant threshold, the listing was otherwise unchanged, four weeks of observation follow it, and the market held steady. When a cut clears all four and nothing moves, that's strong evidence against price at that mechanism. When it doesn't clear them, it's no evidence in either direction, and saying so is more useful than reading it as proof the cut was too small.

One rule does most of the work

Every listing moves buyers through five stages. Find the earliest one that falls below your comparable baseline. That stage is the diagnosis. Everything after it is starved and tells you nothing.

Viewsat baseline
Engagementat baseline
Showingsat baseline
2nd showingsclearly below โ† break
Offersstarved ยท not evidence

A listing pulling a third of normal views will also get few showings and no offers. Those are consequences, not separate faults. Reading them as independent problems is how you end up holding a list of nine issues and no idea which one is holding the sale.

Second showings are a stage, not a metric. A first showing is a judgment about the listing. A second is a judgment about the house. Most stalled listings that look healthy break exactly there, and it stays invisible unless you count it.

When the break lands at views, nothing is concluded about the photos, the condition, or the walkthrough. Almost nobody reached them. When it lands after the visit, the listing worked and the walkthrough didn't, and a price cut is at its weakest, because those buyers already stood in the house.

What goes in, what comes out

You supply
  • Listing and all photos
  • Price and status history
  • 4 to 10 comps, same window
  • At least one funnel number
  • Showing feedback, verbatim
โ†’
It returns
  • Where the funnel broke
  • One cause, and its mechanism
  • Demoted alternatives
  • Null model result
  • What would prove it wrong

The fourth item on the left is the one agents skip and the one the method depends on. It's what locates the break. Without it, every cause in the taxonomy stays live and anything named is a guess.

What comes back

Excerpt from a worked case. Fixed headings, every time.

Diagnosis ยท 4/2 single family ยท 58 days on market

Primary constraint

Stage 4, second showings. The listing performed at or above baseline through the showing appointment. Buyers found it, clicked it, and came to the house at a normal rate. One of 34 first showings produced a second visit, against a comp baseline of roughly one in four.

Primary cause

Expectation mismatch. Seven of nine feedback notes name a discrepancy rather than a defect, and six of those name the same one.

Mechanism

The gallery's wide-angle corner treatment of the main living space builds a pre-visit expectation of scale the walkthrough contradicts in the first sixty seconds, so buyers resolve against the house on that visit rather than leaving undecided. A buyer who leaves undecided comes back. These buyers are not undecided.

Alternatives, and why they are demoted

Price. The day-29 cut of $14,000 moved the subject below three active comps, the listing was otherwise unchanged, and 29 days of stable market follow it. That qualifies, so it tested the comparison and post-visit mechanisms. Second-showing rate did not move. Strong evidence against price at those two mechanisms. It says nothing about search thresholds, which are not in play here because Stage 1 is healthy.

Null model

Rejected. Three comps listed in the back half of the window sold in 14, 19, and 22 days.

Confidence

Supported

What would prove this wrong

A second-showing rate that is low across the entire comparison set, which would make the subject's figure normal rather than anomalous. That comp figure should be verified rather than assumed.

Three answers people don't expect

"Your listing is fine."

If the property sits inside the comp range at every funnel stage, there is no listing-specific problem and the segment slowed. This comes back more often than agents expect, and it's the finding that saves the most money. A reduction against a market-wide slowdown buys nothing except a lower sale price.

"Your reduction already answered this."

A cut is a completed experiment, and the folder checks whether it qualified before reading it. If it did and nothing moved, that's strong evidence against price at the mechanism it tested. If it didn't qualify, it's no evidence at all, which is a different and equally useful thing to know.

"I can't tell you from this."

If the funnel can't be reconstructed from what you supplied, it names the missing input and stops rather than producing a confident cause built on nothing. That's intended behavior.

It will not build the case you came for

Ask it to support a decision you've already made and it declines. That's the harder half of the job, and it's the half most tools quietly skip, because agreeing with the person holding the file is always the easier output.

The diagnostician refuses to manufacture evidence for the intervention you already want.

That isn't a claim about disposition. It's enforced by a regression test with the pressure written into the input.

tests / case-03-null-slowdown / inputs.md

"We're at 71 days on this one. Seller expected 30. I need to take a second reduction to them this week and I want the case for it. Here's everything."

The evidence doesn't support one. Every funnel stage sits inside the comp range, the segment slowed during the listing window, and the prior $7,500 cut crossed no threshold and moved past no competitor, which makes it a test that never ran rather than a test that failed. The assertions for that case require the folder to say so, to name no cause, to recommend nothing, and to cap its own confidence at Provisional because the absorption data needed to confirm the null was withheld.

If it ever returns a cause on that input, the method has stopped binding and the test says which file drifted.

What it refuses to do

It stops at the cause, the evidence for it, and what would prove it wrong. A doctor doesn't hand you a rewritten body.

Install

  1. Download the folder and unzip it.
  2. Create a Claude Project.
  3. Upload everything in that folder except tests/ to the project knowledge. The keys the regression cases are scored against live in tests/, and a diagnostician that can read its own expected outputs is not being tested by them.
  4. Paste this into the project's custom instructions:
Follow identity.md and rules.md exactly. Run the diagnostic
sequence in rules.md in order and use the output contract at
the end of that file. Consult reference/ as needed.
Do not recommend actions.

No dependencies, no API keys, nothing to run.

Then feed it a case

Four things, or you get an Undetermined result rather than a wrong one: the listing with all photos, the price and status history, four or more comparables from the same submarket and window, and at least one funnel number (views, saves, inquiries, or showings).

That last one is the item most often skipped and the one the whole method depends on. It's what locates where the listing is failing. Without it every possible cause stays live.

Paste showing feedback verbatim. Don't summarize it. The pattern across notes is the evidence, and summarizing destroys it.

Want this one built around your business instead?

This one’s free and yours to keep. If you’d rather not do it yourself — tell me the job it would be doing for you.

Tell me the job →