📄

bobmanthy.com Design Critique

Private deliverable. Enter the hub password to continue.

That's not right. Try again.

← Back to the hub

bobmanthy.com Design Critique

Prepared 2026-08-06

Fixed and live, the same evening

Everything marked P0 through P2 below was repaired, deployed and verified on August 6, 2026. Read the rest as the record of what was wrong, not as a list of open problems.

  • Booking works. Bob's real Google Appointments calendar is embedded on the schedule page. The validator now fails on the exact placeholder strings that were live, so this cannot recur silently.
  • The form sends. It posts to a real endpoint that emails Bob with the visitor as reply-to. The visitor's own words are deliberately not stored anywhere on the site, because Bob is a licensed clinician and nothing in the stack is covered by a business associate agreement, so a failed send is reported honestly instead of swallowed. Tested end to end against Amazon's mailbox simulator, never Bob's inbox.
  • Contrast passes. The gold call to action went from 2.81:1 to 5.74:1, and the section labels from 11.5px at 2.81:1 to 13px at 5.74:1.
  • The videos page stopped claiming ten videos exist.
  • Mobile: Bob's face now comes first on home, about and schedule; body type drops to 18px at phone width; the call to action stops colliding with itself when it wraps; nav and footer tap targets went from 17px to 39px.

Validator GREEN across both runs, 32 pages, 8 checks. Design detector clean.

Four things still need Bob, and none of them are code: the calendar is titled "15-min Rebuilding Seminars Consult" while every page here says 20 minutes, two copy lines under the form changed and he should see them, no page names a state he is licensed in, and there is no privacy policy.


Method: dual-agent. Assessment A (design review, unanchored) and Assessment B (deterministic detector plus live browser measurement) ran in isolation and did not see each other's findings. Everything below was measured on the live site on August 6, 2026, not estimated. Screenshots were unavailable in this environment, so visual claims come from computed styles, measured geometry, and rendered text.

The headline

The site has no working way to book a consultation, and has not had one. Every gold "Schedule a Confidential Free Consultation" button on every page, plus every blog post and the footer, routes to /schedule. That page publishes, live, in production, the sentence:

Scheduling Calendar. Your Calendly scheduling widget goes here. Replace this div with your Calendly embed code:

followed by the raw code snippet as visible body text, including the literal string YOUR_CALENDLY_LINK. Both assessments found it independently, and I confirmed it myself by fetching the live page.

The fallback "Or send a message" form underneath it is also dead. It has no destination and no handler, so pressing Send reloads the page with the visitor's name, email, state, and their answer to "What's bringing you here?" written into the address bar. Nothing is captured, nothing is delivered, and the line directly above promises "Bob will follow up within one business day."

Bob's real Google Appointments booking page exists and is already in production use in the Rebuilding FDAS emails. It has simply never been wired into this site.

Design health score

# Heuristic Score Key issue
1 Visibility of system status 1 The form gives no feedback because it does nothing; video tiles look clickable and are not; /schedule shows authoring instructions as content.
2 Match system and real world 3 Copy speaks the visitor's own interior sentences. Slips: an eyebrow and heading reading "Telehealth Eligibility" verbatim, and no state ever named.
3 User control and freedom 2 No active-page state in the nav, no breadcrumbs, no "back to articles" on 23 blog posts.
4 Consistency and standards 2 Four labels for one action, and two different destinations for Rebuilding.
5 Error prevention 0 A mental-health disclosure form with no destination, no validation, and no error path.
6 Recognition over recall 2 The eyebrow labels that carry all the scanning are 11.5px at 2.81:1 contrast, so they are functionally invisible. Fees requires a phone call.
7 Flexibility and efficiency 1 A decided visitor cannot book in one move, because every route dead-ends. 23 articles with no search, filter, or grouping.
8 Aesthetic and minimalist design 2 Handsome palette, but the homepage runs 10,943px on a phone and one section module repeats seven times per page.
9 Error recovery 2 The 404 page is genuinely excellent. The form has no error handling at all.
10 Help and documentation 3 Good FAQ accordions. The single most-needed fact, which states Bob can practice in, is documented nowhere.
Total 18/40 Poor

Neither heuristic 7 nor 10 is marked n/a: both genuinely apply here and both are real weaknesses. The score is dragged down by three live production defects rather than by taste.

Cognitive load: 6 of 8 items fail. That is the critical band.

What is genuinely working

The copy is the best thing on the site, by a distance. The quote cards use the visitor's own interior sentences as headings, in second person, with no diagnostic language: "You provide. You show up. You don't disappear. But something essential is missing, and neither of you can name it." That gives recognition before it asks for anything, and it never tells the reader he is broken. Most therapist copy fails on exactly that ordering.

Counseling versus coaching is handled as persuasion, not as a disclaimer. "This is counseling, not coaching. A Licensed Professional Counselor with real clinical training, not a coaching certificate." It satisfies the clinical separation requirement and converts, in the same sentence.

The SEO articles cite real sources. Maslach 1974, the MBI, the APA, WHO ICD-11, Gallup. Almost no therapist site does this, and it is precisely the evidence a skeptical engineer needs to stop reading the page as marketing.

Technical hygiene is good. Zero console errors, every request returning 200, pages between 83KB and 195KB, every image carrying alt text and explicit dimensions, one h1 per page, correct canonicals and structured data, and zero horizontal overflow at any of five widths. No sticky elements, no em dashes, real photos only, American English throughout. The house rules are being kept.

Priority issues

P0. The booking page publishes developer instructions

Every conversion route on the site ends at a dashed box containing setup notes. The hero button on that same page scrolls you down to it. Nothing else on this list matters until this is fixed, and the failure lands at the single highest-vulnerability moment in the journey: a man who has just spent twenty minutes talking himself into admitting he needs help is shown a construction sign.

Fix: replace the placeholder with Bob's real Google Appointments link, which already exists and is already in use elsewhere. Then add a guard to the site validator for the strings "widget goes here", "YOUR_", and "Replace this div", so a placeholder can never reach production again.

P0. The contact form leaks a private disclosure and delivers nothing

Three failures at once. The lead is lost. The visitor believes it sent, and waits for a reply that cannot come. And a private statement about someone's mental health is written into browser history and server request logs, directly beneath the sentence "Everything shared here is confidential." There is also no privacy policy anywhere on the site.

Fix: wire it properly (the add-comment-form pattern: Amazon SES, stored in Cloudflare D1, sent from the project's own domain), with a real success state and a real error state. If that has to wait, the interim fix is to stop the leak and remove the promise of a reply.

P1. The primary call to action fails contrast, and the hierarchy is inverted

Measured live, twice, by both assessments:

Element Foreground Background Ratio Needs
Gold CTA button, every page white #B8955A 2.81:1 4.5:1
Section eyebrow labels, every section #B8955A near-white 2.81:1 4.5:1
Navy secondary button white #1B3651 12.4:1 4.5:1

The navy "Learn how Bob works" button is more than four times more legible than the gold "Schedule a Confidential Free Consultation" sitting beside it. The hierarchy is backwards at the most important decision point on the site. The eyebrow labels are worse: 11.5px uppercase gold at 2.81:1 is not dim, it is absent, and those labels are what a skimmer navigates by.

The reader is typically 45 to 55 and reading at 11pm. There is no automated contrast check in the toolchain by design, so this has been shipping unseen.

Fix: darken the gold for text use to about #8A6D33 (roughly 5.1:1 on white, same family), keep #B8955A for borders and rules only, and lift the eyebrow labels from 11.5px to 13px.

P1. The videos page ships ten fake players with invented runtimes

Each of ten tiles carries a play triangle, a specific duration ("~8 min", "~12 min"), a pointer cursor, and the line "After watching, schedule a free consultation." Nothing plays. The page above promises "These videos let you get a clear read on how Bob speaks before you book anything," and the page is linked from every footer and is crawlable.

An empty placeholder is fine. A play button plus a runtime is a claim that the video exists. On the site of a licensed clinician whose whole product is trustworthiness, that is a category of error that cannot be spent down later.

Fix: either drop the page from the build until Bob records, or make the state honest: no play triangle, no runtime, no pointer cursor, a plain "Recording soon", and change the footer link on each card to "Skip the video, schedule a free consultation." The descriptions and takeaways are good and still sell.

P2. Mobile buries the face, over-sizes the type, and abandons the call to action

Four measurements at 390px, the width this audience actually uses:

  • Bob's photograph starts 1,027px down the homepage, below the headline, a long paragraph, and the buttons. The layout forces the image second on every page. The question at second five is "is this human safe", and the answer is a screen and a quarter below the argument.
  • Body type stays at 20px on phones, so the hero paragraph runs 34 characters a line at 390px and 28 at 320px. The site's own documented target is 65 to 75. The 20px decision was validated at desktop measure and never re-checked at phone width.
  • The 40-character CTA label wraps inside the button, which is set to single-line spacing, so the two lines nearly touch.
  • The nav eats 200px before any content, and every nav and footer link is a 17px-tall tap target. "Fees" is 32 by 17 pixels with neighbors 14px away.

P3. One section template, three recycled photos, and an unused photograph of Bob actually working

The About page is seven consecutive instances of the identical module across 1,226 words, with no pull quote, no change of scale, and no image after the hero, while telling four vivid visual stories (submarine, Google, ultramarathons, fifteen years of Rebuilding). Three headshots rotate across seven pages, always in the same slot at the same size. Meanwhile the one photograph of Bob doing the work, facilitating with Kathy, is referenced by nothing. The 23 blog articles, which are the pages strangers actually land on, carry no photo of Bob at all.

Design specificity

The words are unmistakably Bob. The design is a good template.

Strip the copy and what remains is one section module (gold eyebrow, serif heading, two paragraphs, alternating cream backgrounds) repeated seven or eight times per page, plus a card grid. A fertility clinic, a boutique estate lawyer, or a Series B software company could ship this stylesheet unchanged and only the nouns would need editing.

Nothing in the visual system expresses nuclear submarine, Google, ultramarathon, or clinical depth. There is no diagram, no precision motif, no evidence on the surface that this was built by or for people who think in systems. The most memorable visual element on the homepage is three operating-system emoji, which Bob does not even control the appearance of. The gold-on-cream-with-serif register also drifts toward boutique wellness spa, which is the one adjacent category this brand most needs to avoid.

The deterministic scan was otherwise clean: one finding, a decorative 3px accent border on a homepage card, which is also a house-rule violation (no bracket or side-tab ornaments).

Persona red flags

Jordan, first-timer. The Fees page promises "straightforward information so you can make a clear decision" and the rates card directly below contains no rate, no range, no floor. It then tells him to use the contact form, which is dead. He clicks the gold button and lands on "Replace this div with your Calendly embed code." A reasonable conclusion is that the practice is defunct.

Casey, on her phone. 200px of navigation before any content. Six 17px-tall links with 14px gaps. A homepage 13 screens long. On the executive counseling page there is a 9,925px scroll between the only two calls to action. Correctly there is no sticky bar, which makes in-flow CTA placement load-bearing, and it has not been done.

Marcus, 48, VP of Engineering, 11pm, never been to therapy, afraid of looking weak. He lands from search on a burnout article: 13,927px long, no photograph of Bob anywhere on it, no related articles, no way back. He goes to About, and the first thing under the headline is 184 characters of credentials. He asked "is this man safe" and got a résumé. No page names a single state Bob is licensed in, so he must book a call to find out whether he is allowed to book a call. And his actual objection is unhandled: "confidential" appears about fifteen times as an adjective, HIPAA appears on zero marketing pages, and there is no privacy policy, no records statement, no word on what an employer or board could ever learn. For a C-suite visitor that is the question, and the site answers it with a word rather than a mechanism. Then he taps the gold button and is shown a developer's to-do note.

Minor observations

  • An eyebrow reading "Telehealth Eligibility" sits directly above a heading reading "Telehealth Eligibility."
  • The homepage links to a Rebuilding anchor while the footer links to a standalone Rebuilding page. Two destinations, one concept.
  • The 404 page uses trailing slashes on its links; the navigation does not.
  • The blog lists all 23 articles as flat cards in a 15,149px page with no search, filter, or grouping, though categories already exist in the data.
  • Article links to Maslach, WHO, APA and Gallup all open in the same tab, sending a mid-article reader away with no path back.
  • The four form fields each have their focus outline switched off with nothing put in its place, so a keyboard user cannot see where they are.
  • Every footer skips from a level-2 heading to a level-4, on every page.

Questions worth answering

  1. The site is a beautifully written argument that terminates in a construction sign. How long has the booking page been broken, and what mechanism would ever have told you? The validator reports green because it checks what it was pointed at for the things it knows how to check, and "the conversion page contains developer instructions" was not one of them.
  2. You will not name a price and you will not name a state, and both are deferred to the same phone call. For an audience that explicitly evaluates before engaging, two unanswerable questions in front of the only action is a strange thing to defend.
  3. The copy says "you don't have to translate your world." What on the page proves that to an engineer before he reads a word?
  4. If Bob never records the ten videos, what is the plan? A trust library that stays unrecorded is worse than none, because it is evidence of something started and dropped, one footer click from the booking page.

Published to Annette's hub. Rebuilt from the source markdown, so edit the source and rerun rather than editing this page.