codel
← Back to the index

SEO-10 · SEC. 07 SEO & GEO

Entity Consistency Audit: Make Every AI Agree Who You Are

Find every conflicting description of your company across the web and replace them with one canonical record.

FORMAT
goal
DIFFICULTY
beginner
TIME
15 min
TOOLS
universal
MODELS
any
COPIES
0 so far

When to use this

Ask ChatGPT or Perplexity what your company does and you get a stale, wrong, or vague answer. That usually means your own surfaces disagree: the homepage says one thing, the Organization schema another, the LinkedIn bio a third. Use this to converge them before blaming the AI.

The pattern

Pastes as plain text
Below the line I've pasted every place my organization describes itself,
each labeled with where it lives: homepage hero, about page, footer,
Organization JSON-LD, llms.txt, and social bios (LinkedIn, X, GitHub,
Crunchbase, whatever I have).

Goal: one canonical entity record, and the exact edits to make every
surface match it. Done means all three of these hold:
- the organization name is the identical string on every surface
- one description under 25 words appears verbatim on the homepage, the
  about page, and in the JSON-LD description field
- the JSON-LD sameAs array lists every social profile I pasted, and no
  profile links to a name that contradicts the canonical one

Work toward that:
1. Extract from my pastes: every variant of the name, every distinct
   description, and every stated fact (founding year, location, category,
   size). Build a conflict table: Fact | Variants found | Where each lives.
2. Propose the canonical record: exact name string, the under-25-word
   description, and one value per disputed fact. Where variants conflict,
   pick the one supported by the most authoritative surface (legal or
   about page beats a social bio) and say which you picked and why.
3. For every surface, output the exact replacement text, ready to paste.
   For the JSON-LD, output the full corrected Organization block with a
   complete sameAs array.
4. End with the checklist from the "done" definition above, marking what
   passes right now versus after I apply the edits.

Paste each self-description below this line, labeled with its source:

Real example output

Conflict table:
Name        | "Flowly" (homepage), "Flowly HQ" (X bio), "Flowly, Inc."
            | (JSON-LD legalName misused as name), "FlowlyApp" (GitHub org)
Founded     | 2021 (about page), 2020 (Crunchbase), absent (JSON-LD)
Category    | "project management" (homepage), "work OS" (LinkedIn),
            | "productivity suite" (footer)

Canonical record:
Name: Flowly
Description (22 words): "Flowly is project management software for
agencies, combining task tracking, client approvals, and invoicing in
one workspace for teams of 5 to 50."
Founded: 2021 (about page is authoritative; update Crunchbase manually).

Edits:
- X bio: change display name "Flowly HQ" -> "Flowly", first line -> the
  canonical description trimmed to fit
- JSON-LD: name "Flowly", legalName "Flowly, Inc.", foundingDate "2021",
  description = canonical string, sameAs now lists all 4 profiles
  (LinkedIn and GitHub were missing)

Done checklist: name-identical FAIL now, PASS after edits (4 surfaces
change). Verbatim description FAIL now (3 competing versions), PASS
after. sameAs complete FAIL now (2 of 4 profiles listed), PASS after.

Why it works

Answer engines build an entity graph by reconciling your surfaces against each other, and every naming or description conflict splits confidence across duplicate candidate entities. One exact name string and one verbatim description give the graph a single high-confidence node, and sameAs links tell it explicitly which profiles are the same organization instead of leaving it to guess.

Entry SEO-10 · by codel · 2026-07-09 · CC-BY-4.0