01. Sample construction
Thirty questions, three samples per engine, three engines. 270 responses per audit.
Each audit runs against thirty buyer-shaped questions drawn from real prospect language in the category. Every question is sampled three times per engine to account for response variability, then re-run across three independent engines. Total sample size per audit: 30 x 3 x 3 = 270 responses.
Occasionally a single engine drops a response (rate limit, timeout, refused answer). The audit reports actual successful count, not the target. For example, EX-02 landed at 269 of 270.
02. Engines
Three answer engines, chosen for coverage.
Anthropic Claude
with the web_search tool enabled
OpenAI
GPT-4o Search Preview
The API tier is directionally representative of consumer chat behavior, not identical to it. All three engines expose the current web-connected variant most often used in real buyer research. Results are labeled by engine so consumers of the audit can weight them by which surface they care about.
Caveat. Consumer ChatGPT with browsing, Claude.ai with the desktop app, and Perplexity Pro on iOS will not produce identical answers to the API responses this audit samples. The audit measures pattern and share, not literal end-user experience.
03. The eight buckets
Buyer questions are grouped by intent.
01category discovery “best product analytics tools for SaaS 2026”
02comparison “Amplitude vs Mixpanel for early-stage teams”
03segment fit “best product analytics for a bootstrapped SaaS startup”
04evaluation “is Amplitude worth the price for a small SaaS”
05pricing “how much does Amplitude cost for a 20-person team”
06trust “Amplitude data accuracy concerns”
07switching “how do I switch from Amplitude to PostHog”
08problem-first “my users aren’t sticking around, how do I figure out why”
Why problem-first is the load-bearing bucket. Category-named queries reward incumbents. Problem-first queries do not, because the buyer never names the category. This is where the answer graph tends to have
empty inventory, and where paid ChatGPT Ads pilots find leverage. See
EX-01 and
EX-02 for two replicated findings that both landed at 14 percent problem-first presence.
04. Brand extraction
Two-stage extraction: word-boundary candidate scan, then LLM adjudication for ambiguous vendors.
Stage 1 scans each response for occurrences of every known-brand token, case-insensitive, with word-boundary anchors so “pipedrive” matches “Pipedrive” but not “pipedrivesomething.” Every hit is captured with plus/minus 200 characters of surrounding context.
Stage 2 applies only to vendors whose canonical name overlaps with a common English word (Segment, Make, Refine, Default, Outreach, Heap, Iterable, June, and similar). Every candidate hit for an ambiguous vendor is passed to Claude Haiku 4.5, which reads the context and answers a single question: is this the company, or generic usage? Only confirmed hits count toward the leaderboard. Every adjudication is logged to a cache keyed on canonical brand plus context hash, so re-runs of the reporter never re-bill.
The known-brand list is category-specific and built before the audit runs. Adding a brand mid-audit is not permitted. A brand named zero times in the audit is still worth recording as absent.
Ambiguous brand handling. Prior versions of the protocol (v0.3 and earlier) reported raw stage-1 counts and disclosed the verb-collision problem in a caveat. v0.4 confirms every ambiguous hit with the LLM adjudicator, so counts published in EX-01 v0.4 and EX-02 v0.3 onward are the confirmed-brand counts. Category-leader numbers (HubSpot, Amplitude, PostHog, Mixpanel) are unchanged, since none of those tokens have verb overlap. See the
glossary entry for the canonical definition of the collision problem.
05. Recommendation classification
Six codes, one per confirmed brand mention.
Every mention that survives the two-stage matcher runs through a third pass. Claude Haiku 4.5 reads the response, focuses on how that specific brand is treated, and classifies the treatment into exactly one of six codes.
01SOLE. only vendor named as the answer.
02PRIMARY. named first or explicitly as the top pick among several.
03ALTERNATIVE. named among a short recommended set (2 to 4), no clear top.
04CONDITIONAL. recommended only under a stated narrow case ("if you specifically need X").
05NEUTRAL. named without endorsement, listed in passing, or cited as a source only.
06UNFAVORABLE. named with a negative or dismissive frame ("X has fallen behind Y", "avoid X").
Pick share of total = (SOLE + PRIMARY) ÷ total responses. This is the metric that maps to revenue. A dashboard that only tracks appearance treats a "Salesforce is bloated" mention identically to "Salesforce is the recommended CRM." The classifier separates them.
Recommendation-when-mentioned = (SOLE + PRIMARY + ALTERNATIVE) ÷ total appearances of that brand. A high number here with low appearance signals a retrieval problem. A low number with high appearance signals a positioning problem. Different diagnoses, different work.
Why not sentiment analysis. Sentiment scores classify the overall tone of a response. This classifier reads the treatment of a specific named brand inside a specific response. A response can be positive overall while treating one named brand as UNFAVORABLE. Sentiment misses that; the classifier catches it. See
cited vs chosen for the buyer-facing explanation.
06. Citation extraction
URL frequency, split by first-party vs external.
For engines that surface citations (Perplexity always, Claude with web_search often, GPT-4o Search Preview sometimes), the audit records the cited URL. Domains are then rolled up and split into two groups: the brand’s own domain (its documentation, blog, community) and external sources (independent publishers, listing sites, review sites, forums).
This split matters because it teaches which channel of content is actually doing the work. A brand that gets cited overwhelmingly from its own domain has a first-party-content playbook the answer engines respect. A brand that gets cited overwhelmingly from external listing sites has a placement problem, not a content problem.
07. What we do not do
Three explicit non-goals.
01no editorializing the prescriptive section reads the data for suggested moves without claiming causation. we do not say “Amplitude wins because their content is better.” we say “Amplitude’s own domain is cited N times.”
02no rankings without evidence every leaderboard position is backed by a countable number, not opinion. if a brand ranks #3 with 22 percent, the raw 60 responses are quotable.
03no advocacy the audit is a description of the current state of the answer graph. it is not a claim about which brand is better, which will win, or what a buyer should choose.
08. Right of reply
Any brand named in a published audit can request a free counter-audit.
The counter-audit runs the same protocol, on the same date, with the same engines. If it produces different numbers, both audits publish alongside. The original and the reply. The delta is annotated.
The intent is disclosure over adversarialism. The audit is a snapshot, not a verdict on any brand’s worth. A brand that wants to add context, refute a caveat, or run the same protocol with a different bucket set is welcome to.
Named brands: reach out via
the apply form or write directly to reply@itshintco.com. First response inside 48 hours.
09. Version
This methodology document is versioned. Every audit references the methodology version it ran under. Material changes to the protocol bump the version number.
Current version
v0.5 (2026-07-28)
Changes since v0.4
Recommendation classification shipped: every confirmed brand mention now runs through a third LLM pass (Claude Haiku 4.5) that classifies treatment as one of six codes (SOLE, PRIMARY, ALTERNATIVE, CONDITIONAL, NEUTRAL, UNFAVORABLE). Pick share of total is computed and published as a second column on every leaderboard. EX-01 v0.5, EX-02 v0.4, and EX-03 through EX-12 backfilled from cached responses.
Changes since v0.3
Two-stage matcher shipped: LLM adjudication (Claude Haiku 4.5) now confirms every ambiguous-vendor candidate against surrounding context. Verb-collision counts (Segment, Make, Refine, Default, Outreach) are now confirmed rather than hand-adjusted. EX-01 v0.4 and EX-02 v0.3 republished with corrected numbers.
Changes since v0.2
Word-boundary caveat and verb-adjusted counts made explicit.
Changes since v0.1
OpenAI GPT-4o Search Preview added as third engine (previously two-engine).