CrawlProof

Public share link

AEO Audit for profullstack.com

Target: https://profullstack.com/
Score: 40 / 100
Generated: 2026-05-23T11:06:52.069Z
Pages crawled: 9
Findings: 34 pass · 72 warn · 7 fail · 0 unknown


1. Crawl Summary

2. Data Found

Data PointFound?SourceNotes
PricingYesPricing pagehttps://profullstack.com/plans
Customer logosNo
Social proofNo
Recent launchesYesPress/news pageshttps://profullstack.com/blog
Blog post activityYesBloghttps://profullstack.com/blog
New hiresNoOften only on a /blog/team or LinkedIn page
Headline copyYesHomepageWe build web products with the same rigor I learned inside Yahoo!, IBM, and PayPal.
PositioningYesHomepageplatform for
Executive teamNo
Product/service descriptionsYesHomepageFrom meta description
Case studies or testimonialsYesNavigation links
Contact/demo/signup pathsYesNavigation links

3. Homepage Audit

  • ⚠️ Multiple H1s found 7 <h1> tags. Prefer one focused H1 per page.
  • ⚠️ Missing canonical link Add <link rel="canonical" href="https://your-domain"> to prevent dup-content confusion.
  • Open Graph: missing title, description, image
  • ⚠️ No Twitter Card tags Add twitter:card, twitter:title, twitter:description, twitter:image for richer previews in social and AI agent surfaces.
  • Homepage fetched successfully HTTP 200 · 50436 bytes · 109ms
  • Page load time: 0.11s Fast — well within AI crawler budgets.
  • declared
  • <title> present (43 chars)
  • Meta description present (53 chars)
  • Critical content is server-rendered Raw and rendered text are within 19% of each other.
  • Alt text coverage: 100% 12/12 images have alt text.
  • Content volume: 936 words Substantive content — AI models have enough to summarize and recommend.
  • Heading structure: 26 (h1:7, h2:1, h3:18) Multiple headings help AI chunk and outline your page.
  • Internal links: 18 18 internal + 6 external links help crawlers navigate.
  • Favicon declared

4. Content Quality

  • 5 heading-level skip(s) Heading levels jump (e.g. h2 → h4). AI outline parsers expect monotonic nesting.
  • Snippet-ready blocks: 0 (ul:0, ol:0, table:0) Add bullet lists, numbered steps, or a comparison table. Answer engines prefer structured blocks over prose.
  • ⚠️ No question-style headings found Phrase at least one heading as a user question (e.g. 'How does pricing work?') to match conversational AI queries.
  • ⚠️ No date signal found Add or article:published_time meta. AI ranking weights freshness.
  • ⚠️ No author byline found Add <meta name="author" content="Name"> or a visible byline with rel="author". Strengthens E-E-A-T signals.
  • Text-to-HTML ratio: 14.3% Visible text density is healthy for AI extraction.

5. Schema / Structured Data Audit

  • No JSON-LD structured data found Add JSON-LD blocks (Organization, SoftwareApplication, FAQPage, BreadcrumbList) so AI answer engines can ingest your data without guessing.
  • ⚠️ Modern image formats: 0% (0/12 webp/avif) 11 legacy (png/jpg/gif) image(s). Convert hero/above-the-fold images to WebP or AVIF.
  • Lazy loading: 0% (0/12) Add loading="lazy" to below-the-fold images to reduce initial payload.
  • Explicit dimensions: 0% (0/12) Add width and height attributes on tags to prevent CLS.
  • ⚠️ Responsive srcset: 0/12 Use srcset/sizes to serve appropriately-sized images on mobile. Reduces wasted bytes.
  • External nofollow: 0% (0/6) Healthy mix of follow and nofollow outbound links.
  • No broken links in first 17 HEAD-probed the first 20 unique homepage links — all 2xx/3xx.

7. Performance

  • ⚠️ 1 render-blocking script(s) in Move non-critical scripts to end of or add defer/async.
  • Page size: 49 KB Compact HTML payload — well within AI crawler limits.
  • Resource requests: 22 (scripts:8, css:2, img:12) Reasonable request count.
  • Inline JS+CSS bulk: 30 KB Inline payload is modest.
  • Response time: 109ms Fast first response.
  • Cache-Control set Cache-Control: s-maxage=31536000

8. Security

  • ⚠️ HSTS missing Add Strict-Transport-Security: max-age=31536000; includeSubDomains once you're confident in https.
  • ⚠️ Content-Security-Policy missing Define a CSP to limit script sources — large reduction in XSS surface.
  • ⚠️ X-Frame-Options missing Add X-Frame-Options: SAMEORIGIN (or use CSP frame-ancestors) to prevent clickjacking.
  • ⚠️ X-Content-Type-Options missing Add X-Content-Type-Options: nosniff to block MIME-type sniffing.
  • ⚠️ Referrer-Policy missing Add Referrer-Policy: strict-origin-when-cross-origin for safer referrers.
  • ⚠️ Permissions-Policy missing Restrict browser features (camera, mic, geolocation) you don't use.
  • Served over HTTPS
  • No mixed content detected

9. robots.txt and sitemap.xml Audit

  • sitemap.xml not found Add /sitemap.xml — required for reliable AI/SERP discovery.
  • ⚠️ robots.txt not found No /robots.txt was reachable. Add one explicitly — silence is read differently by different crawlers, and you lose the chance to control AI bots.

10. LLM / AI Crawler Accessibility

  • ⚠️ llms.txt missing Add /llms.txt — a concise, link-rich summary that helps LLMs orient on your site.
  • ⚠️ skill.md missing Add /skill.md describing what your site lets agents do — speeds up agent task routing.
  • ⚠️ /.well-known/security.txt missing Publish a /.well-known/security.txt with at least a Contact: line. Crawlers and security researchers expect it; AI systems use it as a trust signal.

11. Positioning Clarity

  • ⚠️ No clear About/Team link Add an About or Team link in the nav or footer so LLMs can identify the company.
  • H1 communicates value We build web products with the same rigor I learned inside Yahoo!, IBM, and PayPal.
  • Value-prop language detected
  • Pricing path discoverable
  • Contact / signup path discoverable

12. Missing or Hard-to-Find Information

  • ⚠️ 4 data point(s) could not be found from public pages · Customer logos · Social proof · New hires · Executive team
  • ⚠️ Publish a sitemap.xml Generate /sitemap.xml automatically (Next.js: app/sitemap.ts). Include every canonical URL.

  • ⚠️ Add JSON-LD structured data Start with Organization on the root layout and SoftwareApplication or Product on /pricing. Add FAQPage on any FAQ section.

  • ⚠️ Fix heading-level skips Don't jump from h2 to h4. AI outline parsers expect monotonic nesting — keep heading depth contiguous.

  • ⚠️ Add lists or comparison tables Answer engines lift bulleted lists, numbered steps, and tables verbatim. Add at least 2 snippet-ready blocks to the homepage.

  • ⚠️ Add /llms.txt A short Markdown-flavored summary at the root. Include your H1, value prop, top 5–10 links, and pricing summary.

  • ⚠️ Make your About/Team page reachable Add a top-nav or footer link to /about or /team so LLMs can identify the entity behind the site.

  • ⚠️ Create a robots.txt Even a minimal robots.txt is better than none. Always reference your Sitemap and explicitly address AI bots.

  • ⚠️ Phrase a heading as a user question Use headings like 'How does pricing work?' or 'Who is this for?' — they map directly to conversational AI queries.

  • ⚠️ Publish a date signal Add <time datetime="2026-05-17"> or <meta property="article:published_time">. AI ranking heavily weights freshness.

  • ⚠️ Add a single, focused H1 to the homepage One <h1> per page. Write it as 'We help [audience] [do thing].' so an LLM can quote it verbatim.

  • ⚠️ Add a canonical link Prevents dup-content drift and tells AI crawlers which URL is authoritative.

    <link rel="canonical" href="https://yoursite.com/" />
    
  • ⚠️ Complete Open Graph tags AI bots use OG for fast disambiguation. Add all four:

    <meta property="og:title" content="Your Page Title" />
    <meta property="og:description" content="50–160 char description of this page." />
    <meta property="og:image" content="https://yoursite.com/og-image.jpg" />
    <meta property="og:url" content="https://yoursite.com/" />
    <meta property="og:type" content="website" />
    <meta property="og:site_name" content="YourSite" />
    
  • ⚠️ Add Twitter Card meta tags Used by social platforms and AI agents for richer previews.

    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="Your Page Title" />
    <meta name="twitter:description" content="50–160 char description." />
    <meta name="twitter:image" content="https://yoursite.com/og-image.jpg" />
    
  • ⚠️ Use modern image formats Serve WebP or AVIF for hero/above-the-fold images. Keep legacy PNG/JPG only as fallbacks.

  • ⚠️ Lazy-load below-the-fold images Add loading="lazy" on <img> tags that aren't in the initial viewport. Reduces first-paint payload.

  • ⚠️ Set width/height on images Explicit dimensions prevent Cumulative Layout Shift and help AI extractors reserve space correctly.

  • ⚠️ Add /skill.md Describe what an agent can do with your site (e.g., 'Search docs', 'Look up pricing'). Useful for agentic flows.

  • ⚠️ Publish /.well-known/security.txt A security contact builds trust with crawlers and researchers. Minimal example:

    Contact: mailto:security@yourdomain.com
    Expires: 2027-01-01T00:00:00.000Z
    Preferred-Languages: en
    
  • ⚠️ Eliminate render-blocking head scripts Add defer or async to any <script src="…"> in <head>, or move it to the end of <body>.

  • ⚠️ Enable HSTS Add Strict-Transport-Security: max-age=31536000; includeSubDomains once you're confident every subdomain is https-ready.

  • ⚠️ Define a Content-Security-Policy Start with Content-Security-Policy-Report-Only to learn safe sources, then enforce. Cuts XSS blast radius.

  • ⚠️ Declare an author byline Add <meta name="author" content="Name"> or a visible byline with rel="author". Combine with Person JSON-LD for E-E-A-T.

  • ⚠️ Use srcset/sizes for responsive images Serve appropriately-sized images per viewport — saves bytes on mobile crawls.

  • ⚠️ Add X-Frame-Options X-Frame-Options: SAMEORIGIN (or CSP frame-ancestors) blocks clickjacking via iframe embeds.

  • ⚠️ Add X-Content-Type-Options X-Content-Type-Options: nosniff prevents browsers from MIME-sniffing responses.

  • ⚠️ Set a Referrer-Policy Referrer-Policy: strict-origin-when-cross-origin is a safe default.

  • ⚠️ Set a Permissions-Policy Restrict browser features you don't use, e.g. Permissions-Policy: camera=(), microphone=(), geolocation=().

14. Priority To-Do List

  • P1 — Publish a sitemap.xml Generate /sitemap.xml automatically (Next.js: app/sitemap.ts). Include every canonical URL.

  • P1 — Add JSON-LD structured data Start with Organization on the root layout and SoftwareApplication or Product on /pricing. Add FAQPage on any FAQ section.

  • P2 — Fix heading-level skips Don't jump from h2 to h4. AI outline parsers expect monotonic nesting — keep heading depth contiguous.

  • P2 — Add lists or comparison tables Answer engines lift bulleted lists, numbered steps, and tables verbatim. Add at least 2 snippet-ready blocks to the homepage.

  • P2 — Add /llms.txt A short Markdown-flavored summary at the root. Include your H1, value prop, top 5–10 links, and pricing summary.

  • P2 — Make your About/Team page reachable Add a top-nav or footer link to /about or /team so LLMs can identify the entity behind the site.

  • P2 — Create a robots.txt Even a minimal robots.txt is better than none. Always reference your Sitemap and explicitly address AI bots.

  • P3 — Phrase a heading as a user question Use headings like 'How does pricing work?' or 'Who is this for?' — they map directly to conversational AI queries.

  • P3 — Publish a date signal Add <time datetime="2026-05-17"> or <meta property="article:published_time">. AI ranking heavily weights freshness.

  • P3 — Add a single, focused H1 to the homepage One <h1> per page. Write it as 'We help [audience] [do thing].' so an LLM can quote it verbatim.

  • P3 — Add a canonical link Prevents dup-content drift and tells AI crawlers which URL is authoritative.

    ```html
    <link rel="canonical" href="https://yoursite.com/" />
    ```
    
  • P3 — Complete Open Graph tags AI bots use OG for fast disambiguation. Add all four:

    ```html
    <meta property="og:title" content="Your Page Title" />
    <meta property="og:description" content="50–160 char description of this page." />
    <meta property="og:image" content="https://yoursite.com/og-image.jpg" />
    <meta property="og:url" content="https://yoursite.com/" />
    <meta property="og:type" content="website" />
    <meta property="og:site_name" content="YourSite" />
    ```
    
  • P3 — Add Twitter Card meta tags Used by social platforms and AI agents for richer previews.

    ```html
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="Your Page Title" />
    <meta name="twitter:description" content="50–160 char description." />
    <meta name="twitter:image" content="https://yoursite.com/og-image.jpg" />
    ```
    
  • P3 — Use modern image formats Serve WebP or AVIF for hero/above-the-fold images. Keep legacy PNG/JPG only as fallbacks.

  • P3 — Lazy-load below-the-fold images Add loading="lazy" on <img> tags that aren't in the initial viewport. Reduces first-paint payload.

  • P3 — Set width/height on images Explicit dimensions prevent Cumulative Layout Shift and help AI extractors reserve space correctly.

  • P3 — Add /skill.md Describe what an agent can do with your site (e.g., 'Search docs', 'Look up pricing'). Useful for agentic flows.

  • P3 — Publish /.well-known/security.txt A security contact builds trust with crawlers and researchers. Minimal example:

    ```
    Contact: mailto:security@yourdomain.com
    Expires: 2027-01-01T00:00:00.000Z
    Preferred-Languages: en
    ```
    
  • P3 — Eliminate render-blocking head scripts Add defer or async to any <script src="…"> in <head>, or move it to the end of <body>.

  • P3 — Enable HSTS Add Strict-Transport-Security: max-age=31536000; includeSubDomains once you're confident every subdomain is https-ready.


Report by CrawlProof. Reusable after every major website change.