Jev directory
CommunityJev Integrations & Adapters
Jev Call Router
TypeScript service and library that places Jev between a PBX such as Asterisk or FreePBX and call destinations, classifying caller intent into predefined routes. Each route maps to an explicit PBX action, with low-confidence or unhandled calls sent to a fallback route.
- Stars
- 18
- Reading time
- 2 min
- Published by
- Community
- Added
- Oct 2026
Highlights
- TypeScript service and library that places Jev between a PBX and call destinations.
- Classifies caller intent into predefined routes, each mapped to an explicit PBX action.
- Low-confidence or unhandled calls are sent to a designated fallback route.
- Requires Bun 1.3+, a TypeSafe API key, and an OpenAI-style speech-to-text endpoint.
- Core router, Jev provider, and types do not depend on Asterisk; adapters implement CallSession.
Questions about this entry
Short answers drawn from the linked project or page.
Clone the repository, run bun install, copy .env.example to .env and fill in values; .env is gitignored. Use bun start for the service or bun run demo for the demo runner.
TYPESAFE_API_KEY is required. STT_API_KEY, STT_BASE_URL, and STT_MODEL are required for speech-to-text. ARI_URL, ARI_USERNAME, and ARI_PASSWORD are required for bun start. Other variables such as TYPESAFE_DEFAULT_MODEL, STT_LANGUAGE, ARI_APP, ANTHROPIC_API_KEY, WEBHOOK_URL, WEBHOOK_SECRET, and PORT are optional.
It supports Asterisk 16+ with ARI enabled, or FreePBX 16/17, which runs Asterisk underneath. The core router, Jev provider, and types do not depend on Asterisk; a PBX adapter only has to implement the CallSession interface.
Each decision is one choice question whose options are your described routes plus need-more-information and no-matching-route. The router validates that the route is known and confidence is at least minConfidence; low confidence asks again up to maxAttempts, while invalid, failure, or timeout uses fallbackRoute.
Caller audio is sent to a speech-to-text service over an OpenAI-style /audio/transcriptions endpoint. An optional Claude interpreter summarizes the transcript and removes personal details. Jev receives the transcript and route options, and an optional webhook can receive routing outcomes signed with HMAC-SHA256.
It is a TypeScript service and library that requires Bun 1.3+. It uses the official @typesafe-ai/sdk systemOne API for Jev decisions.
Deterministic rules run first via routeDirectly(call) for VIP lists, business hours, per-number opt-in, or dialplan flags. When routeDirectly returns a route, Jev is not called and the deterministic route is used.
Reactions & coverage
Posts, threads, and videos about this entry from around the web.
Facebook: Intake Router keeps diagnosis out of the answer space at the front desk.
FacebookClinicnotes
X: OpenRouter Decision Model Rankings
X: herdr + jev, an agent router
X: A group chat bot with decision room routing
From the Jev guides
Original write-ups on what this entry is for.
From the Jev AI model community
Posts from builders shipping with Jev right now.