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.

Get started
git clone https://github.com/epergaboni/jevseo.gitcd jevseopnpm installpnpm dev  # then open /settings and paste your TypeSafe key

Why 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. 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. 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. 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. 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. 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. 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. 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. 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.

Real output · gov.uk/vehicle-tax · “how much is car tax uk” · September 2026

Overall

50

SEO

49

AEO

41

GEO

59

High

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Get started
git clone https://github.com/epergaboni/jevseo.gitcd jevseopnpm installpnpm dev  # then open /settings and paste your TypeSafe key