Try it
Copy the code ↓- Data source
- Decision schema
- Model inference
- Structured result
2 Decision schema 4 typed questions
query_intentchoicebuyercomparisoninformationalnavigationalintent_matchnoulprobability 0–1citation_chancescoreunlikelypossiblelikelyvery_likelyfirst_fixchoiceanswer_firstadd_proofrefresh_datafix_title_metaadd_faq_schemanone
3 Model inference typesafe/jev-1.13
Waiting for a run.
4 Structured result
Raw JSON
Run the demo to see the JSON answers, the highlighted pick and the final action.
FLATKEY_API_KEY and run.curl -sS https://router.flatkey.ai/api/alpha/decisions \
-H "Authorization: Bearer $FLATKEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "Query: \"best crm for small agencies pricing\"\n\nPage: /blog/what-is-a-crm/\nTitle: What Is a CRM? The Complete 2024 Guide\nH1: What is a CRM and why does it matter?\nOpening: \"Customer relationship management has a long history. In this guide we explore where CRMs came from, the many types that exist today and why businesses of every size care about them…\" (pricing table appears 1,800 words down, last updated 2024)\n\nTask: query_intent, intent_match, citation_chance, first_fix.",
"questions": {
"query_intent": {
"type": "choice",
"instructions": "What is the searcher behind this query most likely trying to do?",
"criteria": {
"buyer": "Ready to pick or pay for a product or service",
"comparison": "Weighing named options or alternatives before buying",
"informational": "Learning how something works, no purchase in sight",
"navigational": "Looking for one specific site or page"
}
},
"intent_match": {
"type": "noul",
"instructions": "The page directly answers the intent of the query near the top, without the reader having to scroll past unrelated content."
},
"citation_chance": {
"type": "score",
"instructions": "How likely is an AI assistant such as ChatGPT, Gemini or Claude to quote or cite this page when answering the query?",
"criteria": [
"unlikely",
"possible",
"likely",
"very_likely"
]
},
"first_fix": {
"type": "choice",
"instructions": "Which single change would most improve how well this page serves the query and its chance of being cited?",
"criteria": {
"answer_first": "Put a direct answer to the query in the opening paragraph",
"add_proof": "Add concrete numbers, examples, sources or first-hand evidence",
"refresh_data": "Update outdated facts, prices, versions or dates",
"fix_title_meta": "Rewrite the title or meta description to match the query",
"add_faq_schema": "Add an FAQ block or structured data for the follow-up questions",
"none": "The page already serves the query well; leave it"
}
}
}
}'// Node.js 18+ (built-in fetch). Run: FLATKEY_API_KEY=... node jev.mjs
const body = {
"model": "typesafe/jev-1.13",
"state": "Query: \"best crm for small agencies pricing\"\n\nPage: /blog/what-is-a-crm/\nTitle: What Is a CRM? The Complete 2024 Guide\nH1: What is a CRM and why does it matter?\nOpening: \"Customer relationship management has a long history. In this guide we explore where CRMs came from, the many types that exist today and why businesses of every size care about them…\" (pricing table appears 1,800 words down, last updated 2024)\n\nTask: query_intent, intent_match, citation_chance, first_fix.",
"questions": {
"query_intent": {
"type": "choice",
"instructions": "What is the searcher behind this query most likely trying to do?",
"criteria": {
"buyer": "Ready to pick or pay for a product or service",
"comparison": "Weighing named options or alternatives before buying",
"informational": "Learning how something works, no purchase in sight",
"navigational": "Looking for one specific site or page"
}
},
"intent_match": {
"type": "noul",
"instructions": "The page directly answers the intent of the query near the top, without the reader having to scroll past unrelated content."
},
"citation_chance": {
"type": "score",
"instructions": "How likely is an AI assistant such as ChatGPT, Gemini or Claude to quote or cite this page when answering the query?",
"criteria": [
"unlikely",
"possible",
"likely",
"very_likely"
]
},
"first_fix": {
"type": "choice",
"instructions": "Which single change would most improve how well this page serves the query and its chance of being cited?",
"criteria": {
"answer_first": "Put a direct answer to the query in the opening paragraph",
"add_proof": "Add concrete numbers, examples, sources or first-hand evidence",
"refresh_data": "Update outdated facts, prices, versions or dates",
"fix_title_meta": "Rewrite the title or meta description to match the query",
"add_faq_schema": "Add an FAQ block or structured data for the follow-up questions",
"none": "The page already serves the query well; leave it"
}
}
}
};
const res = await fetch("https://router.flatkey.ai/api/alpha/decisions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.FLATKEY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
if (!res.ok) throw new Error(`Jev request failed: ${res.status} ${await res.text()}`);
const { answers, usage } = await res.json();
console.log(JSON.stringify(answers, null, 2), usage);# Python 3.8+ (pip install requests). Run: FLATKEY_API_KEY=... python jev.py
import json, os, requests
body = json.loads(r"""{
"model": "typesafe/jev-1.13",
"state": "Query: \"best crm for small agencies pricing\"\n\nPage: /blog/what-is-a-crm/\nTitle: What Is a CRM? The Complete 2024 Guide\nH1: What is a CRM and why does it matter?\nOpening: \"Customer relationship management has a long history. In this guide we explore where CRMs came from, the many types that exist today and why businesses of every size care about them…\" (pricing table appears 1,800 words down, last updated 2024)\n\nTask: query_intent, intent_match, citation_chance, first_fix.",
"questions": {
"query_intent": {
"type": "choice",
"instructions": "What is the searcher behind this query most likely trying to do?",
"criteria": {
"buyer": "Ready to pick or pay for a product or service",
"comparison": "Weighing named options or alternatives before buying",
"informational": "Learning how something works, no purchase in sight",
"navigational": "Looking for one specific site or page"
}
},
"intent_match": {
"type": "noul",
"instructions": "The page directly answers the intent of the query near the top, without the reader having to scroll past unrelated content."
},
"citation_chance": {
"type": "score",
"instructions": "How likely is an AI assistant such as ChatGPT, Gemini or Claude to quote or cite this page when answering the query?",
"criteria": [
"unlikely",
"possible",
"likely",
"very_likely"
]
},
"first_fix": {
"type": "choice",
"instructions": "Which single change would most improve how well this page serves the query and its chance of being cited?",
"criteria": {
"answer_first": "Put a direct answer to the query in the opening paragraph",
"add_proof": "Add concrete numbers, examples, sources or first-hand evidence",
"refresh_data": "Update outdated facts, prices, versions or dates",
"fix_title_meta": "Rewrite the title or meta description to match the query",
"add_faq_schema": "Add an FAQ block or structured data for the follow-up questions",
"none": "The page already serves the query well; leave it"
}
}
}
}""")
res = requests.post(
"https://router.flatkey.ai/api/alpha/decisions",
headers={"Authorization": f"Bearer {os.environ['FLATKEY_API_KEY']}"},
json=body,
timeout=60,
)
res.raise_for_status()
data = res.json()
print(json.dumps(data["answers"], indent=2), data.get("usage"))
No Flatkey key yet? Get one for Jev 1.13 →
About this use case

Who / when
Audience
- SEO and GEO agencies running full-site audits for clients
- in-house growth teams with thousands of programmatic or blog pages
- tool builders adding page-level judgments to an SEO or AI-visibility product
Triggers
- a 10,000-page site where an LLM rubric per page costs too much, so you audit a sample
- you want to know which pages ChatGPT, Gemini or Claude are likely to quote
- Search Console exports with thousands of queries and no way to tell buyers from browsers
- the audit runs once at onboarding and is stale a month later
The workflow
- 01Page + queryTarget query, title, H1 and the first answer block from your data toolInput
- 02Intent + matchBuyer or browser? Does the page answer that intent?Jev
- 03Citation chanceHow likely an AI assistant quotes this page, plus the first fixJev
- 04Fix queueCode ranks pages; an LLM writes only the flagged fixesYour code
Question shape
{
"query_intent": {
"type": "choice",
"instructions": "What is the searcher behind this query most likely trying to do?",
"criteria": {
"buyer": "Ready to pick or pay for a product or service",
"comparison": "Weighing named options or alternatives before buying",
"informational": "Learning how something works, no purchase in sight",
"navigational": "Looking for one specific site or page"
}
},
"intent_match": {
"type": "noul",
"instructions": "The page directly answers the intent of the query near the top, without the reader having to scroll past unrelated content."
},
"citation_chance": {
"type": "score",
"instructions": "How likely is an AI assistant such as ChatGPT, Gemini or Claude to quote or cite this page when answering the query?",
"criteria": [
"unlikely",
"possible",
"likely",
"very_likely"
]
},
"first_fix": {
"type": "choice",
"instructions": "Which single change would most improve how well this page serves the query and its chance of being cited?",
"criteria": {
"answer_first": "Put a direct answer to the query in the opening paragraph",
"add_proof": "Add concrete numbers, examples, sources or first-hand evidence",
"refresh_data": "Update outdated facts, prices, versions or dates",
"fix_title_meta": "Rewrite the title or meta description to match the query",
"add_faq_schema": "Add an FAQ block or structured data for the follow-up questions",
"none": "The page already serves the query well; leave it"
}
}
}Gate policy
≥ 0.90
Act in code: buyer or comparison queries with intent_match false go straight to the fix queue with Jev's first_fix as the brief for the writing model.
0.60–0.90
Queue the page but rank it below clear calls; batch these for a human skim before the writing model spends tokens.
< 0.60
Do not auto-fix. Add the page to a monthly manual review sample; mixed signals often mean the query maps to the wrong page.
Failure modes
Pre-launch checks before you trust auto-routing:
- Sending the whole HTML; send the query, title, H1, meta and the first answer block so Jev judges what readers and crawlers see first;
- Asking Jev to write the new title or answer; it only decides, a writing model produces the copy;
- Treating citation_chance as ground truth; check it against the citations your data tool actually observes;
- Running the audit once; the cost is low enough to re-run monthly and catch pages that drift;
- Expecting search volume or backlinks; Jev has no index, so keep Semrush, Ahrefs or Search Console as the data source;
FAQ
Why use Jev for an SEO audit instead of a chat model?
An audit is thousands of small judgments per site. In the source article, Cris Vels estimates that at Jev's published median cost per decision a 20-point rubric across 10,000 URLs costs about $13.60, cheap enough to cover every page instead of a sample. Jev answers all questions about a page in one parallel pass and returns probabilities, so code can decide what to fix.
What does the audit cost compared with an LLM agent?
The source article cites Ryze AI's own reported numbers: an SEO/GEO audit that cost an agency about $250 in agent usage now costs about $25. Ryze sells that agent, so treat it as a vendor claim and measure on your own site.
Can Jev write the new titles and answers?
No. Jev makes yes/no, pick-one and score decisions; it does not generate text. The stack in the source article is: your data tool pulls pages, queries and citations, Jev judges them, and an LLM writes the fixes.
Does this replace Semrush, Ahrefs or Search Console?
No. Jev has no index, search volume or backlink graph of its own, and it reads text only. Keep your data tool for the raw data and convert screenshots or PDFs to text first.
What other audit questions can I add?
The same call can carry more questions per page: keep or change verdicts for title, meta, H1, FAQ and schema, competitor scores on answer, depth, proof and freshness, internal-link candidates, and yes/no gates for AI-written drafts. Add them to the question shape and pay for the page text once.
What does the Flatkey call look like?
POST https://router.flatkey.ai/api/alpha/decisions with Authorization: Bearer …, Content-Type: application/json, and a body of state, model (typesafe/jev-1.13), and questions (choice / score / noul). This is not an OpenAI-compatible /v1 chat endpoint.
Can I bring my own API key?
Yes. Try the free demo above without signing in. To run it live on your own text, sign in with Google and connect a Flatkey or OpenRouter key (a quick test call runs when you save it). Manage or delete it anytime under Dashboard → BYOK. Keys are stored encrypted on the server, used only for runs you trigger, and never sent back to the browser. Need a Flatkey key? Get one for Jev 1.13 on Flatkey.
Is this the official TypeSafe Jev product page?
No. jev-llm.com is an independent research and practice site. Verify pricing, models and terms at the original TypeSafe sources.
Sources
Jev AI could cut 90% of the SEO/GEO costs for your agency. An SEO/GEO audit that used to cost an agency about $250 in agent usage now costs about $25. The stack that works: → Your data tool pulls the pages, queries, and citations → Jev judges all of it → An LLM writes the fixes
— @cris_vels View the post on X →
Wire this gate with your own key
Bring your own key through Flatkey / OpenRouter. Keep exact checks in code.