Overview
The homepage is fundamentally healthy: clean single-H1 structure, valid canonical and robots, a well-formed Person/WebSite/WebPage JSON-LD graph, and a static crawler fallback so non-JS bots and AI crawlers still see real content. The score is dragged down almost entirely by unmeasured Core Web Vitals on the JavaScript-rendered page and a few on-page polish gaps.
Method: raw HTML + live headers, an on-page checker, and a weighted health scorer across seven categories.
| Category | Score | Category | Score |
|---|---|---|---|
| Schema | 87.5 | Technical | 78.6 |
| Content | 83.3 | On-Page | 75.0 |
| AI Readiness | 83.3 | Performance | 50.0 (weakest) |
| Images | 83.3 |
Top priorities
- Measure Core Web Vitals on the JS homepage. The only reason Performance scored 50 is that it swaps the static fallback for a JS-rendered hero (LCP + CLS risk) that has never been field-tested. The single biggest unknown.
- Crawler-facing content is thin (~236 words). The static fallback undersells the depth the JS version shows.
- No links from the homepage into blog/portfolio articles. Three internal vs eight external links and wasted internal-link equity.
Technical SEO findings
| Issue | Impact | Fix |
|---|---|---|
| Core Web Vitals never measured on JS homepage | High | Run PageSpeed Insights / CrUX; watch LCP (hero swap) and CLS; reserve hero image dimensions to prevent shift. |
| No HSTS header | Low | Add Strict-Transport-Security via .htaccess (HTTPS is already forced, so it is safe). |
No charset in HTTP Content-Type | Low | Add AddDefaultCharset UTF-8; explicit is more robust than relying on the meta tag. |
| robots / sitemap / canonical | Pass | Valid Rank Math sitemap index and self-referencing canonical. No action. |
On-page & content findings
- Homepage doesn't link into articles (medium): 3 internal vs 8 external links. Add 2–3 contextual links to the strongest posts/case studies to improve crawl depth and distribute authority.
- Meta description short (134 chars): extend to 150–160 and work in a concrete proof point ("scaled a property portal to 91M annual organic clicks") to lift CTR.
- Crawler-facing content thin (~236 words): expand the static fallback past 300 words with real, results-driven detail — this is the version Google and AI crawlers actually read.
Prioritized action plan
Critical (blocking): none. Nothing blocks indexation or ranking.
High-impact: measure CWV and fix any static→JS layout shift, expand the static fallback past 300 words, and add 2–3 internal links into the best articles.
Quick wins: extend the meta description, add HSTS and explicit charset headers, and clean UI-chrome headings out of the semantic outline.
Structured audit methodology · Core Web Vitals · on-page optimization · schema validation · prioritization by impact · rigorous verification of tool output against live evidence.
See the companion technical SEO remediation case study for the fixes that shipped.