AEO / GEO Audit
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:
- 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.
- Product pages have no
aggregateRatingJSON-LD despite Rivyo reviews being installed — AI
engines see every product as "unreviewed," eroding trust in "[brand] luggage reviews" answers.
- Product descriptions are thin (~44 words in sampled PDP) — far below the 200–300 word floor
AI systems favor for extraction.
- Empty homepage H1 and no H1 on the About page — weakens the primary topical signal for both
Google AI Overviews and non-Google engines.
- No "Where to Buy" page despite a live Amazon store + 6+ EBO cities — misses high-intent
"where to buy uppercase" agent queries.
sitemap_agentic_discovery.xmlcontains onlyagents.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: GPTBot→Allow: /(explicit)User-agent: ChatGPT-User→Allow: /(explicit)- No
Disallowfor 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
| File | Status | Note |
|---|---|---|
/robots.txt | 200 | Allows GPTBot / ChatGPT-User; safe for all AI bots |
/llms.txt | 200 | Shopify-generated; instructs agents to use the Shop skill (shop.app/SKILL.md). Well-formed. |
/agents.md | 200 | Identical content to llms.txt — present. |
/.well-known/ucp | 200 | Universal Commerce Protocol discovery endpoint live (Shopify). Forward-looking agentic hook. |
/sitemap_agentic_discovery.xml | 200 (weak) | Contains only <loc>…/agents.md</loc>. Does not list products, collections, blog, or key pages. |
/pricing.md / /pricing.txt | 404 | GAP — 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) detected | Assessment |
|---|---|---|
| Homepage | Organization, WebSite, Corporation, VideoObject×5 | Entity signal good; H1 empty (see §4) |
| Product (Glyde Pro) | Organization, BreadcrumbList, Product, Offer, Corporation, VideoObject×5 | Price/availability extractable ✅; no aggregateRating ❌ |
| Collection (Eco Trolley Bags) | Organization, FAQPage, Corporation | FAQ extractable ✅; H1 present ("Eco Trolley Bags") ✅ |
| Blog article | Organization, BlogPosting/Article, Corporation | Article schema ✅; ~1,600-word body ✅ |
| About page | Organization, Corporation | No 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
BreadcrumbListon product pages → AI understands category hierarchy.Offer(price, availability) on product pages → direct answer for "[product] price" queries.FAQPageon collection pages → direct Q&A extraction.Organization/Corporationeverywhere → consistent entity signal.BlogPostingon articles → citable long-form content.
Minor
- No
FAQPageon product pages (could add product-specific Q&A). - No
HowToschema (relevant given the packing-guide blog content). - Store-locator exists (per business analysis) but
LocalBusinessschema per-location not verified.
4. Content Extractability & Heading Structure
| Check | Result | Impact |
|---|---|---|
| Homepage H1 | Empty <h1></h1> | AI uses H1 as primary topic signal — empty = lost topical anchor |
| About page H1 | None (first heading is H2 "Our Brand") | Same risk on a key authority/entity page |
| Product H1 | Present ("Glyde Pro Hard Luggage…") | ✅ Good |
| Collection H1 | Present ("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 description | Present (eco-bags/travel trolley copy) | ✅ Good |
Blog <title> tag | Not detected in raw HTML | ⚠️ Verify title is server-rendered, not JS-injected |
| FAQ on collection pages | Present (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
| Channel | Status | Note |
|---|---|---|
| Own domain (D2C) | ✅ Indexed, schema-rich | Primary citation surface |
| Amazon India store | ✅ Live | Not structured for AI citation; third-party surface helps |
| Wikipedia | Not confirmed | No Wikipedia page found — opportunity for entity authority |
| Instagram / Facebook / X / LinkedIn | ✅ 41K / 9.7K / active / 1.7K | Moderate social proof; helps entity recognition |
| Press (Inc42, Entrackr, Fortune India, YourStory) | ✅ Multiple | Third-party mentions exist but not engineered as AI citations |
| Blog hub (travel/packing guides) | ✅ Active, 1,600-word articles | Strong 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
| # | Fix | Effort | Impact | Type |
|---|---|---|---|---|
| 1 | Add /pricing.md (category tiers from business-analysis §11) | Low | High | Agentic commerce |
| 2 | Inject aggregateRating + review JSON-LD on PDPs (from Rivyo) | Low–Med | High | Trust / citation |
| 3 | Populate homepage H1; add H1 to About page | Low | Medium | Topical signal |
| 4 | Expand product descriptions to 200+ words w/ attributes | Med | Medium | Extractability |
| 5 | Add "Where to Buy" page (D2C + Amazon + EBO cities) | Low | Medium | High-intent query |
| 6 | Enrich sitemap_agentic_discovery.xml / llms.txt with key commerce URLs | Low | Medium | Agent discovery |
| 7 | Add LocalBusiness schema to store-locator locations | Med | Medium | "[brand] near me" |
| 8 | Engineer sustainability/press facts into extractable stat blocks (dates, sources) | Med | Medium | Authority (GEO +40%) |
| 9 | Verify blog <title> is server-rendered | Low | Low | Indexability |
| 10 | Pursue Wikipedia / third-party citation presence | High | Medium | Entity 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.