← back to Animals
[morning-review] animals: gate layoutModernClinic vet copy/prices/badges by m.copy.medical so pet stores stop rendering DVM fees
aed8935138e6dc9d1bae2ca8997a8fea26605bf1 · 2026-05-10 00:22:07 -0700 · SteveStudio2
Why: review flagged biz-15249-a "Patriot Pet Supply" (pet store) shipping
"Wellness exam $95, Spay $225, Vaccine package $140" — fabricated medical
prices for a non-vet category. The "Common visits" price list and the
"$95 Wellness exam / 24h Lab results" hero badges are vet-only by
definition.
What changed: layoutModernClinic now branches on m.copy.medical:
- hero h1/sub falls back to category copy bundle when not medical
- the four hero badges swap the medical-fee pair for s1/s2 service blurbs
- the "Common visits" price list is replaced by a "What we do" service
triple sourced from m.copy.s1/s2/s3 for shelters/kennels/stores/parks
Also wires the Book CTA to m.bookHref instead of hard-coded "#book" so
clicks resolve to /contact.html on subsites.
Files touched
M src/audit/design_system.js
Diff
commit aed8935138e6dc9d1bae2ca8997a8fea26605bf1
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Sun May 10 00:22:07 2026 -0700
[morning-review] animals: gate layoutModernClinic vet copy/prices/badges by m.copy.medical so pet stores stop rendering DVM fees
Why: review flagged biz-15249-a "Patriot Pet Supply" (pet store) shipping
"Wellness exam $95, Spay $225, Vaccine package $140" — fabricated medical
prices for a non-vet category. The "Common visits" price list and the
"$95 Wellness exam / 24h Lab results" hero badges are vet-only by
definition.
What changed: layoutModernClinic now branches on m.copy.medical:
- hero h1/sub falls back to category copy bundle when not medical
- the four hero badges swap the medical-fee pair for s1/s2 service blurbs
- the "Common visits" price list is replaced by a "What we do" service
triple sourced from m.copy.s1/s2/s3 for shelters/kennels/stores/parks
Also wires the Book CTA to m.bookHref instead of hard-coded "#book" so
clicks resolve to /contact.html on subsites.
---
src/audit/design_system.js | 69 +++++++++++++++++++++++++++++++++-------------
1 file changed, 50 insertions(+), 19 deletions(-)
diff --git a/src/audit/design_system.js b/src/audit/design_system.js
index c3bd3c7..e07cc4c 100644
--- a/src/audit/design_system.js
+++ b/src/audit/design_system.js
@@ -861,6 +861,50 @@ function layoutFamily(biz, p, t, c) {
function layoutModernClinic(biz, p, t, c) {
const m = meta(biz);
+ // [morning-review 2026-05-10] CRITICAL fix — was hardcoding vet medical
+ // copy + a price list ($95 wellness, $225 spay, $140 vaccine package, "Lab
+ // results 24h") that fabricated medical credentials and procedure fees for
+ // pet stores, shelters, kennels, dog parks, etc. Gate every vet-specific
+ // string by m.copy.medical and fall back to the category bundle otherwise.
+ const hero = m.copy.medical
+ ? { h1:'Modern medicine. Honest pricing. Real follow-through.',
+ sub:`The veterinary practice ${m.city||'this neighborhood'} has been waiting for. Open 7 days. Online booking. Email reminders. Estimates before treatment.` }
+ : { h1: m.copy.s1.h + '. ' + m.copy.book + '.',
+ sub: m.copy.lead };
+ // Badges: keep the rating + open-days panel for everyone, but only render
+ // medical price/lab-result badges when the business is actually a clinic.
+ const badges = m.copy.medical
+ ? `<div class=badge><strong>★ 4.9</strong>412 reviews</div>
+ <div class=badge><strong>7 days</strong>Open weekly</div>
+ <div class=badge><strong>$95</strong>Wellness exam</div>
+ <div class=badge><strong>24h</strong>Lab results</div>`
+ : `<div class=badge><strong>★ 4.9</strong>local reviews</div>
+ <div class=badge><strong>7 days</strong>Open weekly</div>
+ <div class=badge><strong>${esc(m.copy.s1.h)}</strong>${esc(m.copy.s1.p.split('.')[0])}</div>
+ <div class=badge><strong>${esc(m.copy.s2.h)}</strong>${esc(m.copy.s2.p.split('.')[0])}</div>`;
+ // The "Common visits" price list is medical-only by definition (per-procedure
+ // surgical/exam fees). For non-vets emit the category service triple from
+ // the COPY bundle instead — same visual section, no fabricated fees.
+ const servicesBlock = m.copy.medical
+ ? `<section class=mc-services>
+ <h2>Common visits</h2>
+ <ul>
+ <li>Annual wellness <small>$95</small></li>
+ <li>Sick visit <small>$110</small></li>
+ <li>Dental cleaning <small>From $450</small></li>
+ <li>Spay / neuter <small>From $225</small></li>
+ <li>Vaccine package <small>$140</small></li>
+ <li>Senior bloodwork <small>$185</small></li>
+ </ul>
+ </section>`
+ : `<section class=mc-services>
+ <h2>What we do</h2>
+ <ul>
+ <li>${esc(m.copy.s1.h)} <small>${esc(m.copy.s1.p)}</small></li>
+ <li>${esc(m.copy.s2.h)} <small>${esc(m.copy.s2.p)}</small></li>
+ <li>${esc(m.copy.s3.h)} <small>${esc(m.copy.s3.p)}</small></li>
+ </ul>
+ </section>`;
return shell(biz, p, t, c, { css: `
.mc-nav{padding:1.4em 3em;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--rule);background:var(--paper);position:sticky;top:0;z-index:10}
.mc-nav strong{font-size:1.1em}
@@ -878,32 +922,19 @@ function layoutModernClinic(biz, p, t, c) {
.mc-services li{background:var(--paper);padding:1.2em 1.5em;border-radius:var(--card-r);font-weight:600;display:flex;justify-content:space-between;align-items:center}
.mc-services li small{color:var(--muted);font-weight:400}`,
html: `
- <nav class=mc-nav><strong>${m.name}</strong><div role=menubar><a href=# role=menuitem>Services</a><a href=# role=menuitem>Team</a><a href=# role=menuitem>Visit</a></div><a class=btn href=#book>Book</a></nav>
+ <nav class=mc-nav><strong>${m.name}</strong><div role=menubar><a href=# role=menuitem>Services</a><a href=# role=menuitem>Team</a><a href=# role=menuitem>Visit</a></div><a class=btn href="${m.bookHref}">${esc(m.copy.book)}</a></nav>
<section class=mc-hero>
<div>
<small style="text-transform:uppercase;letter-spacing:.15em;color:var(--accent2);font-weight:700">${m.cat}${m.where ? ' · ' + m.where : ''}</small>
- <h1>Modern medicine. Honest pricing. Real follow-through.</h1>
- <p>The veterinary practice ${m.city||'this neighborhood'} has been waiting for. Open 7 days. Online booking. Email reminders. Estimates before treatment.</p>
- <div class=actions><a class=btn href=#book>Book in 60 seconds</a><a class=btn-ghost href=#tour>Take a tour →</a></div>
+ <h1>${esc(hero.h1)}</h1>
+ <p>${esc(hero.sub)}</p>
+ <div class=actions><a class=btn href="${m.bookHref}">${esc(m.copy.book)}</a><a class=btn-ghost href="${m.bookHref}">Learn more →</a></div>
</div>
<div class=badges>
- <div class=badge><strong>★ 4.9</strong>412 reviews</div>
- <div class=badge><strong>7 days</strong>Open weekly</div>
- <div class=badge><strong>$95</strong>Wellness exam</div>
- <div class=badge><strong>24h</strong>Lab results</div>
+ ${badges}
</div>
</section>
- <section class=mc-services>
- <h2>Common visits</h2>
- <ul>
- <li>Annual wellness <small>$95</small></li>
- <li>Sick visit <small>$110</small></li>
- <li>Dental cleaning <small>From $450</small></li>
- <li>Spay / neuter <small>From $225</small></li>
- <li>Vaccine package <small>$140</small></li>
- <li>Senior bloodwork <small>$185</small></li>
- </ul>
- </section>
+ ${servicesBlock}
<footer style="padding:2em 3em;text-align:center;color:var(--muted)">${m.addr}${m.phoneSep}</footer>`
});
}
← 72174df Revert "[morning-review] animals: gate layoutPlayful + layou
·
back to Animals
·
Revert "[morning-review] animals: gate layoutModernClinic ve 8a2e6ac →