← All toolsLive tool · your own data

Semantic Grep

Paste your text, describe the lines you want in plain language, and Jev filters by meaning — not a regex. A live, in-browser take on the open-source jgrep. No key, just filter.

Your text — one item per line. Paste logs, messages, rows, anything.
Every line is one Jev decision — does it match your description? — so you filter by meaning, not a regex.
0/16checked
0.0selapsed
0/sdecisions/sec
Jev cost
2026-09-21 08:14:02 INFO user 4821 logged in from 10.0.0.5
2026-09-21 08:14:09 WARN payment retry 2/3 for invoice INV-2210 (card declined)
2026-09-21 08:15:44 INFO cache warm complete in 812ms
2026-09-21 08:16:01 ERROR unhandled exception in checkout: TypeError cannot read 'id' of undefined
2026-09-21 08:16:03 ERROR stripe webhook signature verification failed for evt_9f2
2026-09-21 08:17:20 INFO nightly backup uploaded (2.1GB)
2026-09-21 08:18:55 WARN slow query 3.4s: SELECT * FROM orders WHERE status = 'pending'
2026-09-21 08:19:10 INFO feature flag 'new_checkout' enabled for 5% of users
2026-09-21 08:20:31 ERROR failed to send email to user 5567: SMTP timeout
2026-09-21 08:21:02 INFO healthcheck ok
2026-09-21 08:22:48 ERROR OOM killed worker pid 3120 (memory 2.0GB)
2026-09-21 08:23:15 WARN rate limit hit for api key ...a41 (120 req/min)
2026-09-21 08:24:00 INFO deploy v2.14.1 started by ci
2026-09-21 08:24:52 ERROR checkout payment capture failed: insufficient_funds for user 4821
2026-09-21 08:25:33 INFO deploy v2.14.1 finished, 0 errors
2026-09-21 08:26:19 WARN disk usage 87% on db-primary

Filter your own logs, tickets or rows by meaning — one Jev call per line. Get an API key →

A live, in-browser version of the open-source jgrep — semantic grep on the Jev decision API. Your text is sent to Jev to judge each line and is not stored.

Get an API key →More open-source Jev tools
Build this with Jev

The same demo is one Jev call

  1. Take each line of your text
  2. Ask Jev if it matches your plain-language filter (noul)
  3. Run the lines in parallel
  4. Keep the lines Jev says match
one call per line · parallel · filter by meaning, not regex
const results = await Promise.all(items.map((item) =>  // items = lines of text
  fetch("https://jevtypesafeai.com/api/v1/decide", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.JEV_API_KEY}` },
    body: JSON.stringify({
      state: item,
      questions: {
        match: { type: "noul",
                 instructions: "Does this line match: <your filter>?" },
      },
    }),
  }).then((r) => r.json())
));
const kept = lines.filter((_, i) => results[i].answers.match.noul >= 0.5);
See a real decision YES · 97% · 188ms
State
Line: “08:24:52 ERROR checkout payment capture failed: insufficient_funds”
Filter: error lines about payments
Question noul · match
yes97%
latency 188mscost $0.000011

How it works

Regex matches characters; this matches meaning. You paste your own lines — log entries, support messages, CSV rows — and describe in plain language which ones to keep ("error lines about payments", "customers who sound angry", "anything mentioning a refund"). Every line becomes one Jev call that returns a calibrated yes/no with a probability, streamed back live, and we keep the lines that match. Then copy the filtered set straight out.

It runs entirely in your browser on your own text — nothing is stored — and it's the same primitive the open-source jgrep uses from the command line.

Build it into your pipeline

With a hosted key the same call becomes a real filter in your code or CI: one Jev decision per line at $0.42/M input tokens, returning a clean probability you can threshold — grep your logs for "looks like an outage", triage a support export for "wants to cancel", or gate a dataset on "contains PII" — meaning-based filters a regex can't express.

FAQ

Is this really filtering by meaning?

Yes — each line is an independent Jev decision that returns a calibrated probability that the line matches your plain-language description. There's no keyword matching; "customers who are upset" catches an angry line that never uses the word "angry".

Can I filter my own data?

That's the point — paste your own logs, tickets or rows (up to 60 lines in this free demo) and write your own filter. Nothing you paste is stored; it's sent to Jev only to judge each line.

What is jgrep?

jgrep is an open-source command-line "semantic grep" built on Jev. This is a live, in-browser version of the same idea so you can try it with no install — then use jgrep or the Jev API for real pipelines.

Is it free? How fast and cheap?

Free, no key — a rate-limited call to the live Jev API. Lines are judged in parallel, usually finishing in a second or two; the page shows the running cost (a fraction of a cent).

More: Predictive Spreadsheet · Batch Analyzer (your CSV) · More open-source Jev tools · All Jev tools

Semantic Grep — filter text by meaning, live (Jev) · Jev by TypeSafe AI