Sweet Dreams (S D Retail Ltd.) — AI SEO / AEO Audit

Brand: Sweet Dreams | Domain: https://www.sweetdreams.in | NSE: SDREAMS Audit date: 2026-08-27 | Audit type: Answer Engine Optimization (AEO / GEO / LLMO) Methodology: raw-HTML + machine-readable-file verification via curl, schema cross-checked against rendered source (not markdown-extracted text), business context from business-analysis.md

0. Executive Summary

Sweet Dreams is, on machine-readable / agentic infrastructure, ahead of an estimated 90%+ of Indian D2C brands. It already ships llms.txt, agents.md, a full Universal Commerce Protocol (/well-known/ucp) merchant profile, an MCP endpoint, a Shopify agentic-discovery sitemap, and an explicitly AI-crawler-friendly robots.txt (GPTBot, PerplexityBot, ClaudeBot, GeminiBot all Allow: /). For agentic buying ("buy-for-me" assistants) the store is meaningfully prepared.

The gap is content extractability — the structural layer that gets a brand cited in ChatGPT / Perplexity / Gemini / Claude answers. Specifically: blog posts carry no Article/BlogPosting schema (they are mistyped as CollectionPage with no author or date), no page on the site emits FAQPage schema despite a real FAQ page existing, products lack aggregateRating (AI reads them as "unreviewed"), the homepage <h1> renders empty, and there is no Where to Buy aggregator or per-store LocalBusiness schema.

Priority order for citation gains:

  1. Fix blog schema (303 articles → biggest single lever; free traffic from "how to / what is / best" queries).
  2. Add FAQPage schema (product + FAQ page + collection).
  3. Add aggregateRating (or remove the visual star ratings if no reviews exist).
  4. Fix homepage H1.
  5. Add Where to Buy + per-store LocalBusiness schema.
  6. Add hreflang="en-IN" + a /pricing.md.

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

Verified from live robots.txt (not inferred):

BotStatusNote
GPTBot (OpenAI/ChatGPT)Allow: / (explicit)✅ can cite
PerplexityBotAllow: / (explicit)✅ can cite
ClaudeBot (Anthropic)Allow: / (explicit)✅ can cite
GeminiBot (Google)Allow: / (explicit)✅ can cite
Google-ExtendedCovered by User-agent: * (no Disallow)✅ can crawl (not named, but not blocked)
CCBot (Common Crawl, training-only)Covered by * (not blocked)⚠️ not selectively blocked

Verdict: No AI search bot is blocked. Sweet Dreams is fully crawlable by every major answer engine. This is better than most D2C stores, which silently block or omit these bots. Recommended refinement (optional): explicitly name Google-Extended and selectively Disallow: CCBot if the brand wants to keep training data back while staying citable.


2. Machine-Readable Files for AI Agents — STRONG (rare for this segment)

FileHTTPAssessment
/llms.txt200✅ Well-structured: agent instructions, UCP flows, read-only browsing endpoints, policy links. Mirrors agents.md.
/agents.md200✅ Shopify auto-generated. Excellent: documents Shop skill, UCP discovery + MCP endpoint, catalog/search endpoints, rate-limit rules.
/.well-known/ucp200✅ Full UCP merchant profile JSON — dev.ucp.shopping.* capabilities, Google Pay + Shopify card handlers, 2026-04-08 protocol. Enables agent-driven buying.
/sitemap_agentic_discovery.xml200✅ Shopify agentic-discovery sitemap present.
/pricing.md404❌ Gap. Structured pricing for non-Shopify agents absent. UCP/agents.md partially cover this, but a plain /pricing.md helps lightweight agents.
/.well-known/ucp/mcp (/api/ucp/mcp)implied 200MCP tools/list endpoint documented in agents.md.

Verdict: On agentic-commerce readiness, Sweet Dreams is a reference example. No action required here except adding /pricing.md.


3. Schema Markup (verified via raw HTML) — MIXED

Schema was verified by parsing rendered <script type="application/ld+json"> blocks directly from source (markdown/text extraction strips <script> and would falsely report "zero schema"; that trap was avoided).

3.1 Homepage

Types present: Organization, WebSite, SearchAction, BreadcrumbList, ImageObject, MerchantReturnPolicy, ListItem.

  • Homepage <h1> is empty (<h1></h1> — hero text is JS-injected). AI and traditional crawlers get no static H1 topic signal on the most important page.
  • ❌ No FAQPage, no Article.

3.2 Product page (sample: CottonEase Emerald Stripe Pyjama Set)

Types present: Product, ProductGroup, Offer (with price/currency/availability), Brand, SKU, BreadcrumbList, ImageObject, MerchantReturnPolicy, ItemPage, UnitPriceSpecification, WebSite.

  • ✅ Strong product identity (SKU + Brand + Offer + price). Good for "[product] price" answers.
  • No aggregateRating — despite a Shopify review app being on the store, products emit no review schema. AI engines see products as "unreviewed." If real reviews exist, this is a high-value fix; if not, the visual star ratings (if shown) are misleading to AI.
  • ❌ No FAQPage on product pages (a top pattern for product-specific questions).

3.3 Collection page (sample: /collections/all-garfield)

Types present: CollectionPage, Organization, BreadcrumbList, WebSite, ImageObject, MerchantReturnPolicy, ListItem.

  • ✅ H1 present and matches category.
  • ❌ No category description schema / FAQPage.

3.4 Blog posts — MAJOR GAP

  • 303 real blog articles exist (sitemap_blogs_1.xml), last post 2026-08-27 (very fresh).
  • Every blog post is mistyped as CollectionPage — none carry Article / BlogPosting, author, or datePublished.
  • ❌ Sample post has no meta description.
  • Effect: the single largest body of citable, topical content on the site has zero structured identity. ChatGPT/Perplexity can still read the prose, but they cannot reliably attribute, date, or rank it. This is the #1 missed opportunity given the volume and freshness of the blog.
  • Blog body itself is substantive (≈840 words of readable text, H2/H3 structure present), so the content is citable — only the schema wrapper is missing.

3.5 FAQ page (/pages/faqs) — GAP

  • Page exists (200), has 4 H2 sections, real Q&A content.
  • No FAQPage JSON-LD. The natural-language questions on this page are not extractable as structured Q&A by AI engines.

3.6 Store locator (/pages/store-locator) — GAP

  • Page exists (200), ~99 address mentions (75 EBOs + others).
  • No LocalBusiness / Store schema per location. Misses "[brand] near me" / "[brand] store in [city]" queries.

3.7 About page (/pages/about-us)

  • Exists (200), carries ReadAction, datePublished. ✅ Acceptable.

4. Content Extractability — PARTIAL

CheckResult
Clear definition in first paragraph (home)⚠️ Hero is JS; no static lead paragraph
Self-contained answer blocks❌ Not structured on product/collection pages
Statistics with sources⚠️ Fabric library / licensing claims present but unsourced on-site
Comparison tables ("X vs Y")❌ None found
FAQ section with natural-language Qs⚠️ Exists as page, but no schema
Expert attribution (author)❌ Blog posts have no author
Recently updated✅ Blog active (today); no "last updated" badges on pages
Heading structure matches query patterns⚠️ Blog yes; product/collection weak
AI bots allowed✅ (Section 1)

5. Presence — Where AI Looks

  • Wikipedia: No Sweet Dreams Wikipedia page found (business-analysis pass). AI often cites Wikipedia for entity/brand context — a gap for brand-level answers.
  • Reddit / Quora: Not measured; family-sleepwear recommendation threads are common. Authentic participation could earn citations.
  • Third-party review sites: Amazon/Myntra listings exist; no G2/Capterra (B2B, N/A here).
  • Social entity signals: Footer social links are JS-rendered (not in static HTML) — weakens entity graph for AI. Instagram handle ambiguous (business-analysis flagged). Should hard-code verified social URLs in static footer/JSON-LD sameAs.
  • Marketplaces: Amazon + Myntra confirmed. A "Where to Buy" page aggregating D2C + Amazon + Myntra + EBO would capture "where to buy sweet dreams" intent (currently 404).

6. Platform-Specific Notes (Shopify)

  • Shopify auto-generates agents.md + sitemap_agentic_discovery.xml — already leveraged. ✅
  • Theme inventory app: "Variant Image Swatch King" — fine.
  • CrUX (from business-analysis): phone LCP good (~1.7–2.1s), but INP regressing (140→247ms) and CLS degraded (0.17, above 0.10 threshold). CLS/INP hurt both core ranking and agentic render reliability. Address late-loading hero/carousel + injected banners.
  • hreflang missing — add hreflang="en-IN" even for single-market; minor but flagged by skill.

7. Prioritized Recommendations

Tier 1 — Highest citation leverage (do first)

  1. Fix blog post schema. Re-template the blog to emit Article/BlogPosting with author (named, with bio/credentials), datePublished, dateModified, headline, and articleBody/description. With 303 fresh posts this is the biggest free visibility win for "best sleepwear for…", "how to choose…", "what is…" queries. Add meta descriptions to posts.
  2. Add FAQPage schema to: (a) the /pages/faqs page, (b) every product page (top 3 product questions), (c) high-intent collections. Direct Q&A extraction is the single most reliable AI-citation pattern.
  3. Add aggregateRating + reviewCount to products (or, if no genuine reviews exist, stop showing star ratings). Currently AI treats the catalog as unreviewed.

Tier 2 — Structural & entity signals

  1. Fix homepage <h1> — render a static, keyword-matched H1 ("India's Family Sleepwear Brand — Pyjamas, Nightwear & Loungewear for Women, Men & Kids"). Don't rely on JS hero for the topic signal.
  2. Add Where to Buy page aggregating D2C + Amazon + Myntra + EBO store locator, with direct links. Captures high-intent "where to buy" queries.
  3. Add LocalBusiness/Store schema to each EBO location in the store locator (name, address, phone, hours, geo). Captures "[brand] near me".
  4. Hard-code sameAs social URLs in Organization JSON-LD + static footer (fixes JS-rendered social + ambiguous Instagram).

Tier 3 — Polish

  1. Add /pricing.md (structured tiers: value ₹479+, core ₹1,049–1,799, best-seller ₹2,299–3,249, premium/collab up to ₹3,699+) for lightweight agents.
  2. Add hreflang="en-IN" to <head>.
  3. Fix CLS/INP (reserve hero image dimensions, defer/stable injected banners) — helps both Google AI Overviews (core ranking) and agentic rendering.
  4. Build Wikipedia / authoritative brand presence — pursue a factual Wikipedia article and authentic Reddit/Quora participation for entity-level citations.

8. What Was NOT Verified (honesty notes)

  • Live AI-answer citation checks (ChatGPT/Perplexity/Gemini "is Sweet Dreams cited?" for target queries) were not run — those require interactive sessions/paid APIs not available here. Run the DIY monthly check from the skill: test 10–20 queries ("best family sleepwear India", "sweetdreams vs jisora", "sweet dreams pyjama price", "where to buy sweet dreams") across the three engines and log citation/share-of-voice.
  • Google-Extended is not explicitly named in robots.txt but is not blocked (User-agent: * allows it). Not a defect.
  • CLS/INP device split carried over from business-analysis (phone-only CrUX observed).

9. Citations

  • https://www.sweetdreams.in/robots.txt — AI bot allow rules (GPTBot, PerplexityBot, ClaudeBot, GeminiBot)
  • https://www.sweetdreams.in/llms.txt — agent instructions (verified 200)
  • https://www.sweetdreams.in/agents.md — Shopify agent instructions (verified 200)
  • https://www.sweetdreams.in/.well-known/ucp — UCP merchant profile JSON (verified 200)
  • https://www.sweetdreams.in/sitemap_agentic_discovery.xml — agentic discovery sitemap (verified 200)
  • https://www.sweetdreams.in/ (homepage schema + empty H1, verified via raw HTML)
  • https://www.sweetdreams.in/products/ever-green-pyjama-set-2218gzco (Product/Offer/SKU schema; no aggregateRating)
  • https://www.sweetdreams.in/collections/all-garfield (CollectionPage schema)
  • https://www.sweetdreams.in/blogs/the-trailblazing-trend-tracksuits (blog post — CollectionPage mistype, no author/date)
  • https://www.sweetdreams.in/sitemap_blogs_1.xml — 303 blog articles
  • https://www.sweetdreams.in/pages/faqs (FAQ page; no FAQPage schema)
  • https://www.sweetdreams.in/pages/store-locator (no LocalBusiness schema)
  • https://www.sweetdreams.in/pages/about-us (ReadAction/datePublished present)
  • business-analysis.md (this workspace) — company facts, CrUX CWV, social/entity gaps, competitor set
  • CrUX: cruxvis.withgoogle.com (origin https://www.sweetdreams.in) — phone LCP good, INP regressing, CLS 0.17