KDG Lab · specimen №005 · run 2026-07-14

The quote-shaper

Can an interactive widget deepen the endowment effect — from this is already your website to this website is already working for you — while feeding the text-first funnel instead of competing with it? It is live, on a wholly synthetic host: Ledgewater Cleaning Co., a cleaning business that does not exist, in towns that do not exist, with a phone number from the reserved-fictional band that reaches no one.

The ruling that shaped it

A demo may state only what the house can attest — and the house cannot attest the prices of a business it has never met. So a "quote estimator" that prints a dollar figure on a mailable demo is structurally a lie, and it got ruled into a different machine: the widget gathers the job's shape, and the price question becomes the text. Three taps — service, size, frequency — refine a live preview of a real message ("3 bed / 2 bath, every other week. What would that run?"), and the only output is that message, prefilled in the visitor's own SMS app. Never a number. The one dollar figure anywhere on the page is the house's own attested price: the $5,000 bar.

The widget is stateless by construction — no form, no email field, no storage, no cookies. It writes text on a page and one sms: href, and forgets everything when the tab closes. The fine print says so on the host, because the absence is a feature the visitor should get to see.

Why it feeds the funnel instead of competing with it

The text-first funnel's weakest joint is the blank compose box: the customer must author a message from nothing, at the exact moment of highest hesitation. The shaper spends three taps removing that authorship cost — the visitor watches their job take shape in their cleaner's voice — and its only exit is the funnel's own front door: the text button. No second channel, no callback queue, no email capture. It cannot compete with the funnel because it has no output except the funnel. The call link stays present and visually subordinate, per the standing law; and the message is a draft the sender owns — read it, edit it, send it when you like.

Without JavaScript the band is still complete — headline, the generic price-question text, the standing text button (the F11 lesson: no empty bands, ever). The widget can only ever add shape to a funnel tap that already works.

Two variants, labeled honestly

  • DEMO — the mailable variant (default). Shape-only: the preview line IS the outgoing text, and the text IS the price question. This is the only variant a postcard may ever point at, and its rollout waits for the Jul-31 checkpoint read — the instrument stays frozen until the house has read batch-1's numbers.
  • CLIENT — the attested variant (?variant=client). The same widget rendering a per-visit range — "typically $135–175 for this — pricing set by Ledgewater Cleaning" — prototyped here on a synthetic attestation. It exists only after onboarding asks the client "what does a typical job run?" and writes the answer down. The pixels taught a subtlety: the range renders below the preview with its provenance, and stays out of the customer's mouth — once a range is on screen, the message becomes the booking ask ("When could you fit us in?"), because asking "what would that run" beside a printed range reads wrong. What you see is exactly what you send, in both variants.

The toggle lives on the host's lab strip in the keeps-no-secrets pattern, and each label states what its world requires. Every visible word on both variants is CEO copy at graduation — the Lab writes placeholders, not gospel.

Furniture, not feature

  • The skeleton is HTML, not injection. The tap rows are radio buttons in the base document, revealed by an html.js class set by a blocking head script — visible from the first frame in the JS world, absent without a hole in the no-JS world. JavaScript only ever rewrites text and one href.
  • Geometry is reserved, then never moves. The preview box fits the longest composable message at each width; the browser's own PerformanceObserver confirmed the widget itself moved nothing — layout shift from the taps measured exactly zero, live. The residual 0.0016 on load is the web font arriving; font-display: optional would erase it but could cost the brand serif on the demo's one look, and was refused.
  • Thumb-reach at 390px: 44px pill targets, one full-width send button, the whole shaper inside one screen after the hero.
  • House sensibility re-derived, not imported (the wall forbids reading prod templates): DM Serif Display + DM Sans from the Lab's own shelf, no emojis, and "dark primary" read as a dark spruce brand on paper ground — a dark-themed cleaning site reads as a tech portfolio, not a midcoast cleaner. Interpretation owned here.
  • Measurement designed, not wired: three inert, commented beacon sites in shaper.js carry the kdg-d1-spine-v1 taxonomy — demo.widget_open (first tap), demo.shape_complete (third row answered), and a shaped flag riding the existing demo.tap_text — so graduation wiring is one line per site and the funnel gains a shaped-text vs raw-text stage. Shape keys only, never free text: message bodies never cross the wire.

Photographed live, at phone width

Every figure is the deployed page, not a mock. The state shown is the canonical shape: standard clean, 3 bed / 2 bath, every other week.

The full synthetic host at phone width: the $5,000 bar, hero, quote-shaper panel, services, reviews
HOST the stage: a credible V1, all of it synthetic
The shaped demo panel: three selections filled, the message reading 'Hi, looking at a standard clean for a 3 bed / 2 bath, every other week. What would that run?'
DEMO shaped — the text is the price question
The client variant panel: the booking-ask message with the attested range rendered below it, carrying its provenance
CLIENT the attested range, wearing its source
The no-JS band: headline, the generic written text, the standing text button — complete without the widget
NO-JS the band stands complete — F11 honored

The finding

The premise survived its LOOK: with the price question moved into the text, the widget has no gimmick left to be — it is three quiet taps that end at the funnel's own button, and it reads as the site's furniture at 390px. The endowment deepens exactly where the ruling forced it to: not by promising numbers, but by showing the visitor their own job, in their own cleaner's voice, one tap from sent. The pixels overruled the first client-variant design (a range quoted inside the message ballooned it and moved the button — logged, refused); the honest version got quieter, which is the pattern this cabinet keeps finding.

Graduation

GRADUATION.md in the Lab repo carries the memo: the demo variant's rollout is gated on the Jul-31 batch-1 read (the instrument stays frozen until then); the client variant's unlock is one onboarding question ("what does a typical job run?" — the attestation); the funnel's new stage gets its read value (shaped-text vs raw-text, wired from the three inert hooks); and the CEO holds copy control over every visible word. Through the front door only.