Skip to main content
Every measurement system has edges, and so does every agency. This page is the honest account of ours: what we promise and what we don’t, how detection actually works, where noise lives, and what we cannot tell you. Read it before you make a decision on an Attensira number, and read it again before you present one to someone else.

We promise the work, not the outcome

Your budget commits us to a volume of work each month, and work we don’t deliver isn’t charged. That is the whole promise. We do not promise a ranking, a citation, a mention, traffic or revenue: no one controls what an assistant or a search engine says, and a change that is never published cannot work. See Plans. The commitment has edges of its own:
  • Only some work is counted. Articles, page fixes and outreach pitches are committed and counted. Listing fixes are not counted yet, so nothing is committed for them, and monitoring is not a deliverable. On Costs these read not tracked yet, which never means zero delivered.
  • Work waiting on you counts as delivered. A pull request you have not merged, or an article you have not pasted in, is finished on our side. It is never a shortfall, and it cannot move a number until it is live.
  • Some work only you can do. No person on our side does client work, so where an action needs you (merging a pull request, sending the first pitches from your own mailbox, connecting an integration), it waits in the Inbox until you do it.

Not every surface is measured yet

Signup offers every place you might want to be found: the assistants, Google, YouTube, Reddit and review sites. The agents work on all of the ones you choose, but not all of them can be measured for every workspace. A surface with no reader, or one your plan does not include, says not measured yet rather than showing a number. See Models with no reader below.

How a mention is actually detected

A mention is a case-insensitive whole-word match of your brand name, or a host-aware match of your domain, against the text of a model’s answer. That is the whole method — there is no entity resolution and no disambiguation against a knowledge graph. For your name, boundaries are any non-letter, non-digit character, so possessives (“Acme’s”), hyphenation (“Acme-shaped”) and punctuation all count as named. For your domain, the rule is tighter, because ordinary word boundaries would hand other people’s hostnames to you. A label cannot be extended on either side: fake-acme.com, acme.community and acme.com.evil.test are three different owners and none of them counts as a mention of acme.com. Your own subdomains do count — www.acme.com and blog.acme.com are yours — and so does a domain inside a URL (acme.com/pricing) or at the end of a sentence (“we recommend acme.com.”). The boundary rules remove one class of error. A brand called Arc is no longer matched by “architecture”, “march” or “search”; a brand called Notion is no longer matched by “notional”. It does not remove the harder one. A brand whose name is also an ordinary word is still counted when that word is used in its ordinary sense: for a brand called Linear, an answer explaining that something “scales in linear time” reads as a mention. Separating those needs a judgement about what the answer is discussing, not a longer search string. The error runs one way — such a brand reads high, never low. Everything built on mentions inherits this. Your share of voice inherits it. Every competitor rate you compare against inherits it. If a competitor’s name is a common word and yours is not, the comparison is unfair in their favour, and vice versa. We store the verbatim answer text for every successful run precisely because of this. The stored answer is the evidence: you can read what the model actually said, and detection can be re-run over the same history when the method improves, without losing the past.
If your brand name is a common English word, check a handful of stored answers before trusting your rate. Two minutes of reading tells you whether your number is measuring your brand or the dictionary.

Models are not deterministic

Ask the same model the same prompt twice and you can get two different answers. Ask it an hour later and you can get a third. This is a property of the models, not a fault in our collection. Sampling is the response. We put a prompt to a model more than once per reading where your plan allows it — n=1 on Starter, n=3 on Growth, Business and Agency — so that a rate is computed from several draws rather than one. Gating deltas is the second response: a change has to clear a statistical bar before we will call it a change at all.

Why a small sample shows “no proven change”

Every delta is tested with a two-proportion z-test at 95% significance. If the movement does not clear that bar, you get {real: false, value: null} — which means we cannot prove a change, and never means the change was zero. At n=1, this will be the common outcome. One draw per prompt per model per day is a thin sample, so most week-to-week wobble sits under the noise floor and is reported as no proven change. That is the system working: it is refusing to sell you a story that the data does not support. If you need movements confirmed faster, sampling depth is the lever — n=3 gives three draws per reading. See Plans.

null is not zero, and small n is not a rate

Two shapes carry the numbers. A rate is {value, n}. A delta is {value, real}.
  • value: null means not measured. Nothing was observed, so nothing can be reported.
  • value: 0 with n > 0 means measured zero. Runs happened; none named you.
These are different facts and they must not be collapsed into one chart line. A dashboard that draws null as zero is telling you a model rejected you when in truth it was never asked. Small n deserves the same care. A rate of 33% at n=3 is one hit out of three draws; a single different answer moves it to 0% or 67%. Look at n before you quote the percentage, and prefer wider windows over single days.

Models with no reader are unmeasured, not zero

Per-model metrics carry tracked and readable.
  • tracked: false — this model is not configured for your workspace, so it was never queried. Rendering that as 0% invents a failure that did not happen.
  • readable: false — no reader exists for that surface, so we cannot collect it at all.
Not every model surface has an API reader. google_ai, in particular, has no API reader — it is read through the consumer surface instead, so answers do arrive, thinner and less regularly than on the API-backed channels. Two other things narrow what you see. A new workspace starts with four model surfaces turned on, not five: Gemini is switched on by hand, so an empty Gemini was most likely never switched on. And gemini is gated to Growth, Business and Agency: on Starter it is never queried, whatever the setting says. See Models and Plans.

Competitor rates do not sum to 100%

Competitor rates use the same denominator as yours: successful runs where that competitor was named, over all successful runs in the window. They are independent rates, not slices of a pie. One answer can name you and three competitors, so four rates each rise from the same run. Adding them up produces a number that can exceed 100% and means nothing. There is no share-of-voice metric in Attensira that divides a fixed total between brands.
The share_of_voice field carries the rate defined above — runs naming the brand over all successful runs. Most tools in this category use that name for the pie version instead, so a number under the same name from another tool is not comparable to this one.

Citation position is not a rank of your brand

AvgPosition is the mean index of a URL within the model’s own citation list, computed per source domain. It answers “when this domain is cited, how far down the list does it sit”. It is not a leaderboard position, not a ranking of your brand against competitors, and not comparable to a search engine result position. There is also no visibility score in Attensira. “Visibility” appears as a label on a section of the product and as a value in the get_analytics area enum; it is not a computed metric. Your brand’s own position is a different number: where you first appear in an answer, counted only among the names you track, and shown with that base (“#2 of 5 tracked names”). Track one more competitor and it can move without the answer changing. See Share of voice.

Sentiment rests on fewer answers than were read

Sentiment is measured only where an answer takes a position on your brand. Most answers that name a brand judge nothing, so the score usually rests on far fewer answers than were read; the page shows both counts. Competitors are not scored on the Sentiment page. It is a separate reading: share of voice counts a mention the same whatever the answer said about you. Only the consumer surfaces (ChatGPT, Perplexity, Google AI and Gemini) are read from a browser in the country you track, and only in the countries that can be read locally. Claude is never read from a location. It has no consumer reader, so its answers come from the API with the country stated in the question (User location: DE). The same holds for any run that fell back to an API. Such a rate says how the model answers someone who says where they are, not what a search from there returns. In a secondary market, these runs are labelled “location stated in the question” and never compared with a local reading, and a consumer surface that cannot be read from the country is shown as not measured rather than as zero.

What we cannot attribute

We measure two things: what models answer, and which pages AI crawlers fetch. We do not measure what happened next. Attensira cannot tell you that a mention produced a visit, that a citation produced a signup, or that any of it produced revenue. There is no identity join between an answer a model gave someone and a person who later arrived at your site. Anyone claiming that link for this class of product is inferring it, not observing it. Treat these numbers as a measure of presence in AI answers. Connect them to commercial outcomes with your own analytics and your own judgement, and say out loud that you are doing so.

Freshness: today is always partial

Work is enqueued on an hourly ticker, but each prompt × model × country combination runs at most once per workspace-local calendar day. Today’s numbers are therefore incomplete until the day closes, and the shape of that incompleteness is not uniform — some prompts will have run, others not. Failed runs are stored but excluded from n, so a day with collection problems produces a smaller sample rather than a distorted rate. Compare whole days against whole days. A “drop” measured at eleven in the morning is usually the morning. For how to read a number once you have it, see Reading the numbers. For specific symptoms, see Troubleshooting.