v2 of jameskingiiifit.com rebuild — Clippy-Main dispatched after Wes went hot. Brutal pass by Nagatha, 2026-04-21.
JK Fit v2 — ranked findings
Preview: https://preview.james-king-fit.pages.dev · testimonials page also checked
Bottom line up front
Don't scrap it. v2 direction is correct. Anti-funnel aesthetic works, copy is James's own voice, Fraunces serif lands as editorial not "wellness brand," palette is warm and legible. BUT there's one P0 visual defect that makes the whole site read as "something's off" on close inspection, plus a bricked contact path (mailto) that costs leads. Fix those two, ship.
P0 — SHIP-BLOCKER
1. The transformation photo is being CSS-stretched, not naturally portrait.
You flagged it as "very tall (portrait)" but the source image
james-transformation.jpg is a
square 2048×2048. CSS is forcing it to
445.7×1024 (aspect 0.43 tall) with
object-fit: fill. That stretches the image vertically — James is literally taller and thinner in the rendered "after" than reality. For a before/after photo this isn't a style issue, it's a
misleading visual — makes the transformation look more dramatic than it is. Ethically sketchy plus visually uncanny on close inspection.
Fix options:
- Swap to
object-fit: cover + object-position: center — crops but keeps true proportions
- Or remove the forced
1024px height and let the image render at natural square aspect
- Or source the actual before/after as a proper vertical composite (2:3 or 3:4 ratio) from James and keep object-fit: cover
img[src*=transformation] {
object-fit: cover; /* was: fill — this is the bug */
object-position: center;
/* height: 1024px; <- reconsider; let aspect-ratio drive */
}
P1 — HIGH (fix before ship)
2. Contact form is action="mailto:" — bricks a lot of leads.
Form POSTs to
mailto:james@jameskingiiifit.com with
encType="text/plain". Problems:
- Requires a mail client configured on the user's device. Most Gmail-in-browser users on desktop have no default handler — clicking Send does nothing or opens a broken dialog.
- On iOS it opens Mail.app pre-populated; many users back out and never send.
- Delivers as a key=value text blob, not formatted.
- No spam protection, no delivery confirmation, no error handling.
Every form submission that fails = a lost lead for a trainer selling 60-min sessions. Real money.
Fix (20 min, Wes's CF stack):
Cloudflare Pages Function (
functions/contact.ts) that accepts POST, validates, and ships via MailChannels API (free on CF Workers/Pages) or Resend. Form
action="/api/contact", gracefully degrades to mailto: for no-JS users. Basin or Formspree work too but CF-native is cleaner.
3. Hero image is ~7× too big.
james-hero.jpg natural 3500×2333 (8.2 megapixels). Rendered at 471×733. Served as-is to mobile = ~2-3 MB over a cell network for an above-the-fold image. Hurts LCP (Core Web Vitals) and costs James's prospects on slow connections.
Fix: resize to 1400×933 (fits Retina at rendered size) and add srcset with 700/1000/1400 variants. 10-min job. Same for transformation photo once P0 is handled.
4. Services card heading repetition.
All three cards repeat "+ Nutrition/Lifestyle Coaching" in the headline (rendered as "·"). The intro paragraph directly above already says "Every option includes an initial lifestyle assessment, weekly review and troubleshooting, a client app to track progress and habits, nutrition and lifestyle coaching..."
Redundant suffix. Trim to: "In-Home Training", "Private Virtual Training", "Semi-Private Virtual Training". Subtitle already shows duration + location, which IS useful. Removing the coaching suffix also lets the headings be heavier/bolder without getting cramped on mobile.
P2 — MEDIUM (polish)
- 5. H1 vs services mismatch. H1 says "In-Home Personal Training & Online Training" but the 3 services are "In-Home", "Private Virtual", "Semi-Private Virtual" — none literally called "Online Training." Either rename "Private Virtual Training" → "Online Personal Training" (simpler, matches H1) or trim H1 to "In-Home & Virtual Personal Training." Word-match helps SEO intent + feels less generic.
- 6. Testimonials page is a flat wall. Single column, same italic-quote-then-name format for every entry, no breathing. Adding a one-line chip per client — "3 years · lost 45 lbs" or "Online client, 8 months" — would break up the scroll AND make the wall feel like a real record vs a sales page. 20 min.
- 7. Testimonial avatar alt text is empty (
alt="") on all three homepage testimonials. A11y minor. Per WCAG 1.1.1, if the image is decorative, empty is correct — but the image IS content (it's the person). Best to set alt="Josh" etc., or move the name-text to be the accessible name (it may already be, via adjacent text; need closer DOM audit).
- 8. "Read more →" below voices leads to
/testimonials.html. Fine but minor: use "Read all" or "See every testimonial" — "more" implies incremental reveal, "all" is honest. Tiny copy nit.
P3 — STYLE & DIAGNOSIS (mostly pass)
- Fraunces serif on H1 + H2s — lands as editorial/confident, NOT "wellness brand." The cream #f7f2e8 bg + dark ink #1d211c is warm, legible, grown-up. PASS.
- "James King III Fit" italic brand treatment — fine choice, not precious, reads personal.
- Three services, no prices, no CTAs — per your brief, exactly what Wes asked for. PASS. Cards are descriptive without being sales-y. "Train in the convenience of your home. One-on-one coaching built around your space, your schedule, and your goals." is authored, not generated.
- Client voices 3-on-homepage with avatars — reads as real client photos (not stock), the quotes are long and specific enough to feel genuine ("I was afraid I wouldn't be able to really commit..."). PASS.
- No stale v1 artifacts — grepped DOM for
.stat, .step, .faq, .badge, .funnel, .cta-section. All zero. Clean cut from v1. PASS.
- Mobile nav + layout at 390×844 — clean, typographic nav, no hamburger needed (3 links fit inline). Sections stack correctly. PASS.
- Does it read "claude-built generic"? No. It reads as a real small-biz personal brand site. The anti-funnel choice is working. The one thing that breaks the illusion is the transformation-photo stretch (P0). Fix that and this is a real, authored-feeling site.
Desktop screenshots (1440)
hero

services

voices + contact

testimonials page

Mobile screenshots (iPhone 14, 390×844)
hero

story (transformation photo area)

Punch-list in priority order
P0 (ship-blocker):
[ ] 1. Unstretch transformation photo: object-fit: cover, drop forced 1024px height
P1 (fix before ship):
[ ] 2. Replace mailto form with CF Pages Function + MailChannels (or similar)
[ ] 3. Resize james-hero.jpg to 1400x933 + add srcset
[ ] 4. Trim "+ Nutrition/Lifestyle Coaching" suffix from all 3 service card headings
P2 (polish):
[ ] 5. Align H1 wording with service names ("Online Training" vs "Virtual Training")
[ ] 6. Add 1-line client chip to each testimonials-page entry
[ ] 7. Set alt text on homepage testimonial avatars
[ ] 8. "Read more" -> "Read all" / "See every testimonial"
Clippy-Work-1 (Nagatha) · 2026-04-21 · brutal pass per Clippy-Main's ask · no feature-strip anxiety (v2 correctly removed the Hines-Creative funnel apparatus per Wes's direction).