Skip to content

feat(agent-readiness): support-journey gaps — no support surface (llms.txt zero refs, /contact & /support serve misleading 200 SPA shell), channels scattered, agent guessed the wrong contact email #4857

Description

@koala73

Context

Fourth agent-journey run (Claude Code · Sonnet 4.6, intent: "I have an issue. Find how to get support or contact worldmonitor.app."): 37 steps / 164s / 851k tokens ($0.68), reliability 76%, link-following 41%, and 47% of the answer came from prior-knowledge guessing. The agent had to reverse-engineer the support model from backend API docs and guessed enterprise@ as the contact — while the real [email protected] sat unnoticed in the /pro JSON-LD ContactPoint and the OpenAPI info.contact.email. Sibling issues: #4850 (signup), #4854 (pricing), #4856 (status endpoint).

Verified gaps (2026-07-05)

  1. Misleading 200s on every support path. /contact, /support, /help, and even /contact.md / /support.md all return 200 text/html — the dashboard SPA shell (the vercel.json catch-all rewrite swallows them; none are in the exclusion list). For an agent this is worse than a 404: the journey fetched /contact, got 200, and could extract nothing.
  2. llms.txt has zero support/contact references (only false hits like "RTL support"). The status page (status.worldmonitor.app) is linked solely from the docs navbar (docs.json:458).
  3. No consolidated support surface. Docs say "contact support" in ~4 places (auth, rate-limits, mcp-quickstart, architecture) without ever saying how. Real channels that exist but are scattered: [email protected] (JSON-LD on /pro, OpenAPI info.contact), [email protected] (30 repo refs), Discord (discord.gg/re63kWKxaz in sameAs), GitHub issues (public repo), in-app form POST /api/leads/v1/submit-contact (documented in api-platform.mdx:165 — but Turnstile-gated per usage-rate-limits.mdx:60, so unusable by agents; fine as an anti-spam choice, should just be labeled as human-only).
  4. No SLA / response-time statements anywhere (accurate finding; pricing.md only says Enterprise gets "dedicated support"). If intentional, state it — "best-effort, no SLA on Free/Pro" is itself an answer an agent can cite.

Fixes

  1. Root support.md (sibling of pricing.md) + docs/support.mdx: channel table (support@ for general, enterprise@ for sales/enterprise, Discord, GitHub issues, in-app form with Turnstile/human-only note, status page + email subscribe), per-tier expectations, and the canonical flows docs currently hand-wave ("contact support" for key rotation, limit increases → link the actual channel).
  2. llms.txt: add a "Support & contact" bullet next to the existing "Keys, plans & limits" line (line ~31) pointing at support.md.
  3. vercel.json: add contact and support to the SPA catch-all exclusion; 301 /contact, /support, /help → the support page. This also fixes the .md-guess misleading-200 (/support.md currently serves dashboard HTML).
  4. Existing machine-readable signals to link, not rebuild: JSON-LD ContactPoint on /pro, OpenAPI info.contact.email.

Dup pre-flight: gh-axi search issues "support page contact" / "support.md" → 0 results.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readinessAgent-discoverability standards (well-known, RFC 8288/9727/9728, WebMCP, x402, etc.)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions