Back to Signals

How we measure AI activity

How we count AI attention on PeerPush, the exact claims we allow ourselves to make, what we hide, and when we decide there is enough data to publish a number.

What counts as an “AI read”

We classify every request hitting PeerPush by user-agent and entry point. An “AI read” is any fetch of a PeerPush listing by an AI system, whether it loads the product page directly or receives the product inside a feed, list, or API response. It combines three categories:

  • AI crawlers: training crawlers operated by model providers (e.g., GPTBot, ClaudeBot, PerplexityBot, Google-Extended).
  • AI agents: browsing on behalf of a user via a chat assistant (e.g., ChatGPT-User, Claude-User).
  • MCP clients: explicit tool calls into PeerPush's Model Context Protocol endpoint.

Search-engine crawlers (Googlebot, Bingbot) and analytics bots (Ahrefs, Semrush) are excluded; they are categorized separately and not part of the “AI” share.

The verb ladder: what we claim and what we never claim

Every published stat uses one of four verbs, each backed by a specific observable event:

  • Read: an AI crawler, AI agent, or MCP client fetched the listing on PeerPush.
  • Served: PeerPush delivered a product's data to an AI engine, through a feed, the API, or a direct page read.
  • Indexed: a search-index crawler operated by an AI product fetched the listing repeatedly over time.
  • Served live: the listing was fetched during a live, user-triggered AI conversation or tool call.
  • Arrived from: a human visitor landed on the listing with an AI chat product as the referrer.

We never say a product was “cited” or “recommended” by an AI assistant. What a model says inside a private conversation is not observable from our side, and we do not publish claims we cannot verify from our own logs. Every claim is scoped to activity on PeerPush.

Where the numbers come from

All counts come from PeerPush's own first-party server logs: requests served by our infrastructure, classified at ingestion time. There are no third-party estimates, no panel extrapolation, and no sampling. If a number is shown, the underlying requests happened on our servers.

Honesty floors

Every stat has a minimum threshold below which it is hidden entirely. A per-product signal only appears once its volume, day-coverage, or cohort size clears the floor for that specific stat; category rankings additionally require a healthy cohort with broad AI coverage before any percentile is published. Below a floor we show nothing, not a zero, so small numbers are never dressed up as signal.

Positive-only policy

Public product pages only ever show stats a product has earned. There are no public shame metrics: no “not read by X” lists, no below-average badges, no absent-engine callouts. When a product has not cleared a floor, the section simply does not render.

Anti-abuse

Published stats are designed to be hard to inflate. Counts prefer distinct-day shapes over raw request volume, so replaying the same fetch thousands of times in one day does not move the number. When a product's recent AI activity spikes far beyond its own trailing baseline, its published stats are frozen at the previous values until the pattern normalizes and the anomaly is reviewed.

Platform totals, hub shape, and segment counts

Platform-wide totals are shown as real numbers: how many times AI systems read product data, how many upvotes builders have cast, how many countries see genuine human discovery.

The Signals hub lens pages publish shape rather than raw counts - share %, ordinal rank, relative bars, and change vs the prior window - which keeps the catalog's exact size off the public surface while still showing where attention is moving. Hub headline numbers appear only after a window has accumulated at least 50 distinct visitors; below that floor the page shows a “Calibrating” placeholder.

The per-segment discovery strips (below) do publish real segment-level counts, each gated by an eligibility floor so thin numbers are hidden rather than shown at zero. Human page-view figures are the one exception: they are rounded to two significant figures, so exact traffic can be cited without being reconstructed. A platform-wide total is never mixed into a segment strip.

K-anonymity floor

Public Signals surfaces never expose a named subject (a specific product, agent, category, or country) backed by fewer than 5 distinct visitors. Below the floor, the row is suppressed.

Privacy and redaction

  • IP addresses are never stored. Only a salted hash is retained.
  • Query strings, search terms, and prompt text pass through a PII redactor before publication. The redactor strips email addresses, phone numbers, OAuth-token shapes, and credit-card-shaped digit sequences.
  • Anonymous-visitor identifiers rotate daily, so the same anonymous browser is intentionally unlinkable across UTC days.

How fresh is the data

Aggregations refresh on rolling schedules: short windows update every few minutes, longer windows on slower schedules. The “Data fresh as of…” timestamp on each Signals page reflects the slowest aggregation still feeding that page.

How each panel is computed

Read by every major AI system

Three independent measures, not three steps of one journey. In the index is the share of listed products an AI crawler has read. Pulled for a live question is the share fetched by an assistant while it was answering someone. Sent a person is each assistant's share of the visitors who arrived from an AI chat. Bots are grouped by the company that operates them, and a company is named only when one of its own agents clears the privacy floor on its own.

Where software gets built

A country is placed by its builders' profile country, and only for builders who chose to show it. Territories fold into the state that administers them. A listing counts toward a country's weight only once it clears the peerPush quality floor, so signup volume alone cannot inflate a market. A country is named, ranked or rated only once enough distinct builders sit behind it and enough distinct builders sit behind the listings the rate is computed over, and it is given product chips only when it ships more of them than the map is willing to show, so a roster can never be read as a count. Everything below those floors renders as an unlabelled dot at a fixed size, carrying no country code at all, so neither bubble area nor page source leaks what the floor withholds.

What people cannot find

Each on-site search is attributed to the themes of the products it actually surfaced, then graded on how close the best match came. A theme's position is its rank among the plotted themes on two axes, how often it is asked for and how well it is answered, never a volume. A rank is relative by construction, so a theme is only called out as badly answered when its own share of weak matches also clears an absolute bar; in a window where nothing does, nothing is called out. Search text is never published: the theme is the unit, and junk or single-character queries are excluded before anything is counted.

What ships together

Across visible use cases on discoverable products we measure how often a pair of use cases travels together in one product, expressed as a share against the rarer of the two. Ribbon and arc width encode that weight; pairs below the privacy floor are never drawn.

Who is building, and market pulse

Who is building reports shares and ratios only: how concentrated quality activity is in the leading markets, how many of the last 30 days something shipped, and how far the highest quality pass rate sits from the busiest market's. Market pulse ranks categories on one of four independent reads at a time, over complete UTC days: peer trust as a depth-weighted rating out of five, and conviction, shipping and discussion each indexed to the leading category at 100. Those three are indexed rather than shared out because a product counts toward every category it belongs to, so the per-category tallies overlap and have no population total to divide by. A metric with too little to compare is dropped from the toggle rather than shown thin.

AI Surface Area (owner dashboard)

On private owner dashboards, AI Surface Area decomposes into four streams: AI crawlers indexing the product, traffic landing from AI chat assistants, programmatic API consumers, and MCP tool calls. Click-through events to external sites are deliberately excluded so the metric reflects discovery exposure, not downstream funnel behavior. Tiles are unweighted: the total is the simple sum of the four streams.

Hidden gems

Products with strong AI signal but low human visibility yet, in the last 30 days. Human visibility is a composite of upvotes, follows, and average rating. The thresholds re-calibrate as the catalog grows; the panel stays empty until the candidate pool is large enough to make percentile cuts meaningful.

Alternative lens (Switcher pressure)

On the per-alternative lens page, switcher pressure is the share of alt-page visitors who click through to a PeerPush challenger product. The page shows the top 3 challengers only; the full graph and verbatim queries are visible only on the verified owner's private dashboard.

Unmet demand

Three complementary signals over the last 30 days. PeerPush search is hybrid (pgvector cosine similarity combined with full-text search via reciprocal rank fusion). Even when the catalog has nothing genuinely close, hybrid search returns weakly-related neighbors - so a zero-result count is rare and not a useful signal. We capture three different angles instead.

  • Weak match: queries where the top result's semantic cosine similarity is below 0.55 (configurable). Suggests the catalog has nothing genuinely close. Captured at insert time from the hybrid search path; the simpler full-text fallback path is excluded.
  • Low CTR: queries with at least 50 impressions where the click-through rate is below 5%. Either the ranking is wrong, the taglines mislead, or the right product doesn't exist.
  • Re-search: queries followed by a different query from the same anonymous visitor within 60 seconds. Strong behavioural “I didn't find it” signal. Within-day actor stability only - cross-day re-search is intentionally invisible.

Every tab applies the k-anonymity floor of 5 distinct visitors before a query surfaces, and every query string passes through the PII redactor.

AI citation freshness (owner dashboard)

On private owner dashboards, we track when each of the tracked AI agent buckets (Claude, ChatGPT, Perplexity, Gemini, Copilot) last cited the product. Severity bands: fresh under 14 days, aging 14-30 days, stale beyond 30 days, never cited otherwise. Buckets the product has not been cited by are surfaced explicitly so the gap is visible. “Cited” means at least one MCP result impression for the product attributed to an agent in the bucket.

AI coverage gap

For each of the top 30 categories (by total events in the last 30 days) and each tracked AI agent bucket (Claude, ChatGPT, Perplexity, Gemini, Copilot), we compute the share of approved + published Products in the category that have been cited at least once by that agent in the last 30 days. Categories with fewer than 10 approved products are excluded so single-product percentages don't skew the matrix. The panel is suppressed until total MCP citation volume crosses the privacy floor.

Discovery signals strips

Category, use case, audience, and the “best”, “top rated”, and pricing pages each show a compact strip of up to three facts about that segment, and product pages show the same kind of strip about a single listing. The mix is chosen for the page: base segment pages lead with AI attention next to community activity, “best” pages show human reach and builder momentum, “top rated” pages show the reviewer story, and pricing pages show how the segment is priced.

Below an eligibility floor a fact is hidden entirely rather than shown at zero, the strip stops rendering once fewer than two facts clear their floors, and no more than three are ever shown. Every fact uses the Signals verb ladder and never says a product was cited or recommended by an AI assistant; on segment pages nothing names or ranks an individual product. Each stat links to its exact definition in the glossary below.

What each signal means

Every stat in a Discovery signals strip carries a small “i” that links to its definition below. These are the exact meanings, grouped by what they measure.

AI discovery

How much, how often, and by whom AI systems read a listing.

AI serves
Times PeerPush delivered product data to AI engines - through the AI feed, the API, or direct page reads - over the window.
Live AI fetches
Reads that happened live while an AI assistant was answering a real user question, not routine background crawling.
Live today
Whether AI engines have already read products in this segment today. A liveness check, not a count.
Time to first AI read
The median time a newly listed product waits before an AI engine reads it for the first time. The ledger is day-granular, so the finest it resolves is same-day.
Category standing
Where this product ranks by AI reads against every other product listed in its category.
Engines reading
How many times AI crawlers read this listing, and which engines those crawlers belong to.
Read streak
Consecutive days, counting back from today, that AI has read this listing every single day.
Repeat visits
How many of the last 30 days a single AI engine came back to re-read this listing.
Read consistency
How many of the last 30 days this listing was read by any AI at all.
Last AI read
How long ago an AI crawler last read this listing.
MCP citations
How often AI tools pulled this listing through MCP, and its typical position in those results.
Search index
Times a search engine AI indexer, such as OAI-SearchBot, crawled this listing.
API & MCP pulls
Reads served to AI apps and integrations through the PeerPush API and MCP, rather than web crawls.
Visitors via AI
People who reached this listing by clicking through from an AI assistant conversation.

Community

What builders and reviewers did around a product or segment.

Community pulse
Upvotes and new reviews builders logged across this segment over the window.
New reviews
New community reviews left across this segment over the window.
Discussion
New comments posted across this segment over the window.
New followers
People who followed a product in this segment over the window.
Updates shipped
Product updates builders shipped in public across this segment over the window.
Time to first upvote
The median time a newly listed product waits before its first community upvote.
Distinct reviewers
How many different people left a rating across this segment over the window.
Repeat reviewers
How many people rated more than one product across this segment - a depth-of-trust signal.
Written reviews
The share of ratings that came with a written review, not just a score.
Review cadence
How many of the last 30 days saw at least one new rating land across this segment.
Community award
A Product of the Day, Week, or Month award this product won from the community.

Human reach

Human traffic, deliberately rounded so exact numbers stay private.

Human reads
Human page views across this segment product pages, rounded to two significant figures so exact traffic stays private.

Catalog & pricing

Facts drawn from how products are listed and priced.

Live deals
Deals currently active across this segment, and the median discount they cut off list price.
API & MCP fit
The share of tools here that expose an API or MCP server, so AI agents can call them directly.
Typical price
The median starting price of paid plans across this segment - never a mean.
Pricing mix
How this segment tools split across pricing models: free, freemium, subscription, one-time, and paid.
AI-ready
Whether this product carries the structured data - use cases, audiences, platforms - that lets AI match it to the right questions.
Discoverable now
Whether this product is queryable through the PeerPush API and MCP right now.
Just launched
How recently this product was listed on PeerPush.

Methodology v4, last updated July 2026.