AEO / GEO Audit
AI SEO / AEO Audit — Better Beauty (thebetterbeauty.com)
Report generated: 15 August 2026. Prepared per the ai-seo skill methodology, anchored to the live site (raw HTML / curl), the live robots.txt + agent files, and 5 web searches testing AI-search retrieval for the brand's key queries. Business context from business-analysis.md (early-stage D2C lipstick brand, AGAUE CONSULTING PVT LTD, Gurugram, Shopify, no paid ads, ~2.8K IG / 81 FB followers, dermatologist-approved + India-skin-tone positioning).
0. Executive Summary (read this first)
Better Beauty's technical AI-readiness is unexpectedly strong — far ahead of most early-stage Shopify stores — because the storefront ships with Shopify's agent-layer scaffolding already enabled:
- No AI crawlers are blocked. robots.txt allows all AI bots (GPTBot, PerplexityBot, ClaudeBot, Google-Extended, Bingbot). ✓
/llms.txt,/agents.md, and/.well-known/ucpall return HTTP 200 — the brand already exposes an agent-facing description and a live Universal Commerce Protocol (UCP) MCP endpoint. Most D2C brands have none of these.- Schema is present on every page type, including
Product+Offer+Brandon product pages.
The weak spots are content-side, and they are what actually gate AI citations:
- Near-zero AI visibility today. In 5 tested queries, the brand's own site surfaced only for its exact brand name. For every high-intent category query ("dermatologist approved lipstick India", "best lipstick for Indian skin tone", "clean cruelty-free lipstick India", "build your own lipstick box India") it was absent — those slots were taken by competitors (Sugar Cosmetics, Nykaa, Lakmé) and generic blogs. AI engines cannot cite a brand they never retrieve.
- Review data is displayed but NOT in machine-readable schema. Product JSON-LD contains
Product/Offer/Brandbut noaggregateRatingorreview— even though the site shows a 4.5 Judge.me badge. AI engines therefore read the products as unreviewed. - No FAQPage, BreadcrumbList, or Article schema beyond Shopify defaults; blog posts lack
datePublished/author extraction signals in practice. - Thin, generic content (6 blog posts, no comparison/definition/statistic blocks) — the formats AI engines cite most (comparisons ~33%, definitive guides ~15%, original data ~12%) are essentially absent.
- Brand-name collision with an unrelated "Better Beauty" skincare brand pollutes discovery and third-party citations.
Bottom line: the plumbing is ready; the answer-worthy content isn't. Fixable with editorial + schema work, not infrastructure.
1. AI Bot Access Check (robots.txt) — PASS
Verified live via curl https://thebetterbeauty.com/robots.txt.
| AI Crawler | Blocked? | Note |
|---|---|---|
| GPTBot / ChatGPT-User (OpenAI) | ✅ Allowed | No Disallow for these. User-agent: * → Allow: / is the catch-all. |
| PerplexityBot | ✅ Allowed | Same. |
| ClaudeBot / anthropic-ai (Anthropic) | ✅ Allowed | Same. |
| Google-Extended (Gemini / AI Overviews) | ✅ Allowed | Same. |
| Bingbot (Copilot) | ✅ Allowed | Same. |
| CCBot (Common Crawl, training-only) | Not targeted | Not explicitly blocked either — acceptable. |
The robots.txt is a Shopify-generated storefront file. It does not block any AI search-and-cite crawler. No action needed — and importantly, this means the brand can be cited by ChatGPT/Perplexity/Claude/Gemini. The absence from AI answers is therefore a retrieval + content problem, not an access problem.
2. Machine-Readable Files for AI Agents — STRONG (with one gap)
| File | Status | Finding |
|---|---|---|
/robots.txt | 200 | Includes agent-instruction pointer comments (llms.txt, agents.md, UCP). |
/llms.txt | 200 ✓ | Full agent-facing description: store purpose, UCP/MCP flow, read-only browsing endpoints, policy links. Mirrors agents.md. |
/agents.md | 200 ✓ | Canonical agent instructions (same content as llms.txt). |
/.well-known/ucp | 200 ✓ | Live UCP merchant profile JSON: supported versions 2026-04-08 / 2026-01-23, shopping/cart/checkout/catalog/discount capabilities, Google Pay + Shopify card payment handlers. |
/api/ucp/mcp | referenced | MCP endpoint declared in robots.txt + llms.txt (POST, application/json). |
/pricing.md | 404 ✗ | Gap. No structured pricing file for AI agents. |
/pricing.txt | 404 ✗ | Gap. |
Assessment: the store is wired for agentic commerce (an autonomous buying agent can already discover, search, cart, and route checkout via UCP/MCP). This is rare and a genuine differentiator for "AI buyers." However, the agent files point to UCP/Shop Pay commerce flows, not to brand/citation content — they describe how to transact, not why to cite Better Beauty. The citation payoff comes from the content recommendations in Section 4.
Recommendation: add a /pricing.md (structured INR pricing for all SKUs + bundles) so AI agents evaluating the brand on behalf of buyers can parse price without JS. Template:
# Pricing — Better Beauty (INR, inclusive of all taxes unless noted)
## Lipsticks (Velvet Matte, 15 shades) — ₹450 each
## Lip Liners (6 shades) — ₹299 each
## Lipstick + Liner Combo — ₹699
## Build Your Own Box
- Pack of 3 — ₹999
- Pack of 5 — ₹1,499
- Pack of 7 — ₹1,999
- Pack of 15 — ₹4,099
## Free-liner-over-5-lipstick promo — see site
Last updated: 2026-08-15
3. Schema Markup — VERIFIED (raw HTML)
Verified with curl (preserves <script> tags), per the skill's required method — NOT via markdown/text extraction. Per-page-type results:
| Page type | Schema present | Types found | Gaps |
|---|---|---|---|
| Homepage | ✓ | Organization | No FAQPage, no BreadcrumbList, no WebSite/SitelinksSearch. |
| Product (code-red) | ✓ | Product, Offer, Brand, Organization | No aggregateRating / review despite 4.5 site badge. No FAQPage. |
| Collection (all) | ✓ | Organization | No ItemList, no BreadcrumbList. |
| Blog index | ✓ | Organization | No ItemList of posts. |
| Blog post | ✓ | Article, Person, WebPage, Organization | No datePublished/author/image confirmed in extracted block (Shopify usually injects these — verify in Rich Results Test). |
| About page | ✓ | Organization | — |
Critical schema gap: missing review/rating markup
The product page JSON-LD (/products/code-red) contains exactly:
{"@type":"Product","brand":{"@type":"Brand","name":"Better Beauty"},
"category":"Liquid Lipsticks","description":"Rich Bold classic red, Velvet Matte",
"offers":{"@type":"Offer","availability":"...InStock","price":"450.00","priceCurrency":"INR",...}}
There is no aggregateRating and no review node. The homepage and bundle cards display a 4.5 rating (Judge.me), but that signal lives in app-rendered HTML/JS, not in the page's application/ld+json. Consequence: AI engines parsing the structured data see the products as unreviewed, losing a trust signal the Princeton GEO study associates with +25–40% citation lift.
Fix: ensure Judge.me (or a theme/SEO app) emits aggregateRating + review inside the product JSON-LD. Many Shopify review apps push this only with a specific setting; verify and enable it.
Other schema recommendations
- Add
BreadcrumbListto collection/product/blog — AI uses breadcrumbs to infer category hierarchy; Shopify rarely adds it by default. - Add
FAQPageto an FAQ section on the homepage / about / a dedicated FAQ page (see Section 4) — direct Q&A extraction is one of the highest-yield AEO structures. - Confirm
datePublished+authoronArticleblog-post schema via Google Rich Results Test (the extracted block did not clearly show them).
4. AI Visibility Audit — the core problem
4.1 Query retrieval test (5 live searches)
Each query run through web_search; results reflect what an AI answer engine would retrieve from the open web today.
| Query | Better Beauty cited? | Who/what ranked instead |
|---|---|---|
Better Beauty lipstick brand India | Yes (pos 1 + 4) | Brand homepage + /collections/all appeared. This is the only query where the brand surfaces. |
dermatologist approved lipstick India | No | Sephora, Incosmetics blog, Women's Health, India TV — generic skincare/derm content, not lipstick, not the brand. |
best lipstick for Indian skin tone | No | TheBeautyBinge, AllBestProducts, Sugar Cosmetics blog, Pubbelly, IndiaObservers. |
clean cruelty free lipstick India affordable | No | Pinterest, Haus Labs, Jane Iredale, KIKO, YouTube. |
build your own lipstick box India | No | Packaging-supplier sites (TheCustomBoxes, PackWhole, BoxesMe), Pinterest, TikTok DIY. |
Interpretation:
- The brand is retrievable only on exact-match brand queries — i.e., a user must already know the name. For every category/intent query a new customer would use, it is invisible to AI retrieval.
- The queries it loses are exactly its positioning pillars: dermatologist-approved, Indian skin tone, clean/cruelty-free, build-your-own-box. Competitors (Sugar Cosmetics, Nykaa) and blogs occupy those answer slots.
- Because AI Overviews correlate with traditional rankings, and the site's global rank is ~17M with only 6 blog posts, the brand sits below the retrieval threshold for these fan-out queries.
4.2 Why it isn't cited (root causes)
- No topically-authoritative content. AI engines retrieve pages that comprehensively answer a parent topic and its fan-out sub-questions. The site has product pages + 6 thin blog posts, none structured as definition / comparison / statistic blocks.
- No comparison content. ~33% of AI citations are comparison articles. There is no "Better Beauty vs Sugar/Nykaa" or "derm-approved vs regular lipstick" page.
- No original statistics / clinical data. The "clinically tested & dermatologist-approved" claim is asserted but never backed by citable numbers, study names, or dates — the single biggest citation booster (+37–40%) is unused.
- Brand-name collision. Searches for "Better Beauty" return the unrelated skincare brand (Anita Hassanandani). AI systems merging entities will attribute the wrong brand or skip both. Disambiguation content (clear "we are thebetterbeauty.com, the lipstick brand, not the skincare brand") is needed.
- Thin third-party presence. No Wikipedia, no Reddit footprint, no review-site profiles. Competitors get AI citations partly via these third-party sources; the brand has none.
5. Content Extractability Check (priority pages)
| Check | Homepage | Product | Blog post | About |
|---|---|---|---|---|
| Clear definition in first paragraph? | Partial | Yes (name/desc) | Yes | Yes |
| Self-contained answer blocks (40–60w)? | No | No | Partial | Partial |
| Statistics with sources cited? | No | No | No | No |
| Comparison tables (X vs Y)? | No | No | No | No |
| FAQ section (natural-language Q)? | No | No | No | No |
| Schema (FAQ/HowTo/Product)? | Org only | Product/Offer/Brand (no rating) | Article | Org only |
| Expert attribution (author/creds)? | No | No | Not in extracted block | Founder story, no named expert |
| Recently updated (≤6mo)? | Unknown | Unknown | Dated posts exist | Unknown |
| Heading matches query phrasing? | Partial | Partial | Yes (how-to) | Partial |
| AI bots allowed? | Yes | Yes | Yes | Yes |
Verdict: extractability is weak everywhere except basic product facts. The homepage leads with a trust bar (DERMATOLOGIST-APPROVED / MADE FOR YOU / CRUELTY-FREE / CLEAN INGREDIENTS / FAST SHIPPING) which is good for human trust but contains no prose a model can quote as a cited claim — it's image/badge-driven.
6. Recommendations (prioritized, concrete)
Tier 1 — Close the citation gap (highest ROI)
- Publish a "Dermatologist-Approved Lipstick: What It Means & Our Clinical Data" pillar page. Include the actual study/test name, date, what was measured, and a citable statistic (e.g., "X% of [test panel] showed Y"). Add
datePublished+ author (named dermatologist or "Better Beauty Clinical Team"). This directly targets the lost "dermatologist approved lipstick India" query and unlocks the +37–40% statistic boost. - Publish an "Indian Skin Tone Lipstick Shade Guide" (definition + comparison content). Map the 4 tone buckets (Light/Medium/Wheatish/Dark) × 15 shades into a table; answer "which shade for my tone" with 40–60 word blocks. Targets "best lipstick for Indian skin tone" (currently owned by Sugar/Nykaa blogs).
- Publish a comparison page: "Better Beauty vs Conventional / Other Lipstick Brands" and "Dermatologist-Approved vs Regular Lipstick" — comparison articles are the #1 AI-cited format (~33%).
- Add an FAQ section (with
FAQPageschema) covering: Is Better Beauty dermatologist approved? Is it cruelty-free/clean? What skin tones are the shades made for? How does Build Your Own Box work? Ships to? This gives AI engines direct extractable Q&A.
Tier 2 — Schema & structured data
- Enable
aggregateRating+reviewin product JSON-LD (Judge.me setting or SEO app) so the 4.5 rating is machine-readable. Highest-trust fix. - Add
BreadcrumbListto collection/product/blog templates. - Add a
/pricing.md(INR, all SKUs + bundles) for agent buyers. - Confirm/correct
datePublished+authoron blogArticleschema via Rich Results Test.
Tier 3 — Entity & third-party presence
- Disambiguate the brand name. Add a clear "Note: Better Beauty (thebetterbeauty.com) is the lipstick brand under AGAUE CONSULTING PVT LTD — not the 'Better Beauty' skincare brand" line on homepage/about/FAQ, and pursue a Wikipedia or Wikidata entity so AI systems stop conflating the two.
- Build third-party footprint authentic only: get the brand into Indian beauty roundups / comparison articles (guest posts, PR), and onto review platforms. AI cites third-party sources ~6.5x more than own-domain pages.
- Claim / verify social entity signals (Instagram @betterbeautyofficial, LinkedIn company page) — currently thin; entity consistency helps Knowledge Graph / Gemini.
Tier 4 — Guardrails (do NOT do)
- Do not write separate "for AI" content or chunk pages into fragments — Google's guide flags this as scaled-content abuse. Same content serves people and AI.
- Do not block AI crawlers (already correct).
- Do not keyword-stuff — it actively reduces AI visibility by ~10%.
7. Monitoring (DIY, no paid tools)
Monthly, for the 5 queries in Section 4.1 plus:
- "velvet matte lipstick India", "peptide lipstick India", "cruelty free lipstick Indian brand", "[Better Beauty] vs Sugar Cosmetics"
Record: Are you cited? Who is? Which page? Track month-over-month. When budget allows, Peec AI / Otterly / LLMrefs give cross-platform share-of-voice.
8. Citations (verified live, 2026-08-15)
- https://thebetterbeauty.com/robots.txt — AI crawler allow rules; agent-file pointers.
- https://thebetterbeauty.com/llms.txt — agent-facing store description (HTTP 200).
- https://thebetterbeauty.com/agents.md — canonical agent instructions (HTTP 200).
- https://thebetterbeauty.com/.well-known/ucp — UCP merchant profile JSON (HTTP 200; versions 2026-04-08 / 2026-01-23).
- https://thebetterbeauty.com/pricing.md — HTTP 404 (gap).
- https://thebetterbeauty.com/ (raw HTML) —
Organizationschema; trust bar; 4.5 bundle badges. - https://thebetterbeauty.com/products/code-red (raw HTML) —
Product+Offer+BrandJSON-LD, no aggregateRating/review. - https://thebetterbeauty.com/collections/all (raw HTML) —
Organizationschema only. - https://thebetterbeauty.com/blogs/news (raw HTML) —
Organizationschema; 6 posts in sitemap_blogs_1.xml. - https://thebetterbeauty.com/blogs/news/step-by-step-guide-to-creating-ombre-lips-that-add-depth-to-your-makeups —
Article+Person+WebPageschema. - https://thebetterbeauty.com/pages/about-us — brand story;
Organizationschema. - Live web searches (2026-08-15): "Better Beauty lipstick brand India" → brand pos 1 & 4; "dermatologist approved lipstick India" → no brand; "best lipstick for Indian skin tone" → Sugar Cosmetics blog ranks (pos 3), no brand; "clean cruelty free lipstick India affordable" → no brand; "build your own lipstick box India" → packaging suppliers, no brand.
- business-analysis.md (this workspace) — company basics, catalog, pricing, social, competitors, SWOT (source of business context).
- Princeton GEO study (KDD 2024) citation-method ranking, per ai-seo skill: statistics +37–40%, citations +40%, quotations +30%, authoritative tone +25%; keyword stuffing −10%.
Prepared by the ai-seo skill workflow. Schema verified via raw HTML (curl), not text extraction. AI-visibility queries tested live. No revenue/funding figures fabricated (not disclosed for this entity).