vault-sync: 2026-09-17 12:01 (jimmy)

This commit is contained in:
jimmy
2026-09-17 12:01:11 -07:00
parent 7404a4ae4f
commit 4a31459e89
9 changed files with 851 additions and 0 deletions
@@ -0,0 +1,77 @@
# Phoenix Salon + Spa — Digital Presence Audit
## EXECUTIVE REPORT
**Date:** 2026-09-17 · **Target:** https://phoenixcameronpark.com/ (canonical www→apex 302 verified)
**Audit ID:** PSS-2026-09-17 · **Method:** Live crawl + rendered DOM + Google Maps public view + directory discovery (all evidence captured this session)
**Prior record:** VeriPath audit 2026-08-13; overview verified 2026-09-11/09-14; hallmark design audit 2026-07-16 (identity reconciled — same business, no conflict)
---
## Layer 1 — Executive Dashboard
**Overall Score: 70 / 100** (Good — competitive, with high-impact accuracy gaps)
| Severity | Count |
|----------|-------|
| 🟥 Immediate | 2 |
| 🟧 High | 4 |
| 🟨 Medium | 3 |
| 🟩 Enhancement | 2 |
| Category | Sub-Score (/10) |
|----------|:---:|
| Digital Identity | 8 |
| Technical SEO | 7 |
| Conversion | 7 |
| Google Business | 7 |
| Reviews | 6 |
| Content | 7 |
| Authority | 6 |
**Severity grid**
| | Identity | Tech | Conversion | GBP | Reviews | Content | Authority |
|---|---|---|---|---|---|---|---|
| 🟥 | | F1 | F1 | | | | F2 |
| 🟧 | F3 | F6 | | F5 | F4 | | |
| 🟨 | F7 | F8 | F9 | | | | |
| 🟩 | | | F10 | F11 | | | |
---
## Layer 2 — Business Impact
**What's at stake.** Phoenix Salon + Spa has the raw material every local business wants: a 4.9★/64 Google rating, 4.9★/65 Yelp, active socials, and a real booking engine (Vagaro). The gaps are not quality problems — they are **accuracy and consistency problems** that bleed revenue quietly:
1. **Wrong hours, twice.** The website and its structured data both tell Google you open at 10:00 AM and close at 6:00 PM Saturday. The owner's stated truth (verified this month) is 9:00 AM open and 3:00 PM Saturday close. A client who shows up at 4 PM Saturday finds a locked door; a Thursday-morning regular who arrives at 9:30 finds no open sign. Every "wrong hours" query trains Google's local ranking against you, and "permanently closed" impressions from a dead-ghost old-brand domain (F2) erode trust in parallel.
2. **Your old name is still your second business card.** La Mae Salon & Spa is live on at least two directories (Fave, Alignable) and its old domain is a dead Cloudflare 526 (F2). Anyone who remembers the old name finds a corpse, not a redirect to Phoenix. Local ranking treats this as NAP fragmentation.
3. **Your social proof is aging.** The newest visible Google review is ~5 months old (Apr 2026). At 64 reviews you have volume; you're losing velocity — the single strongest "pick me" signal for local search in this category.
**The good news.** Canonical is fixed (was pointing at a dead domain in July), JSON-LD schema is valid and complete, NAP (name/address/phone) matches across site + Google + Yelp, booking is live, and you out-score every local competitor on rating. These are polish-and-consistency fixes, not rebuilds.
---
## Layer 3 — Recommendations
| # | Problem | Impact | Fix | Effort |
|---|---------|--------|-----|--------|
| F1 | Site + schema hours wrong vs owner truth (10–6 vs 9–6; Sat 18:00 vs 15:00) | 🟥 Immediate — lost walk-ins; confuses Google local ranking | Update visible hours AND JSON-LD to **Mon–Fri 9–6, Sat 9–3, Sun closed** (copy in roadmap) | S |
| F2 | Old-brand domain lamaesalonspa.com dead 526; phoenixsalonspa.com now dead | 🟥 Immediate — dead link equity, old-brand trust leak | 301 lamaesalonspa.com → phoenixcameronpark.com at origin, or take down cleanly | S-M (needs hosting access) |
| F3 | La Mae residue live: fave.salon + Alignable listings | 🟧 High — NAP/brand fragmentation | Claim + update or delete both listings; standardize "formerly La Mae" wording | M |
| F4 | Google review velocity thin (newest ~Apr 2026, ≈5 mo) | 🟧 High — weak social-proof momentum | Restart review-request flow (3–5/mo via Vagaro follow-up) | M |
| F5 | GBP hours display "Closes 6 PM" — verify Saturday matches owner truth | 🟧 High — same wrong-hours issue on the most-visible surface | Confirm GBP hours = Mon–Fri 9–6, Sat 9–3, Sun closed; check Thursday capture | S |
| F6 | Sitemap lastmod stale (2026-07-19) — no freshness signal | 🟧 High — weak crawl priority for evolving content | Regenerate sitemap on deploy; ensure live lastmod | S |
| F7 | Homepage H1 "Hey bestie, welcome in" vs "Luxury Salon & Spa" positioning | 🟨 Medium — brand-voice collision (design audit 07-16; still live) | Align H1 + hero copy with luxury+personal tone | M |
| F8 | TikTok (@byashleythornhill) missing from JSON-LD sameAs | 🟨 Medium — incomplete entity graph | Add TikTok to sameAs | S |
| F9 | Booking is link-out only; no inline Vagaro widget on homepage | 🟨 Medium — extra click in a 3-click booking competitor landscape | Embed widget or "book with Ashley" card above fold | M |
| F10 | Directory hours chaos: wheree.com shows Mon 9AM–7PM + Sunday entries | 🟩 Enhancement — third conflicting hours set | Fix after F1/F5; aggregators lag source fixes | L |
| F11 | IG bio claim "800+ 5-star ratings" vs 64 Google / 65 Yelp public | 🟩 Enhancement — overclaim risk if audited | Keep as "reviews across Vagaro, Yelp, Google" or add Vagaro count | S |
---
## Layer 4 — Evidence refs
All findings map to the Technical Appendix (F1–F11). Evidence captured live 2026-09-17: raw headers, HTML/JSON-LD, rendered DOM text, Google Maps public view, and directory search snippets — source per finding in the appendix.
---
*Draft for internal review. Not for client delivery without final QA sign-off.*
@@ -0,0 +1,108 @@
# 00_FIXPACK — Phoenix Salon + Spa (phoenixcameronpark.com)
**Audit ID:** PSS-2026-09-17 · **Applies to:** Lovable/gpt-engineer site editor (paste-ready) · **Status:** code prepared, validated, NOT yet deployed
> Deployable items only. Human-dashboard steps → `01_RUNBOOK`. Board → `02_KANBAN/`.
> **Re-verify before paste:** the site may change between audit and deploy — re-open `/contact` and the homepage JSON-LD before pasting.
---
## 1. Validated JSON-LD (replace the homepage block)
`<script type="application/ld+json">` — find the existing `BeautySalon` block on the homepage and replace its contents with this exact JSON (schedule → Mon–Fri 9–6, Sat 9–3, Sun closed; sameAs now includes TikTok):
```json
{
"@context": "https://schema.org",
"@type": "BeautySalon",
"name": "Phoenix Salon + Spa",
"url": "https://phoenixcameronpark.com",
"image": "https://storage.googleapis.com/gpt-engineer-file-uploads/attachments/og-images/64dce20c-a245-4014-9464-040886fac002",
"telephone": "+1-530-350-9197",
"email": "ashley@phoenixcameronpark.com",
"priceRange": "$$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "3460 Robin Lane, Suite 4",
"addressLocality": "Cameron Park",
"addressRegion": "CA",
"postalCode": "95682",
"addressCountry": "US"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "09:00",
"closes": "15:00"
}
],
"sameAs": [
"https://www.instagram.com/phoenix.cameronpark/",
"https://www.facebook.com/PhoenixCameronPark",
"https://www.tiktok.com/@byashleythornhill"
]
}
```
✅ Validated this session with `json.loads` (round-trip clean).
---
## 2. Contact page visible hours (replace text)
Find the hours line on `/contact` and set it to exactly:
```
Monday–Friday: 9:00 AM – 6:00 PM
Saturday: 9:00 AM – 3:00 PM
Sunday: Closed
```
(Must match JSON-LD — for the "Open now" state and for Google to trust the page.)
---
## 3. Homepage H1 (optional copy change, F7)
Current rendered H1: `Hey bestie, welcome in`
Suggested replacement (keeps warm personal voice, aligns with "Luxury Salon & Spa" title + $$$ positioning):
```
Elevated beauty, personalized to you.
```
Subline option: `Custom facials, spray tans, waxing, and hair — Cameron Park's 4.9★ local favorite.`
---
## 4. Sitemap (F6)
- Sitemap exists at `/sitemap.xml` with 11+ URLs — **do not remove**.
- `lastmod` is hardcoded `2026-07-19` in the build → wire lastmod to the actual deploy timestamp if the platform supports it; otherwise regenerate sitemap on each deploy.
- Add `/services`, `/new-clients`, `/faq`, `/gift-cards`, `/journal` to sitemap if not already present (verify after deploy).
---
## 5. Booking UX (F9, optional)
If the platform allows an iframe embed, add the Vagaro widget inline above the fold on homepage:
`https://www.vagaro.com/Users/BusinessWidget.aspx?enc=<existing-encoded-token>`
(Keep the existing "Book with Ashley" direct links regardless — they work.)
---
## Deploy checklist (after saving in Lovable)
- [ ] Re-open https://phoenixcameronpark.com/ → verify JSON-LD block replaced (view-source)
- [ ] Re-open /contact → visible hours read Mon–Fri 9–6, Sat 9–3, Sun Closed
- [ ] Google Maps → pin reflects Sat close 3 PM (GBP may lag; see runbook item 1)
- [ ] Run this: `curl -sL https://phoenixcameronpark.com/ | grep -c 'ld+json'` → ≥ 1
---
*Fix pack author: Leonard (2026-09-17). Item #s map to audit findings F1, F6, F7, F8, F9.*
@@ -0,0 +1,52 @@
# 01_RUNBOOK — Phoenix Salon + Spa owner-side fixes
**Audit ID:** PSS-2026-09-17 · **Who:** Ashley / Phoenix owner (business dashboards) · **Status:** steps only, nothing executed
> Human-dashboard items that need owner logins. Deployable code → `00_FIXPACK`.
---
## 1. Google Business Profile — hours (F5) ⬅ start here
**Where:** business.google.com → Phoenix Salon + Spa → *Info* → *Hours*
1. Set **Monday–Friday: 9:00 AM – 6:00 PM**
2. Set **Saturday: 9:00 AM – 3:00 PM**
3. Set **Sunday: Closed**
4. Save → wait ~1–2 days, then verify the "Closes 6 PM" label changes and Sat shows 3 PM close.
**Why:** currently labels "Closes 6 PM" and the 09-11 sweep flagged Sat 9–6 as wrong vs owner truth 9–3.
## 2. Reviews — restart the request flow (F4)
**Vagaro dashboard:** enable/review the automated post-appointment review request (text or email) so each client gets asked once per visit.
- Target: **3–5 new Google/Vagaro reviews per month** (velocity, not volume — 64 total is fine).
- Respond to any new Google review within 48h (reply templates already exist in client-data-pss `poc-delivery/review-response-templates.md`).
## 3. Old-name directory cleanup (F3)
Two live old-name listings still call the business **LaMae Salon & Spa**:
1. **Fave Salon** — `fave.salon/salon/lamae-salon-spa-cameron-park-ca-95682-16971` → claim/request rename to Phoenix Salon + Spa (they often need an ownership claim or support ticket).
2. **Alignable** — `alignable.com/cameron-park-ca/lamae-salon-spa` → log in or claim → update business name + add "formerly La Mae Salon & Spa".
Keep the **Yelp and Facebook** "formerly known as La Mae" wording as-is (that's good — it bridges old clients).
## 4. Old domain (F2) — needs hosting/DNS access (defer to whoever owns hosting)
- `lamaesalonspa.com` → currently 301s to `www.lamaesalonspa.com` → **HTTP 526 dead**.
- Options: (a) repoint `lamaesalonspa.com` to 301 → `phoenixcameronpark.com` at the host, or (b) take it down with a clean 410.
- `phoenixsalonspa.com` is already dead — leave it or add a redirect if hosting still exists.
- **Do not keep the 526 chain** — it's a dead link crawlers keep hitting.
## 5. Social proof wording (F11, optional)
Instagram bio currently says "800+ 5-star client ratings". Google shows 64, Yelp 65, Vagaro additional. If audited, that can look like an overclaim. Safer, still strong:
> "1,000+ 5-star experiences across Google, Yelp & Vagaro"
(or add the real Vagaro count once visible).
## 6. Directory hours watch (F10)
After items 1–2 land, re-check `wheree.com` Phoenix page (currently shows Mon 9AM–7PM + Sunday entries — third conflicting hours set). Aggregators refresh slowly; if still wrong after ~2 weeks, submit a correction. Most downstream directories correct themselves once GBP + website + sitemap are right.
---
## Completion checklist
- [ ] GBP hours = Mon–Fri 9–6, Sat 9–3, Sun closed (verified in dashboard)
- [ ] Review request flow active in Vagaro (3–5/mo target)
- [ ] Fave + Alignable renamed or removal requested
- [ ] Old domain 301/410 decision made with host
- [ ] IG bio wording updated (optional)
- [ ] wheree.com re-checked after 2 weeks
---
*Runbook author: Leonard (2026-09-17). Maps 1:1 to audit findings F2, F3, F4, F5, F10, F11.*
@@ -0,0 +1,163 @@
# Phoenix Salon + Spa — TECHNICAL APPENDIX
**Audit ID:** PSS-2026-09-17 · **Data captured:** 2026-09-17 ~09:20–09:35 AM PDT
Every finding below carries captured evidence. Environment: this audit was run on Tony's Windows PC via curl + rendered browser DOM + Google Maps public view. Source labels: `[curl]`, `[browser]`, `[search]`, `[prior-record]`.
---
## Identity / Ground Truth (reconciled)
| Field | Verified value | Source |
|---|---|---|
| Business | Phoenix Salon + Spa | site, GBP, Yelp |
| Address | 3460 Robin Lane, Suite 4, Cameron Park, CA 95682 | site, GBP, Yelp |
| Phone | (530) 350-9197 | site, GBP (redacted snapshot: +153****9197 → matches) |
| Email | ashley@phoenixcameronpark.com | site (contact + JSON-LD) |
| Website | https://phoenixcameronpark.com/ | GBP, Yelp |
| Booking | Vagaro (widget link: `www.vagaro.com/Users/BusinessWidget.aspx?enc=...`) | site render |
| Owner truth hours | Mon–Fri 9am–6pm, Sat 9am–3pm, Sun closed | prior-record (verified 2026-09-14) |
| Prior name | La Mae / LaMae Salon & Spa (rebrand) | Yelp, FB descriptions, prior audit |
**Reconciliation:** prior audits (VeriPath 08-13, hallmark 07-16, overview 09-11) all describe the same business at the same address. No entity conflict. The overview's owner-truth hours are the reference standard for F1/F5.
---
## Live Capture Log
### Site infrastructure
| Check | Result | Evidence |
|---|---|---|
| www → apex | 302 → https://phoenixcameronpark.com/ | `[curl]` headers |
| Apex homepage | 200 OK, 3,228 bytes static shell (SPA) | `[curl]` |
| HSTS | yes, 1yr | `[curl]` header |
| Server | Cloudflare | `[curl]` header |
| robots.txt | allow all; sitemap declared | `[curl]` |
| sitemap.xml | exists, 11+ URLs, **lastmod 2026-07-19** | `[curl]` |
| Contact page | 200, "Monday–Saturday: 10:00 AM – 6:00 PM / Sunday: Closed" | `[browser]` |
### On-page signals (homepage)
| Signal | Value | Evidence |
|---|---|---|
| `<title>` | "Luxury Salon & Spa in Cameron Park, CA \| Phoenix Salon + Spa" | `[curl]` |
| meta description | "Phoenix Salon + Spa offers customized facials, spray tans, waxing, lash extensions, and expert hair services in Cameron Park, California." | `[curl]` |
| canonical | https://phoenixcameronpark.com/ ✅ (was pointing at dead phoenixsalonspa.com in the 07-16 hallmark audit — **FIXED**) | `[curl]` |
| JSON-LD blocks | 1 (BeautySalon) | `[curl]` |
| H1 (rendered) | "Hey bestie, welcome in" | `[browser]` |
| NAP on page | (530) 350-9197 · 3460 Robin Lane, Suite 4 · ashley@phoenixcameronpark.com | `[curl]` + `[browser]` |
| Social links | FB, IG, TikTok (@byashleythornhill) | `[browser]` |
| Booking CTAs | "Book Your Appointment" (multiple), "Book with Ashley" → Vagaro widget URL, "Book Appointment" → /services | `[browser]` |
| Vagaro iframe | none embedded on homepage (link-out only) | `[browser]` |
| Contact email surface | ashley@phoenixcameronpark.com (no multi-inbox NAP-split signal) | `[browser]` |
### JSON-LD (full dump, homepage)
```json
{
"@context": "https://schema.org",
"@type": "BeautySalon",
"name": "Phoenix Salon + Spa",
"url": "https://phoenixcameronpark.com",
"image": "https://storage.googleapis.com/gpt-engineer-file-uploads/attachments/og-images/...",
"telephone": "+1-530-350-9197",
"email": "ashley@phoenixcameronpark.com",
"priceRange": "$$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "3460 Robin Lane, Suite 4",
"addressLocality": "Cameron Park",
"addressRegion": "CA",
"postalCode": "95682",
"addressCountry": "US"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
"opens": "10:00",
"closes": "18:00"
}],
"sameAs": ["https://www.instagram.com/phoenix.cameronpark/", "https://www.facebook.com/PhoenixCameronPark"]
}
```
**Analysis:** schema is valid and NAP-complete. Two gaps:
- **Hours are WRONG vs owner truth** (opens 10:00 vs 9:00; Saturday closes 18:00 vs 15:00) → **F1**
- sameAs misses TikTok → **F8**
- Sunday absent = implicitly closed — consistent with owner truth (OK)
- Builder fingerprint: gpt-engineer-file-uploads asset host (Lovable-style) — confirms the 07-16 design-audit stack signal; not a client-facing defect per se.
### Google Business Profile (public view, Google Maps, 2026-09-17)
| Field | Value | Evidence |
|---|---|---|
| Rating | 4.9★ | `[browser]` Maps |
| Review count | 64 | `[browser]` Maps |
| Category | Beauty salon | `[browser]` Maps |
| Address | 3460 Robin Ln Ste 4, Cameron Park, CA 95682 | `[browser]` Maps |
| Open status | "Open · Closes 6 PM" (Thu capture) | `[browser]` Maps |
| Website | phoenixcameronpark.com | `[browser]` Maps |
| Services/Booking | vagaro.com + "Book online" button present ✅ | `[browser]` Maps |
| Phone | (530) 350-9197 | `[browser]` Maps |
| Attributes | Identifies as women-owned; M24M+4C grid | `[browser]` Maps |
| Photos | present (24 in 08-05 snapshot; untracked this run) | prior-record |
| Review recency | newest visible from ~2026-02-14 / 2026-04-21 per 09-11 sweep → **≈5 months stale** | `[prior-record]` |
→ **F4** (velocity) · **F5** (GBP hours: "Closes 6 PM" Thursday matches 6pm so not disproven by this capture, but Saturday must be verified; an "Open · Closes 6 PM" label is at minimum ambiguous against owner truth Sat 15:00)
### Old-brand / dead-domain scan
| Domain | Result | Evidence |
|---|---|---|
| lamaesalonspa.com | 301 → https://www.lamaesalonspa.com/ → **HTTP 526 (Cloudflare: can't reach origin)** | `[curl]` |
| www.lamaesalonspa.com | 526 | `[curl]` |
| phoenixsalonspa.com | no HTTP response (dead; was a 114-byte lander in earlier audits) | `[curl]` |
| phoenixcameronpark.com (canonical) | 200 ✅ | `[curl]` |
→ **F2**: the old-brand domain is a dead 301 chain, still consuming the "La Mae" brand query.
### Directory / review-surface state (search discovery, 2026-09-17)
| Surface | State | Evidence |
|---|---|---|
| Yelp | 4.9★ / 65 reviews; "Established in 2012 and formerly known as La Mae Salon & Spa" | `[search]` |
| Facebook | 4.7★ / 47 reviews; 842 followers; "Formally La Mae Salon & Spa" | `[search]` |
| Vagaro | reviews page exists (JS-gated on direct curl; reachable via www.vagaro.com/phoenixcameronpark) | `[search]` + partial 403 `[curl]` |
| MapQuest | listing present, 3460 Robin Ln Ste 4 | `[search]` |
| Fave Salon | **LaMae Salon & Spa in Cameron Park CA 95682 — LIVE old-name listing** | `[search]` → **F3** |
| Alignable | **LaMae Salon & Spa – Cameron Park, CA — LIVE old-name listing** | `[search]` → **F3** |
| wheree.com (Phoenix page) | hours show "Monday 09:00 AM – 07:00 PM" + Sunday entries — **third, conflicting hours set** | `[search]` → **F10** |
| wheree.com (Billionaires Barber Lounge) | same plaza (Ste 10) — adjacent, not a conflict | `[search]` |
### Competitor benchmark (Yelp + FB, 2026-09-17)
| Business | Yelp | FB | Booking | Notes |
|---|---|---|---|---|
| **Phoenix Salon + Spa** | 4.9 (65) | 4.7 (47) | Vagaro ✅ | #2 in "Top 10 women's haircuts Cameron Park" |
| Vixen Hair Salon | 4.9 (37) | – | – | #1 in that Yelp list; lighter review volume |
| Theory Hair Studio | 4.4 (34) | 4.8 (26) | Square site ✅ | New independent studio; FB rating higher than Yelp |
| Halo Hair Studio | 4.7 (15) | – | – | smaller footprint |
**Benchmark read:** Phoenix leads on review volume and rating; Theory has comparable booking UX via Square. No competitor has a demonstrated inline-widget/booking edge — F9 is a differentiator opportunity, not a survival gap.
---
## Finding Register
| # | Severity | Category | Finding | Evidence refs |
|---|---|---|---|---|
| F1 | 🟥 | Conversion / Tech | Site + JSON-LD hours wrong vs owner truth (10–6 vs 9–6; Sat closes 18:00 vs 15:00) | contact render; JSON-LD dump; overview owner truth |
| F2 | 🟥 | Authority | Old-brand domain dead 301 chain (526); phoenixsalonspa.com dead | curl lamaesalonspa + phoenixsalonspa |
| F3 | 🟧 | Identity | La Mae residue live on fave.salon + Alignable | search snippets |
| F4 | 🟧 | Reviews | Google review velocity thin — newest ≈5 months | Maps capture; 09-11 sweep |
| F5 | 🟧 | GBP | GBP hours display ambiguous ("Closes 6 PM"); Saturday must match owner truth | Maps capture |
| F6 | 🟧 | Tech | Sitemap lastmod stale (2026-07-19) | curl sitemap |
| F7 | 🟨 | Content | H1 voice collision ("bestie" vs luxury) | browser H1; hallmark audit |
| F8 | 🟨 | Tech | TikTok missing from JSON-LD sameAs | JSON-LD dump |
| F9 | 🟨 | Conversion | Booking link-out only; no inline Vagaro widget on homepage | browser iframes/links |
| F10 | 🟩 | Identity | Directory hours chaos (wheree.com 9AM–7PM + Sunday) | search snippet |
| F11 | 🟩 | Reviews | IG claim "800+ 5-star ratings" vs 64/65 public review counts — overclaim risk | IG search snippet |
## Sub-score derivation
- **Digital Identity 8/10:** strong consistent identity; −2 for La Mae residue (F3) + dead old domain (F2)
- **Technical SEO 7/10:** clean canonical/schema/robots/sitemap; −1 stale lastmod (F6), −1 missing sameAs (F8), −1 JS-shell weight (inherent)
- **Conversion 7/10:** booking live but link-out (F9); wrong hours actively lose walk-ins (F1)
- **Google Business 7/10:** complete, claimed, 4.9★/64, booking button; −1 hours ambiguity (F5), −1 photo momentum unknown, −1 velocity
- **Reviews 6/10:** excellent rating + volume; thin velocity (F4), overclaim risk (F11)
- **Content 7/10:** strong pages (reviews, resources, FAQ, journal); voice collision (F7)
- **Authority 6/10:** solid socials + Schema sameAs; diluted by dead domain + residue (F2/F3)
---
*All evidence captured 2026-09-17. Sources labeled per finding. Prior-record facts marked explicitly — never re-derived.*
@@ -0,0 +1,46 @@
# Phoenix Salon + Spa — IMPLEMENTATION ROADMAP
**Audit ID:** PSS-2026-09-17 · Owner-side + deployable work, sequenced by impact
> Effort: S (small, <1 hr) · M (medium, half day) · L (large, multi-day)
> Impact: High / Med / Low
## Week 1 — Accuracy (do first, everything depends on this)
| Item | Detail | Effort × Impact | Finding |
|---|---|---|---|
| Fix visible hours | Contact page → **Mon–Fri 9:00 AM–6:00 PM, Sat 9:00 AM–3:00 PM, Sun Closed** | S × High | F1 |
| Fix JSON-LD hours | Same values; ensure `dayOfWeek` lists Mon–Sat with `"opens":"09:00"`, `"closes":"18:00"` Fri and `"closes":"15:00"` Sat | S × High | F1 |
| Verify GBP hours | In Google Business Profile: set Mon–Fri 9–6, Sat 9–3, Sun closed; confirm the "Closes 6 PM" label comes from that | S × High | F5 |
| Add TikTok to sameAs | JSON-LD `sameAs` += `https://www.tiktok.com/@byashleythornhill` | S × Med | F8 |
| Review velocity kickoff | Set up Vagaro post-visit review request (text/email) targeted 3–5 asks/month | M × High | F4 |
**Verify after deploy:** re-crawl `/contact` + homepage JSON-LD; check Google Business Profile hours; confirm "Open now" states.
## Month 1 — Consolidation
| Item | Detail | Effort × Impact | Finding |
|---|---|---|---|
| Kill or 301 the old domain | lamaesalonspa.com → 301 to phoenixcameronpark.com (hosting/DNS access), or take it down with a clean final 410 | M × High | F2 |
| La Mae residue cleanup | Claim + update (or request deletion of) fave.salon + Alignable listings to Phoenix name; use consistent "formerly La Mae" note | M × High | F3 |
| Regenerate sitemap | Ensure sitemap lastmod updates on deploy (hook into build); confirm all 11+ URLs | S × Med | F6 |
| Booking UX upgrade | Add inline Vagaro widget (or "Book with Ashley" card) above the fold on homepage | M × Med | F9 |
| Homepage H1 messaging | Replace "Hey bestie, welcome in" with on-position, luxury-meets-personal line (e.g. "Elevated beauty, personalized to you — Cameron Park" + subline) | M × Med | F7 |
## 90-Day — Authority and momentum
| Item | Detail | Effort × Impact | Finding |
|---|---|---|---|
| Directory cross-check | After hours/NAP fix lands, re-check wheree.com + other aggregators; expect lag of weeks; request correction if still wrong | L × Med | F10 |
| Social proof framing | Update IG bio claim to "1,000+ 5-star experiences across Google, Vagaro & Yelp" (or add Vagaro count) to avoid overclaim | S × Low | F11 |
| Standing monthly re-check | Re-run the NAP + hours + review-velocity check monthly (VeriPath standing check) | S × High | all |
---
## Priority Quick View
**High-touch now (Week 1):** F1 hours · F5 GBP hours · F8 sameAs
**Needs owner/host access:** F2 old domain · F3 directory claims · F9 widget (deployable with Lovable)
**Momentum:** F4 review flow (start immediately — 5-month gap)
---
*Draft for internal review. Roadmap items map 1:1 to Finding #s in the Technical Appendix.*
@@ -0,0 +1,26 @@
# KANBAN — PSS-2026-09-17 (Phoenix Salon + Spa)
> Columns: **in-progress** (deployable, can be applied now) · **review** (blocked on owner/dashboard) · **backlog** (lower priority) · **done** (verified)
## in-progress
- [ ] F1 — JSON-LD + visible hours → owner truth (code in `00_FIXPACK`) — *ready to paste, needs deploy + re-crawl*
## review (needs owner / host access)
- [ ] F5 — GBP hours = Mon–Fri 9–6, Sat 9–3, Sun closed (runbook #1)
- [ ] F4 — Voting/review request flow in Vagaro, 3–5/mo (runbook #2)
- [ ] F3 — Fave + Alignable old-name cleanup (runbook #3)
- [ ] F2 — lamaesalonspa.com 301/410 decision (runbook #4)
## backlog
- [ ] F6 — sitemap lastmod regeneration on deploy
- [ ] F7 — homepage H1 copy swap (fixpack #3)
- [ ] F8 — TikTok in sameAs (already in the validated JSON-LD — verify on deploy)
- [ ] F9 — inline Vagaro widget on homepage
- [ ] F10 — wheree.com directory hours correction (after GBP fix)
- [ ] F11 — IG bio wording (runbook #5)
## done
- (none yet — first deploy will move F1 here with re-crawl evidence)
---
**Rules:** `done` requires literal verification (curl/browser re-check, not owner verbal). Stale items (site evolved) → `done-stale` with date, never silently dropped.