Use case Entities

Build an entity graph
of your own site

Engines do not read your site page by page. They resolve it into things: people, products, organisations, topics, and the connections between them. Moose builds that graph from the pages already crawled on your machine, and labels which connections your site states and which he worked out. Once it is built, he can read it in any later chat.

Watch Moose build one The spreadsheet version
Chat Workflows
Fathom Analyticshttps://usefathom.com
New chat
Home Inbox Context Visibility Workflows Audio Chats Artifact Library Connections
Recents
can you create an entity gra…Chat · now do we cover the topic of usi…Chat · 16m Building a Knowledge Grap…Content brief · 24m How AI Search Ranking Wor…Content brief · 2h
Sam SamPremium
can you create an entity gra… New chat Share
can you create an entity graph of usefathom?

On it, Sam. Let's map how Fathom's entities connect across the site.

I can build an entity graph for this project. Choose how deep the run should go, then start it below.

Build the entity graph

Hi, Moose maps the people, products, places, and topics across this project's crawled pages, plus how they connect.

Depth
QuickStructured data only. Runs instantly.
FullAdds an AI pass over your top pages. This can take a few minutes.
Reading 418 crawled pages. Last completed crawl: 8/2/2026. Build entity graph
Extracting entities from crawled pages (418/418)… Mapping how entities connect across pages… Assembling the graph…
Entity graph
Entities across this project
Quick
Entities
290
Relations
612
Generated
8/2/2026
3 labeled · 88 shared-page · 521 semantic
Entities by type
topic: 284 · organization: 3 · product: 2 · person: 1
Top entities
NameTypePagesSalience
User Documentation topic 246 7.12
Fathom Analytics product 22 4.20
Affiliate Program Terms topic 7 3.58
Fathom Analytics organization 10 3.43
Jack Ellis person 9 3.33
The exports include 285 more entities. Export CSV Export PDF
Share a URL, a draft document, or run an AEO audit…
Claude Sonnet 5 Send
Hi, Moose 0.4.140 Beta Need help?
A recreation of a real run against a public site we do not work with. The counts are illustrative.
Moose, a dog, supervising a desk

Chief desk supervisor. Resolves as one entity, firmly related to the sofa and to lunch. A cleaner graph than most websites manage.

The problem

An engine does not see pages. It sees things, and how they relate.

Before an engine can recommend you, it has to know what you are. A product, made by an organisation, founded by a person, in a category, competing with these others. That resolution happens whether you help it or not.

If your site never states the connections, the engine infers them from third parties or leaves you as a floating name it cannot place. That is how you end up mentioned but never recommended, or described using a competitor's category.

What comes back

One card, and two exports

It is built from the pages already crawled for this project, so every number traces back to a URL you own.

Entities
Every thing your site names

People, organisations, products, services, places, events and topics, each with the number of pages it appears on, plus a count by type. That count alone tells you whether your site reads as a product or as a pile of articles.

Salience
What your site weighs most

A score per entity, weighted by where the name shows up. Structured data counts for more than a title, and a title counts for more than a subheading. The entity at the top is rarely the one on the homepage.

Relations
Three kinds, labeled separately

The connections your pages state, the ones that keep appearing on the same pages, and the ones whose names sit close in meaning. The card splits the count across all three, so you can see how much of the graph your own site wrote.

Exports
CSV and PDF, from the card

Entities with their type, aliases, page count, score and up to three source URLs each. Relations with their kind, source and confidence. The PDF is the one you forward, the CSV is the one you sort.

Two depths

Quick first, Full when it earns it

Both run against the crawl already on your machine, and both map the connections at the end. The difference is whether a model reads your body text.

Quick
What your pages declare

Reads the JSON-LD on your pages plus the things named in your titles and headings. Seconds on most sites, no model involved, nothing leaves the machine.

Use it for · The baseline, and checking a schema fix landed.
Full
Adds an AI pass over your top pages

Pick the top 100, 250, 500 or 1,000 pages, ranked by Search Console clicks where you have it connected. A model reads the body text and pulls the things you name in prose but never mark up. It runs on your local model, your OpenRouter key, or your monthly allowance on a paid plan.

Use it for · The fuller picture, once a quarter.
How to read it

The counts are the finding

You are not reading the list. You are reading a handful of numbers, and each one points at a different piece of work.

Three relations labeled, six hundred derivedOnly the labeled ones came from your own pages. That gap is the schema work
One brand, two entitiesA name resolving once as a product and once as an organization is a split an engine sees too
Topics outnumbering everything elseYour headings name a lot of subjects and your markup names almost no things
The highest salience entity is not your productWhatever sits on the most pages, in the most weighted positions, is what your site is about
An entity on a single pageA passing reference rather than a claim, and engines read it the same way
Competitors inside your own graphUsually more of them than you expect, and rarely in a comparison you control
A person with no connection to the companyAuthor bylines on nine pages and nothing stating who they work for
The same labeled count after a schema changeRe-crawl and rebuild. If the number did not move, the markup did not land
Without Moose

Where the validator-and-whiteboard route goes wrong

You know how this normally goes: a validator, a crawl export, a whiteboard diagram nobody updates, and a firm opinion about schema from someone who read a blog post in 2019. It is slow, but slow is the smaller problem. These four are why the output does not survive contact with an engine.

Valid markup is not a graph

A validator checks syntax on one page. It cannot tell you that your product and your company are two disconnected entities across the whole site.

Strings are not things

Spreadsheets count text. Deciding that two spellings are the same organisation, and that a third is a different one, needs a resolution step nobody does by hand consistently.

The diagram is aspirational

Whiteboard graphs describe how the brand wishes it were structured. Engines read what is on the pages, which is usually thinner and messier.

It never gets run twice

A hand-built audit is a one-off, so nobody ever proves the schema change worked. Rebuilding here takes seconds, which is what makes the before and after worth having.

With Moose

Ask once, read the shape, publish the fix

The pages are already on your machine from the site crawl, so the graph is built from your own site rather than a third-party index of it.

01
Crawl the site once

Site Monitoring crawls the project and keeps the pages locally. The graph runs on those pages, so it waits until one crawl has finished.

02
Build it from chat

Ask for an entity graph, pick it from the Tools menu, or use the button on a new chat. Same card either way: choose Quick or Full, then start.

03
Read the shape, then export

Which type dominates, which entity carries the salience, and how many connections your pages state themselves. Take the CSV or PDF into the schema work, or just ask: Moose keeps the graph and can read it in any later chat.

A Quick run never leaves your machine

Quick reads your local crawl, and the connection mapping is local too, including the similarity pass, which uses a small embedding model on your own hardware. Full is the one that sends page text out, and only to the model you picked. Choose a local model and that stays on the machine as well.

How it reasons

Three kinds of connection, never blended

A graph that quietly invents relations is worse than no graph, because you would ship markup asserting things your site never said. So every connection carries its kind, and the card counts them separately.

The three kinds, on one site
Fathom (organization)→ founder →Jack Ellis labeled Fathom Analytics→ appears with →Web Analytics 42 shared pages User Documentation→ related to →Fathom Analytics 0.61
Labeled
Straight from what your pages state

Founder, publisher, brand, works for, part of. Quick takes these from your JSON-LD and follows the @id references inside it. Full adds the ones a model finds stated in your prose. If no page says who founded the company, there is no founder relation.

Shared page
Things that keep turning up together

Entities that repeatedly appear on the same pages, labeled "appears with" and carrying the number of pages they share. That is evidence of a pattern on your site, not a claim about the world.

Semantic
Names that sit close in meaning

A small embedding model runs on your machine, compares your entity names, and keeps the strongest few per entity above a similarity floor. Labeled "related to" and scored. This is the layer that still gives a site with no markup a usable graph.

Resolution
It merges, within a type

Case, punctuation and a trailing Inc or Ltd fall away, so "NinjaOne, Inc." and "Ninjaone inc" become one entity. Two different types stay two entities, which is why a brand can appear as both a product and an organization. That split is a finding, not a bug.

Salience
Weighted, not counted

Where a name appears counts as much as how often. Structured data outweighs a title, a title outweighs a subheading, and the score is compressed so one page repeating a word cannot run away with the ranking.

Limits
It tells you what it left out

The table and the exports carry the top 2,000 entities and 2,000 relations, with the true totals on the card. If the AI pass gets skipped, stopped or fails, the card says so instead of passing a Quick graph off as a Full one.

From the graph to the markup

The graph stays with the project after the card, and Moose reads it himself. You do not paste numbers back at him. You ask what to do about them.

What should we fix first?
I read the graph. Your pages state 3 of the 612 connections, the rest are my inference, and the biggest gap is Fathom resolving twice, once as a product and once as an organization. Here is the JSON-LD that makes it one: an Organization with the product as its brand, on a single @id. Put it on the layout template so every page carries the same id. Nothing goes live until you publish it.
What else should that template state?
A founder relation to Jack Ellis, who has nine pages of his own and nothing connecting him to the company, and a category on the product. One line each. Publish, re-crawl, then rebuild the graph and the labeled count should move.

Questions people ask

What is an entity graph, in plain terms?

A list of the things your site talks about, and the connections between them. Not keywords, and not pages. An engine builds one of these about you whether you look at it or not, so the useful move is to see yours and decide whether it says what you meant.

Why are most of my relations shared-page or semantic?

Because those two are the ones Moose can work out on his own. Labeled relations come from your markup, plus anything the Full pass reads out of your prose, and on most sites the markup stops at the article template. So the labeled number starts low. Raising it is the point of running this.

Do I need schema markup for this to work?

No. Without it you still get entities from your titles and headings, and connections from shared pages and name similarity. What you will not have is a single labeled relation, which is itself the finding.

What does the Full pass cost?

Nothing beyond time on a local model. On a cloud model it spends your OpenRouter key, or your monthly allowance if you are on a paid plan. You choose how many pages it reads: 100, 250, 500 or 1,000. Quick needs no model at all and is free on every plan.

What do I need before I can build one?

A project with a website, and one site crawl that finished. The graph reads pages already stored on your machine, so if no crawl has run the card sends you to Site Monitoring first.

Can Moose use the graph after he builds it?

Yes. The graph stays with the project, and Moose can read it in any later chat. Ask him which internal links to add, how the site should be organised, or which schema gap to close first, and he pulls the answer from the graph rather than from memory. He keeps what your pages state separate from what he inferred, so he will not tell you to fix markup that never existed. And if the project has no graph yet, he offers to build one.

How is this different from a coverage check?

Coverage answers whether you have written about a topic. The graph answers what your site says you are. You need both: one stops you writing duplicates, the other stops engines describing you as a category you do not sell in.

More things to ask Moose

All use cases
Built on your machine

See the version of you
an engine can read.

Download Hi, Moose, crawl your site once, and build the graph in seconds. Quick runs on the free plan.