/property-details?reference=XXXX) causing canonical collapse — all pages canonicalize to same URL/llms.txt file — first-mover advantage for AI search ~2 hrs<link rel="preconnect"> for cdn.proppy.app, fonts.gstatic.com ~30 minrobots.txt — Standard Yoast configuration:
| Severity | Issue |
|---|---|
| Medium | No AI crawler directives (GPTBot, ClaudeBot, PerplexityBot all allowed by default) |
| Medium | /category/ is disallowed — may block useful category archive pages |
XML Sitemap — 8 sub-sitemaps (Yoast-generated)
| Severity | Issue |
|---|---|
| Critical | Property detail pages excluded from all sitemaps (query-parameter URLs) |
| Medium | Author sitemap exists but /author/ is disallowed — contradictory |
| Medium | /pt/ and /nl/ language variants likely missing from sitemaps |
| Severity | Issue |
|---|---|
| Critical | Canonical collapse — all property pages likely canonicalize to /property-details |
| High | GTranslate pages may create duplicate content with incorrect canonicals |
| Medium | Pagination for property listings likely unoptimized (JavaScript-loaded) |
| Severity | Issue |
|---|---|
| Critical | Property URLs use query parameters. Recommended: /properties/villa-3-bed-lagos-th1234/ |
| Medium | www vs non-www inconsistency — schema uses www. prefix |
| Medium | Trailing slash consistency needs verification |
| Severity | Issue |
|---|---|
| Pass | HTTPS active via Cloudflare |
| High | Likely missing HSTS, CSP, X-Content-Type-Options, Permissions-Policy headers |
| Medium | Cloudflare challenge scripts may add latency for legitimate visitors |
| Severity | Issue |
|---|---|
| Critical | hreflang tags only injected via JavaScript (GTranslate) — invisible to crawlers |
| High | Machine-translated Portuguese for a Portugal-based business is a competitive disadvantage |
| Medium | Should use pt-PT instead of pt for European Portuguese |
| Medium | Missing x-default hreflang tag |
| Severity | Issue |
|---|---|
| Critical | Proppy.app property listings may be client-side rendered only — invisible to crawlers |
| High | Elementor loads ~200-400KB JavaScript regardless of page needs |
| Severity | Issue |
|---|---|
| Critical | Content cannibalization between /buying-property-in-algarve/ and /buying-a-property-in-portugal/ |
| Critical | YMYL content may be outdated — Golden Visa suspended Oct 2023, NHR closed Jan 2024 |
| High | No author attribution on any content pages |
| High | No "Last Updated" dates on informational pages |
| High | Selling page lacks fee/commission transparency |
| Medium | Homepage too content-heavy — dilutes keyword focus and buries CTAs |
| Medium | Blog publishes primarily in Dutch, limiting English AI citation potential |
| Metric | Current | Target |
|---|---|---|
| Flesch-Kincaid Grade Level | 10-12 | 8-9 |
| Portuguese legal terminology (escritura, CPCV, IMT) pushes complexity higher. Recommendation: Add glossary or tooltip definitions. | ||
| Element | Value | Assessment |
|---|---|---|
| Homepage Title | Real Estate Agents in Lagos, Portugal | ten Hoopen Realty | Good — includes primary keyword + brand |
| Meta Description | "Deeply rooted in the Algarve region..." | Adequate but could be more action-oriented |
| Severity | Issue |
|---|---|
| Medium | Multiple H1 elements on homepage |
| Medium | Duplicate H2s ("DISCOVER THE ALGARVE" appears in variations) |
| Medium | Headings are descriptive, not question-based — poor for AI extraction |
| Medium | Heading hierarchy skips levels on some pages |
| Severity | Issue |
|---|---|
| Medium | Navigation is thin — only 2 primary items (Properties, Contact) |
| Medium | Service pages not linked from primary navigation |
| Medium | Blog/insights section not in main navigation |
| Low | /blog/ returns 404 — content lives at /insights/ or /news/ |
| Severity | Issue |
|---|---|
| High | Vast majority of images lack descriptive alt text |
| High | Property carousel images have no alt text or titles |
| Medium | Logo, partner logos, team photo, award badge — all missing alt text |
| Medium | Flag icons for language switching lack alt text |
Detected: Organization + RealEstateAgent (dual type), WebSite schema
| Severity | Issue |
|---|---|
| Critical | Missing @context if standalone schema block |
| Critical | Missing telephone — required for LocalBusiness rich results |
| Critical | Missing geo coordinates — essential for local search |
| High | Logo uses SVG — Google prefers raster images (PNG/JPG/WebP) |
| High | Missing openingHoursSpecification |
| High | Missing sameAs social profile links |
| Medium | Missing contactPoint with availableLanguage |
| Medium | Missing priceRange |
| Medium | Missing areaServed |
| Rich Result | Status | Action Needed |
|---|---|---|
| Local Business Panel | Partial | Add telephone, geo, hours, sameAs |
| Breadcrumbs | Missing | Enable in Yoast or add manually |
| Article | Missing | Add to blog posts with Person author |
| Product / Listing | Missing | Add RealEstateListing on property pages |
| ItemList Carousel | Missing | Add to listing and location pages |
| FAQ | Missing | Add to guide pages |
Estimated PageSpeed Score: 20-35 (mobile) / 50-65 (desktop)
| # | Bottleneck | Est. Impact |
|---|---|---|
| 1 | Owl Carousel hero — browser can't discover image until JS executes | +1.5-3.0s |
| 2 | Render-blocking CSS chain — Elementor loads 500-700KB CSS | +1.5-3.0s |
| 3 | No fetchpriority="high" on LCP image | Moderate |
| 4 | No <link rel="preload"> for hero image | Moderate |
| 5 | Cloudflare challenge scripts on first visit | +1-3s |
| Source | Est. CLS |
|---|---|
| Owl Carousel initialization | 0.05-0.20 |
| Tidio Chat widget injection | 0.02-0.10 |
| Web font swap (FOUT) | 0.02-0.08 |
| GTranslate bar insertion | 0.01-0.05 |
| Images without dimensions | 0.01-0.10 |
| Crawler | Status | Recommendation |
|---|---|---|
| GPTBot (OpenAI) | Allowed | Explicitly Allow |
| OAI-SearchBot | Allowed | Explicitly Allow |
| ClaudeBot (Anthropic) | Allowed | Explicitly Allow |
| PerplexityBot | Allowed | Explicitly Allow |
| CCBot (Common Crawl) | Allowed | Block (training only) |
| cohere-ai | Allowed | Block (training only) |
| Signal | Status | Impact |
|---|---|---|
| Wikipedia entity | None | High negative |
| Reddit mentions | Minimal | High negative |
| YouTube presence | Minimal | Highest negative (~0.737 correlation) |
| Google Reviews | 4.9/5 (39) | Moderate positive (low count) |
| Severity | Issue |
|---|---|
| High | Vast majority of images lack descriptive alt attributes |
| Medium | Email subscription form field lacks associated <label> element |
| Medium | No ARIA labels on interactive elements (carousels, modals) |
| Medium | "READ MORE" links lack context-specific titles or aria-labels |
| Medium | Social media icon buttons may lack text alternatives |
| Low | Focus management issues with custom JavaScript click handlers |
| Low | Elementor popup modals need keyboard accessibility verification |
| Reference | Location |
|---|---|
V1292 | Caliças, Lagos |
T1182A | Canavial, Lagos |
T1142 | Cabanas Velhas, Vila do Bispo |
V1291 | Praia da Luz, Lagos |
A1290 | Meia Praia, Lagos |
A1289 | Burgau, Lagos |
T1286 | Centro, Lagos |
V1285 | Vale Da Lama, Lagos |
V1284 | Atalaia, Lagos |
T1227A | Luz, Lagos |