◎ Semantic Gap

Semantic Gap Engine

Per-prompt Gap Score routed to an owner and an MCP chain. The 'one best move' surface.

For every losing prompt, a four-component Gap Score across volume, coverage, semantic distance, and ecosystem - with a dominant-component call-out and a routing decision that picks the owner and the exact MCP chain. No more 'content calendar' guessing.

For:In-house brandAgency activatorConsultant
app.peecockpit.pro/semantic-gap
Avg Gap Score
0.68
across 120 losing prompts
Dominant
coverage
we have no page
Routed to content
62
of 120
Routed to PR
18
UGC / editorial gap
0.82
alternatives to Snowflake
dominant: coverage · visibility 62%
0.71
best PIM for EU
dominant: ecosystem · visibility 48%
0.65
data residency vs sovereignty
dominant: semantic · visibility 38%
0.58
how to comply with EU AI Act
dominant: volume · visibility 29%
Avg Gap Score
0.68
across 120 losing prompts
Dominant
coverage
we have no page
Routed to content
62
of 120
Routed to PR
18
UGC / editorial gap
What it does

Why this surface exists.

Workflow

The chain that runs behind the page.

6-step composite. Every tool call is logged for the tracked_id audit.

1
Ingest losing prompts

Peec get_url_report filtered by gap:gte:2 surfaces prompts where competitors are cited and we are not.

Peec · get_url_report
2
Measure volume

GSC impressions on the best-matching query are the primary signal, log-scaled and normalised within the topic cluster. When GSC has no data (new brand, low-traffic locale, untracked sub-query), Ahrefs keyword volume fills in so the score works on day one, not after months of GSC history.

GSC Wizard · search_analyticsAhrefs · keywords_explorer
3
Measure coverage

Peec list_search_queries fan-out for each prompt is compared to our sitemap, so the coverage component is binary per sub-query.

Peec · list_search_queries
4
Measure semantic distance

multilingual-e5-large-instruct embeds prompt + nearest own page; cosine distance becomes the semantic component.

e5-large-instructpgvector
5
Measure ecosystem

Peec get_url_content on cited competitor URLs clusters the winning domains by url_classification.

Peec · get_url_content
6
Score and route

Combine the four components into a single 0-1 Gap Score, with weights tuned per client (different industries trade off volume vs. semantic distance differently). Routing matrix maps (dominant × classification) to owner + chain.

Routing matrix
Datasources used

Where the numbers come from.

Each datasource has a provenance chip on the live dashboard, so you always know whether a number came from a live MCP call, a cached snapshot, or a fallback.

Peec AI MCP
Citation
Citation

Citations, share of voice, sentiment, search-query fan-out, prompt suggestions.

Brand mentions per model · per clusterShare of voice deltasCited URLs + url_classificationsearch_queries fan-out
Reach
Reach

Impressions, clicks, average position by query and page.

Top queries per URLImpressions vs clicks (zero-click gap)28-day position driftDecay candidates split-window
Glippy: GEO readiness
Readiness
Readiness

Per-URL GEO readiness score, missing schema, chunkability hints.

GEO score + gradeTop issues (schema, headings, chunkability)Quick facts for the URL
FAQ

Common questions.

Why four components?

Because a 'gap' has different roots. A high-volume low-coverage gap is a content problem. A high-semantic gap is a refresh problem. A high-ecosystem gap is a PR problem. Collapsing them into one score loses the routing signal.

Can I change the weights?

Yes. The weights are configurable per agency and per project from /settings, and the actual default mix is part of the calibration we tune with each client. Different industries trade off differently - PIM and B2B SaaS lean on coverage, regulated finance leans on ecosystem, ecommerce leans on volume.

What if GSC has no impressions data on the topic?

Volume falls back to Ahrefs keyword volume on the closest matching query. Useful for new brands, low-traffic locales, or any sub-query that hasn't accumulated GSC history yet. The fallback is automatic and the row is flagged so you can tell which data source ranked it.

Related

Where this connects.

Join the early-access list

You'll get an invite when we open the next batch, plus one short email when we ship a new feature page. No drip campaign, no spam.