Ken's list · Wednesday 12 August 2026
Six things off Ken's list, plus the two follow-ups from yesterday's Q&A. Five are done and on the branch. One — can an agent text an inspector through the system — is a no today, and pretending otherwise would be the expensive answer, so it is written up with what it would actually take.
Built: the 440,000 correction, the recordings now start where the conversation does, Josh's page says he is an AI and that calls are recorded, the site has a working search, and the Business Center and James are on the homepage — the first time either has appeared on it.
Applied from the Q&A: the seller's-agent question is off the inspector's form and the listing agent is now captured on every call; and an account physically cannot be marked live until the number is routed and the questionnaire is submitted.
The no: nothing in the system receives an inbound text. Not “it needs configuring” — there is no inbound handler at all, and a text sent to an inspector's number today is accepted and silently discarded.
Homepage, the first citation card under the headline.
Was: “Full-time agents and brokers fell to 440,000 — the largest single-year decline since 2008.”
Now: “72,000 full-time agents and brokers left the business in 2023 alone — the biggest single-year drop since 2008.”
Ken's reason, and it is the right one: as written it read as though only 440,000 agents were left in the entire country. The Propmodo · May 2026 source line is unchanged, and the Sources page needed no edit — it cites the article, not the figure.
Ken: “it took a few seconds to start… I actually thought, is the thing playing? I'm not going to stay here, because something's wrong.”
The seven recordings on the Engine 4 page were decoded and measured rather than guessed at. Every one opens with true zero — not room tone, not a ring tone, nothing at all — while the call connects and the bot starts up.
| Recording | Josh's first word | Playback now starts |
|---|---|---|
| Standard booking | 3.9s | 2.9s |
| After hours | 4.0s | 3.0s |
| Weekend request | 4.0s | 3.0s |
| Price first | 3.5s | 2.5s |
| Agent books | 3.6s | 2.6s |
| New construction | 4.1s | 3.1s |
| Referral | 3.5s | 2.5s |
Play now starts one second before Josh speaks, exactly as Ken asked. The second is deliberate: dropping in on the syllable sounds like a broken file, while a beat of quiet reads as a call connecting.
The clock and the progress bar are measured from the same point, so a card reads 0:00 / 6:50 instead of 0:03 / 6:53 — the number under the button now matches what you hear. Dragging the bar to the far left lands on the first word rather than back in the silence. Nothing is edited: it is still the unedited call, the playhead just starts where the conversation does.
Your note said that if the delay could not be removed we should print “there is a 3-second delay before the call starts” next to the play button. It has been removed instead, so that line would now be false and it is not on the page. If you would still rather have a reassurance line there, say so and it goes in — but it should describe what the player actually does.
bookedsolidinspector.com/josh.html
Ken was right that the page said neither. He is also right about why it matters — “a lot of states require now that if you have an AI, you have to identify him as an AI,” and on the recording line, “that has to be in there, otherwise there's a huge fine.”
Both have been in the live Josh since 7 August. The page now carries them in their own band, quoting what a caller actually hears:
Asked if he's a person: “I'm an AI — I handle the scheduling here at [your company]. So not a person on the other end. But I can get your inspection booked right now so you don't have to call back.”
On connect, every call: “Just so you know, this call is recorded for quality and training.” That one is spoken by the system on the connect event rather than left to the prompt — a prompt can be ignored on a busy call, and this one cannot be.
The band ends with a plain line that we are not a law firm and that rules vary by state. Selling a compliance feature without that line is its own risk.
Josh identifies himself as an AI when he is asked. He does not volunteer it. That matches how Ken described the requirement on the call — “if somebody asks you, are you a robot… all he has to do is say, I'm the AI assistant for…” — and it is the right default for bookings, because volunteering it up front costs conversions.
Some states read their disclosure law as requiring it up front, unprompted. Nothing has been changed on that basis, because it is a legal question and a conversion question at the same time, and it is Ken's call — not something to slip into a prompt. It is worth putting in front of the LegalZoom lawyer alongside the master service agreement.
Ken: “There isn't a search function on the Booked Solid website.”
A Search button now sits in the nav on all 21 pages. It opens over the page, searches as you type, and jumps to the section rather than the top of a long page. Keyboard: / or Ctrl/⌘+K to open, arrows to move, Enter to open, Esc to close.
The site is static files on nginx, so there is nothing to ask. Search runs entirely in the visitor's browser against an index generated from the pages themselves — 392 entries across 18 pages — so it can never drift from what the site says. The index is fetched only when somebody actually opens search, not on every page load.
One habit this creates: after any copy change, run node scripts/build-search-index.mjs. Skip it and search answers with yesterday's site.
Ken: “I couldn't find out about the dashboard on the site. That's a huge USP. Another USP is that James answers questions the inspector might have when completing the Onboarding Form. There is no mention of that.”
The Business Center — a working, clickable demo of the real thing — was linked from exactly one page on the whole site, was in no navigation, and appeared nowhere on the homepage.
James was worse: searching the finished site for “James” returned nothing at all. The thing we sell as a reason the setup form is not a form the inspector faces alone was not mentioned on a single page.
Both are now on the homepage, in a band placed straight after the four engines — the engines are what runs, this is where you watch it run. It carries the real tiles, a James exchange, three plain-English points (the numbers, every call listenable, James in the room) and a button through to the live demo.
Business Center is now a nav item on 12 pages, and step 1 of “How It Works” now says James is on the page while you answer the questionnaire.
Ken, on the call: “if the onboarding form is outside the dashboard, James won't be able to” help with it. The homepage now promises that he does. The onboarding form (/onboarding.html) currently carries the floating James, so the promise holds — but if the form ever moves outside the dashboard, this copy becomes a claim we do not keep. Worth pinning before the first new client sees it.
The tech stack & white glove — twelve sections: the six services in every phone call, the three Telnyx meters on one call, the different and cheaper web stack, what a person still has to do, and what could not be answered from inside the repo.
It has been sitting in /reports/ since it was written, reachable only by knowing the filename. It is now pinned in a Reference row at the top of the Pre-Launch Status Board, along with the booking flow, the What Changed deck and the site sweep — the board is the page that actually gets opened.
Ken overruled yesterday's answer, and the reason he gave is a forward-looking one: “We will need that for marketing to sellers' agents as Booked Solid evolves. It's better to have it and not need it than to need it and not have it.”
What changed: the “Do you email the seller's / listing agent?” yes/no is gone from the inspector's onboarding form. It was doing more than it looked — it decided whether Josh captured the listing agent at all, so an inspector who does not email them lost the record too.
Josh now asks every caller once, using Ken's own wording: “by chance, do you know who the seller's agent is?” A name and a firm is a win. If they do not know, he says no problem and moves on — no rephrasing, no second attempt.
Where it sits matters more than the question: it is asked after the booking is saved, beside “how did you find us”. Measured on two real calls on 10 August, asking for agent details up front pushed a routine booking past eight minutes and thirty-five questions and the call ran out before anything was booked. At the end of the call the same question costs about five seconds.
Whether that agent gets emailed is still the inspector's choice — it is the “Notice to the seller's agent” row in the email schedule, which is where that decision always belonged. Both brains were changed together, phone and web.
Ken: “An inspector's account should not be activated until the number is ported and the onboarding is firmly locked into Brain Two. No exceptions.” — and on the call, “I'm gonna be Machine Gun Floyd on this.”
This is now enforced in the code rather than written down. Mark live on the build board is greyed out, and the server refuses the request even if something else calls it, until both are true:
Both, or it does not start
The board now names what is missing on each account instead of letting somebody press the button to find out. Turning an account off is not gated — the moment you want an account off is the moment something is going wrong for a client.
Ken: “a gate code change, or a document that needs to be signed… text is an everyday way of life now. What am I going to say when somebody asks me that?”
There is no inbound message handler anywhere in the system. Not misconfigured — absent. Everything that exists sends outbound: the booking alert to the inspector, the payment link, the agreement, and GoHighLevel's own campaign texts.
So if an agent texts a gate code to an inspector's Josh number today, Telnyx accepts it, no webhook is configured to receive it, and it is discarded. The agent's phone shows the message as sent. Nobody is told. The inspector arrives at a locked house.
No new number is needed. It is the same ported number the inspector already has, and receiving is one webhook rather than a live audio stream. In order:
The route to yes
Cost: the rate on file for outbound is about 1.2¢ a message (Knox, 14 July). Inbound is normally a fraction of that, but I have not verified Telnyx's inbound rate and am not going to state one I have not read. A separate text-only line, if a client ever wants one, is a new Telnyx number at roughly a dollar a month plus per message.
What Ken can say today, accurately: “Texting into the system is V1.1, not V1. Right now, texts go to your own phone as they always have. When it lands, the text will file itself onto the job beside the call recording and the work order — which is more than a text on your phone ever did.”
bookedsolidinspector.com is served by nginx as plain static files from /var/www/bookedsolid/. It does not read this repo. Merging to main updates the working copy and nothing the public sees.
Every changed page has to be copied across, and that now includes two new files — site-search.js and search-index.js. Miss those two and the Search button appears on every page and does nothing.
The Business Center demo, the launch board and the reports are on dashboard.outcropinspector.com, which is served from the repo and does update on merge.
The full test suite is green — 39 test files, including the brain-parity check that keeps the phone and web Joshes from drifting. Two tests were rewritten where they asserted the old seller's-agent behaviour, and a new one now fails if the “always captured” line ever goes back to depending on an answer nobody is asked for.
The site was loaded in a real browser at eight widths from 1440px down to 380px to confirm the new nav item and the Search button did not push the page sideways — the first attempt did, clipping “GET STARTED” off the right edge at every width, which is why the nav measurements are written into the stylesheet.