August 2024 moved two numbers from implicit to spoken — and handed every agent five conversations nobody trained them for. This is the prep sheet for the one you're about to have: your position, the pushback that's coming, and the sentence that answers it.
Whose mouth, whose document.
Every output is addressed to you, about your business. Nothing explains what a contract means — because that's the unauthorized practice of law in all fifty states, whatever your licence says.You may fill blanks in your broker's approved form. You may not draft it, alter it, or explain what it means — courts have been consistent about both halves, and there's no bright-line test for how far is too far. So this tool doesn't approach the line experimentally. It stops, says why, and routes you to the broker or the attorney.
Notice the pairs. Each row is the same topic split by the line — and the usable move, every time, is handing back the version that sits on your side. The repo ships twelve worked boundary calls with the case-law sourcing behind them, and a refusal that always ends in a redirect. A refusal that leaves you with nothing is one you'd route around — to a general-purpose chatbot that will happily draft the addendum.
Each file is self-sufficient — when to use it, what it runs on, how to start from nothing, how to think, what it produces, and where it stops. Lift one into another tool and it works without the rest.
The sit-down that now has to happen before you unlock a door. Most consults fail on sequence, not on value language — agents lead with the agreement, so the buyer experiences the whole meeting as a signature request.
State it, stop talking for two seconds, then say what it buys. The pause is the whole technique and it's the part agents can't do. Includes the percentage-vs-flat decision as it actually trades, not as it's marketed.
Not a binary — four live positions. Reframes the money as proceeds, not loyalty: the same question as a closing-cost credit or a rate buydown. Then makes you bring a recommendation instead of "it's totally up to you."
Duration, scope, and exit are three independent decisions, which is why asking for the maximum on all three costs you signatures. Short-first, earn the renewal — and give the exit away deliberately.
Sort the report into material, deferred, and boilerplate before anything else. Three items is a request; nineteen is a renegotiation and everyone on the other side knows it. Then pick the instrument and read leverage honestly.
Write anything addressed to your client. Interpret, draft, or alter a form. Touch MLS, IDX, or aggregator data, or estimate a local rate. Tell you what to charge.
Job 2, with pushback already landed and a deferral to undo. One screen — you read it in the car.
"Buyer consult went fine until the fee. I said 2.5% and she said her friend's agent does it for 2. I panicked and said 'let's talk about it after we see a few places.' Now I have to have the conversation again Thursday and I've already looked weak."
Pushback, round two — with a deferral to undo. The deferral is the bigger problem: "let's talk about it later" told her the number is negotiable, so Thursday she'll expect movement. You're not re-stating a fee, you're closing one that's been left open.
"I want to come back to Thursday's question, because I gave you a soft answer and you deserve a straight one. My fee is 2.5%."
— stop here. Two seconds.
"Here's what that buys: [your two specifics]. That's the number I work at."
Naming the earlier dodge is what recovers the ground. It costs one sentence and converts the weakness into candour — a better position than pretending Thursday didn't happen.
"They might be great — I'm not going to run down an agent I don't know. What I can tell you is what you get from me: [two specifics]. My fee is 2.5%. If price is the deciding factor here, honestly, they're the better call — and I'd rather you go with who you trust than feel talked into me."
Concede → answer → return to the number → hand back the choice. The last move is the one that works: a buyer given a genuine exit usually doesn't take it, and stops testing the price.
Offer the term, not the rate: "I'll keep the rate at 2.5 and do a 30-day agreement so you're not stuck with me." That costs you a renewal conversation instead of a quarter point of the purchase price — and buyers routinely value it more.
Python 3, standard library, nothing to install. All three exit 0 on a clean checkout — and the repo ships a four-step procedure for breaking itself, because a check that can't fail is decoration.
# five skills · six sections each · every stop declared python3 reference/checks/skill-shape.py # no client-addressed output · no listing-data inputs · every boundary table present python3 reference/checks/boundary-checks.py # which of your own positions are on file, and which jobs go framework-only python3 reference/checks/practice-state.py
| Claim | What settles it |
|---|---|
| Five skills | ls skills/*.md | grep -v README | wc -l |
| No output is addressed to a client | boundary-checks.py — CHECK A |
| Every skill declares where it stops, with a quoted refusal | boundary-checks.py — CHECK B |
| No skill declares a listing-data input | boundary-checks.py — CHECK C |
| This page fetches nothing external | grep -nE '<(link|script|img|iframe|source)' docs/index.html — prints nothing |
| …and every URL on it is this repo's own, plus one link to the builder's own site | grep -oE 'https?://[^"]+' docs/index.html | sort -u — repo URLs, plus exactly one: the footer byline |
| The checks can actually fail | the four-step break procedure in VERIFY.md |
There are no testimonials on this page, no user counts, no defect or coverage numbers, and no
"trusted by" row. Not because they'd be unflattering — because you couldn't check any of them,
and the repo's VERIFY.md treats an unverifiable claim as a bug.
What you can check instead, in about two minutes:
examples.md — four worked exchanges, one of them the tool refusing a
request and then delivering the part that was in scope.VERIFY.md and watch each check catch it.reference/the-upl-line.md — state real-estate commissions
and REALTOR® associations, linked, not paraphrased.No install, no dependencies, no build. Markdown files and three Python scripts.
The two operating files, the one skill you need, and the two references that carry the boundary and the objections.
identity.md rules.md skills/<the one you need>.md reference/the-upl-line.md reference/objection-library.md
Three files in reference/your-practice/: your fee and your floor, your terms
and what your broker lets you vary, and what you've actually seen in your own market. Answer
as you actually are, not as you intend to be — the gap between the number you say and the
number you take is the most useful thing in that folder.
python3 reference/checks/practice-state.py
Jobs will then ask you for the missing number, or label the output framework-only. They will not invent one. A prep sheet built around a rate the tool inferred is worse than no prep sheet — you won't notice the inference, and you might repeat it to a client.
"Buyer consult Thursday, referral, first-time buyer." "She came back with 2%." "Inspection flagged the panel." It routes, asks at most two questions, and produces one screen.
If you already run an assistant for pricing, listings, buyer matching, or showing notes, the two are disjoint: that one establishes what's true about the house, this one prepares what you'll say about yourself. No shared files, no install order, no dependency in either direction — adopt either first, or alone, indefinitely. The repo maps the seam and the four handoffs where one hands off to the other.
And if you don't have one, nothing here is missing. Every skill lists its inputs, and all of them come from you.
Because that's the unauthorized practice of law in every U.S. state, and your real-estate licence doesn't cover it. Courts permit filling blanks in an attorney-approved form and prohibit interpreting the provisions in it — and there's no bright-line test for how much modification is too much, which is exactly why the rule here is none. There's a second reason too: anything this tool tells you, you might repeat to a client tomorrow. That's why it refuses even the "just so I understand it myself" version.
No — and that isn't caution, it's what the tool is. Where the line sits for you genuinely does vary: what you may say about a form, whether attorney review is customary where you work, what your state requires you to disclose. Your broker and a real-estate attorney in your state have your version of all three, and this repo has none of them — it routes those questions rather than answering them. But their answer settles what you may say to a client. It doesn't change what this repo writes: nothing addressed to your client, and nothing explaining what a document means, before or after that call. If your state permits something this tool refuses, that permission is yours to use in your own words — not a gate that unlocks a draft.
No, and it won't estimate around the gap. MLS data is licensed per organization — every MLS
is its own contract even through an aggregator, national feeds run into six figures a year,
and IDX carries standing refresh and audit obligations. A folder of markdown files can't hold
that compliance surface and shouldn't pretend to. Your own observations of your own market
go in what-i-see-locally.md, and they outrank any national figure the repo
carries.
No. It doesn't know your market, your costs, or your pipeline, and a tool that quoted you a rate would be inventing one. What it does is help you say the number you've decided on — and pressure-test whether you've actually decided. If your fee file is blank, that's the finding, and it comes out in the first exchange rather than getting papered over.
Yes, in the sense that any folder of instructions is. The work that's been done for you is the decomposition — five jobs with declared inputs, a boundary that holds in the same place every time, twelve objections with what's true in each one, and the sourcing behind the legal framing. The check scripts exist so you can confirm the boundary is still where it says it is after you edit it, which is the part people don't build for themselves.
Partly, and you should know that before adopting it. Jobs 2, 3, and 4 ask you to decide
things that in that case aren't yours to decide. Jobs 1 and 5 still work fully. That's two
jobs, not five — the repo says so in who-this-is-not-for.md rather than letting
you find out in week three.
No. Different transaction structure, different fee conventions, and the 2024 residential practice changes don't govern it. Every example and every position here assumes a residential deal with a consumer on the other side.
Ask your carrier directly whether your policy excludes claims arising from generative-AI-assisted work — 2026 policies have reportedly begun adding those exclusions. The repo flags this and marks it as unverified rather than asserting it, because it came from a build brief and not from a policy anyone read. It's a phone call worth making regardless.
Commercial agents, anyone wanting contract language, anyone wanting market data, consumers, agents whose brokerage sets every position, and anyone who wants a word-for-word script to recite. Positions hold under improvisation; scripts break the moment the client says something off-book.