Jev vs Regex: Which SEO Decisions Need a Model and Which Need a Rule

A regex is a text-matching rule and Jev is a small AI model that judges meaning, and a good deal of SEO work comes down to choosing between the two. We ran both over 2,944 search queries from our own site on two common jobs. For spotting brand queries they agreed on 99.4% and the regex should stay, while for search intent our regexes left 65% of the queries with no label at all.
Key takeaways
- Use a rule when a pattern decides the answer - brand queries, word counts, dates and thresholds all qualify.
- Use a model when the answer depends on meaning. Search intent does and our intent regexes skipped queries carrying 75% of impressions.
- Run the model once to audit your rules. Jev's 19 disagreements with our brand regex showed the regex was counting other companies as us.
- Jev did not follow an example in its own instructions, which is a reason to keep it out of jobs a rule can do.
- A four-question test sorts any SEO decision into rule, model, larger model or person.
About the data: both experiments in this post use 2,944 Search Console queries from our own site, tenpointlabs.com, so every query here can be quoted. These are the queries Search Console reports for web search between 9 June 2025 and 9 October 2026. They are a sample of our traffic and not all of it, because Search Console leaves out anonymised queries, and no GA4 data is used. Across the series as a whole our site is one part of the data and the rest comes from client and prospect accounts, which are anonymised and never named.
What is the difference between a regex and Jev?
A regular expression - or regex - is a pattern that a piece of text either matches or doesn't. ten\s?point matches "tenpoint" and "ten point" and nothing else. It costs nothing to run, it takes microseconds and it gives the same answer every single time.
Jev is a model from TypeSafe that reads a piece of text and answers a closed question about it with a probability attached. It can tell that "saas seo agency" is someone shopping for a vendor, which is something that no pattern is able to capture. However it also costs money on every request, it needs a network call and it can answer the same question slightly differently from one run to the next.
This is one of the two technical posts in the series. If you manage a marketing team then the takeaways above are the part worth keeping, and the test below is worth handing on to whoever builds your reports.
The four-question test
Ask these in order and stop at the first yes.
- Can code decide it from the data alone? If so, it's a rule.
- Does it depend on something outside the text? If so, it needs a person.
- Is it a closed question about what the text means? If so, it's a job for a decision model like Jev.
- Does the answer have to be written? If so, it needs a general-purpose model.
The first of those questions covers a great deal more ground than most people expect. When we went through our own tools we found 148 places in which something makes a decision, and every one of those listed below stayed a rule.
Table 1. Decisions we checked and left as code
| Decision | Why it stays a rule |
|---|---|
| Moving a content item from one workflow status to the next | A fixed set of allowed transitions |
| The priority score for a keyword | A formula with tests that pin the output |
| Whether data is stale | A date compared with a threshold |
| Health bands for a topic cluster | Cut-offs on numbers |
| Length bands by word count | Counting |
| Removing duplicate competitors | Normalise the domain, then compare |
| Whether an email address is a free-mail account | A lookup in a list |
| Checking SPF, DKIM and DMARC records | A DNS lookup and a parser |
According to TypeSafe's own notes Jev is weak at counting and at dates, so several of these are the worst jobs you could give it.
Experiment 1: is this query about our brand?
Splitting branded from non-branded queries is the first cut in most Search Console analysis. The usual way to do it is a short regex on the distinctive part of the name, which for us is ten\s?point, case-insensitive.
The Jev question:
{
"type": "noul",
"instructions": "Does `query` name the company Tenpoint Labs?",
"criteria": {
"true": "The query contains the name Tenpoint Labs or a spelling of it, such as tenpoint, ten point labs or tenpointlabs.",
"false": "The query does not name Tenpoint Labs."
}
}
A noul is Jev's yes-or-no question and it comes back as a probability. We counted 0.5 or higher as a yes.
Result. They agreed on 2,925 of 2,944 queries, or 99.4%. Few queries are branded and so most of that agreement is both methods saying no - the regex said yes to 22 queries and Jev to 7, and they shared 5. I read all 19 disagreements.
Table 2. A sample of the 19 disagreements (Jev's figure is the probability of yes)
| Query | Regex | Jev | My read |
|---|---|---|---|
| ten point mechanical | brand | 0.12 | A different business |
| ten point media | brand | 0.03 | A different business |
| ten point programme | brand | 0.06 | No company at all |
| tenpoint | brand | 0.49 | My question said yes; Jev didn't follow it |
| tenpoint logo | brand | 0.35 | My question said yes; Jev didn't follow it |
| tenpont | not brand | 0.50 | Probably us, misspelled |
- 11 were queries that the regex called branded and that, on the face of the text, name something else entirely. I judged these from the query alone and did not look any of them up.
- 6 were bare forms such as "tenpoint" and "tenpoint logo". My own question lists "tenpoint" as a spelling that counts, which means that by the instructions I wrote the regex was right on at least three of them and Jev was wrong.
- 2 were misspellings the regex missed, which Jev put at 0.50 and 0.51.

Verdict: keep the rule, and fix it. The regex is too loose because it counts searches for other things called "ten point" as brand traffic, and on a brand whose name is a common phrase that inflates the branded clicks in a report. A tighter pattern with an explicit list of accepted short forms should deal with the 11, though we have not run it yet. Jev's value here was as an auditor.
Experiment 2: what is this searcher trying to do?
Our analytics tool tags query intent with two regexes - checked in the order below - and leaves everything else blank.
commercial: \b(best|top|vs|versus|alternative|alternatives|software|tool|tools|platform|crm|pricing|price|cost|review|reviews|compare|comparison|app|apps|solution|solutions)\b informational: \b(what is|what are|how to|guide|examples|ideas|tips|meaning|definition|why)\b
Result 1: coverage. The regexes labelled 1,017 of the 2,944 queries, or 35%. The 1,927 queries that they skipped carried 38,854 of the 51,572 impressions, or 75% of the impressions on those 2,944 queries, not of the site's total.
Table 3. Queries the regexes left blank, with Jev's label
| Query | Impressions | Regex | Jev |
|---|---|---|---|
| b2b seo | 2,348 | none | informational, 0.92 |
| domain rating checker | 1,263 | none | transactional, 0.96 |
| saas seo agency | 670 | none | commercial, 0.99 |
| ai seo agency | 406 | none | commercial, 0.98 |
Result 2: where both gave a label. Jev chose the same label on 868 of 1,017, or 85%. In 109 of the 149 misses the regex said commercial and Jev said informational - as in "how to analyze citation gaps vs competitors", where "vs" tripped the commercial pattern. Checking informational first fixes 27 of those but lowers overall agreement from 868 to 834 because it breaks more queries than it mends.

Verdict: use the model. Intent is a question about meaning. In a separate test on five sites Jev matched a blind reader on about 86% of queries, which is a level that no list of trigger words is likely to reach.
The run. jev-1.13.0 on 9 October 2026, one request per query carrying both questions, about 500 input tokens each, median response 397 ms.
A habit worth copying
The habit we have taken from all of this is to run a model once over the data that an important rule decides on and then read the disagreements. If a better rule would settle them then the right move is to write the better rule. If they come down to meaning then the model deserves a proper test - on data it hasn't seen and against labels made by someone who can't see its answers.

FAQs
Should I use a regex or an AI model to classify search queries?
Use a regex when a pattern decides the answer, such as whether a query contains your brand name. Use a model when the answer depends on meaning, such as what the searcher wants.
How do I separate branded and non-branded keywords?
A regex on your brand name and its accepted short forms is the right tool. Check its matches by hand once, because a loose pattern counts other companies with similar names.
Is Jev more accurate than a regex?
On meaning, yes. On pattern matching, no: in our brand-query test Jev scored a spelling it had been told to accept at 0.49.
What should stay as code in an SEO pipeline?
Anything exact: counts, dates, thresholds, status changes, deduplication and lookups.
See where your brand stands in AI answers
The job where Jev did replace something for us was reading AI answers for brand mentions. Our Free AI Visibility Audit shows that output for your company. The line between what a rule should decide and what a model should decide is likely to keep moving and it will be worth watching where it settles.
This post is part of a series: Jev for SEO: what worked, what failed, and what we measured.
