Jev.aitools.fyi

Command Palette

Search for a command to run...

Product profile
Python95 starsUpdated 2026-10-05

jev-doc-search

Find the page that answers a question in a long PDF: PageIndex builds a tree, Jev Choice walks it, and Noul checks the pages.

Overview

jev-doc-search (github.com/VectifyAI/jev-doc-search) finds the page that answers a question in a long PDF. It uses Jev Choice. There is no vector database and no embeddings. VectifyAI, the team behind PageIndex (github.com/VectifyAI/PageIndex), turns the PDF into a tree of sections. Each section has a title, a summary, and a page range. tree_search.py walks that tree with one Choice per level. It keeps a beam of 3, picks candidate pages, then checks up to 16 pages with one Noul each. The model in page_search.py and tree_search.py is jev-1.13.0 through TypeSafeClient.system_one. Jevbox is the self-hosted library for many files. Its retrieval doc says it does not need PageIndex. This repo is the open recipe for one PDF.

Problem: A single Jev Choice can ask which page answers a question, until the PDF is longer than the request limit or the 255-option cap.

Built for: Engineers who need the page that answers a question in one long PDF, such as a 10-K, without standing up a vector database.

First indexed on Jev Directory: 2026-09-30

Creator and team

Name
VectifyAI
Organization
PageIndex
Handle
@VectifyAI

How Jev is used

Role in the product flow
Choice over PageIndex section menus, then Choice over page windows, then a Noul check on each candidate page
Primitives
ChoiceNoul
State in
The question, plus either a page's text (flat search and the Noul check) or a section title and summary (tree steps). See README and tree_search.py.
Decision out
A page id from Choice, then a yes probability from Noul. Pages at 0.5 or above are kept. If none clear 0.5, the best 2 are kept.
  1. Flat page search (page_search.py) is one Choice with one option per page. It stops when the request passes the token budget or 255 options.
  2. PageIndex builds a tree: title, summary, and start_index to end_index on each node.
  3. tree_search.py keeps a beam of 3 paths, scored by the geometric mean of the step probabilities.
  4. Long sections are split into windows. Up to 16 candidate pages each get one Noul: does this page state the answer?

Flat search is the short-document path. page_search.py puts every page's text in one Choice, and Jev returns a probability for each page. The README says that request must fit in 32,000 tokens, and a Choice takes at most 255 options. A 93-page NVIDIA 10-K is already about 76,000 tokens. A 318-page Citigroup 10-K is past the option cap. PageIndex (github.com/VectifyAI/PageIndex) replaces the flat menu with a tree. Each step is a small Choice whose options are 'title. summary'. The beam of 3 follows TypeSafe's hierarchical classification cookbook, which the README names. After the beam ends, page windows that fit in one request supply candidates, and a Noul with the page text in state decides what to keep. Choice probabilities always sum to 1, so a winner can exist even when no page answers. The Noul is the absolute check. Setup needs TYPESAFE_API_KEY and PAGEINDEX_API_KEY. Jevbox (extend-hq/jevbox) is a different product: a permission-aware document drive whose docs/retrieval.md says it does not require PageIndex or a vector store. DocJev classifies or splits one document from rules you write. jev-search plans web queries. This listing is the PageIndex team's script for tree search over one long PDF.

Sourced performance claims

  • README: NVIDIA's fiscal 2026 10-K has 93 pages and about 76,000 tokens, past the 32,000 token request limit. Citigroup's 2025 10-K has 318 pages, past the 255-option Choice cap.Source: github.com/VectifyAI/jev-doc-search README
  • README results table, both marked correct: NVIDIA fiscal 2026 revenue found on p37 and p51. Citigroup 2025 net income found on p12, p16, p134, and p135. The income-statement pages cited are NVIDIA p51 and Citigroup p134.Source: github.com/VectifyAI/jev-doc-search README
  • tree_search.py sets MODEL to jev-1.13.0, BEAM to 3, MAX_CANDIDATES to 16, and VERIFY_MIN to 0.5. Kept pages are those at or above 0.5, or the best 2 if none qualify.Source: github.com/VectifyAI/jev-doc-search tree_search.py
  • Public GitHub repo VectifyAI/jev-doc-search had 95 stars and 3 forks on 2026-10-05. VectifyAI is the team behind PageIndex (github.com/VectifyAI/PageIndex).Source: GitHub star counts, 2026-10-05

Features and stack

Features

  • page_search.py for short PDFs: one Choice, one option per page
  • tree_search.py for long PDFs: beam of 3, page windows, Noul check up to 16 pages
  • Reuse a PageIndex doc_id so the same PDF is not uploaded again
  • Apache-2.0. Python. Created 2026-09-30
  • README worked example on the NVIDIA fiscal 2026 10-K and the Citigroup 2025 10-K

Stack

  • Python
  • typesafe_sdk
  • jev-1.13.0
  • PageIndex
  • pypdf

Pricing: Apache-2.0 code. Runs need your TYPESAFE_API_KEY and PAGEINDEX_API_KEY. The README does not publish a price table.

FAQ

How do you search a long PDF with Jev without embeddings?
PageIndex builds a tree of sections with a title, a summary, and a page range. tree_search.py asks Jev one Choice per level, keeps the 3 best paths, then checks candidate pages with Noul. The README states there is no vector database.
Why does one Choice per page fail on a 10-K?
The README gives 2 limits. State plus the Choice must fit in 32,000 tokens. NVIDIA's fiscal 2026 10-K is 93 pages and about 76,000 tokens. A Choice also takes at most 255 options. Citigroup's 2025 10-K is 318 pages.
How is jev-doc-search different from Jevbox?
Jevbox is Extend's self-hosted document library. Its docs/retrieval.md says search uses TypeSafe and does not require PageIndex or a vector store. jev-doc-search is VectifyAI's open recipe that does use PageIndex, for one PDF at a time.
Which API keys does the script need?
The README setup exports TYPESAFE_API_KEY (TypeSafe console) and PAGEINDEX_API_KEY (PageIndex dashboard). The client is TypeSafeClient with model jev-1.13.0.

Related learn guides

Original Jev guidance that pairs with this product pattern.

  • System One model

    The model family behind Jev: parallel typed questions, one forward pass, probabilities you can threshold.

  • Jev use cases

    The patterns builders actually search for: moderation, routing, triage, RAG verify, and agent gates.

Related products

Hand-picked neighbors with rich profiles or overlapping tags.

ApplicationsTypeScript401
Demo
Self-hostable document library: Jev Choice beam search over folders, documents, and sections, plus Score usefulness filtering, with SpiceDB permissions and MCP.
applicationsdocumentsrag
ApplicationsPython
DemoFeatured
DocJev (github.
applicationsdocumentsclassification
Agent toolingTypeScript427
Demo
Search the web with TypeSafe's Jev: source selection, query understanding and relevance ranking.
agent-toolingragsearch
By Rishit