Filter a closed catalog with one Jev boolean per item. Matches rise out of the pile when their probability clears a floor.
Requirements, wiring steps, and what this pattern adds to your project.
Pick how you want to pull this pattern in. Then wire env vars and routes the same way.
Download → Next.js app
Use Download → Next.js app in the preview toolbar. You get a zip scaffold (Pro downloads rewrite preview `/view/.../api/*` paths to `/api/*` automatically).
Extract the zip and install dependencies
Unzip the archive, then run `pnpm install` (or npm / yarn) in the project folder.
Fill .env.local
The download includes .env.local placeholders when needed. Add real values for: AI_GATEWAY_API_KEY.
Customize the agent and tool files
Adapt prompts, tools, and stop conditions in the generated project for your product.
Run the app and open the pattern route
Run `pnpm dev`, open the setup/checklist page if present, then navigate to the generated pattern route and verify responses.
AI_GATEWAY_API_KEYGet keyAI SDK APIs
experimental_evaluateProviders
External services
app/page.tsxapp/layout.tsxapp/api/search/route.tscomponents/search-filter-demo.tsxcomponents/catalog-pile.tsxcomponents/typesafe-ai.tsxhooks/use-search-filter.tslib/catalog.tslib/filter-questions.tslib/filter-policy.tslib/pile-layout.tslib/rate-limit.tslib/request-utils.tsREADME.mdnpm packages
6
Registry components
lib/filter-policy.tsPure decideFilter policy: keep a catalog id only when P(match) >= 0.70. A missing answer stays out. Do not call Jev from unit tests. Use Experimental_EvaluationMockModelV4.
lib/filter-questions.tsbuildFilterQuestions writes one boolean per catalog item. The item name and hint live in the instructions. MATCH_FLOOR is 0.70 and stays in application code.
lib/catalog.tsClosed emoji catalog. Jev may only answer these ids. Do not let the model invent items.
search/route.tsRate-limited experimental_evaluate call through AI Gateway model typesafe-ai/jev with zeroDataRetention. Returns decideFilter matches, never a free-text list.
Filter a closed catalog with one Jev boolean per item. Matches rise out of the pile when their probability clears a floor.
Requirements, wiring steps, and what this pattern adds to your project.
Pick how you want to pull this pattern in. Then wire env vars and routes the same way.
Download → Next.js app
Use Download → Next.js app in the preview toolbar. You get a zip scaffold (Pro downloads rewrite preview `/view/.../api/*` paths to `/api/*` automatically).
Extract the zip and install dependencies
Unzip the archive, then run `pnpm install` (or npm / yarn) in the project folder.
Fill .env.local
The download includes .env.local placeholders when needed. Add real values for: AI_GATEWAY_API_KEY.
Customize the agent and tool files
Adapt prompts, tools, and stop conditions in the generated project for your product.
Run the app and open the pattern route
Run `pnpm dev`, open the setup/checklist page if present, then navigate to the generated pattern route and verify responses.
AI_GATEWAY_API_KEYGet keyAI SDK APIs
experimental_evaluateProviders
External services
app/page.tsxapp/layout.tsxapp/api/search/route.tscomponents/search-filter-demo.tsxcomponents/catalog-pile.tsxcomponents/typesafe-ai.tsxhooks/use-search-filter.tslib/catalog.tslib/filter-questions.tslib/filter-policy.tslib/pile-layout.tslib/rate-limit.tslib/request-utils.tsREADME.mdnpm packages
6
Registry components
lib/filter-policy.tsPure decideFilter policy: keep a catalog id only when P(match) >= 0.70. A missing answer stays out. Do not call Jev from unit tests. Use Experimental_EvaluationMockModelV4.
lib/filter-questions.tsbuildFilterQuestions writes one boolean per catalog item. The item name and hint live in the instructions. MATCH_FLOOR is 0.70 and stays in application code.
lib/catalog.tsClosed emoji catalog. Jev may only answer these ids. Do not let the model invent items.
search/route.tsRate-limited experimental_evaluate call through AI Gateway model typesafe-ai/jev with zeroDataRetention. Returns decideFilter matches, never a free-text list.
Loading preview…


Open on desktop for the interactive preview.
Filter a closed catalog with one Jev boolean per item. Matches rise out of the pile when their probability clears a floor.
Loading preview…


Open on desktop for the interactive preview.
Filter a closed catalog with one Jev boolean per item. Matches rise out of the pile when their probability clears a floor.