Technical SEO Audit: https://marketplace.relevanceai.com/
Executive Summary
- Overall site health score (1–10): 7.5
- Top 3 critical issues
- Broken hreflang: homepage advertises an es locale that 404s (https://marketplace.relevanceai.com/es/ returns 404).
- Sitemap issues: robots.txt points to /sitemap.xml which times out; /sitemap_index.xml returns a 404 HTML page.
- Inconsistent canonicalization of search listing: /search self-resolves to homepage via canonical, while category listings self-canonicalize. This can dilute relevance and cause duplicate signals.
- Estimated impact
- Fixing hreflang prevents international mis-signals and possible demotions due to invalid language alternates.
- Restoring a valid sitemap coverage will improve discovery and freshness, especially for new/updated listings/builders.
- Correct canonicalization on search templates will prevent index bloat or dilution and improve SERP clarity for listing pages.
- Page speed improvements (JS reduction, image optimization, font strategy) can improve Core Web Vitals and CTR.
Critical Issues (High Priority)
- Broken hreflang on homepage
- Evidence: Homepage contains hreflang links to en and es. Requesting https://marketplace.relevanceai.com/es/ returns a 404 “Page not found”.
- Affected pages: Homepage (and any page with the same hreflang set, if applied globally).
- Why it matters: Invalid hreflang targets can cause search engines to ignore language alternates, and may waste crawl budget on 404s.
- Remediation
- If no localized Spanish content exists: remove hreflang="es" entirely.
- If you intend to ship Spanish: publish the localized pages at /es/ and ensure each page has a reciprocal hreflang pair.
- Code example (remove invalid):
- Code example (correct pair, once translated):
- Sitemap referenced in robots.txt is unavailable
- Evidence:
- Affected: Full site discovery and update cadence.
- Remediation
- Generate a valid XML sitemap (or sitemap index), include only canonical, indexable URLs (homepage, listings, builder profiles, builders index; avoid internal search result pages).
- Ensure it’s served fast (static build or fast server-side generation) and update robots.txt to the correct URL(s).
- Sample structure (sitemap index):
https://marketplace.relevanceai.com/sitemaps/sitemap-pages.xml
https://marketplace.relevanceai.com/sitemaps/sitemap-listings.xml
https://marketplace.relevanceai.com/sitemaps/sitemap-builders.xml
- robots.txt:
Sitemap: https://marketplace.relevanceai.com/sitemap_index.xml
- Validation: Fetch live XML in browser; test with Search Console “Sitemaps”.
- Inconsistent canonicalization of search pages
- Evidence:
- /search (all agents): canonical points to homepage (https://marketplace.relevanceai.com/), yet the page is indexable (meta robots index, follow). Title is generic; pagination exists with rel next/prev.
- /search?category=sales: self-canonical and indexable (good).
- Why it matters: Canonical to homepage can confuse search engines, causing duplication and diluted relevance for “All Agents” results.
- Remediation options (pick one strategy sitewide):
- Option A (index a canonical listing hub): Make /search the canonical, with a descriptive title/description, and ensure all refined variants (sort, page) self-canonical to their own page or to the base /search (depending on content uniqueness). Keep meta robots index, follow.
- Option B (noindex search results): Add to /search and any parameterized result pages you do not want indexed, keep category landing pages indexable with self-canonical.
- Recommended for marketplaces: Keep category pages indexable/self-canonical; either noindex /search or ensure /search self-canonical with unique metadata.
- Code example (noindex search):
- Code example (indexable search):
Important Improvements (Medium Priority)
- Open Graph/Twitter image consistency
- Evidence: Homepage OG/Twitter image observed as an SVG icon in one scrape; elsewhere OG.png. Prefer a large raster (1200×630) for consistent previews.
- Fix:
Ensure uniform across templates.
- Schema markup consistency on listing/category
- Evidence: Listing detail pages include Product and BreadcrumbList JSON-LD (good). Search base shows ItemList and SearchAction. Some category pages returned no jsonld_types.
- Fix: Ensure category templates output ItemList JSON-LD with item elements linking to listing URLs.
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{"@type": "ListItem","position": 1,"url": "https://marketplace.relevanceai.com/listing/..."},
...
]
}
- Titles and meta descriptions
- Evidence: /search’s title came through as “Acme Marketplace” (generic). Category titles are good (“Sales - Acme Marketplace”).
- Fix: Ensure each template has unique, descriptive and meta description. For /search (All Agents): title like “All AI Agents – Acme Marketplace” and a matching meta description.</li>
</ul>
<ol start="4">
<li>Pagination hygiene</li>
</ol>
<ul>
<li>Evidence: Builders index and category/search include rel prev/next and page query parameters.</li>
<li>Fix: Keep canonical to the current page for paginated series; retain rel prev/next (while Google no longer uses them as signals, they help UX and some crawlers). Ensure each page shows content unique to that page (not repeating the first page’s items).</li>
</ul>
<p>Enhancement Opportunities (Low Priority)</p>
<ul>
<li>Homepage schema: consider adding Organization and BreadcrumbList JSON-LD for richer entity understanding.</li>
<li>Add a site-level WebSite schema with SearchAction (if not already uniform) to enable sitelinks search in SERP.</li>
<li>Internal linking: From listing pages, link clearly to category pages and builder profile pages (already seen via breadcrumb and “More by” sections—keep strengthening).</li>
<li>Consider curated category landing content (intro paragraph, FAQs) to improve topical relevance and long-tail capture (FAQPage schema if appropriate).</li>
</ul>
<p>Mobile & Performance (Core Web Vitals via PageSpeed Insights)<br>Tested pages:</p>
<ul>
<li>Homepage: opportunities identified<ul>
<li>Reduce unused JS (e.g., /_astro/client..., Tech Solutions Inc. scripts); defer analytics until after user interaction or idle.</li>
<li>Avoid render-blocking resources:<ul>
<li>Inline critical CSS or use media/async techniques.</li>
<li>Preload key font files; add font-display: swap.</li>
<li>Example:<link rel="preload" href="/fonts/inter-var.woff2" as="font" type="font/woff2" crossorigin>
@font-face { font-family: Inter; src: url('/fonts/inter-var.woff2') format('woff2'); font-display: swap; }</li>
</ul>
</li>
<li>Optimize images:<ul>
<li>Serve responsive images with width/height attributes and sizes/srcset; ensure avatars/thumbnails are not 1–1.5MB for 20–48px display.<br><img src="/img/agent-48.webp" width="48" height="48"
srcset="/img/agent-48.webp 48w, /img/agent-96.webp 96w"
sizes="(max-width: 600px) 48px, 48px" loading="lazy" decoding="async"></li>
</ul>
</li>
<li>Preconnect to third parties you must load (fonts.gstatic, ph.relevanceai.com) and defer the rest; remove duplicated JS and legacy transpiled bundles where possible.</li>
</ul>
</li>
<li>Listing detail (example): generally strong LCP/CLS, but:<ul>
<li>Reduce total payload (~3.2MB) via image compression and script trimming.</li>
<li>Minify/trim unused CSS/JS; avoid non-composited animations.</li>
<li>Eliminate unnecessary lazy-loading for the LCP image (ensure discoverable in HTML).</li>
</ul>
</li>
</ul>
<p>I. Sitemaps & Robots.txt</p>
<ul>
<li>Current:<ul>
<li>robots.txt allows all; shows Sitemap: <a href="https://marketplace.relevanceai.com/sitemap.xml">https://marketplace.relevanceai.com/sitemap.xml</a></li>
<li>Disallow examples are commented out; fine.</li>
</ul>
</li>
<li>Issues: sitemap.xml unavailable; sitemap_index.xml is 404.</li>
<li>Fix:<ul>
<li>Publish sitemaps and point robots.txt to the correct location (e.g., Sitemap: <a href="https://marketplace.relevanceai.com/sitemap_index.xml">https://marketplace.relevanceai.com/sitemap_index.xml</a>).</li>
<li>Include main pages: homepage, builders index, builder profiles, listing detail pages. Exclude search results (/search, unless you want them indexed and canonicalized).</li>
<li>Validate in Search Console.</li>
</ul>
</li>
</ul>
<p>Technical Implementation Guide</p>
<ul>
<li><p>Hreflang</p>
<ul>
<li>Remove invalid hreflang references immediately. Only include alternates that exist and reciprocate.</li>
<li>Validation: Use the Hreflang Tags Testing Tool; check that each alternate 200s and contains reciprocal link tags.</li>
</ul>
</li>
<li><p>Canonicalization for search templates</p>
<ul>
<li>Decide strategy:<ul>
<li>Indexable: Use self-canonical and unique metadata; keep prev/next.</li>
<li>Noindex: Add <meta name="robots" content="noindex,follow"> for /search and parameterized versions; keep category pages indexable.</li>
</ul>
</li>
<li>Validation: View source to ensure only one canonical tag present and it matches intended URL.</li>
</ul>
</li>
<li><p>Sitemap generation (Astro/static)</p>
<ul>
<li>During build, generate sitemaps from your routes (pages, listing data, builder IDs).</li>
<li>Example Node build snippet (pseudo):<br>const urls = [...staticPages, ...listings.map(u=><code>/listing/${u.id}</code>), ...builders.map(u=><code>/builders/${u.id}</code>)];<br>// Write to /dist/sitemaps/*.xml with lastmod</li>
<li>Deploy; confirm 200 and proper content-type (application/xml).</li>
</ul>
</li>
<li><p>JSON-LD</p>
<ul>
<li>Ensure category pages output ItemList JSON-LD (see example above).</li>
<li>Listing pages already include Product and BreadcrumbList JSON-LD (good). Verify required Product fields (name, description, image, brand, offers).</li>
</ul>
</li>
<li><p>Page speed tooling and steps</p>
<ul>
<li>Bundle analysis: run a JS treemap, remove duplicate/legacy JS.</li>
<li>Defer analytics: load Tech Solutions Inc. only after user interaction or via requestIdleCallback when possible:<br>window.addEventListener('load', () => {<br> requestIdleCallback(() => { /* load analytics */ });<br>});</li>
<li>Fonts: self-host Inter, preload WOFF2, set font-display: swap.</li>
<li>Images: audit largest images; serve AVIF/WebP, correct sizes, width/height attributes to reduce CLS.</li>
<li>Validate: Use PSI and Web Vitals field data, re-test top templates (home, category, listing, builder profile).</li>
</ul>
</li>
</ul>
<p>Tool recommendations for ongoing monitoring</p>
<ul>
<li>Google Search Console (coverage, sitemaps, enhancement reports)</li>
<li>PageSpeed Insights + Lighthouse CI on key templates</li>
<li>Log-based monitoring of 404s (catch any future hreflang or internal link issues)</li>
<li>Structured Data Testing Tool / Rich Results Test for JSON-LD validation</li>
</ul>
<p>Validation steps to confirm fixes</p>
<ul>
<li>Crawl key templates with a fetch-and-render (ensure meta robots, canonical, hreflang, JSON-LD appear in the server-rendered HTML).</li>
<li>Re-test with PSI: target LCP < 2.5s, CLS < 0.1, TBT as low as possible.</li>
<li>Re-fetch sitemaps in GSC; check indexed pages match intent (exclude search if noindex, include listings/builders).</li>
</ul>
<p>Observed page type coverage (sampled)</p>
<ul>
<li>Homepage: indexable, canonical to self, hreflang included (fix needed), JSON-LD WebSite present.</li>
<li>Builders index: indexable, self-canonical, rel prev/next present.</li>
<li>Builder profile pages: indexable, self-canonical, Organization JSON-LD present, rel prev/next on pagination present.</li>
<li>Listing detail pages: indexable, self-canonical, Product + BreadcrumbList JSON-LD present (good).</li>
<li>Search base (/search): indexable but canonical to homepage (inconsistent); pagination exists; adjust per strategy.</li>
<li>Category search (/search?category=sales): indexable, self-canonical, pagination present (good).</li>
<li>Robots.txt: allows all; sitemap listed but unavailable (fix).</li>
<li>Sitemap endpoints: /sitemap.xml timeouts; /sitemap_index.xml 404 (fix).</li>
</ul>
<p>Prioritized action plan (summary)</p>
<ul>
<li>Today: Remove invalid hreflang es or ship /es/; fix /search canonical (self-canonical or noindex); restore working sitemaps and update robots.txt.</li>
<li>This week: Normalize OG/Twitter images; ensure ItemList JSON-LD on category pages; ensure unique page titles/meta; verify pagination canonicals.</li>
<li>Next 1–2 weeks: Performance pass (JS trimming, defer analytics, font strategy, image optimization); implement build-time sitemap generation; add Organization schema on homepage if desired.</li>
</ul>
<p>If you want, I can provide a ready-to-drop HTML head snippet for each template (home, search, category, listing) reflecting the above recommendations.</p>