A brand's appearance in an AI answer is easy to overcount. A model might mention a competitor, use your brand name as an ordinary word, or cite your domain without naming the brand in its answer. To track brand mentions with TypeSafe AI's Jev, first capture a fixed set of AI answers, then ask Jev a narrow, typed question about each answer's body: does it clearly refer to your brand? Screpy AI Visibility can supply monitored answer records; a separate workflow can pass selected text to Jev and store the resulting classification. This article shows that workflow with sample inputs, a real API request structure, and an illustrative response. It does not describe a built-in Screpy/Jev integration or claim that six sample answers represent the entire AI search landscape.
Define a mention before classifying one
Decide what you want to count before writing a prompt or dashboard formula. Here, a brand mention means that the body of a captured AI answer identifies the specified company, product, or accepted alias in the context of the user's question. A source URL that contains the brand, a footnote naming the domain, and an answer that recommends the brand are related but different observations. Store them in separate fields.
Consider a fictional product called Orbit. “Orbit helps teams audit pages” can be a brand reference if the answer is discussing SEO software. “The planet follows an orbit” is not. “Orbit is listed among tools, but I recommend another platform” is still a mention; it is not a recommendation. A competitor named in the same answer should not be counted as your brand. This is why a bare substring search is a useful candidate filter but a poor final label when names are ambiguous.
Start with the answers actually captured for a defined prompt set, platform, market, language, and period. Screpy AI Visibility reports monitored prompts, brand and competitor appearances, answer positions, and cited sources. The Jev step described here is an additional way to review ambiguous brand references; it is not required to use Screpy's existing reporting.
Prepare the answer record
Keep an immutable snapshot of the answer you evaluated. A useful record has the monitored prompt, platform, capture time, market and language, answer text, tracked brand, known aliases, and relevant competitor names. Keep the cited URLs in another field so a citation cannot silently become a body mention. If an answer changes tomorrow, yesterday's classification should still be reproducible against yesterday's text.
Run cheap checks before a model call: remove empty answers, deduplicate identical captures, and detect obvious exact-name candidates. Do not discard all answers without a substring match if you need to measure aliases or paraphrases. Conversely, do not send an entire crawl or every historical answer into one Jev request. The TypeSafe state model is designed for the context needed to answer a question, so send one bounded answer and a stable brand definition.
For example, pass “Orbit Analytics” as the tracked brand, “Orbit” as an alias, and a note that ordinary astronomical uses of orbit do not count. The prompt and answer provide disambiguating context. Record the alias-list version alongside the verdict. Otherwise a change to your brand dictionary can masquerade as a visibility trend.
Use a typed Choice question for ambiguous answers
A Choice question makes Jev select one of a finite set of labels. Ask about one captured answer at a time. The API request uses state, model, and questions; each question defines instructions and a criteria map. The JSON below shows the actual request shape with fictional data. The answer text is supplied by your capture system: Jev does not visit the prompt platform or fetch a URL.
{
"model": "jev-1.13.0",
"state": {
"tracked_brand": "Orbit Analytics",
"aliases": ["Orbit"],
"competitors": ["Northstar SEO"],
"prompt": "Which tools help audit an ecommerce site?",
"answer_body": "Northstar SEO can audit store pages. Orbit is also used for technical checks.",
"rule": "Count Orbit only when it refers to the tracked software, not the astronomical term."
},
"questions": [{
"type": "choice",
"instructions": "Classify only whether the answer body refers to Orbit Analytics. Do not use source URLs or invent a reason.",
"criteria": {
"brand_mention": "The answer body clearly refers to the tracked brand or its accepted alias.",
"competitor_only": "It refers to a named competitor but not the tracked brand.",
"ambiguous": "The possible brand reference cannot be resolved from the supplied text.",
"no_mention": "There is no reference to the tracked brand."
}
}]
}
An illustrative response, simplified to the fields relevant here, might be:
{
"choice": "brand_mention",
"probabilities": {
"brand_mention": 0.91,
"competitor_only": 0.03,
"ambiguous": 0.04,
"no_mention": 0.02
},
"confidence": 0.76
}
These values are invented to explain handling; they are not a benchmark or a measured Screpy result. The selected label answers the narrow question. The probabilities expose competing labels; confidence is a decision signal, not a guarantee that the label is correct. If the answer said only “the planet follows an orbit,” a good reviewer should expect no_mention, even though the alias string appears. Test that counterexample in your own evaluation set before relying on a classifier. For production calls, use the TypeSafe API reference to handle the full response envelope.
Convert verdicts into an AI visibility report
Store the label and its model version with the captured answer ID. Then apply a review policy in code. For instance, accept brand_mention automatically only above a threshold chosen from a labeled sample; send ambiguous, low-confidence cases, and new aliases to a person. A value such as 0.75 can illustrate routing, but it is not a TypeSafe recommendation or a universal accuracy threshold.
function routeMention(result) {
if (result.choice === "ambiguous" || result.confidence < 0.75) {
return "human_review";
}
return result.choice === "brand_mention" ? "count_mention" : "do_not_count";
}
For a report, divide reviewed brand-mention answers by eligible captured answers in the same prompt set and period. If 18 of 60 sampled answers qualify, report “18/60 captured answers” with the platform, locale, dates, and prompt-selection rule. Do not call this 30% of all AI searches. Keep a separate numerator for source-domain citations and another for favorable recommendations if those matter to the business.
A weekly QA sample should include accepted mentions, rejected matches, and cases routed for review. Compare results by alias, language, and prompt group; review disagreements and update the rules with a version. The broader Jev SEO workflow hub explains when to use typed decisions rather than generation.
Work through four captured answers
Use a small labeled set before scheduling classification at scale. The table below is a fictional review exercise, not a Screpy measurement or a Jev accuracy test. Assume “Orbit Analytics” is the software brand, “Orbit” is an approved alias, and the prompt asks for ecommerce SEO tools.
| Captured answer excerpt | Expected label | Why a reviewer would choose it |
|---|---|---|
| “Orbit Analytics audits product pages and flags canonical errors.” | brand_mention |
The full software name appears in the answer body. |
| “Northstar SEO checks redirects. The planet follows an orbit around its star.” | competitor_only |
A competitor is named; orbit is an ordinary word here. |
| “Orbit can help, depending on the store setup.” | ambiguous |
The alias appears, but the excerpt lacks enough context to identify the product confidently. |
| “See orbit.example for the full guide.” | no_mention |
Under this article's rule, a domain-only appearance is tracked as a citation or URL reference, not a body mention. |
The fourth row is a deliberate policy choice. Another team might count a domain in the prose as a brand mention, but it should define that rule before comparing reports. In the second row, if the answer also named Orbit Analytics elsewhere, the correct label would become brand_mention; a single answer can contain both your brand and a competitor. If you need multi-label output, ask separate atomic questions or combine the labels in code rather than forcing an exclusive category to represent two facts.
A first pilot can sample 50 captured answers from one prompt group. Have a reviewer label them without seeing Jev's output, then compare false positives, false negatives, and ambiguous cases. Review brand aliases that produced disagreements and update the alias definition. Re-run the same labeled set after a model or rule change. This yields a local decision-quality check for your monitored answers; it is not a general benchmark for Jev or AI search.
Check the boundaries before reporting results
This classification answers “Was the tracked brand referenced in this captured answer?” It does not tell you whether the platform recommends the brand, whether a cited page supports a claim, whether the answer is factually correct, or how often users see it. Those require separate evidence and questions. TypeSafe describes Jev as a system for typed decisions over supplied state, not a web crawler or copywriter (introduction).
Before comparing periods, hold the prompt set and sampling method as stable as possible. Note platform and locale changes, keep source text snapshots, and manually audit ambiguous names. A brand with a common-word alias is especially likely to need human review. If you need the larger measurement picture, start with what AI visibility in SEO measures and keep this Jev label as one field in that broader analysis.