diff --git a/package.json b/package.json index 7ab1eb6e..971f7de8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "dev": "wrangler dev --remote --ip 127.0.0.1 --port 8788 --persist-to /tmp/tinystudio-agent-worker", "check": "node scripts/check-site.mjs", "check:render-blocking": "node scripts/check-render-blocking.mjs", - "test": "npm run check && npm run test:worker && npm run test:ui", + "test": "npm run check && npm run test:headings && npm run test:worker && npm run test:ui", + "test:headings": "node --test scripts/test-heading-hierarchy.mjs", "test:worker": "node --test scripts/test-agent-worker.mjs", "test:ui": "node --test scripts/test-agent-ui.mjs", "leads:list": "wrangler d1 execute tinystudio_email_signups --remote --command \"SELECT email, source, page_path, created_at, updated_at FROM email_signups ORDER BY updated_at DESC LIMIT 100;\"", diff --git a/public/agents.css b/public/agents.css index c9e6a5b5..af17c8ca 100644 --- a/public/agents.css +++ b/public/agents.css @@ -4,7 +4,7 @@ transition:padding-left var(--mid) var(--ease),background var(--mid) var(--ease)} .ag:hover{padding-left:14px;background:rgba(255,253,248,.5)} .ag .n{font-family:'Fraunces',serif;font-style:italic;font-weight:200;font-size:30px;color:var(--brass-lt);line-height:1} - .ag h3{font-size:19px;font-weight:600;letter-spacing:-.012em} + .ag h2{font-size:19px;font-weight:600;letter-spacing:-.012em} .ag .job{margin-top:7px;font-size:14.5px;line-height:1.65;color:var(--muted)} .ag .reads{font-size:14px;line-height:1.72;color:var(--soft)} .ag .reads b{display:block;font-size:10px;letter-spacing:.22em;text-transform:uppercase; @@ -16,7 +16,7 @@ border-radius:14px;overflow:hidden;background:linear-gradient(172deg,rgba(255,253,248,.9),rgba(235,225,207,.5))} .gatebox>div{padding:38px 42px} .gatebox>div:first-child{border-right:1px solid var(--line)} - .gatebox h4{font-family:'Fraunces',serif;font-weight:300;font-size:25px;letter-spacing:-.02em} + .gatebox h2{font-family:'Fraunces',serif;font-weight:300;font-size:25px;letter-spacing:-.02em} .gatebox ul{margin-top:18px;list-style:none} .gatebox li{font-size:15px;line-height:1.55;color:var(--soft);padding:9px 0 9px 26px;position:relative} .gatebox li::before{content:'';position:absolute;left:0;top:16px;width:9px;height:1px;background:var(--brass)} diff --git a/public/agents.html b/public/agents.html index 829e6c7a..8953bf13 100644 --- a/public/agents.html +++ b/public/agents.html @@ -46,44 +46,44 @@
Turns a vague page into one with a clear audience, offer, proof and next action.
Turns a vague page into one with a clear audience, offer, proof and next action.
The same discipline applied to the pages that carry a price and a decision.
The same discipline applied to the pages that carry a price and a decision.
Fixes the order and hierarchy a first-time visitor actually moves through.
Fixes the order and hierarchy a first-time visitor actually moves through.
Builds testable angles from real customer language — and marks any claim you cannot prove.
Builds testable angles from real customer language — and marks any claim you cannot prove.
Turns competitor research into moves you can make — explicitly without copying anyone.
Turns competitor research into moves you can make — explicitly without copying anyone.
Writes the follow-up sequence in your voice, from your own proof.
Writes the follow-up sequence in your voice, from your own proof.
Turns the week's numbers and what shipped into a report and a next-action list.
Turns the week's numbers and what shipped into a report and a next-action list.
Payment, access, the approval owner and the implementation owner, all recorded. The clock starts here and nowhere earlier.
The four passes, by hand. You get each fault named, in order of what it costs you.
The highest-leverage page rewritten or rebuilt, plus a dev-ready handoff if your team ships it.
Weekly checks, one revision, and tracking that tells you whether the fix held.
The free leak audit of high-ticket service homepages — and the desk that closes what the audit finds, with a person's name on every audit.
The audit is free and yours to keep. The desk that closes findings runs at $2,500 a month, on a three-month minimum.
No base city or office address is stated.
High-ticket service businesses — clinics, surgeons, dentists, spas, dealers, brokers — and clients are never named.
This site: the leak audit and the desk behind it.
No. No logos, no case studies, no testimonials, no "as seen at".
A written appraisal on one page of your choosing — each fault named, in order of what it costs you, with the fix beside each. Yours to keep and to hand to any developer, including one who is not us.
Because they are done by hand and we are also delivering paid work. Six is what we can do properly. When the month is full, you go on the list for the next one.
No, and be wary of anyone who does. We guarantee the work is delivered on time or month one is refunded. What the market does with a better page is not ours to promise.
Then take it and go, with our blessing. It is not bait. Most of what we find is fixable by a competent developer in an afternoon.
The clock only starts when we genuinely have everything, and it stops whenever the ball is back in your court.
Payment, access, the approval owner and the implementation owner, all recorded. Nothing starts earlier.
Four passes by hand. Each fault named, in order of what it costs you.
The page rewritten or rebuilt, plus the handoff, in your hands.
Weekly checks, one revision, and tracking that tells you whether the fix held.
Because it is the only honest way to show you we can do the work. You keep it either way, and most of what we find is fixable by a competent developer in an afternoon — including one who is not us.
No, and be wary of anyone who does. We guarantee the work is delivered on time or month one is refunded. What the market does with a better page is not ours to promise.
Then you tell us, we use the revision, and you leave at the end of the three months. We would rather write that plainly than pretend a satisfaction clause we could not honour.
They are done by hand and we are also delivering paid work. Six is what we can do properly. When the month is full you go on the list for the next one.
Seven specialist agents do the research, drafting and checking. A person reviews fit, every claim, all client-facing work, delivery and renewal. Automation never sends, publishes, spends or approves. See the desk →
They publish a full, line-by-line fee list — fifteen prices, framed around their own stated values of "simplicity and transparency." It is genuinely better than most of the market. A visitor comparing three clinics on a first pass will never see it.
"We help you to thrive at every stage of life." Nobody is named. No condition, no mechanism, no reason this clinic rather than another. Meanwhile the navigation carries five genuinely specific service lines that would each hold the attention of someone already looking.
"Book discovery call" sits in the hero. "Start Your Longevity Medicine Journey" appears three times and deep-links to a specific paid consultation. One is a low-commitment conversation, the other is a purchase decision. A visitor cannot tell which is the intended path, so some take neither.
Fourteen years, thousands of patients, GMC-registered doctors, CQC regulated. That is exactly what a nervous first-time visitor needs before they will book a private medical appointment. It sits on the fees page, which they reach after deciding to look.
The paid-creative pass and the reach pass need access to the advertising account, which we do not have and did not seek. They are part of the full audit when a clinic asks for one. We would rather leave them visibly blank than guess — every finding above comes from something we actually observed.