AI SEO / AEO Audit — uppercase (uppercase.co.in)

Answer-Engine Optimization audit for the D2C sustainable travel-gear brand uppercase (Acefour Accessories Pvt Ltd). Built 2026-08-27 on top of business-analysis.md. Every finding is verified against live raw HTML / HTTP headers / robots.txt — not inferred. Where a check could not be performed, it is stated as such.

0. Executive Summary

uppercase is unusually well-prepared for agentic AI discovery relative to most Indian D2C brands of its size. It already serves llms.txt, agents.md, /.well-known/ucp, and sitemap_agentic_discovery.xml, and its robots.txt explicitly allows GPTBot and ChatGPT-User. That foundation is rare and should be preserved.

The gaps are not in bot access — they are in structured pricing, review trust signals, and content extractability:

  1. No /pricing.md (404) — with 725 SKUs under always-on "MRP vs Sale" framing, AI buying

agents cannot cleanly parse price/availability. This is the single biggest agentic-commerce gap.

  1. Product pages have no aggregateRating JSON-LD despite Rivyo reviews being installed — AI

engines see every product as "unreviewed," eroding trust in "[brand] luggage reviews" answers.

  1. Product descriptions are thin (~44 words in sampled PDP) — far below the 200–300 word floor

AI systems favor for extraction.

  1. Empty homepage H1 and no H1 on the About page — weakens the primary topical signal for both

Google AI Overviews and non-Google engines.

  1. No "Where to Buy" page despite a live Amazon store + 6+ EBO cities — misses high-intent

"where to buy uppercase" agent queries.

  1. sitemap_agentic_discovery.xml contains only agents.md — it does not surface products,

collections, or key pages, limiting what agentic crawlers discover.

Overall verdict: Above-average AI-readiness for the category, with 2–3 high-impact, low-effort fixes that would materially improve AI citation and agentic purchase journeys.


1. AI Bot Access (robots.txt) — PASS ✅

Verified from curl https://uppercase.co.in/robots.txt:

  • User-agent: GPTBotAllow: / (explicit)
  • User-agent: ChatGPT-UserAllow: / (explicit)
  • No Disallow for PerplexityBot, ClaudeBot, anthropic-ai, Google-Extended, or Bingbot.

These fall under the default User-agent: * block, which only disallows checkout/cart/account/ policy paths (not content). So all major AI crawlers can read the site.

No action needed. Do not block training-only crawlers unless a deliberate decision is made — current state maximizes citation potential.


2. Machine-Readable Files for AI Agents

FileStatusNote
/robots.txt200Allows GPTBot / ChatGPT-User; safe for all AI bots
/llms.txt200Shopify-generated; instructs agents to use the Shop skill (shop.app/SKILL.md). Well-formed.
/agents.md200Identical content to llms.txt — present.
/.well-known/ucp200Universal Commerce Protocol discovery endpoint live (Shopify). Forward-looking agentic hook.
/sitemap_agentic_discovery.xml200 (weak)Contains only <loc>…/agents.md</loc>. Does not list products, collections, blog, or key pages.
/pricing.md / /pricing.txt404GAP — no structured pricing for AI agents.

Critical gap: missing /pricing.md

AI buying agents increasingly compare products programmatically before a human visits the site. With 725 SKUs priced via JavaScript-rendered "Regular price struck through vs Sale price," and no machine-readable price file, an agent evaluating uppercase against Mokobara/Nasher Miles will hit an opaque wall and may skip or disfavor it. A single markdown file listing category price tiers (already known from business-analysis.md Section 11) would close this.

Weak: sitemap_agentic_discovery.xml

Shopify generated it but populated it only with agents.md. Recommended: ensure key commerce URLs (hero collections, best-sellers, blog hub, store-locator) are also reachable by agentic crawlers — either via this sitemap or via a richer llms.txt section linking to them.


3. Schema Markup (verified via raw HTML, not text extraction)

Method: fetched raw HTML with curl and parsed <script type="application/ld+json"> blocks per page type. This avoids the false "zero schema" trap of markdown/text extraction.

Page type@type(s) detectedAssessment
HomepageOrganization, WebSite, Corporation, VideoObject×5Entity signal good; H1 empty (see §4)
Product (Glyde Pro)Organization, BreadcrumbList, Product, Offer, Corporation, VideoObject×5Price/availability extractable ✅; no aggregateRating
Collection (Eco Trolley Bags)Organization, FAQPage, CorporationFAQ extractable ✅; H1 present ("Eco Trolley Bags") ✅
Blog articleOrganization, BlogPosting/Article, CorporationArticle schema ✅; ~1,600-word body ✅
About pageOrganization, CorporationNo H1 (starts at H2 "Our Brand") ❌

Critical gap: Product aggregateRating missing

The Rivyo review app is installed (per business-analysis.md §15/§16), so star ratings likely render visually on PDPs. But the sampled product HTML contains no aggregateRating / ratingValue JSON-LD. AI engines read structured data, not pixels — they will treat the product as unreviewed. Fix: inject aggregateRating (with ratingCount) + review schema from Rivyo data. This is the highest-leverage trust fix for "best sustainable luggage" / "[brand] reviews" queries.

Present and good

  • BreadcrumbList on product pages → AI understands category hierarchy.
  • Offer (price, availability) on product pages → direct answer for "[product] price" queries.
  • FAQPage on collection pages → direct Q&A extraction.
  • Organization/Corporation everywhere → consistent entity signal.
  • BlogPosting on articles → citable long-form content.

Minor

  • No FAQPage on product pages (could add product-specific Q&A).
  • No HowTo schema (relevant given the packing-guide blog content).
  • Store-locator exists (per business analysis) but LocalBusiness schema per-location not verified.

4. Content Extractability & Heading Structure

CheckResultImpact
Homepage H1Empty <h1></h1>AI uses H1 as primary topic signal — empty = lost topical anchor
About page H1None (first heading is H2 "Our Brand")Same risk on a key authority/entity page
Product H1Present ("Glyde Pro Hard Luggage…")✅ Good
Collection H1Present ("Eco Trolley Bags")✅ Good
Product description depth~44 words (sampled PDP)❌ Below 200–300 word AI floor; thin marketing copy
Blog article depth~1,600 words✅ Strong, citable
Homepage meta descriptionPresent (eco-bags/travel trolley copy)✅ Good
Blog <title> tagNot detected in raw HTML⚠️ Verify title is server-rendered, not JS-injected
FAQ on collection pagesPresent (FAQPage schema)✅ Good

Action: populate the homepage H1 with a real topic statement ("Sustainable Luggage & Travel Gear — uppercase"); add an H1 ("About uppercase") to the About page; expand product descriptions to 200+ words with attributes (material=recycled PET/GRS, capacity, TSA lock, wheels, warranty).


5. Presence — Where AI Looks

ChannelStatusNote
Own domain (D2C)✅ Indexed, schema-richPrimary citation surface
Amazon India store✅ LiveNot structured for AI citation; third-party surface helps
WikipediaNot confirmedNo Wikipedia page found — opportunity for entity authority
Instagram / Facebook / X / LinkedIn✅ 41K / 9.7K / active / 1.7KModerate social proof; helps entity recognition
Press (Inc42, Entrackr, Fortune India, YourStory)✅ MultipleThird-party mentions exist but not engineered as AI citations
Blog hub (travel/packing guides)✅ Active, 1,600-word articlesStrong topical cluster for query fan-out

Observation: uppercase publishes genuine, useful long-form content (packing guides, backpack-vs-suitcase, beach destinations). This is exactly the "topical cluster" coverage Google's fan-out and Perplexity favor. Keeping the blog active (quarterly minimum) is critical — a dormant blog loses AI recency weighting.


6. Competitor AI-Visibility Risk

Direct D2C competitors (Mokobara, Nasher Miles, EUME) are generally more mature in content marketing and structured data. uppercase's differentiators that AI can cite — GRS-certified recycled PET, NYFW/Paris FW 2025 debuts, Jasprit Bumrah investor, Accel $9Mn/$60Mn — are narrative assets not yet structured for extraction. Recommend a dedicated, extractable "sustainability" / "about / press" content block with statistics + dates + named sources so AI systems surface uppercase in "[brand] sustainable luggage" and "who owns [brand]" answers.


7. Prioritized Recommendations

#FixEffortImpactType
1Add /pricing.md (category tiers from business-analysis §11)LowHighAgentic commerce
2Inject aggregateRating + review JSON-LD on PDPs (from Rivyo)Low–MedHighTrust / citation
3Populate homepage H1; add H1 to About pageLowMediumTopical signal
4Expand product descriptions to 200+ words w/ attributesMedMediumExtractability
5Add "Where to Buy" page (D2C + Amazon + EBO cities)LowMediumHigh-intent query
6Enrich sitemap_agentic_discovery.xml / llms.txt with key commerce URLsLowMediumAgent discovery
7Add LocalBusiness schema to store-locator locationsMedMedium"[brand] near me"
8Engineer sustainability/press facts into extractable stat blocks (dates, sources)MedMediumAuthority (GEO +40%)
9Verify blog <title> is server-renderedLowLowIndexability
10Pursue Wikipedia / third-party citation presenceHighMediumEntity authority

8. What Was Verified vs. Not

Verified live (curl + raw HTML parse):

  • robots.txt AI-bot rules, all machine-readable file status codes, per-page-type schema @types,

H1/meta presence, product-description word count, policy-page HTTP codes, blog article depth.

Not verifiable in this session (stated honestly, not assumed):

  • Exact phone/desktop CrUX split (needs API key — see business-analysis §5a).
  • Live aggregate review counts/ratings from Rivyo (schema absent; visual ratings not confirmable

from raw HTML without JS execution).

  • Whether blog <title> is JS-injected vs missing (title regex returned empty on raw HTML).
  • Google Rich Results Test / Schema.org validator runs (no browser tooling for those endpoints).

9. Sources

  • https://uppercase.co.in/robots.txt — AI-bot allow rules (GPTBot, ChatGPT-User)
  • https://uppercase.co.in/llms.txt — agent instructions (200)
  • https://uppercase.co.in/agents.md — agent instructions (200)
  • https://uppercase.co.in/.well-known/ucp — UCP endpoint (200)
  • https://uppercase.co.in/sitemap_agentic_discovery.xml — agentic sitemap (weak: agents.md only)
  • https://uppercase.co.in/products/glyde-pro-hard-luggage-trolley-bag-cabin-dark-silver — Product/Offer/BreadcrumbList schema, no aggregateRating
  • https://uppercase.co.in/collections/eco-trolley-bags — FAQPage schema, H1 present
  • https://uppercase.co.in/pages/about-us — no H1 (starts H2 "Our Brand")
  • https://uppercase.co.in/blogs/blogs/backpack-vs-suitcase-which-is-better — BlogPosting schema, ~1,600 words
  • https://uppercase.co.in/pricing.md — 404 (gap)
  • https://uppercase.co.in/business-analysis.md — catalog, price tiers, tech stack, competitors (this audit's business basis)

Last updated: 2026-08-27. Re-verify schema/agentic-sitemap items after theme or app changes.