Open source · Powered by Jev, a System One decision model
Jev reads your page, makes the call, and tells you how sure it is.
JevSEO is an open-source SEO tool where the judgments are made by Jev, a decision model that returns typed answers and calibrated probabilities instead of prose. It scores a page three times — for Google, for answer boxes, and for AI assistants — and ranks what to fix.
Runs on your machine. Your keys never leave it. About two seconds and a hundredth of a penny per page.
git clone https://github.com/epergaboni/jevseo.gitcd jevseopnpm installpnpm dev # then open /settings and paste your TypeSafe keyWhy that matters
Ask a chatbot to score your page and it writes a number the way it writes a sentence. Ask twice, get two answers, with no way to tell a firm verdict from a guess. Jev commits to a position on a rubric you can read, and reports its own certainty separately — so you know which findings to act on and which to check yourself.
Node 22+ and a TypeSafe key. DataForSEO is optional and only powers the competitor comparison.
Problem and solution
Why another SEO tool
The short version: the job changed, and the two kinds of tool available each get half of it right.
The problem
- 1
Search stopped being one thing
Your page is now judged by three different systems that reward different things. Google ranks it, answer boxes extract from it, AI assistants decide whether to quote it. Almost every tool still scores the first one and calls it SEO.
- 2
Checklist tools cannot read
They count characters and check for missing tags. They will happily pass a page whose writing never answers the question in its own headline, because counting is all they can do.
- 3
Chatbots can read, but they improvise
Ask one to score your page and it writes a number the way it writes a sentence. Ask again tomorrow and the number moves. Worse, a firm verdict and a wild guess arrive in exactly the same confident tone.
- 4
So you end up guessing
You cannot tell which findings are solid, so you either act on all of them or trust none of them. Both waste the afternoon.
What JevSEO does instead
- 1
Score all three, separately
SEO, AEO and GEO each get their own judgments, their own score and their own fixes, because the work to improve them genuinely differs and sometimes conflicts.
- 2
Count what is countable, in code
Title length, missing descriptions, broken heading order, pages blocked from Google. Twenty checks, plain arithmetic, no model involved — because asking an AI to count characters invites a mistake it cannot catch.
- 3
Send only the reading to Jev
Twenty-five narrow questions, each with a written rubric whose levels describe concrete situations. Jev picks a level. It does not write an essay and it does not invent a number.
- 4
Report certainty separately
Every judgment carries its own confidence. Anything Jev was unsure about is flagged for a human to check rather than averaged into a tidy score you cannot interrogate.
That split is the whole design, and it holds everywhere in the codebase: code owns the rules, Jev owns the meaning, code owns the policy.
The problem
Your page has three readers now, not one
They reward different things, and optimising for one does not get you the others. A page can rank tenth and still be the one ChatGPT quotes, because it happens to contain one clean, specific sentence. Another can own the answer box and never get cited, because it says nothing worth repeating.
SEOSearch engine optimisation
The ranked list of blue links. What everyone already means by SEO.
Does this page serve what the searcher actually wanted, cover what they expect to find, and say anything the other results do not?
What gets scored
- Search intent match
- Topic coverage
- Substance over padding
- First-hand experience
- Distinct angle
AEOAnswer engine optimisation
The box at the top of Google that answers the question so nobody clicks. Also voice assistants.
Can a machine lift a correct, complete answer out of this page and show it on its own, with no surrounding context?
What gets scored
- Answers up front
- Snippet-ready passage
- Sections stand alone
- Defines its subject
- Follow-up questions
GEOGenerative engine optimisation
ChatGPT, Perplexity, Google's AI summaries. The assistants that cite sources.
Is there a sentence here worth quoting, and enough provenance to justify naming this page as the source?
What gets scored
- Quotable claims
- Evidence density
- Original data
- Entity clarity
- Grounds for trust
The three terms, in one line each
- SEO
- Search engine optimisation. Getting found in Google's ranked list of links.
- AEO
- Answer engine optimisation. Getting your answer shown in the box above the results.
- GEO
- Generative engine optimisation. Getting quoted and cited when an AI assistant answers.
Most tools score the first one and call it done. That is the gap this fills.
The output
A verdict you can act on, with its working shown
Every number on the report traces back to either a measurement or a written rubric you can read and disagree with.
Overall
50
SEO
49
AEO
41
GEO
59
Search intent match
Reshape the page around what someone searching this query actually wants. Serving the wrong intent caps the ceiling no matter how good the writing is.
Jev's read: “It serves a different need entirely.” 95% sure.
That verdict is correct, and a checklist tool would have passed the page. It is a button that sends you off to pay. The pages actually ranking for that search are rate tables with the numbers on them. The page is good; it is answering a different question.
Every claim carries its certainty
In that same report one judgment came back 95% sure and another 26%. The uncertain one is flagged as needing a human check rather than averaged into a tidy number. A chat model would have written both in the same confident tone.
Fixes are ranked, not listed
Ordered by how much score each one recovers. Blocking problems — a page Google cannot index — cap the score outright instead of being averaged away, because no amount of good writing fixes an invisible page.
Drafts work too
Paste an unpublished draft and get the same content judgments before it goes live, minus the checks that need a real URL.
The engine
Why Jev, and not ChatGPT
The obvious way to build this is to hand a page to an AI and ask for an SEO report. That gives you confident prose and a number nobody can defend. Ask twice, get two numbers.
Asking a chat model
"Rate this page's SEO out of 100 and explain your reasoning." → "This page scores 72/100. The content is comprehensive and well-structured, though the meta description could be…"
- The number is written, not measured. Ask again tomorrow and it moves.
- You cannot tell a confident answer from a guess. Both arrive in the same tone.
- Changing your mind about weighting means paying to run it all again.
- Twenty-five separate questions is minutes and real money, every time.
Asking Jev
score("Does a 40–60 word passage
answer the question if lifted out
and shown on its own?", [
"No passage survives being lifted…",
"A candidate exists but leans on
pronouns that break once separated…",
"Workable, needs light trimming…",
"Self-contained and correctly scoped…",
])
→ score 1.08 of 3 · 86% confident- A position on a rubric you wrote, in the repo, that you can argue with.
- Certainty is a separate number, so you know what to double-check.
- Judgments are stored, so re-weighting rescores instantly and free.
- All 25 questions answered in one pass, in about two seconds.
2.3s
per full analysis
Measured September 2026 on jev-1.13.0: 25 questions answered in one request.
£0.0001
per page
3,969 input tokens at $0.042 per million, September 2026. Output tokens are free.
45
signals per page
25 read by Jev, 20 measured in code. Every one shown in the report.
The rule that governs the whole codebase
Code owns the rules. The model owns the meaning. Code owns the policy. Title length is arithmetic, so a computer counts it and no AI is involved. Whether the writing shows real first-hand experience cannot be counted, so that goes to Jev as one narrow question. The weights that combine them are a file you can edit.
The mechanism
What happens when you press Analyse
- 01
Read the page
Fetches the URL and pulls out the real content, ignoring menus and footers.
Blocks private and loopback addresses. Link and image counts are scoped to the content region, so a mega-menu cannot satisfy the internal-linking check on boilerplate.
- 02
Measure what can be counted
Title length, missing descriptions, broken heading order, pages blocked from Google.
Twenty deterministic rules producing 0–1 signals. No model is involved, because asking one to count characters invites mistakes it has no way to catch.
- 03
Ask what needs reading
Whether it answers the question, whether anything is worth quoting, whether it sounds like experience.
Twenty-five narrow questions with written rubrics, sent in a single request. Jev reads the page once and answers all of them in parallel.
- 04
Compare against what ranks
Optionally pulls the current top ten and checks what they cover that you do not.
A second request, because it needs evidence that did not exist when the first ran. Results are cached for 24 hours so re-running costs nothing.
- 05
Score and rank the fixes
Three scores, then a list ordered by how much each fix is worth.
Judgments blend with checks per pillar at a weighting you own. Blocking violations cap the pillar outright rather than being averaged away.
Left column is what it does. Right column is how, if you care.
Honestly
What it will not do
Worth reading before you trust a number from any tool, this one included.
It will not rewrite your page
Jev reads and judges. It does not draft. You get what is wrong and how badly, with evidence, and the writing stays with you.
It does not run JavaScript
Pages that build themselves in the browser come back nearly empty. It says so plainly instead of scoring the shell, and suggests pasting the content instead.
It does not predict rankings
Nothing here is trained on ranking outcomes. It judges the qualities that make a page rankable, quotable and extractable. That is a narrower claim, and an honest one.
The weights are not science
They are defaults in a file you can edit. Validate them against your own pages before treating any score as a target.
Run it yourself in about a minute
Clone it, paste one key on the settings page, analyse something. Everything runs locally and nothing is sent anywhere except the page you asked about.
- Required
- A TypeSafe key — every judgment on every page. Without it nothing runs.
- Optional
- DataForSEO — only for comparing against what currently ranks. Everything else works without it; the comparison is skipped and the report says so.
Built and maintained by epergaboni. Open source under the MIT licence — fork it, change the weights, make it yours.
git clone https://github.com/epergaboni/jevseo.gitcd jevseopnpm installpnpm dev # then open /settings and paste your TypeSafe key