SEO/GEO Evaluation Checklist

Run this checklist after every SEO/GEO change to verify the change actually improves search visibility. A change that passes typecheck but fails these checks is not shipped. Source: dedalus-monorepo work trial proposal, SEO + GEO

When to Run

After any change to: metadata, structured data (JSON-LD), robots.txt, sitemap.ts, llms.txt, llms-full.txt, OG images, page titles/descriptions, heading hierarchy, FAQ content, or keyword lists.

Phase 1: Technical Foundations (automated)

These checks can be scripted or verified with CLI tools.

1.1 Sitemap Integrity

  • curl -s https://dedaluslabs.ai/sitemap.xml | head -50 returns valid XML
  • Every page in the sitemap returns HTTP 200 (no 404s for ghost routes)
  • Sitemap includes all product pages, blog posts, and marketplace entries
  • No dashboard, onboarding, or API routes leak into the sitemap
  • priority and changeFrequency values are set for high-value pages (home, pricing, marketplace)
  • Sitemap is registered in Google Search Console

1.2 Robots.txt AI Crawler Coverage

Verify all major AI crawlers are explicitly allowed on marketing pages:

curl -s https://dedaluslabs.ai/robots.txt

Required user agents (must appear with Allow directives):

Agent Service
GPTBot OpenAI web search
ChatGPT-User ChatGPT browsing
OAI-SearchBot OpenAI SearchGPT
ClaudeBot Claude web search
Claude-Web Claude web browsing
PerplexityBot Perplexity AI
Google-Extended Gemini/AI Overviews
GoogleOther Google AI training
Amazonbot Alexa/Amazon AI
Applebot-Extended Apple Intelligence
Meta-ExternalAgent Meta AI
CCBot Common Crawl
YouBot You.com
Phind Phind search
DuckAssistBot DuckDuckGo AI
  • All agents above are present with correct Allow/Disallow paths
  • /llms.txt and /llms-full.txt are in the Allow list
  • Home page / is explicitly in the AI Allow list
  • Dashboard, onboarding, API, sandbox are in Disallow

1.3 Structured Data Validation

# Fetch page and extract JSON-LD blocks
curl -s https://dedaluslabs.ai | rg -o '<script type="application/ld\+json">[^<]+</script>'
  • Home page emits Organization + WebSite + Person (founders) + FAQPage JSON-LD
  • Pricing page emits FAQPage + SoftwareApplication (with Offers) JSON-LD
  • Blog posts emit BlogPosting JSON-LD
  • Marketplace detail pages emit SoftwareApplication + BreadcrumbList JSON-LD
  • About page emits AboutPage JSON-LD
  • All JSON-LD passes Google Rich Results Test
  • Organization node includes knowsAbout, sameAs, alternateName, contactPoint
  • FAQPage items match the on-page FAQ content (no schema-only FAQ without visible content)

1.4 Meta Tags and OG Images

For each key page (home, pricing, about, products/api, marketplace, blog):

  • <title> is 50-60 characters with primary keyword near the start
  • <meta name="description"> is 150-160 characters, includes primary keyword, has a call to action
  • <link rel="canonical"> points to the correct absolute URL for that page (not inherited from root)
  • og:title, og:description, og:image, og:url, og:site_name, og:locale are all present
  • og:image includes width (1200), height (630), type, and alt sub-properties
  • twitter:card is summary_large_image, twitter:site and twitter:creator are set (namespace is still twitter:, not x:)
  • twitter:image includes alt, and ideally width/height/type
  • OG image is 1200x630, accessible (returns 200), and has alt text
  • No duplicate <title> or <meta description> across pages
  • Root layout robots includes googleBot["max-image-preview"]: "large" for full-size social cards

1.4b Social Bot Middleware (Next.js)

  • Middleware file is named middleware.ts (not proxy.ts - Next.js silently ignores non-standard names)
  • Export is named middleware or default
  • Social bots (Twitterbot, facebookexternalhit, LinkedInBot, etc.) receive minimal HTML with just meta tags
  • htmlLimitedBots in next.config.ts covers SEO/AI crawlers the middleware doesn't catch
  • metadataBase resolves to production domain (not *.vercel.app) - verify NEXT_PUBLIC_SITE_URL is set in Vercel

1.5 Image Alt Text

  • Every <img> on marketing pages has a non-empty alt attribute
  • Alt text is descriptive (not "image1" or "screenshot")
  • Logo images use the brand name in alt text
  • Decorative images use alt="" (empty, not missing)

Phase 2: Content and Keyword Quality (manual review)

2.1 Keyword Density

For each key page, verify the primary keyword appears in:

  • URL slug (e.g., /pricing for pricing keywords)
  • Title tag
  • H1 heading
  • At least one H2 heading
  • First 100 words of body content
  • Meta description

Target density: primary keyword should appear 2-3% of total word count on the page. Check that H1, H2, H3 headings use keyword-rich phrasing, not generic labels.

2.2 Comparison and Alternative Keywords

  • Home and pricing pages include "vs" comparison keywords in metadata
  • Keywords cover major competitors: Modal, E2B, Heroku, Railway, Render, Fly.io, OpenRouter
  • "Alternative to X" keywords are present for high-traffic competitors
  • "Best X for Y" keywords target high-intent queries ("best MCP hosting platform", "best AI agent hosting")

2.3 Internal Linking

  • High-value pages (pricing, marketplace, products) are reachable within 2 clicks from homepage
  • Blog posts link to product pages where relevant
  • Anchor text is descriptive (not "click here" or "learn more")
  • No orphan pages (every public page has at least one inbound internal link)

Phase 3: GEO / AI Search Optimization

3.1 llms.txt Completeness

curl -s https://dedaluslabs.ai/llms.txt | wc -l  # Should be 100+ lines
curl -s https://dedaluslabs.ai/llms-full.txt | wc -l  # Should be 150+ lines

Both files must include:

  • Company description with key facts (funding, YC, founded date)
  • All products with clear descriptions
  • Pricing breakdown with exact dollar amounts per tier
  • Competitive comparison section (vs Heroku, Modal, E2B, OpenRouter)
  • Use cases section
  • FAQ section with 5+ question/answer pairs
  • Contact information with all social links
  • Key pages with URLs

3.2 FAQ Content for GEO

FAQ content is the highest-return GEO signal. AI search engines surface FAQ schema as direct answers.

  • Home page has FAQPage JSON-LD with 5+ items covering: "What is X?", "How does X work?", "How much does X cost?", "How is X different from Y?"
  • Pricing page has FAQPage JSON-LD that combines on-page FAQ content + GEO-focused comparison questions
  • FAQ answers are 2-3 sentences, self-contained, include specific facts (dollar amounts, counts, names)
  • FAQ questions match actual search queries (verify with "People Also Ask" in Google)
  • FAQ content is visible on the page, not just in JSON-LD (Google penalizes schema-only FAQ)

3.3 AI Citability (134-167 Word Blocks)

For each key product page, verify at least 3 answer blocks that are:

  • Led by a question-based H2
  • Answered directly in the first 1-2 sentences
  • Self-contained (names the subject, no dangling pronouns)
  • Includes at least one concrete fact (dollar amount, percentage, or named entity)
  • 134-167 words in the answer block

3.4 Entity Consistency

  • Brand name is consistent across: page titles, JSON-LD, OG tags, llms.txt, social profiles
  • Founder names appear in JSON-LD Person nodes with sameAs links to social profiles
  • Product names are consistent across pages (no "Agent SDK" vs "Dedalus SDK" confusion)
  • sameAs URLs in Organization schema are all valid (return 200)

Phase 4: Competitive Benchmarking (periodic)

Run monthly or after major SEO/GEO changes. Requires SEMrush or similar tool access.

4.1 Traffic and Authority

  • Record domain authority score (target: trending upward from 23)
  • Record monthly organic traffic (baseline: 15.4K/month)
  • Check referral traffic sources for new opportunities
  • Compare traffic to key competitors (Modal, E2B, Northflank, Koyeb)

4.2 AI Search Presence

  • Query ChatGPT: "What is Dedalus Labs?" -- verify accurate, positive response
  • Query ChatGPT: "Best MCP hosting platform" -- verify Dedalus appears
  • Query Perplexity: "How to deploy an MCP server" -- verify Dedalus cited
  • Query Gemini: "AI agent platform comparison" -- verify Dedalus mentioned
  • Record SEMrush AI Score and mentions count (baseline: track from first measurement)

Dashboard evidence should join AI citations with classic SEO metrics. The reviewed Charles SEO screenshot is not the tweet's promised budget-allocation table; it is a PressWhizz dashboard showing Google AI Overview, ChatGPT, Gemini, Copilot, and Perplexity citation counts alongside domain rating, URL rating, backlinks, referring domains, organic keywords, organic traffic, traffic value, paid keywords, and geography. Use this as a model for the periodic report shape: AI visibility is a first-class output metric, but it should be read next to backlinks and organic-search movement before making spend decisions. Source: X/@Charles_SEO and local image review, 2026-07-04

4.2b Integrated Visibility Dashboard

  • Record citations separately for Google AI Overview, ChatGPT, Gemini, Copilot, and Perplexity
  • Record DR/UR, backlinks, and referring domains next to AI citations
  • Record organic keywords, organic traffic, traffic value, paid keywords, and paid traffic in the same report
  • Keep geography tables visible when evaluating local or regional intent
  • Treat screenshots as outcome evidence, not causal proof that a budget allocation worked

4.3 Competitor Gap Analysis

  • Extract entities from top 3 competitors' pages for target keywords
  • Identify missing entities on Dedalus pages
  • Check if competitors have FAQ schema, comparison pages, or pricing transparency that Dedalus lacks
  • Verify Dedalus is listed on AI tool directories (There's An AI For That, Toolify, etc.)

Phase 5: Page Speed (periodic)

5.1 Core Web Vitals

# Lighthouse audit (requires running website)
pnpm test website --lighthouse
  • LCP (Largest Contentful Paint) < 2.5 seconds
  • INP (Interaction to Next Paint) < 200 milliseconds
  • CLS (Cumulative Layout Shift) < 0.1
  • Initial HTML response keeps critical metadata, canonical tags, robots directives, structured data, and primary content before the first 2MB of fetched bytes; this is not a total page-weight check
  • Avoid bloated inline scripts, oversized menus, or late-injected schema before critical SEO/GEO markup; external resources have separate fetch limits

Scoring

Phase Pass Criteria Weight
1. Technical Foundations All checks pass 30%
2. Content and Keywords 80%+ checks pass 20%
3. GEO / AI Search All critical checks pass 30%
4. Competitive Benchmarking Metrics trending upward 10%
5. Page Speed All Core Web Vitals green 10%

Ship gate: Phases 1 and 3 must fully pass. Phase 2 must pass 80%+. Phases 4 and 5 are tracked but not blocking.