Structurally invisible for two of three markets. That was 3 September.
The cause is not competition — it is that the site never tells Google those two markets exist. There is no page that can rank for The Woodlands. There is no page that can rank for Texas City. No page on the domain carries a city name in its title or its main heading.
The bottom line above is the measurement of 3 September and stands as written. Twelve days later its structural half is no longer true. Three dedicated city pages exist, were crawled and indexed on 10 September, and each carries its own H1 naming the city, its own street address, and its own location entity. The domain could be found for one market. It can now be found for three.
What has not happened is the traffic. In the days after those three pages entered the index they carried about one impression between them. That is lag, not failure — it was stated before they shipped, and it is why the number is printed here rather than left out. The markets are reachable now. They are not won.
Two things still stand in the way, and neither is content. The apex domain littlestarsppec.com still answers with a self-signed certificate — re-checked three times since this audit, unchanged each time. And the three Google Business Profiles, confirmed on 13 September to exist as three distinct entities, carry the fields that actually decide local ranking — primary category above all — where this audit cannot read them from outside.
Little Stars owns something its strongest competitor does not: three physical addresses across the Houston metro, including 10815 Kuykendahl Road in The Woodlands and 7228 Medical Center Drive in Texas City.
Spark Pediatrics — the clear content leader in this niche — runs one center, on Sands Point Drive in Houston. On the Houston location page fetched for this audit, the words "Woodlands", "Pasadena" and "Texas City" appear zero times each.
A parent in The Woodlands searching for medical daycare near them is being served results by centers that are not in The Woodlands. Little Stars is in The Woodlands, and has no page that says so in a way Google can use. Start there, not with the Pasadena fight.
Every finding carries a confidence label.
They are not decoration — they separate what can be acted on today from what needs an instrument nobody has yet. Each finding also shows the actual bytes the site served, so any claim here is checkable without taking the author's word.
Seven defects that block everything downstream.
All seven are fixable inside Duda. No platform migration.
Three markets claimed, one identity Google can see
The header of every page reads "The Woodlands, TX. / Pasadena, TX. / Texas City, TX." All three addresses are real. All three appear on exactly one page — /contact-us — and only Pasadena repeats in the sitewide footer.
There is no /the-woodlands, no /pasadena, no /texas-city. The site's own location widget renders a link labelled "Go to location page", and there is no location page for it to point at.
Google ranks pages, not intentions. For "PPEC near me" searched from The Woodlands or Texas City, nothing on this domain is eligible to win. This one defect costs more than every other item here combined, because it forfeits two of three markets entirely.
/ /about-us /admission /services /parents-resources /contact-us /patient-referral-form /request-tour — no /the-woodlands, no /pasadena, no /texas-city — <a class="dmGeoSVGoToPage">Go to location page</a> ← points nowhere
Zero structured data on every real page
All eight real pages return 0 JSON-LD blocks. No Organization, no LocalBusiness, no MedicalClinic, no FAQPage, no BreadcrumbList.
The irony is exact: the only structured data on the entire domain sits on four Duda demo blog posts — and it describes wallpaper.
/parents-resources publishes genuine FAQ content with no FAQPage markup, so it cannot earn FAQ rich results or be cleanly lifted by an AI answer engine.
/ jsonld=0 [] /services jsonld=0 [] /about-us jsonld=0 [] /admission jsonld=0 [] /parents-resources jsonld=0 [] ← has a real FAQ, unmarked /contact-us jsonld=0 [] /request-tour jsonld=0 [] /patient-referral-form jsonld=0 [] /how-to-choose-a-sofa jsonld=1 ['BlogPosting','Person'] ← the only schema on the site
Four Duda demo posts, in Spanish, about interior decorating
Four of the ten sitemap URLs are untouched template content: English slugs, Spanish bodies, subject matter with nothing to do with pediatric care. They are indexable, self-canonical, in the sitemap — and they hold four of the five H1 elements on the entire domain.
For a health site, template debris of this kind is a direct quality signal against the domain, and it muddies the topical picture Google builds.
| URL slug | Actual H1 | Translation |
|---|---|---|
| /how-to-choose-a-sofa | Elegir la lámpara correcta | "Choosing the right lamp" |
| /make-the-most-of-the-season… | Cuelga el papel pintado como un jefe | "Hang wallpaper like a boss" |
| /keep-in-touch-with-site-visitors… | Los colores de la sala de estar | "Living room colors" |
| /tips-for-writing-great-posts… | Cómo preparar las paredes para pintar | "How to prepare walls for painting" |
Both conversion pages are hidden from Google
The two highest-intent pages on the domain — the tour request and the referral form — are set to noindex and are absent from the sitemap. This is almost certainly a Duda default nobody revisited, not a decision.
"Request a tour" is what a converting parent does. The referral form is what a discharge planner or pediatrician needs. The site cannot rank for either, and referral-source discovery is forfeited.
/request-tour robots=noindex title(12)="REQUEST TOUR" desc=0 h1=0 /patient-referral-form robots=noindex title(21)="Patient Referral Form" desc=0 h1=0 sitemap.xml contains either page: 0 matches
Seven of eight pages have no H1
Headings are being used as font sizes, not as structure. The contact block repeated on every page uses h3/h4/h5 for a phone number and an email address.
On the homepage the brand name in the hero is split across separate elements — Little / S / t / a / r / s — so the most visually prominent text on the site is not a single readable phrase in the markup.
| Page | H1 | Heading pattern |
|---|---|---|
| / home | none | h2×8 h3×9 h4×6 h5×3 |
| /about-us | none | h2×4 h3×6 h4×2 h5×3 |
| /admission | none | h2×1 h3×9 h4×2 h5×3 |
| /parents-resources | none | h2×3 h3×6 h4×2 h5×4 |
| /contact-us | none | h2×1 h3×4 h4×3 h5×3 |
| /request-tour | none | h2×1 h3×4 h4×2 h5×3 |
| /patient-referral-form | none | h3×4 h4×2 h5×3 |
| /services | "Services" | h1×1 h2×1 h3×9 h4×2 h5×3 |
The "Call Us" button is broken on every page
Every page carries three working phone links and one broken one. The broken one sits inside the location widget — the button a local searcher on a phone actually taps.
Placeholder keyboard-mashing that shipped to production, on the highest-intent interaction a healthcare site offers. /contact-us has two of them.
<a … href="tel:asdasda" phone="asdasda">…<span class="text">Call Us</span></a> tel: links per page {'1 8335487827': 3} + {'asdasda': 1} mailto: links on the whole domain 0
https://littlestarsppec.com throws a security warning
Chrome and Safari now try HTTPS first. A parent, nurse or referring physician who types the bare domain — from a flyer, a card, or memory — can land on a full-page security interstitial. On a healthcare site that is a trust event, not a technicality. It also breaks any inbound link written as https://littlestarsppec.com.
http://littlestarsppec.com/ 301 → https://www.littlestarsppec.com/ ✓ https://littlestarsppec.com/ TLS failure — no valid certificate ✗ https://www.littlestarsppec.com/ 200, valid Let's Encrypt cert ✓ apex A records → 15.197.142.173, 3.33.152.147 (forwarding, no cert) www CNAME → s.multiscreensite.com (Duda, cert valid)
Seven more that compound once the foundation is set.
The homepage weighs 10.7 MB and lazy-loads nothing
Duda serves every image at -1920w regardless of display size. Largest Contentful Paint and layout shift will both suffer, especially on the mobile connections most parents use.
Not measured: real Core Web Vitals field data. Payload predicts LCP; it is not LCP. Needs PageSpeed Insights or CrUX.
HTML 385 KB images 10,602,255 bytes (10.6 MB) images with loading="lazy" 0 of 60 images with width+height 3 of 60 48 of 60 images = the embedded Instagram feed, 150-512 KB each Recurso+210-1920w.png 466 KB final02-1920w.png 350 KB United+Healthcare-1920w.png 117 KB ← an insurance logo Spark Pediatrics, same measurement: 69 of 70 lazy, 168 KB HTML
Untranslated Duda placeholder text on all eight pages
A visible unfinished-site signal on a health page, plus stray Spanish tokens. Small effort, disproportionate trust cost.
<div data-element-type="html" class="dmCustomHtml">Insertar su HTML personalizado</div> "Insert your custom HTML" — an unconfigured widget printing its own Spanish placeholder onto a live page declaring lang="en". /services additionally renders "Menú" as an <h3>, twice.
The homepage word count is mostly Instagram hashtags
The homepage reports 4,744 words, which looks healthy until you read them. Most are Instagram captions and hashtag walls pulled in by the feed widget.
Inflated word count masks thin real content, and creates a false sense that the site "mentions Pasadena a lot" when it has no Pasadena page.
raw HTML token counts, homepage:
Pasadena 128 Houston 170 Woodlands 11
Texas City 6
…and the source of nearly all of them:
#LittleStarsPediatricCenter #PediatricTherapy #PhysicalTherapy
#OccupationalTherapy #SpeechTherapy #PediatricNursing #PasadenaTX …
Hashtags, not on-page location content.
Only one title on the site contains a place name
The only geographic token in any title on the domain is "| Texas" at the end of /parents-resources. Nothing names The Woodlands, Pasadena, Texas City or Houston.
| Page | Title len | Desc len | Problem |
|---|---|---|---|
| / | 53 | 181 | Description over ~160. Title says "Child Medical Daycare", never "PPECC" |
| /about-us | 84 | 228 | Both truncate in results |
| /parents-resources | 73 | 248 | Description truncates badly |
| /contact-us | 42 | 61 | Description is about therapy, not contact. No city |
| /services | 48 | 107 | Acceptable. No city |
| /admission | 41 | 137 | Acceptable. No city |
| /request-tour | 12 | 0 | "REQUEST TOUR", all caps, no description |
| /patient-referral-form | 21 | 0 | No description |
No Google Business Profile signal anywhere on the site
Across all eight pages there is not one link to Google Maps, a g.page short link, or a reviews profile. Social presence is Facebook and Instagram only, and with no JSON-LD there is no sameAs anywhere — zero occurrences on eight pages.
Whether the three GBP listings exist is Blocked — that needs Google Business Profile access. But for a three-location clinic the local pack is where most visibility lives, and the site currently does nothing to reinforce it.
The third location is labelled "Texas", not "Texas City"
In the /contact-us location widget the three entries read "The Woodlands", "Pasadena" and "Texas". The address beneath the third is correct — 7228 Medical Center Drive, Texas City, TX 77591 — but the city name is truncated in the one place on the site where a city list exists. Any NAP aggregator or AI extractor reading that widget learns the wrong locality.
Address markup is split mid-word
Being precise about severity, because it matters: the contiguous string does exist in the location widget, and Google concatenates inline elements without inserting whitespace — so Google very likely reads this correctly. The impact on rankings is Hypothesis, and it does not deserve a sprint.
Where it does bite is simpler parsers: NAP aggregators, directory scrapers and some AI extractors that insert a boundary at every element. Those read "10815 K uykendahl Road".
<strong>10815 K</strong><strong style="display: initial;">uykendahl Road</strong>
<strong>7</strong><strong>228 Medical Center Drive</strong>
but: contiguous "10815 Kuykendahl Road" does appear elsewhere, ×2
Seven that ship in an afternoon.
| Win | Detail | Confidence |
|---|---|---|
| Normalise tel: format | tel:1 8335487827 → tel:+18335487827 on all eight pages | Confirmed |
| Make the email clickable | Shown as text on eight pages; zero mailto: links exist on the domain | Confirmed |
| Own the term PPECC | The Texas Medicaid benefit is PPECC; the domain and much of the copy say PPEC, inconsistently. Texas parents, case managers and discharge planners search the double-C form | Confirmed usage |
| Add breadcrumbs | No breadcrumb markup or UI anywhere; Tender Care has BreadcrumbList | Confirmed |
| Increase internal linking | Homepage has 15 internal links; Spark's has 37, its blog posts 41 | Confirmed |
| Add hreflang + a Spanish layer | Zero hreflang tags. Spark has 4. Pasadena is a heavily Hispanic market — and the site already leaks Spanish by accident | Confirmed absence |
| Remove third-party footer branding | "Powered by Altech Web Design" on a healthcare site | Confirmed |
The "42 images without alt text" figure was wrong. Our 2026-08-27 baseline recorded 42 images without alt text. Re-measured, separating the two cases properly: images with no alt attribute at all: 0 across all eight pages. Images with alt="": 3-10 per page.
alt="" is the correct markup for a decorative image. The baseline script counted empty alt as missing alt, which turns correct markup into a fabricated defect. The real question — are those particular images decorative or meaningful? — needs a human to look at each one, and is Not measured. The probe script now keeps the two counts separate so they can never be summed again.
Five competitors, one instrument.
Each measured with the same script used on Little Stars, on 2026-09-03. This is measured markup, not opinion.
| Signal | Little Stars | Spark Pediatrics | Tender Care | Viva Pediatrics | Sunshine PDN |
|---|---|---|---|---|---|
| H1 on the page | 0 | 1 | 9 ⚠ | 1 | 22 ⚠ |
| H1 names service + city | No | Yes | Yes | Service only | City only |
| City in the URL | No | /locations/houston-center | /houston-tx-ppec/ | No | No |
| Meta description | Partial | Missing | 142 chars | 245 chars | Missing |
| Canonical | Yes | No | Yes | Yes | Yes |
| JSON-LD blocks | 0 | 0 | 1 | 0 | 0 |
| LocalBusiness / Medical schema | No | No | No | No | No |
| FAQPage schema | No | No | No | No | No |
| Images lazy-loaded | 0 / 60 | 69 / 70 | 9 / 12 | 6 / 24 | 26 / 26 |
| HTML weight | 376 KB | 168 KB | 246 KB | 88 KB | 586 KB |
| Internal links | 15 | 37 | 2 | 26 | 0 |
| Multilingual (hreflang) | 0 | 4 | 0 | 0 | 0 |
| Broken tel: link | Yes | No | — | No | — |
| Long-form content cluster | No | Yes — 2,380-word posts | No | No | No |
Domain authority and keyword rankings. We hold no Ahrefs or SEMrush licence and neither has ever been validated here. Scraped SERP positions are not a measurement — they vary by location, history, device and minute. Position data comes from Search Console once it is connected. Anything else would be a number that looks like data and is not.
Tender Care returned 403 to the audit user-agent and 200 to both a browser and Googlebot — that was the instrument, not a closed site. Re-measured with a browser user-agent.
What the benchmark actually says
- Spark wins on content and speed, not technique. 2,463-word homepage, 2,380-word posts targeting "PPECC near me" + Houston, 69/70 images lazy-loaded, Spanish via hreflang. But no canonical, no meta description, no structured data. Beatable technically.
- Tender Care wins on technical local SEO. City in URL, city in title, proper robots directives, structured data. That is the pattern to copy — and it has two internal links and 970 words, so it is thin.
- Nobody has local business or FAQ schema. Five out of five. This is not a catch-up item, it is unoccupied ground.
- Nobody has a real multi-location architecture. Sunshine lists cities with 22 H1s and zero internal links. Little Stars, with three genuine addresses, is best placed to do it properly.
Grouped by intent and evidence.
We have no keyword tool and no Search Console yet, so volume and difficulty are Not measured. These are drawn from the terminology the site, the competitors and Texas HHS actually use. Once GSC is connected, replace this section with real query data — about a day's work.
Local commercial
Own these first — they map one-to-one onto the three new location pages.
- ppec the woodlands tx
- ppecc the woodlands
- ppec texas city tx
- medical daycare texas city
- ppec pasadena tx
- ppecc pasadena texas
- medical daycare near me
- prescribed pediatric extended care houston
Service + qualifier
Parents who already know what they need.
- ppecc medicaid texas
- star kids ppecc
- medical daycare for medically complex children houston
- pediatric skilled nursing daycare houston
- ppec with transportation houston
- tracheostomy child daycare texas
- g-tube daycare texas
Referral source
Nobody in the measured competitive set is targeting these. Discharge planners and pediatricians are how centers fill.
- ppecc referral form texas
- how to refer a patient to a ppecc
- ppecc vs private duty nursing
- ppecc vs home health texas
Informational · AEO
The long game, and what AI answer engines cite.
- what is a ppecc
- does medicaid cover ppecc in texas
- what conditions qualify for ppecc
- how many hours can a child attend a ppecc
- ppecc requirements texas
Spanish
Uncontested in this set. Pasadena market.
- guardería médica pasadena tx
- cuidado pediátrico extendido houston
- ppecc medicaid español
Terminology note (Confirmed): the site mixes PPEC and PPECC. In Texas the licensed benefit is PPECC. Standardise on PPECC in copy, headings and schema, keeping PPEC as a secondary variant — the domain cannot change, and does not need to.
One asset already exists and is buried: "Why PPECC instead of Private Duty Nursing or Home Health Care" is real, differentiated content sitting as an unlinked section of /services. It should be its own page.
Measurement before the work that needs measuring.
Instrument first
- Verify sc-domain:littlestarsppec.com in Search Console. GSC never backfills. Every unverified day is a day of baseline lost permanently — the same thing happened on the sister property, whose data starts around 18 August and where nothing earlier will ever exist. Ten minutes, and it gates our ability to prove any of the rest worked.
- Confirm or claim the three Google Business Profiles
- Grant Duda editor access — nothing below ships without it
- Fix the apex certificate in GoDaddy
Stop the bleeding
- Delete the four Duda demo posts (410/404), resubmit the sitemap
- Remove noindex from both conversion pages; add them to the sitemap
- Fix tel:asdasda; normalise all phone links; add mailto:
- Delete the "Insertar su HTML personalizado" widget on all eight pages
- Rename the "Texas" location entry to "Texas City"
- One correct H1 per page
Build the missing architecture
- Three genuinely distinct location pages
- MedicalClinic schema per location, Organization + sameAs sitewide, FAQPage on /parents-resources
- Rewrite every title and meta description
- Lazy-load or replace the Instagram feed — ~8.9 MB saved
- Responsive images, WebP, dimensions, descriptive filenames
Content and referral capture
- Homepage rewrite: 600-900 words of real copy, feed reduced
- Promote "PPECC vs PDN vs Home Health" to its own page
- Referral-source page for physicians and discharge planners
- Four informational articles, FAQPage marked up
- Breadcrumbs sitewide; internal links from 15 to 35+
Expansion
- Spanish layer with hreflang, starting with the three location pages
- Review programme across the three GBP listings
- Local citations and NAP consistency for all three addresses
- Core Web Vitals verified against real field data
Two rows answer the question. Both are blocked.
The deterministic parts are already automated and re-runnable today. Every number in this report reproduces from the two scripts below.
# Site-wide state vs the frozen baseline. Silent when nothing changed.
python3 scripts/littlestars-snapshot.py --diff # exit 0 = no change, 2 = material change
# Per-URL local-SEO probe. Same instrument for us and for competitors.
python3 scripts/local-seo-probe.py <url> [...] --json out.json| Metric | Today | Instrument | Available? |
|---|---|---|---|
| Pages with an H1 | 1 / 8 | snapshot / probe | Now |
| Pages with local schema | 0 / 8 | probe | Now |
| Location pages live | 0 | sitemap | Now |
| Sitemap URLs that are demo content | 4 / 10 | snapshot | Now |
| Conversion pages indexable | 0 / 2 | probe | Now |
| Homepage payload | 10.7 MB | curl | Now |
| Apex HTTPS valid | No | curl / openssl | Now |
| Impressions, clicks, position, indexed pages | — | Search Console | Blocked |
| Local pack views, calls, directions | — | Google Business Profile | Blocked |
| Core Web Vitals (field) | — | PageSpeed / CrUX | Not measured |
The two blocked rows are the ones that answer "is it working?". Everything above them proves the site changed; only Search Console and Business Profile prove the market noticed. That is why Phase 00 comes first.
What this document does not know.
- Coverage. The ten sitemap URLs plus two orphan pages found in the navigation. Pages neither in the sitemap nor linked from those eight would not have been found. There may be more orphans.
- Served, not rendered. All measurements are of served HTML. Duda server-renders its content — the body copy is present in the raw bytes — so this is sound for crawling. Anything injected purely client-side is Not measured.
- Competitor set. Five providers found through public search for PPECC in the Houston metro. Representative, not exhaustive. The authoritative list is the Texas HHS PPECC provider registry.
- No rank, no volume, no authority scores anywhere in this document, by design.
- GBP status unknown. Whether the three listings exist, and their categories, reviews and completeness, is Blocked pending access.
Provenance. Measured 2026-09-03, 18:42–19:05 UTC. Read-only throughout — no page, DNS record, profile or index was modified in the course of this audit. Every number above reproduces from the two scripts in Section 09.
Stop diagnosing,
start building.
CleverWave builds deep SEO audits for operators who need to be found where they actually are. We measure every flaw against the served bytes, prioritise by impact, and deliver a phased plan calibrated to your team. Phase 00 takes an hour and starts the clock on everything else.
Book the conversation