Folder-based diagnostician ยท Claude Project
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
"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.
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.
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.
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.
Excerpt from a worked case. Fixed headings, every time.
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.
Expectation mismatch. Seven of nine feedback notes name a discrepancy rather than a defect, and six of those name the same one.
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.
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.
Rejected. Three comps listed in the back half of the window sold in 14, 19, and 22 days.
Supported
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.
"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.
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.
"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.
It stops at the cause, the evidence for it, and what would prove it wrong. A doctor doesn't hand you a rewritten body.
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.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.
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.
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 →