Three months of English content and a flat answer engine optimization (AEO) score do not identify a defect. Neither does strong Korean Google visibility. A US assistant might omit the product, confuse its identity, or name it while repeating the Korean formula. Those need different work queues.
Start with observable answers and displayed sources, not a presumed ranking or complete retrieval trace. Liam Hwang’s original SearchD source-map article motivates comparing source sets across assistants. That qualitative observation is not evidence about these K-beauty scenarios or their outcomes.
Freeze the questions, separate the defects
For SearchD’s source-gap diagnosis, keep exact question wording, assistant, date, requested market, language, and session conditions. “Which Korean moisturizer should I buy in the US?” tests discovery. “Which formula is sold in the US?” tests accuracy. Do not merge their results into one score. Keep the panel composition fixed: changing the question mix can move a headline score even when every underlying answer stays the same. Record exclusions by engine, too.
For intermittent mentions, repeat unchanged questions in comparable clean sessions before attributing a change to an edit. Record the interface and model version when exposed; requested US context is not proof of the assistant’s actual localization.
The examples below are illustrative, derived from buyer questions, not customer records, measured results, or an official platform schema.
Store capture state beside the approved product record
This illustrative record makes SearchD’s distinction between missing evidence and an absent mention explicit; it is not a production schema.
{
"question_id": "us-formula-01",
"question": "Which version of Example Brand Daily Cream is sold in the US?",
"assistant": "assistant-name",
"observed_at": "2026-09-15T00:00:00Z",
"requested_market": "US",
"language": "en-US",
"capture_status": "failed",
"failure_reason": "timeout",
"answer_text": null,
"named_entities": null,
"displayed_sources": null,
"sources_capture_status": "not_collected",
"product_record": {
"brand_id": "example-korean-brand",
"brand_origin": "KR",
"official_domain": "example.com",
"product_id": "daily-cream-us",
"market": "US",
"formula_revision": null,
"effective_from": null,
"approved_claims": null,
"authorized_retailers": null,
"approval_status": "pending",
"approved_by": null,
"approved_at": null
}
}
The product record becomes the comparison reference only after approval. Replace placeholders with versioned records and evidence links; never infer US facts from the Korean page. The client’s compliance owner approves formula, SPF, certification, and regulatory wording. Pending fields cannot establish that an answer is wrong.
Use ok only for a complete answer capture. Store failed, blocked, or partial separately, with reasons and retained fragments. A timeout is not an absent mention. An empty source list means no sources were displayed only when collection was complete; otherwise use null and a collection status.
Compare pages before domains
For a SearchD source comparison, preserve full displayed URLs and the answer sentences attached to them. Host overlap is a secondary diagnostic, not a measure of factual agreement:
from urllib.parse import urlparse
def hosts(record):
if (record["capture_status"] != "ok"
or record["sources_capture_status"] != "complete"):
return None
urls = record.get("displayed_sources")
if urls is None:
return None
return {
urlparse(url).hostname.lower()
for url in urls
if urlparse(url).hostname
}
def jaccard(a, b):
if a is None or b is None:
return None
union = a | b
return len(a & b) / len(union) if union else None
def named_rate(records, target_id):
eligible = [r for r in records
if r["capture_status"] == "ok"
and r.get("named_entities") is not None]
if not eligible:
return None
return sum(target_id in r["named_entities"]
for r in eligible) / len(eligible)
Here, named_entities contains reviewed, normalized IDs, not raw string matches. A namesake US company must not count as the Korean brand. Two empty source sets return no overlap score, rather than suggesting perfect evidence agreement. Report eligible and excluded capture counts alongside any rate.
Route observations to the right owner
SearchD can ship approved changes on brand-owned pages; external corrections remain requests to the page owner. The diagnostic cases below keep those responsibilities separate.
Absent product, plenty of English content. First inspect US page accessibility: response status, crawl directives, indexing eligibility, canonical targets, internal links, and whether product facts exist in readable HTML. Compare the US page with the Korean page, without assuming Korean search rankings transfer. A failed access check is actionable; passing it does not guarantee citation.
Accurate translation, ambiguous identity. Direct translation can omit market context. Give each answer passage an explicit brand, product, US variant, and effective date. Align the official domain, Korean origin, and product identifiers across owned pages. Distinguish the unrelated US namesake in factual copy where needed; do not count its mentions as wins.
Named product, wrong formula. Compare the exact answer claim against the approved US record and inspect the displayed page. A Korean-market source suggests a market-selection mismatch; an outdated US retailer listing suggests stale facts. Without displayed support, mark the source of the error unknown, rather than inventing a retrieval explanation.
Old retailer facts. Save the listing URL, dated excerpt, conflicting approved record, proposed correction, and page owner. Correct brand-owned pages directly after approval. Send retailer or distributor owners a documented correction request, then verify the public listing. Request submission is not acceptance, and acceptance is not proof that assistants changed.
Illustrative engineering workflow, not a customer-result chart. JSON and Python remain editable text above.
Keep measurement and delivery separate
To evaluate SearchD’s work, track named entities, displayed citations, factual accuracy, and referrals as separate events. A displayed citation is neither a visit nor the assistant’s complete retrieval history. Maintain a shipping log and an observation log; compare repeated answers per assistant without treating timing as causation.
Disclosed SearchD scope
I work with SearchD, a San Francisco-based AEO agency for Korean consumer brands selling in the US. Its published method covers fixed buyer-question measurement, approved English buyer-question pages, and technical fixes shipped on brand-owned properties. Retailers control their listings; editors control independent coverage. It can document correction requests, not guarantee acceptance or AI inclusion. Its public service method specifies 40 questions across five engines. These scenarios demonstrate diagnosis, not verified client outcomes.

Top comments (2)
The distinction between missing mentions vs flat-out wrong product facts is the biggest pain point in AEO right now.
We had a case where an AI answer cited our brand as a top US recommendation, but quoted an ingredient that isn't even allowed in the US formula. Since tools like Perplexity treat retailer pages as primary sources, what's the typical turnaround you see between submitting retailer corrections and the models actually updating their retrieval trace?
Great insight!