Jev is a decision model from TypeSafe AI that answers typed yes-or-no, choice and score questions in about 100 milliseconds, for $0.042 per million input tokens. It can't chat or connect to your ad accounts on its own. Pair it with PaidSync in a short script: PaidSync pulls your Google Ads search terms, Jev flags the ones that don't fit your business, and you approve the negative keywords before anything changes.
TypeSafe calls Jev a System One model, built for fast, structured decisions that software can use directly. It doesn't write text, write code or hold a conversation. TypeSafe says plainly that it isn't a replacement for the model behind Claude Code, Cursor or Muse Spark.
You send Jev a piece of state, such as a search term and its numbers, plus questions you name. There are three question types:
TypeSafe says most queries finish in about 100 milliseconds and quotes 70 to 500 milliseconds end to end. Input costs $0.042 per million tokens and output is free. OpenAI announced a similar Decisions API on 29 September, in limited preview.
A Google Ads search terms report can run to hundreds of rows, and PaidSync returns up to 500 per call, highest cost first. Every row asks the same question: would someone typing this buy from us? That's a yes-or-no call, which is what Jev is built for.
A chat assistant reads those rows one at a time and gets slower and pricier as the list grows. Jev scores each one in a fraction of a second, and at an estimated 400 input tokens a term (our estimate for the prompt in the script below), 500 terms come to roughly 200,000 tokens, under one cent. The probability it returns tells you which calls to trust and which to check by hand.
One agency, Dijitalpi, reports that Jev classified thousands of search terms across 15 brands in eight seconds for about US$0.20, with a specialist reviewing before any change. It didn't publish the counts, and we haven't checked them.
The script connects to PaidSync with an API key and calls get_search_terms_report for the last 30 days. It keeps the terms that spent money and never converted.
A yes-or-no question (is this term unrelated to what you sell?) and a choice question (is the searcher buying, learning, job hunting, looking for something free, or something else?). Each answer comes back with a probability.
Terms Jev is very sure about become proposed negatives. The unsure middle goes to a person, or to Claude or ChatGPT for a second look. Everything else stays.
Open Claude or ChatGPT with PaidSync connected, paste the approved list and ask it to add them as negative keywords. PaidSync's add_negative_keywords tool makes the change, and the assistant's confirmation prompt is your last check.
Plain JavaScript with the official MCP SDK. Set PAIDSYNC_API_KEY (from the PaidSync dashboard) and TYPESAFE_API_KEY (from TypeSafe) as environment variables, and change BUSINESS to one sentence about what you sell.
// triage.mjs. Run: node triage.mjs (Node 20+, after npm install @modelcontextprotocol/sdk)
// Keys come from environment variables and travel in headers, never in the URL.
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const BUSINESS = "We sell project management software to construction companies.";
// 1. PaidSync pulls the search terms (up to 500 rows per call, highest cost first)
const transport = new StreamableHTTPClientTransport(new URL("https://mcp.paidsync.ai/mcp"), {
requestInit: { headers: { "x-api-key": process.env.PAIDSYNC_API_KEY } },
});
const paidsync = new Client({ name: "jev-search-terms", version: "1.0.0" });
await paidsync.connect(transport);
const res = await paidsync.callTool({
name: "get_search_terms_report",
// several accounts? first call set_active_account with { account_id: "123-456-7890" }
arguments: { date_range: "last_30_days" },
});
const report = res.structuredContent;
if (!report?.success) throw new Error(report?.message ?? "No report returned");
const terms = report.data.searchTerms.filter(
(t) => Number(t.cost) > 0 && Number(t.conversions) === 0,
);
// 2. Jev answers two typed questions about each term
async function ask(t) {
const r = await fetch("https://api.typesafe.ai/v1/systemone", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TYPESAFE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "jev-latest",
state: { business: BUSINESS, search_term: t.searchTerm, clicks: t.clicks, cost: t.cost },
questions: {
unrelated: {
type: "noul",
instructions: "Is this search term unrelated to what the business sells?",
criteria: {
true: "A person searching this would not buy from this business",
false: "A person searching this could become a customer",
},
},
intent: {
type: "choice",
instructions: "What is the searcher most likely looking for?",
criteria: {
buy: "To buy or compare products like this",
learn: "Information about the topic",
job: "A job or salary information",
free: "Something free or DIY",
other: "Something unrelated",
},
},
},
}),
});
if (!r.ok) throw new Error(`Jev returned ${r.status}`);
const { answers } = await r.json();
return {
term: t.searchTerm,
cost: Number(t.cost),
unrelated: answers.unrelated.noul,
intent: answers.intent.choice,
};
}
const scored = [];
for (let i = 0; i < terms.length; i += 10) {
scored.push(...(await Promise.all(terms.slice(i, i + 10).map(ask))));
await new Promise((done) => setTimeout(done, 250)); // stays under Jev's default rate limit
}
// 3. Route by confidence. Tune both thresholds on your own account.
console.log("Proposed negatives:");
console.table(scored.filter((s) => s.unrelated >= 0.85));
console.log("Needs a person:");
console.table(scored.filter((s) => s.unrelated >= 0.4 && s.unrelated < 0.85));
await paidsync.close();
The pause between batches keeps you under Jev's default rate limit, which TypeSafe lists as 40 a second, so 500 terms take well under a minute. Start with a strict threshold, read what lands in each list for a week or two, then loosen it.
The script never changes your account, and that's by design. A PaidSync API key can read and preview Google Ads but can't apply Google Ads changes, so adding negatives always goes through a signed-in session where you see the change first. On the other platforms a key can apply changes, under the same checks as a sign-in. Google Ads creates and most other creates run as a dry-run preview first, destructive changes such as pauses and deletes need an explicit confirm, and every applied change is logged with a 7-day before-and-after result.
Each one follows the same shape. PaidSync reads, Jev scores, a person or a chat assistant decides, and PaidSync writes. For the approval step, see how to connect your ads to Claude, and for more ways to cut waste, see negative keyword automation with AI.
No. Jev only answers questions you send it and doesn't connect to any service. PaidSync supplies the Google Ads data, and a script passes it to Jev.
Jev is a decision model from TypeSafe AI, in early access since 15 September 2026. It answers typed yes-or-no, choice and score questions with a probability, in about 100 milliseconds. It doesn't chat, write text or take actions, so it isn't an agent.
At an estimated 400 input tokens a term, 500 terms is roughly 200,000 tokens. At $0.042 per million input tokens with free output, that's under one cent on the Jev side.
Pull the search terms report, flag terms that spent money without converting and don't fit what you sell, and have a person check the list before adding it. In this recipe PaidSync pulls the report, Jev flags the terms, and you add the approved negatives in Claude or ChatGPT.
A PaidSync API key can read and preview Google Ads but can't apply Google Ads changes. Adding negatives goes through a signed-in session in Claude or ChatGPT, so a person sees every change first.
Both answer questions with a fixed set of answers. OpenAI announced its Decisions API on 29 September 2026 in limited preview. The PaidSync side of this recipe is the same with either.
PaidSync is free for 15 tasks a month with no credit card, then plans start at $99 a month. Each report uses one or more tasks.
PaidSync runs 610+ tools across 14 ad and analytics platforms. Connect your accounts once and use them in any AI assistant you like.
Get Started Free Book a Demo