The portfolio at a glance#
Numbers from Ahrefs Site Explorer, US, subdomains, 2026-05-13.
| Site | DR | Org KW | Top-3 | Org Traffic/mo | Value/mo | Ref Domains | Headline finding |
|---|---|---|---|---|---|---|---|
| Tarzana Recovery | 1.0 | 53 | 9 | 292 | $1,490 | 113 | Strongest keyword footprint; 85% branded; "tarzana treatment center" (5,900 vol) sits at pos 9; competitor-brand cannibalization on a blog post (#3 for "sunrise detox") |
| Hillside Recovery | 1.0 | 6 | 4 | 169 | $1,063 | 99 | 100% branded ranking; brand-name collision with MA/NY entities; 26 indexed /service/<modality> pages rank for zero keywords each |
| NoHo Recovery | 12.0 | 5 | 2 | 42 | $154 | 110 | Highest DR in portfolio; almost no service-query traffic; 8 e-commerce template stub pages indexed in production |
| MK Adult Recovery | 0.0 | 0 | 0 | 0 | $0 | 61 | 61 referring domains but 0 organic visibility. 23 /recovery-cms pages indexed, none rank. Likely an indexing/relaunch issue |
| lumaMind | 0.2 | 0 | 0 | 0 | $0 | 0 | Broken in production — page times out for real users; Lighthouse desktop reports NO_FCP; mobile shows 25 s TBT / 39 s main-thread for a 6 KB stub. Sunset or replace. |
Patterns that repeat across every site#
These were not separate findings. They recurred on every audit. Fixing them once at the Webflow project-template level pays the portfolio back five times.
1. Webflow technical-SEO defaults are unused everywhere#
| Issue | Tarzana | MK | NoHo | Hillside | lumaMind |
|---|---|---|---|---|---|
/robots.txt populated |
|||||
/sitemap.xml returns 200 |
(apex only, 4 URLs) | ||||
Homepage <meta name="description"> |
|||||
Homepage <link rel="canonical"> |
|||||
| JSON-LD schema | |||||
Open Graph (og:title/description/image) |
|||||
| Twitter cards |
These are all Webflow-native settings: sitemap auto-generation, per-page description fields, the custom-code embed for JSON-LD, and the Open Graph / Twitter fields in page settings. None of them are activated on any site in the portfolio.
A direct crawl of ~50 pages across the five sites (2026-05-13) confirmed: zero pages ship a meta description, a canonical tag, or a JSON-LD schema block. Not one. This is the most lopsided finding in the audit — every page is the same shape of broken, which means a single template-level fix on each Webflow project resolves the entire surface.
2. Broken and locked URLs discovered during the page-by-page crawl#
| URL | Status | Note |
|---|---|---|
hillsiderecovery.com/amenities |
🔴 404 | Returns 404; whether linked from nav or not, inbound link equity is wasted |
hillsiderecovery.com/facility-tour |
🔴 404 | Same |
hillsiderecovery.com/faq |
🟠 401 | Webflow password-protect left on a public-nav page |
nohorecovery.com/spravato |
🔴 404 | One of NoHo's named programs; the CMS twin at /recovery-cms/spravato-r works |
nohorecovery.com/insights |
🟠 401 | The editorial section the audit cites as a content strength is password-locked |
nohorecovery.com/team-page |
🟠 401 | Team is gated; clinical-leadership trust signal is invisible to visitors and crawlers |
nohorecovery.com/section-2-slider/<slug> × 8 |
🟠 200 | Webflow e-commerce template stubs indexed in production; body H1s read "Aftercare program" |
3. Title tags — every page broken in a pattern#
Homepages first:
| Site | Title | Length | Verdict |
|---|---|---|---|
| Tarzana Recovery | "Tarzana Recovery — Luxury Holistic Addiction & Mental Health Care in Southern California" | 95 chars | Good content, slightly long |
| MK Adult Recovery | "MK Adult Recovery" | 18 chars | Far too short, no keywords |
| NoHo Recovery | "NoHo Recovery" | 13 chars | Far too short, no keywords |
| Hillside Recovery | "Hillside Recovery" | 17 chars | Far too short, no keywords |
| lumaMind | "Luma Mind" | 9 chars | N/A — site is a stub |
The per-page crawl surfaced worse patterns at depth:
- Every Tarzana Recovery blog post (~30 posts) ships the same
<title>Tarzana Recovery</title>— duplicate title across the entire/blog/<slug>collection. - Tarzana Recovery's
/blogindex title is literally"New"— Webflow template default shipped to production. - Hillside's
/blogindex title is also"New"— same default, different site. - Hillside's only blog post ships
<title>Hillside</title>— brand only. - All Hillside
/about,/team,/contact, and/servicetitles are single words ("About", "Team", "Contact", "Service") with no brand and no geography. - NoHo's three pillar pages (
/innovative-recovery,/creative-recovery,/balanced-recovery) — the differentiating narrative — all ship the page name as the entire title, with no brand. - MK's 23
/recovery-cms/<slug>pages all share<title>MK Adult Recovery</title>— total duplicate-title collision across the program library.
Target: 50–60 characters that include the brand, primary service, and geography. A single Webflow CMS-field binding (<title>{{slug.name}} | <Brand> — <Geo></title>) fixes most of these in one commit per site.
4. Heading hierarchy is broken on most sites#
| Site | H1 count | H2 count | Notes |
|---|---|---|---|
| Tarzana Recovery | 1 | 1 | OK |
| MK Adult Recovery | 1 | 0 | Section headings styled as non-semantic elements |
| NoHo Recovery | 1 | 0 | Same pattern |
| Hillside Recovery | 1 | 1 | OK |
| lumaMind | 1 (animated/split) | 0 | H1 is wrapped in transform CSS. Likely not a clean DOM node |
Hurts both accessibility (screen-reader navigation) and SEO (section relevance signals).
5. The Ahrefs read: brand defense only#
Combined portfolio organic traffic is ~503 monthly visits across all five sites — on a portfolio with ~383 live referring domains. The link foundation exists; the ranking content does not.
- Branded queries account for ~88% of all portfolio traffic. The sites are defending their own names well; they capture almost no demand from prospects searching for services without knowing the brand.
- One keyword is the single biggest lever in the portfolio. "Tarzana treatment center" (volume 5,900) ranks at position 9 on
tarzanarecovery.com. Push it to position 3 and Tarzana's traffic roughly doubles by itself. The blocker is brand confusion withtarzanatc.org(Tarzana Treatment Centers, DR 53). - NoHo Recovery is the most surprising finding. DR 12 (highest in portfolio, by a wide margin) but only 42 monthly visits across 5 ranking keywords. There is a multi-thousand-visit organic opportunity sitting unrealized.
- The content surface is dramatically larger than the ranking surface. Across the portfolio, the Ahrefs crawl shows ~50 pages on Hillside (including 26
/service/<modality>subpages), ~50 on NoHo (including 21/recovery-cmsprograms), 29 on MK (23/recovery-cmsprograms), and 30+ blog posts on Tarzana — yet only 16 pages portfolio-wide rank for any keyword at all. - MK Adult Recovery has 61 referring domains but 0 ranking keywords. That's nearly diagnostic of a recent rebuild Google hasn't indexed — consistent with the empty robots.txt and missing sitemap.
- Hillside has brand-name collision with another addiction-treatment facility (
hillsideretreatdetox.com, DR 1.7) plus accidental traffic from a children's center in NY. Brand disambiguation is overdue. - Tarzana Recovery's blog ranks for things it shouldn't. Six different "Sunrise Detox" location queries (East Coast competitor brand) rank #3–#7 from a single blog post — capturing zero traffic but consuming crawl budget.
/aboutalso ranks #11 for "oasis tarzana" (another competitor). - NoHo is shipping 8 Webflow e-commerce template stub pages (
/section-2-slider/back-to-school-deals,/holiday-specials-2023,/summer-sale-2023, etc.) as part of a publicly indexed behavioral-health site. Delete or noindex immediately.
6. Performance: mobile is broken across the portfolio#
PageSpeed Insights, homepage only, Lighthouse 12 lab data, 2026-05-13.
| Site | Mobile perf | Mobile LCP | Mobile TBT | Mobile CLS | Desktop perf | Desktop LCP |
|---|---|---|---|---|---|---|
| Tarzana Recovery | 🔴 49 | 47.1 s | 40 ms | 0.154 | 🔴 41 | 13.2 s |
| Hillside Recovery | 🔴 33 | 91.8 s | 1,480 ms | 0.154 | 🟠 52 | 2.3 s |
| NoHo Recovery | 🟠 63 | 3.9 s | 440 ms | 0.154 | 🟠 77 | 1.0 s |
| MK Adult Recovery | 🟠 62 | 18.7 s | 180 ms | 0 | 🟠 62 | 1.5 s |
| lumaMind | 🔴 46 | 3.4 s | 25,440 ms | 0 | n/a — NO_FCP |
— |
Repeating patterns:
- Same CLS = 0.154 on three sites (Tarzana, Hillside, NoHo) — they share a Webflow template with a layout shift built in. Fix once, fix three times.
- Render-blocking JavaScript plus 18–20 MB payloads on Tarzana and Hillside cause unrunnable mobile LCP (47 s, 92 s). The autoplaying YouTube hero on Tarzana and the heavy image gallery on Hillside both pile on top of jQuery and the Webflow runtime bundle.
- Best Practices score 100 on MK and lumaMind, but mobile LCP still fails on MK (18.7 s) because the
/recovery-cmslist is inlined into the homepage. A page can be technically clean and still be too slow. - lumaMind is broken in production, not just slow. Real-user verification on 2026-05-13: the page times out before paint. Lighthouse desktop fails with
NO_FCP; mobile reports 25 s of TBT and 39 s of main-thread CPU for a 6 KB stub. Treat as P0 — replace with a static coming-soon page this week, park, or sunset the domain.
7. Analytics coverage is uneven#
| Site | GTM | GA4 (inferred via GTM) | CallRail | Meta Pixel |
|---|---|---|---|---|
| Tarzana Recovery | GTM-KV2HJD37 | verify | ||
| MK Adult Recovery | ||||
| NoHo Recovery | ||||
| Hillside Recovery | GTM-MC744H3M | verify | ||
| lumaMind |
Two sites (MK, NoHo) currently cannot answer the question "how much traffic do we get?" — every visit and every call is invisible to attribution. This is the highest-priority fix in the entire portfolio.
8. CMS-content overlap between MK and NoHo#
Both mkbehavioralhealth.com and nohorecovery.com use the same /recovery-cms/* slug pattern with what appears to be the same program library (alumni-program, art-therapy, barbershop, boxing, brain-mapping, breathwork-and-meditation, car-wrapping, comedy-therapy, dual-diagnosis, family-day, MAT, mentorships, etc.). If the page content is duplicated verbatim, Google will treat one or both as thin or duplicate — diluting rankings on both sites.
Action: confirm whether copy is shared verbatim. If yes, pick a canonical home for each program and use rel=canonical from the duplicate, or substantially differentiate the copy.
9. Portfolio-level keyword cannibalization risk#
Tarzana Recovery, Hillside, NoHo, and MK all target overlapping queries in the Los Angeles / San Fernando Valley addiction-treatment space. Without an explicit keyword-territory map, they will compete with each other in the same SERPs.
Recommended split (illustrative; finalize after a keyword-gap pass):
| Site | Owns | Avoids |
|---|---|---|
| Tarzana Recovery | "luxury", "holistic", residential | Outpatient-only terms |
| Hillside | residential, "get away", retreat | Outpatient, urban |
| NoHo Recovery | "innovative", "creative", North Hollywood | Generic "rehab los angeles" |
| MK Adult Recovery | activity-based programs, MAT | Generic "rehab los angeles" |
The shared playbook (apply once per Webflow project)#
These changes should be made on every site in the portfolio in the same week.
- Enable Webflow sitemap auto-generation (Project Settings → SEO → Auto-generate sitemap.xml).
- Populate
robots.txtwith:User-agent: * Allow: / Sitemap: https://www.<domain>/sitemap.xml - Enable canonical-tag auto-emit (Project Settings → SEO).
- Fill the per-page Title and Description fields on every page. Establish a 60-/160-character convention site-wide.
- Add a shared custom-code embed for JSON-LD (
MedicalBusiness/LocalBusiness) per project, parameterized by NAP and license. - Add OG and Twitter-card defaults at the project level with per-page overrides where needed. Use a standard 1200×630 social image.
- Verify Google Search Console (domain property) and Bing Webmaster Tools for each.
- Install GTM, GA4, and CallRail on every site that doesn't yet have them (MK, NoHo, lumaMind). Use a single GTM container per site with a documented event catalog.
- Set up GA4 conversion events for form submit, phone click, and insurance-verification submit.
- Take a baseline performance snapshot with PSI on the homepage + two inner pages, mobile + desktop, for each site. Store JSON exports under each site's
content/assets/<slug>/.
Recommended next steps (sequenced)#
- Week 1. measurement plumbing.. Install GTM/GA4/CallRail on MK, NoHo, lumaMind. Verify Search Console on all five.
- Week 1. technical baseline.. Apply the shared playbook (sitemap, robots, meta, OG, schema) across all five Webflow projects.
- Week 2. content cleanup.. Rewrite title tags + meta descriptions for top 10 pages on each site. Fix heading hierarchy.
- Week 2. Ahrefs deep-dive.. Pull headline metrics, top pages, keyword gaps, and competing domains per site. Build the portfolio keyword-territory map.
- Week 3. lumaMind decision.. Build out, park, or sunset.
- Week 4. performance pass.. Address PSI findings, especially the YouTube autoplay embed on Tarzana Recovery and any image-weight issues.
Data still to collect#
This portal is a living document. The items below should be backfilled as the data becomes available.
- Ahrefs headline metrics for each site (Domain Rating, organic traffic, organic keywords, referring domains).
- Ahrefs Top Pages, Top Keywords, Competing Domains for each.
- Ahrefs Site Audit health score per site.
- PSI scores (mobile + desktop) for homepage + 2 inner pages per site Needs a Google Cloud PSI API key in
PSI_API_KEY. - Screaming Frog crawl per site to populate the per-page audit tables.
- Verification of GA4 events firing and CallRail call attribution.
Drop raw exports in content/assets/<slug>/ and update the per-site markdown files.