ENUK

Example paid report

What you actually get

A real example report for faddom.com — a WordPress + Elementor SaaS site. Same prompt and output format you get when you pay.

🟢 Markdown Audit Report~1200 words. Executive summary, prioritized action plan, code examples. Personalized to detected stack.

Executive Summary

Faddom’s AI Agent Readiness score is 52/100 (UX 64, Discovery 34), which indicates moderate human usability but weak machine discoverability and agent interoperability. The most immediate issues are in Elementor-generated interactive markup (non-semantic clickable elements, missing ARIA/tabindex, unlabeled form controls) and missing AI discovery standards (llms-full.txt, markdown negotiation, .well-known manifests).

Business risk is twofold: (1) AI assistants and crawlers will miss or misinterpret key conversion actions (demo/contact/report CTAs), reducing qualified AI-sourced traffic and lead capture; and (2) absence of machine-readable capability metadata means Faddom will be underrepresented in agent-mediated workflows compared with competitors that publish these standards.

Against current enterprise baselines, a score in the low-50s is below “agent-ready” expectations (typically 70+), especially for B2B SaaS brands that rely on high-intent discovery and self-serve evaluation.


Audit Results

1) Semantic Interactive Elements (Warn, score 74)

Metrics: 181 non-semantic clickables; 163 without ARIA/tabindex.
Examples: span.elementor-button-content-wrapper, span.elementor-button-text, div.elementor-element.elementor-element-b2dc2f1.

Business impact: AI agents and assistive tech may not reliably identify CTAs as actionable, reducing successful completion of “request demo,” “access report,” and navigation flows.
Severity: P1
Affected AI user flows: CTA click-through, menu interactions, modal close controls, form initiation.
WordPress/Elementor notes: This pattern is common when Elementor widgets or custom JS bind clicks to wrapper <div>/<span> nodes. Fixes should be done in Elementor widget settings first, then child-theme/JS fallbacks for legacy templates.


2) ARIA Roles on Non-Semantic Elements (Fail, score 10)

Metrics: 181 clickable non-semantic elements; only 18 have role+tabindex; 163 missing ARIA behavior.

Business impact: Agents parsing DOM semantics cannot infer intent of controls, causing navigation failure and lower confidence in autonomous task execution.
Severity: P0
Affected AI user flows: Header nav expansion, dismiss controls (close-bar), in-page toggles.
WordPress/Elementor notes: Elementor Nav Menu and Icon widgets can emit proper <button> in many cases, but custom icon wrappers often remain <div>. Resolve via widget replacement and controlled DOM post-processing in a child theme.


3) Label–Input Associations (Warn, score 63)

Metrics: 8 inputs total; 3 unlabeled (#form-field-first_name, #form-field-email, #form-field-description).

Business impact: Form completion reliability drops for both accessibility tooling and AI form-fill agents; placeholders are not stable accessible names and may disappear on input.
Severity: P1
Affected AI user flows: Contact/demo form auto-fill and submission.
WordPress/Elementor notes: Elementor Form widget supports visible labels and custom labels per field. This should be fixed in the Form widget panel, not by ad hoc frontend scripts.


4) Tap Target Size (Warn, score 73)

Metrics: 21/78 visible interactives below 24×24; examples include button#e-n-menu-dropdown-icon-1631 and -1632 at 13×26, and tiny skip-link rendering.

Business impact: Small targets reduce successful activation by touch users and pixel-coordinate agents, increasing misclicks and abandonment in mobile nav flows.
Severity: P2
Affected AI user flows: Mobile menu expansion, skip-link activation, secondary utility controls.
WordPress/Elementor notes: Address in Elementor global button/nav spacing and theme CSS overrides; avoid per-page inline tweaks.


5) robots.txt — AI Bot Rules (Warn, score 29)

Metrics: Explicit rules for 2/7 bots; missing GPTBot, ClaudeBot, anthropic-ai, Google-Extended, CCBot.

Business impact: Policy ambiguity leads to inconsistent crawling behavior across AI platforms and weak governance over content usage.
Severity: P1
Affected AI user flows: Content ingestion and citation by AI assistants.
WordPress/Kinsta/Cloudflare notes: On Kinsta + Cloudflare, set robots centrally and avoid plugin conflicts (Yoast/RankMath virtual robots vs physical robots.txt).


6) llms.txt Structure (Warn, score 60)

Metrics: file exists, but missing blockquote summary, sections, and markdown links.

Business impact: Agents find the endpoint but cannot extract prioritized canonical resources; discoverability remains low despite file presence.
Severity: P1
Affected AI user flows: Knowledge grounding and source selection.
WordPress notes: Generate from WP content model (key pages, docs, legal, product) via scheduled task/plugin route.


7) llms-full.txt Missing (Fail, score 0)

Metrics: 404 at /llms-full.txt.

Business impact: Agents must crawl many pages instead of one corpus file, lowering ingestion completeness and freshness.
Severity: P2
Affected AI user flows: Bulk knowledge import, long-context retrieval.
WordPress notes: Best implemented as generated static artifact (WP-CLI cron job) cached via Cloudflare.


8) Markdown Content Negotiation Missing (Fail, score 0)

Metrics: Accept: text/markdown returns HTML.

Business impact: Prevents efficient machine consumption of page content and increases parsing errors.
Severity: P2
Affected AI user flows: Direct fetch-and-summarize of canonical pages.
Kinsta/Cloudflare/WordPress notes: Implement rewrite/endpoint strategy (e.g., ?format=md or .md routes) instead of true HTTP conneg if hosting stack limitations apply.


9) Missing .well-known Agent Capability Files (Fail: MCP card, agent-skills, OAuth discovery, API catalog, WebMCP signals)

Business impact: Agents cannot discover tool/action interfaces programmatically, reducing ability to execute high-intent tasks (query systems, authenticated operations, workflow invocation).
Severity: P2 now, P1 strategic for 2026 readiness.
Affected AI user flows: Tool invocation, authenticated integration, capability discovery.
Stack notes: Add static JSON files via WordPress rewrite/static delivery; if product APIs exist off-domain, publish pointers at root domain.


Prioritized Action Plan

  1. Fix non-semantic clickables + missing ARIA/tabindex in Elementor templates

    • Priority: P0
    • Effort: M
    • Score impact: +10 to +15
    • Replace clickable wrapper div/span patterns with real <a>/<button> widgets; patch remaining legacy nodes via child-theme JS/PHP hooks.
  2. Repair form labeling in Elementor Form widgets

    • Priority: P1
    • Effort: S
    • Score impact: +4 to +6
    • Enable visible labels and explicit field labels for name/email/description; keep placeholders as helper text only.
  3. Standardize mobile tap target sizes in nav and utility controls

    • Priority: P1
    • Effort: S
    • Score impact: +3 to +5
    • Enforce min 24×24 (44×44 for primary CTAs) through Elementor global styles + child-theme CSS.
  4. Publish explicit AI crawler directives in robots.txt

    • Priority: P1
    • Effort: S
    • Score impact: +4 to +6
    • Add intentional Allow/Disallow for GPTBot, ClaudeBot, anthropic-ai, Google-Extended, CCBot.
  5. Rebuild llms.txt to spec + add llms-full.txt

    • Priority: P1/P2
    • Effort: M
    • Score impact: +8 to +12
    • Include H1, summary blockquote, H2 sections, markdown links; generate full corpus export nightly.
  6. Introduce markdown endpoint strategy for key pages

    • Priority: P2
    • Effort: M
    • Score impact: +4 to +7
    • Serve markdown at predictable paths (/page.md or ?format=md) with correct Content-Type.
  7. Publish .well-known capability manifests (mcp, agent-skills, optional OAuth/API catalog)

    • Priority: P2 (strategic)
    • Effort: M/L
    • Score impact: +6 to +10
    • Start with static JSON metadata; expand as product APIs/tooling mature.

Implementation Examples

A) Elementor/WordPress: fix clickable non-semantic elements

// wp-content/themes/your-child-theme/functions.php
add_action('wp_footer', function () { ?>
<script>
document.querySelectorAll('div.close-bar.elementor-widget-icon, span.elementor-button-content-wrapper')
  .forEach(el => {
    if (!el.hasAttribute('role')) el.setAttribute('role','button');
    if (!el.hasAttribute('tabindex')) el.setAttribute('tabindex','0');
    el.addEventListener('keydown', (e) => {
      if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); el.click(); }
    });
  });
</script>
<?php });

Elementor-side (preferred):

  • Edit affected widget → Advanced → HTML Tag: set to button or a where possible.
  • For icon close control (.elementor-element-b2dc2f1), replace Icon widget click handler with Button widget styled as icon-only button.

B) Elementor Form labels

In Elementor Form widget:

  • Field settings for first_name, email, description:
    • Label: set explicit text
    • Show Label: Yes
    • Keep placeholder optional.

If forced visually hidden labels:

.elementor-form .screen-reader-text{
  position:absolute!important; width:1px; height:1px; overflow:hidden;
  clip:rect(1px,1px,1px,1px); white-space:nowrap;
}

C) Tap target fixes

/* Child theme style.css */
button.e-n-menu-dropdown-icon,
a.ea11y-skip-to-content-link {
  min-width: 24px;
  min-height: 24px;
  padding: 8px;
}
.elementor-button, .elementor-icon {
  min-width: 44px; min-height: 44px;
}

D) robots.txt explicit AI rules

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: anthropic-ai
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: CCBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /

(Adjust to policy. Keep one canonical source; avoid duplicate plugin-generated directives.)

E) llms.txt and llms-full.txt

/llms.txt example:

# Faddom AI Access Guide

> Canonical resources for understanding Faddom product capabilities, deployment, pricing, and contact workflows.

## Product
- [Platform Overview](https://faddom.com/)
- [Use Cases](https://faddom.com/use-cases/)
- [Pricing](https://faddom.com/pricing/)

## Learn
- [Blog](https://faddom.com/blog/)
- [Documentation](https://docs.faddom.com/)

Generate /llms-full.txt via WP-CLI export job and serve as cached static text.

F) .well-known/mcp.json starter

{
  "name": "Faddom",
  "description": "Discovery metadata for Faddom agent-invokable capabilities.",
  "url": "https://faddom.com",
  "tools": []
}

Place under web root .well-known/ via deploy pipeline or MU-plugin route.


Verification

  1. Re-run the same AI Agent Readiness audit after deployment to production (not staging blocked by robots/auth).
  2. Confirm expected metric deltas:
    • aria-roles: missingAria from 163 → near 0
    • label-input: unlabeled from 3 → 0
    • tap-target-size: tooSmall from 21 → <5
    • robots-ai-bots: botsWithRules from 2 → 7
    • llms-txt: hasSummary true, sections >=1, linkCount >0
    • llms-full.txt: HTTP 200
    • markdown endpoint: returns text/markdown on designated route
    • .well-known/*: HTTP 200 + valid JSON.
  3. Validate with manual checks:
    • Keyboard-only navigation (Tab/Enter/Space) on nav, CTA, modal close.
    • Screen reader name announcement for the three form controls.
    • Mobile viewport tap testing for dropdown icons.
  4. Track business outcomes for 30 days:
    • AI referral traffic volume
    • Form completion rate on AI-referred sessions
    • Crawl/log visibility for declared bots.

Want one for your site?

Run a free scan, then pay what you want from $1. 90% goes to Ukraine 🇺🇦.

Run a scan See developer specification