JevPDF
Browser PDF search by meaning: Jev answers a yes/no per line on whether it answers your query, and matching lines light up.
Overview
JevPDF is 'Ctrl+F for when you don't know the exact words'. pdf.js extracts each page's text into lines locally in the browser, cached in IndexedDB by file hash. In meaning mode, each line becomes one Noul question, does this line answer the query, sent with the page text as shared state. Lines at or above 0.55 are highlighted and ranked by probability; if nothing clears the threshold, the closest lines are shown. An exact-text mode runs entirely locally.
The app sends 16 lines per request and keeps 16 requests in flight, so highlights stream in page by page; the README says checking every line of a 15-page paper costs well under a cent. Only extracted text goes to TypeSafe. A small Bun server serves the app and an /api/jev proxy that accepts only same-origin requests, pins the model, caps request size and rate-limits by IP, since the hosted demo spends real credits. It is an unofficial React, pdf.js and Jev demo.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this line answer the query? | — |
How it works
- pdf.js extracts lines locally and caches them
- For a meaning query, batch 16 lines per request with the page text as state
- Jev returns a probability per line
- Highlight lines at or above 0.55, ranked by probability; else show the closest
Strengths
- No embeddings, vector index or chunking needed
- Only extracted text leaves the browser
- Low reported cost per document
- Proxy guards against credit abuse
Caveats
- Line-level yes/no can miss answers spread across lines
- Requires a TypeSafe key for meaning search
- Unofficial demo
Getting started
bun install, cp .env.example .env.local (add TYPESAFE_API_KEY), bun run dev and open http://localhost:5173.At a glance
- Type
- Proxy
- Status
- prototype
- Language
- TypeScript
- Runtime
- browser (React) with Bun proxy
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Document search: in-browser PDF viewer that extracts each page's lines locally with pdf.js and asks Jev one `Noul` per line on whether it answers the query (16 lines per request, sharing the page text as state), highlighting lines at or above 0.55 page by page and ranking them by probability.
yibie/awesome-jevUnofficial Ctrl+F by meaning for PDFs: pdf.js extracts lines in the browser, Jev answers one Noul per line on whether it answers the query, and matching lines light up ranked by probability
AnotiaWang/awesome-decision-models\`server/index.ts\` is a small Bun server that serves \`dist/\` and the \`/api/jev\` proxy, which uses the same forwarding code as dev (\`server/jev-upstream.ts\`). Because the live proxy spends real credits, it only accepts same-origin POSTs from the app, pins the model, caps request size, and rate-limits each IP.
logicrw/awesome-jev-projectsBrowser PDF search where pdf.js extracts lines locally and Jev answers one Noul per line on whether it answers the query; code highlights lines above a 0.55 threshold ranked by probability, and only extracted text is sent to TypeSafe.
cobanov/awesome-jevAsk a PDF in your own words and watch the matching lines light up. React + pdf.js + TypeSafe Jev.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
For each line, the probability that it answers your query; lines at or above 0.55 are highlighted.
Is my PDF uploaded?
No, only the extracted text of the lines being checked is sent to TypeSafe.
Why not embeddings?
The README argues per-line yes/no questions need no index or chunking and are cheap enough to ask for every line.
Related projects
JSON-in/JSON-out CLI that reranks, filters or compresses search results with independent Jev Noul checks, keeping metadata intact.
CLIbetaRustLong-document search that walks a PageIndex tree, asking Jev Choice which page or branch answers the question, with no embeddings.
ProjectprototypePythonPostgreSQL toolkit with 41 Jev-powered semantic operators and natural-language-to-SQL, leaving joins and arithmetic to SQL.
ProjectbetaPythonTypeSafe cookbook showing how to evaluate many typed questions over one shared state in a single Jev request.
Articleproduction- Jev Search★ 534
Plain-language web search where a decision model like Jev picks query, sources and time range, then ranks Search1API results.
AppproductionTypeScript MCP server over Apple developer docs and WWDC transcripts that uses hybrid search, then Jev relevance scores to rank results.
MCP serverproductionTypeScript