Perfora (perforacare.com) — AI Search / AEO / GEO Audit

Answer Engine Optimization & Generative Engine Optimization review for Perfora's D2C storefront. Prepared 2026-09-07 from live storefront inspection (raw HTML + schema), robots.txt, agentic-commerce endpoints, and cross-platform query testing. Findings are verified against the rendered source, not markdown-converted text.

Report scope: get Perfora cited by AI systems (Google AI Overviews, ChatGPT, Perplexity, Claude, Gemini, Copilot) for its highest-intent oral-care queries. Business context (₹70 Cr FY25 revenue, 96% mobile audience, ~100 SKUs, 291 blog posts, Shark Tank S2 equity) is drawn from the companion business-analysis.md.


1. Executive Summary

Perfora is unusually well-positioned for the agentic-commerce era — Shopify has auto-generated a full Universal Commerce Protocol (UCP) stack (llms.txt, agents.md, /.well-known/ucp, agentic-discovery sitemap) that most D2C brands lack. AI crawlers are explicitly allowed in robots.txt. So the "be where AI looks / be machine-readable" pillar is largely solved.

The gaps are in the structure and authority pillars, and they are concrete and fixable:

  1. Broken product schema on GTIN-leading-zero products — the Product JSON-LD block is invalid JSON on products whose GTIN13 starts with 0 (a leading-zero number is not valid JSON). Confirmed on the hero Electric Toothbrush (M001) and others. AI engines silently drop the entire structured product block for those pages.
  2. No review/rating schema anywhere — despite live Judge.me reviews, not a single product page emits aggregateRating/reviewCount. AI sees every product as "unreviewed," which suppresses citation in "[product] reviews" and "best [category]" queries.
  3. Blog posts have zero Article schema — all 291 posts emit only an Organization block: no BlogPosting, no author, no datePublished/dateModified. AI engines get no publication date, author, or article-type signal for Perfora's largest content surface.
  4. No static /pricing.md — agents that don't speak UCP/MCP (most LLMs) cannot read structured pricing; it 404s.
  5. Citation reality — for the brand's own high-intent queries, marketplaces (Amazon, Flipkart) and third-party sites (Elle, SharkTank-India, CB Insights, Tracxn, Reddit) dominate the top results; and for "purple toothpaste / color corrector" (Perfora's viral hero), international competitors (MOON, MySmile, IVISMILE) rank while Perfora is absent.

Headline: The foundation is strong; fixing the three schema bugs (P0) and adding author/date + review markup (P1) would likely produce the largest AI-visibility lift for the least effort.


2. AI Bot Access — PASS

robots.txt (verified live) contains no Disallow rules for any AI crawler. GPTBot, ChatGPT-User, PerplexityBot, ClaudeBot/anthropic-ai, Google-Extended, and Bingbot are all permitted (the file leads with Allow: / and only blocks /admin, /cart/, /checkout, /account, and Shopify-internal endpoints). No business decision needed here — citation is technically possible on every platform.


3. Machine-Readable Agentic Files — STRONG (differentiator)

EndpointStatusNotes
/llms.txt200Shopify auto-generated; describes store, UCP commerce protocol, read-only browsing endpoints, policy URLs.
/agents.md200Canonical agent instructions (mirrors llms.txt).
/.well-known/ucp200Full UCP merchant profile: supported versions (2026-08-25, 2026-04-08, 2026-01-23), dev.ucp.shopping.* capabilities, Google Pay + Shopify card payment handlers.
/sitemap_agentic_discovery.xml200Lists agents.md for agent discovery.
/api/ucp/mcp(endpoints declared)MCP surface for agent-driven catalog/cart/checkout (buyer approval required).

This is a genuine competitive advantage for agentic buying (AI shopping assistants using the Shop skill / UCP). Perfora is ahead of ~95% of D2C brands here. The only static gap is /pricing.md (see §6).


4. Schema Markup Audit (verified via raw HTML, <script> preserved)

Per the skill's verification rule, every check below was run against unprocessed page source, not markdown extraction.

Page typeCheckedResultDetail
Homepageraw HTMLPASSOrganization + WebSite (with SearchAction) JSON-LD, both valid.
Product (generic)raw HTMLPARTIALOrganization (valid) + Product (valid on most). Product block includes sku, gtin13, brand, offers with price/priceCurrency/availability.
Product (GTIN leading-zero)raw HTMLFAILProduct JSON-LD is invalid JSONgtin13 is emitted as a bare number starting with 0 (e.g. 0725765052377), which is not valid JSON. The whole block is dropped. Confirmed on electric-toothbrush-model001 (gtin13 0725765052377), awake-lemon-mint-toothpaste, tongue-cleaner.
Product — reviewsraw HTMLFAILNo aggregateRating and no reviewCount/ratingCount on any product page, despite live Judge.me reviews on the page. AI treats products as unreviewed.
Collectionraw HTMLPARTIALEmits a Product block for the first product but no aggregateRating. The visible H1 on /collections/all is a promo banner ("REAL PEOPLE, REAL RESULTS"), not the category name — a weak topical signal.
Blog postraw HTMLFAILOnly Organization schema. No BlogPosting/Article, no author, no datePublished/dateModified. 291 posts affected.
BreadcrumbListraw HTMLFAIL (not found)No breadcrumb schema on product/collection/blog pages.
FAQPage / HowToraw HTMLFAIL (not found)No FAQ or HowTo schema on any checked page, even where FAQ-style content exists.

4.1 Root cause of the product-schema break

In the theme's product JSON-LD, gtin13 is serialized as a JSON number ("gtin13": 0725765052377). JSON has no leading-zero integer syntax, so the parser fails at that token and discards the entire Product object. The fix is a one-line template change: emit GTIN identifiers as strings ("gtin13": "0725765052377"). This is theme/Liquid output — achievable without an app.


5. Content Extractability

Strengths

  • Blog content is genuinely extractable: real H2-structured answers, definition-style blocks, and 40–60 word passages exist (e.g. the gum-health and tooth-talk hubs cover "is salt good for teeth," "little teeth big protection," etc.). This reads well for Google AI Overviews.
  • Clean H1s on product pages (e.g. "Electric Toothbrush - M001 - Battery Operated").
  • 291 blog posts = a large topical surface that, once properly marked up, is a strong AI-visibility asset.

Weaknesses

  • No explicit FAQ sections/FAQPage schema on product or category pages — "X vs Y" and "how to" queries are left to prose only.
  • Product descriptions were not verifiable for depth at scale (JS-rendered), but the missing aggregateRating (above) is the bigger conversion + citation blocker.
  • No author byline or "last updated" date on blog posts → weak E-E-A-T signal for a health-adjacent category (oral care). AI systems weight authoritativeness heavily here.

6. The /pricing.md Gap

/pricing.md and /pricing.txt both return 404. The skill recommends a static, LLM-parseable pricing file for agents that don't consume UCP/MCP. Perfora's UCP endpoint does expose pricing, but a plain markdown pricing index (by category, with INR ranges and compare-at pricing) lets ChatGPT/Claude/Perplexity answer "[product] price" and "[brand] pricing" queries directly from the domain. Low effort, high reuse.


7. Third-Party Presence & Citation Reality (query testing)

Live cross-platform checks for Perfora's highest-intent queries show a consistent pattern: Perfora's own domain ranks, but marketplaces and third parties dominate the answer set.

Query testedWhat AI/traditional search surfacesPerfora cited?
"best electric toothbrush India Perfora"Flipkart brand page, Amazon store, Perfora blog post (#3), Elle review, Amazon listingPartial (own blog ranks; marketplaces above)
"Perfora toothpaste review Shark Tank"Amazon ad, SharkTank-India.com, Perfora Shark Tank collection, YouTube reviewsYes (mixed with 3P)
"Perfora vs Salt oral care"Perfora blog "is salt good for teeth" (#1), CB Insights, Tracxn, RedditYes (own blog #1) — good topical coverage
"what is purple toothpaste color corrector"MOON, MySmile, IVISMILE, Laserglow (all international)No — Perfora's viral Purple Magic hero line is absent on its own hero topic

Key implications:

  • Perfora is 6.5x more likely to be cited via third parties than its own domain (the skill's documented baseline) — true here: Amazon, Flipkart, SharkTank-India, CB Insights, Tracxn, Reddit all appear above or alongside perforacare.com.
  • The "purple color corrector" entity gap is the single biggest missed-topic opportunity: it is Perfora's most viral product, yet international competitors own the explainer queries. A definitive, structured "How purple color-corrector toothpaste works" page (with the science, shade theory, and before/after caveats) is needed.
  • No Wikipedia page, no owned Reddit AMAs (existing Reddit threads are mixed/negative criticism), no Quora presence. Third-party entity signals are thin and partly unfavorable.

8. Authority (GEO) Gaps

Per the Princeton GEO study (KDD 2024), the highest-leverage authority signals are: cite sources (+40%), add statistics (+37%), expert quotes (+30%), author attribution (+25%). Perfora's current state:

  • Statistics with sources: Present in blog copy ("5 Million+ users," "clinically tested") but rarely attributed to a named study/clinician with a link. Add citable, sourced numbers.
  • Expert attribution: Founders are named in About, but blog posts have no author byline (dentist "Anjali Verma" is referenced in business analysis as a channel contact, not surfaced as article author). Add named dental-professional authorship to health claims — critical for an oral-care (YMYL-adjacent) category.
  • Freshness: No "last updated" dates on blogs (schema gap, §4) — AI weights recency; undated content loses to dated competitors.
  • Brand-name consistency: Schema entity name is "Perfora - Oral Care Solutions"; domain is perforacare.com; social handles are "perforaofficial." The sameAs array in Organization schema contains 4 empty-string entries (sloppy entity signal that should be cleaned). Align naming and remove empty sameAs values.

9. Prioritized Recommendations

P0 — Fix broken/authorized schema (highest ROI, engineering, days)

  1. Quote GTIN identifiers as strings in the product JSON-LD template ("gtin13": "0725765052377"). Resolves the invalid-JSON break on all leading-zero-GTIN products (including the hero electric toothbrush). Verify by re-fetching raw HTML and parsing the Product block.
  2. Add aggregateRating + reviewCount to every product page from Judge.me (via the Judge.me schema setting or a custom JSON-LD injection). AI needs "4.8 stars from 2,300 reviews" to cite products in review/best-of queries.
  3. Add BlogPosting/Article schema to all 291 posts with author (named dental professional where health claims are made), datePublished, dateModified, headline, image. Enables AI to treat the content engine as a dated, attributable source.

P1 — Extractability & authority (weeks)

  1. Publish /pricing.md — static, LLM-parseable pricing by category (INR ranges, compare-at, subscription note). Backfill from pricing-data.csv already extracted in the workspace.
  2. Build the "Purple Color Corrector" pillar page — a definitive, structured explainer (definition block + how-it-works steps + pros/cons + FAQ) targeting the exact query Perfora currently loses to MOON/MySmile. Link from Purple Magic product pages.
  3. Add FAQPage schema to top product and category pages using natural-language questions ("Is Perfora toothpaste SLS-free?", "How does the sonic toothbrush work?", "Perfora vs traditional toothpaste?").
  4. Add author bylines + "last updated" dates to blog posts (closes the E-E-A-T + freshness gap); attribute oral-health claims to a named dentist.
  5. Add BreadcrumbList schema to product/collection/blog templates for category-hierarchy understanding.

P2 — Presence (ongoing)

  1. Clean the Organization sameAs array — remove 4 empty strings; confirm all social URLs resolve (IG 175K, YouTube 18.8K, Threads 23.6K, Facebook 7.2K).
  2. Pursue third-party entity signals: a Wikipedia/Wikidata entry, owned Quora answers, and a measured Reddit AMA to counter the existing criticism threads. Brands are cited 6.5x more via third parties — seed favorable, accurate ones.
  3. Comparison content: publish "Perfora vs [competitor]" posts for Salt Oral Care, Toothsi, legacy incumbents (Colgate/Oral-B) — Perfora already wins "Perfora vs Salt" organically; extend it.
  4. Monthly AI-visibility monitoring (manual or Otterly/Peec AI): track the 10–20 queries in §7 + a "purple color corrector" tracker. Note Google has no AI-specific Search Console report — use standard Performance + a third-party tool.

10. What Is Already Working (keep doing)

  • robots.txt open to all AI crawlers.
  • Full UCP/agentic-commerce stack (llms.txt, agents.md, /.well-known/ucp) — best-in-class for agentic buying.
  • All policy/about/contact pages return 200 (no broken trust links).
  • 291-post content engine with genuinely extractable structure.
  • Strong traditional + marketplace ranking for branded queries.

11. Sources (verified live, 2026-09-07)

  • https://perforacare.com/robots.txt — AI-crawler allow rules.
  • https://perforacare.com/llms.txt — agent context file (200).
  • https://perforacare.com/agents.md — canonical agent instructions (200).
  • https://perforacare.com/.well-known/ucp — UCP merchant profile (200).
  • https://perforacare.com/sitemap_agentic_discovery.xml — agent discovery sitemap.
  • https://perforacare.com/ — homepage (Organization + WebSite JSON-LD verified).
  • https://perforacare.com/products/electric-toothbrush-model001 — broken Product JSON-LD (gtin13 leading-zero), no aggregateRating.
  • https://perforacare.com/products/purple-magic-whitening-serum, /products/awake-lemon-mint-toothpaste, /products/teeth-whitening-strips, /products/tongue-cleaner — product schema sample (mix of valid/invalid; no review schema).
  • https://perforacare.com/collections/all — collection schema (Product block, no aggregateRating; promo H1).
  • https://perforacare.com/blogs/gum-health, /blogs/tooth-talk — blog schema (Organization only; no Article/author/date).
  • https://perforacare.com/pricing.md, /pricing.txt — 404 (gap).
  • https://perforacare.com/policies/{privacy-policy,terms-of-service,refund-policy,shipping-policy}, /pages/about-us, /pages/contact-us — all 200.
  • https://perforacare.com/sitemap_products_1.xml, /sitemap_blogs_1.xml — 101 products, 291 blog posts.
  • Query testing (web_search): "best electric toothbrush India Perfora"; "Perfora toothpaste review Shark Tank"; "Perfora vs Salt oral care"; "what is purple toothpaste color corrector"; "Perfora 5 million users Shark Tank 80 lakh".
  • Companion: /root/cro-reports/perforacare/20260907-120326/business-analysis.md (₹70 Cr FY25, 96% mobile, catalog, competitors, social stats).
  • Methodology refs: Google AI features optimization guide (developers.google.com/search/docs/fundamentals/ai-optimization-guide); Princeton GEO study, KDD 2024 (citation/statistics/quotation visibility lifts); llmstxt.org; ucp.dev.

Confidence: schema/robots/endpoint findings are High (verified against raw source). Query-visibility findings are directional (single-point web_search snapshots, not a sustained AI-platform panel). Revenue/competitor facts inherit the Medium confidence flagged in business-analysis.md.