Prior art survey: Jev-based call copilots, TypeSafe patterns, and real-time sales coaching UX
Date: 2026-09-24. Author: research subagent (Fable 5.1). Scope: everything found that is relevant to building a CurrencyTransfer (CT) call copilot on Cloudflare Workers with typesafe/jev, for (1) client onboarding calls and (2) customer-success calls, where clients ask about exchange rates, safety/security of funds, settlement, fees and timing.
Conventions used below:
[local]= a file under/home/stevan/dev/jev/that was read for this survey.[web]= fetched on 2026-09-24. Vendor marketing claims are labelled as such.- Assumption: = something inferred, not sourced.
- "CT-transfer" = what is worth carrying over to the CT copilot.
Fetch failures worth knowing about (so nobody re-tries them): balto.ai/real-time-guidance/ (404 via fetch; content recovered from search snippets and balto.ai/real-time-agent-assist/), cresta.com/products/agent-assist (404; cresta.com/agent-assist works), lindy.ai/blog/gong-review (404); ZeroGold/call-coach-ai raw files decide.js and playbook.js live under public/, not the repo root (root-path fetches 404).
0. Executive summary
- The reference project (Moritz Kremb's
jev-sales-copilot) is a complete, well-engineered instance of TypeSafe's own recommended architecture: one speculative fan-out request per utterance (37 typed questions, ~7.5k tokens, ~$0.0003), all arithmetic in code, a hand-written playbook that Jev only picks from, confidence gates everywhere, and a replay/eval harness. It is Python + FastAPI, not Cloudflare, and its playbook is generic B2B SaaS. Everything structural transfers; nothing domain-specific does. - There are at least six other public Jev call/meeting copilots (
call-coach-ai,jev-sales-calls,jev-support-copilot,cuecard,jev-voice-browser,slidepilot). Each contributes one reusable mechanism: hysteresis/cooldown on cues, a capability library turned into Nouls, a closed-world "unlisted request" guard, per-turn cue rate limits, partial-transcript commit logic, and a Cloudflare Agents + Workers AI Flux STT + Jev pipeline respectively. One "Jev" project (jev-sales-radar) does not actually call Jev at all. - TypeSafe's own docs (local copies) supply the four load-bearing patterns (fan-out, confidence routing, composite scoring, intent routing), the jaggedness list (literal reading, no arithmetic, no dates, context rot, structural invariants do not hold), and cookbooks that map directly onto CT needs:
classification_using_confidence(fall back to a coarser label),consistency_*(an explicituncertainband routed to a human),parallel_questions(batching is 12.2x cheaper / 10x faster with zero change in answers),autoresearch_feature_discovery(learn which questions predict an outcome),skill_suggestion(Choice to pick + Nouls to decide whether to pick at all). - The independent pre-registered test (primeline.cc) is the most important external evidence: Jev's yes/no (Noul) answers are far better calibrated (ECE 0.012) than Choice (0.086) or Score (0.254); at confidence >= 0.9 it is right ~92% of the time; and the accuracy ranking between Jev and LLMs flipped between two tasks, so "benchmark your own task" is the only safe conclusion.
- Commercial real-time products (Balto, Cresta, Attention, Convo, Avoma, Clari) converge on the same UI vocabulary: a smart checklist that ticks itself as required items are covered, dynamic prompts / battlecards that fire on detected objections or topics, a listening state that avoids alert fatigue, and a manager-side playbook designer / scorecard per role, region, stage. Gong and Chorus are post-call; their metrics (talk ratio, monologue length, trackers) are the review-mode vocabulary.
- Nothing found in the Jev ecosystem covers FX, payments, onboarding, or customer-success calls specifically. The CT copilot would be the first; the corpus (objection taxonomy, fact checklist, playbook lines, labeled utterances) has to be authored, and prior art says exactly how to structure it so an admin can tune it without re-prompting.
The ranked top-10 list of transferable ideas is in section 8.
1. The reference: moritzkremb/jev-sales-copilot
Sources: [local] /home/stevan/dev/jev/reference/jev-sales-copilot/README.md, DEMO.md, copilot/constants.py, copilot/engine.py, data/playbook.json, data/calls/cloudtalk.json, eval/integration_report.json; [web] https://github.com/moritzkremb/jev-sales-copilot (1 star, 2 forks, single commit as of fetch); [web] https://madewithjev.com/builds/sales-copilot; original post https://x.com/moritzkremb/status/2102537239662096658 (text via fxtwitter: "Listens to sales call live / Tells you what to say next / Helps you follow the script and handle objections / Shows you what stage of the call you're in / Gives you live signals and probability of closing", posted 2026-09-22, 192 likes, ~19.9k views at fetch).
1.1 What it does
Per utterance (replayed transcript, typed text, browser mic, or a YouTube-synced real call), one request to jev-1.13.0 answers ~37 atomic questions and within a few hundred ms the dashboard updates: closing probability line chart, live signal badges, call stage, open objection type, next-best-move coaching card with a highlighted pre-written line, talk ratio/pace, and an optional LLM-tailored phrasing that Jev verifies before it is shown. Measured on a real 9-minute CloudTalk call: 48 utterances, ~$0.014 per call, Jev latency mean 345-391 ms, p95 ~525 ms (client-side, macOS, including TLS) (README.md, "Last real run" table).
1.2 Dissection (this is the part to copy)
State sent to Jev (engine.py: build_state): a compact object, not the whole call.
call_facts: {duration_min, talk_ratio_rep, stage_history[-6:], known_facts[], objection{open,type}}
recent_transcript: last 12 utterances [{t, speaker, text}]
latest_utterance: {t, speaker, text}
RECENT_WINDOW = 12 (constants.py:25). Facts detected earlier persist in code and are fed back as known_facts, so "ask about budget" stops being suggested once budget is known.
Questions (constants.py:118-269), all with full sentences referencing backticked state paths (latest_utterance.text, recent_transcript):
- 16 Nouls, each with
criteria {true, false}written as concrete examples. Split into prospect-turn (buying_signal,commitment,next_step_agreed,prospect_objecting,prospect_accepts,prospect_disengaging,buyer_confused,prospect_asked_price), rep-turn (rep_discovery_question,rep_pitching), either (next_step_proposed,competitor_mentioned), and window facts (pain_identified,budget_discussed,decision_maker_identified,timeline_known). - 3 Scores with 3 levels each, each level a
{summary, signals[]}object (rapport,engagement,urgency). - 3 Choices:
stage(8 options, each{what, not_for}),objection_type(price/timing/authority/need/trust/competitor/none),next_move(15 playbook moves,{what, not_for}copied from the playbook). - 15 speculative
phrasing::<move>Choices, one per move, over that move's 3 hand-written lines.
Speaker masking in code: speaker-specific Nouls are asked every turn and zeroed in code when the speaker does not match (engine.py: extract_features, PROSPECT_ONLY_SIGNALS, REP_ONLY_SIGNALS). Rationale in README: "Jev is literal; conditionals belong in code."
Closing probability = code (constants.py:284-322, engine.py: composite):
inst = STAGE_PRIOR[stage] + sum(w_i * x_i) # nouls/facts/code signals: w*x; scores centred: w*(x-0.5)*2
p_t = 0.40*inst + 0.60*p_{t-1} # EMA, clamped [0.03, 0.95]
18 weights in SIGNAL_WEIGHTS (e.g. prospect_disengaging -0.16, commitment +0.15, objection_open -0.14, rep_talking_too_much -0.10). Every raw answer is stored per step (Step.answers), so changing a weight in the UI recomputes the whole timeline with zero new Jev calls (README: "change a coefficient, not a prompt"). A sensitivity panel shows the three contributions that moved most.
Confidence gates (constants.py:324-337):
| decision | gate |
|---|---|
| show coaching card | next_move.confidence >= 0.35, else "listening..." (leaning move greyed) |
| highlight a phrasing | phrasing::<move>.confidence >= 0.30 |
| open objection | prospect_objecting >= 0.60 on a prospect turn; type from objection_type if confidence >= 0.40 |
| clear objection | acceptance/buying/commitment/next-step Noul >= 0.60 AND prospect_disengaging < 0.60; or 8 utterances without re-raising |
| persist a fact | Noul >= 0.70 |
| light a signal | Noul >= 0.60 |
The objection lifecycle (engine.py: _update_objection) has one non-obvious rule worth keeping: "a disengaging turn never clears an objection" ("Sure, okay, I have to run" is not acceptance).
Playbook as data (data/playbook.json): 15 moves, each {id, title, what, not_for, phrasings[3]}. what/not_for become the Choice option descriptions; phrasings are candidate rep lines. The README's phrase: "Jev picks; code shows the text."
Tailored phrasing (copilot/personalize.py, constants.py:339-376): only when the move changed, a new fact locked, or the same move held 8 utterances; cooldown 2 utterances; Claude Haiku 4.5 writes one sentence <= 32 words from the last 6 utterances + known facts + the move's generic lines; code validates length; Jev then answers two Nouls on the candidate (invents_fact drop if >= 0.5, on_move drop if < 0.5); a stale check drops it if the move changed meanwhile. Off the critical path (~1 s later via a separate WebSocket message). Real run: 7 LLM calls over 48 utterances, 2 shown, 5 dropped (one for inventing a feature, invents_fact 0.80).
Eval harness: 25 unit tests on the arithmetic; 19 hand-labeled utterances with 56 threshold checks against the real API (eval/integration_report.json: "passed": 56, "total": 56, model pinned jev-1.13.0; each case records observed values, e.g. price objection -> prospect_objecting 0.98, objection_type price (1.00), next_move handle_price_objection_roi (1.00)); replay e2e asserting the good call ends >= 0.70 and > bad + 0.30, etc. Transcript format (data/calls/cloudtalk.json): {id, title, description, expected, source, video{youtube_id,start}, utterances[{t, t_end, speaker, text}]}.
1.3 Stated limitations (README "Limitations")
No diarization in the browser (Web Speech API, Chrome only, manual speaker toggle); rolling 12-utterance window only; objection_type is asked speculatively and will name a type even for a neutral price question (hence the separate prospect_objecting gate); weights tuned on 3 hand-written calls + 19 labeled utterances ("treat them as starting points"); phrasing Choices add ~1,900 tokens/~20 ms; model pinned, re-run integration test on upgrade.
1.4 CT-transfer
Everything in 1.2 is domain-agnostic scaffolding and should be ported to TypeScript on Workers more or less one-to-one: state shape, question-authoring style (full sentence + backticked path + {true,false} examples), speaker masking, fact locks fed back as state, objection lifecycle, confidence gates, playbook-as-data with what/not_for, stored raw answers + free recompute, the labeled-utterance integration test, and the JSON transcript format. What must be re-authored for CT: the stage set (onboarding vs customer-success have different stages), the objection taxonomy (rate, safety/security of funds, settlement timing, fees, "I'll use my bank"), the durable facts (assumption, to be validated with Stevan: e.g. safeguarding_explained, fees_disclosed, rate_mechanism_explained, settlement_timeline_explained, kyc_docs_requested, next_step_agreed), the playbook moves and phrasings (which for a regulated FX firm may need compliance sign-off, which "Jev picks, code shows" supports well), and the weights. The closing-probability hero should probably become a scenario-appropriate score (e.g. "onboarding completion likelihood" / "retention risk") but the arithmetic is the same.
2. Other open-source Jev call, meeting, sales and support copilots
2.1 ZeroGold/call-coach-ai (MIT, 42 stars, 8 forks)
[web] https://github.com/ZeroGold/call-coach-ai, schema.json, public/decide.js, public/playbook.js.
What: browser mic -> Web Speech API -> Node proxy injects the key -> one Jev request per speech turn over the last 40 turns -> a Choice next_best_action (8 options incl. no_action), a 4-level Score buying_stage, and 7 Nouls (asked_about_pricing, mentions_timeline, discusses_budget, decision_maker_involved, uses_ownership_language, has_blocking_objection, is_returning_prospect). UI: buying gauge 0-100, stage label, one suggested action with up to 3 tips, speaker toggle (S), dismiss (D).
The reusable part is decide.js, a pure local decision layer whose comments read like a spec:
minScore 0.4 below this the screen says "Keep listening"
tieMargin 0.08 options within 8 points of the leader count as tied -> broken by playbook priority
switchMargin 0.12 a challenger must lead the current suggestion by this much to replace it at once...
confirmUpdates 2 ...or stay on top for this many updates in a row (stops flickering)
minRemaining 0.3 if skipped options held >70% of the probability, the rest is too thin to trust
doneCooldownMs 3min rep marks an action done -> skipped for 3 minutes
stageSmoothing 0.8, stageHysteresis 0.05 stage changes only when the smoothed score passes a boundary by 0.05
confidenceHigh 0.7 / confidenceMedium 0.45 -> "High/Medium/Low confidence" label
Plus playbook rules (has_blocking_objection >= 0.7 blocks send_proposal, with a note shown when a rule overrode the model's top pick) and priority ordering for ties. Tips are conditional on Noul signals ({signal, min|max, text}).
CT-transfer: the hysteresis/switch-margin/confirm-streak/cooldown/rule-block set is exactly what keeps a live card steady; adopt it wholesale. The "rule overrode the model, here is why" note is a good honesty affordance for reps.
2.2 wsmoak/jev-sales-calls
[web] https://github.com/wsmoak/jev-sales-calls.
What: reads a whole call transcript against a capability library (one markdown file per capability with YAML frontmatter id, name, category, summary, tiers; only summary is sent to the model). Each capability is auto-converted into a Noul ("did the prospect ask for it or say they need it" = true; "the rep pitching it does not count" = false). 26 questions ride in one ~5,000-token request. Recommended tier is a deterministic lookup (cheapest tier containing all capabilities above threshold), not a question. Also a Choice primary_blocker and a Score deal_temperature.
Its key insight is the closed-world failure: a prospect asking for something not in the library "produces a confidently wrong report". Mitigations added: unlisted_request (flag that an extraction pass is needed), rep_declined, and rep_misinformed ("whether reps incorrectly denied capabilities the product ships, a coaching signal"). Transcripts are generated from the library brief by a separate model across four scenario types to exercise each flag.
CT-transfer: the library-to-Nouls generator is the right shape for a CT fact/topic library (rates, fees, safeguarding, settlement, limits, supported currencies/corridors, onboarding documents). rep_misinformed is directly useful for customer-success QA ("rep said we can't do X but we can"). Always include the unlisted/none escape hatch. Synthetic transcripts per scenario are a cheap way to build the first test set before real transcripts are cleaned.
2.3 zfrqbl-CW/jev-support-copilot
[web] https://github.com/zfrqbl-CW/jev-support-copilot.
What: as a support agent types a reply, one parallel Jev request scores tone (Choice: empathetic/neutral/curt/defensive), commitment risk (Noul: promises about refunds/timelines), escalation flag (Noul), predicted satisfaction (Score). WebSocket server; two-layer cache (settled + in-flight, so identical text arriving during a pending call is deduplicated); measures Jev latency and keystroke-pause-to-screen round trip; mock mode from text hashing when no key.
CT-transfer: the "commitment risk" Noul is a compliance-relevant idea for CT (rep promising a rate, a settlement date, or "guaranteed" anything). The in-flight cache is a small but real engineering detail for a live stream where the same partial text can be re-sent.
2.4 abhitsian/cuecard (macOS menu-bar meeting copilot, MIT)
[web] https://github.com/abhitsian/cuecard.
What: two-sided on-device transcription (mic via AVAudioEngine, system audio via Core Audio process tap, each into its own SpeechAnalyzer, so every sentence is attributed to you or them). Jev categorises each finished turn (~0.4 s) into Asked You / Action Item / Decision / Open Question / Next Step / Risk-Blocker / Key Fact, applies mode-specific signals, matches open questions, picks prepared questions. Claude (via claude -p) writes SAY/ASK cards when a prepared one does not fit. Latency budget quoted: transcription ~0.3 s after speech ends, categorisation ~0.4 s, first LLM output ~0.8 s, total ~1.5 s. Seven meeting modes including "Customer Call". Output filtering is deterministic: "maximum two captures per turn, one signal card per turn, no repeated suggestions within four minutes". Panel hides during screen sharing.
CT-transfer: per-turn cue budgets and a repeat suppression window are the alert-fatigue controls the commercial products describe but do not quantify. The mode concept maps onto CT's two scenarios (onboarding vs customer success) as different signal sets and question banks over the same engine.
2.5 moritzkremb/jev-voice-browser (MIT, 110 stars)
[web] https://github.com/moritzkremb/jev-voice-browser.
What: streams partial Web Speech transcripts, debounces 200 ms, one Jev call per transcript update (11 questions incl. is_command, intent, complete, destructive, is_correction). Commit rules: is_command >= 0.5, intent.confidence >= 0.55, complete >= 0.6, or 900 ms silence, or a final result; free-text intents wait for finality or 600 ms silence. Measured ~330 ms average Jev latency (p50 ~300 ms), 3-6k tokens/request, ~$0.0002/call; first request ~700 ms (TLS). Thresholds "calibrated for jev-1.13.0... should be re-checked for model updates".
CT-transfer: this is the reference for acting on interim STT results (Workers AI Flux emits interim text too, see 2.7). A complete Noul plus a silence timer decides when an utterance is "done enough" to fire the fan-out; a is_correction Noul lets a rep verbally retract.
2.6 AiPersonacademy/jev-sales-radar (Rust, MIT, 0 stars): caution
[web] https://github.com/AiPersonacademy/jev-sales-radar, src/engine/jev_gateway.rs, src/rag/playbooks.rs, Cargo.toml.
README claims a "TypeSafe Jev System One Gateway (20ms)" that "detects hidden fears" and predicts the next objection, then serves counter-scripts from Voss/Klaff/Rackham/Cialdini/Challenger in <25 ms. The code does not call Jev: Cargo.toml has no HTTP client, jev_gateway.rs does an in-memory Battlecard::find_best_match(query) over trigger_patterns (literal strings like "too expensive", "over our budget") and hard-codes confidence: 98.4 and model: "jev-system-one-local". Treat it as a keyword battlecard demo, not Jev evidence.
What is still useful: the battlecard schema is a good checklist of fields for a CT objection card: category, trigger_patterns, state_of_being, customer_unspoken_thought, customer_next_trajectory, framework_name, psychological_principle, exact_script, secondary_followup, tone_delivery_guide, and its 10 categories (PriceAndBudget, GuaranteesAndRisk, ReviewsAndSocialProof, TimingAndStalling, AuthorityAndPartner, TrustAndSkepticism, StatusQuoAndDiy, BandwidthAndTime, CompetitorComparison, GeneralDiscovery) are a reasonable superset to prune for FX. The 70/30 talk-ratio meter is also on screen.
2.7 harshil1712/slidepilot (Cloudflare Agents + Workers AI Flux STT + Jev): the closest Cloudflare architecture
[web] https://github.com/harshil1712/slidepilot (4 stars).
What: "Slidev addon -> VoiceClient -> Cloudflare Voice Input Agent -> Workers AI Flux STT -> Jev -> policy -> Slidev navigation". Mic audio streams over WebSockets to a Cloudflare Agent (Durable Object); Workers AI Flux (Deepgram) produces interim text and completed utterances ("Flux streaming STT works with a local Durable Object and Wrangler's remote Workers AI binding"). Jev answers four Nouls per utterance (advance feels natural / core idea complete / presenter still speaking / natural boundary). "TypeScript, not the model, applies the navigation policy": thresholds advanceThreshold 0.68, completeThreshold 0.65, stillExplainingCeiling 0.55, confidence 0.30 minimum; advanceDelayMs 1000 cancellable if the speaker resumes; cooldownMs 2000; staleness guards. Limitations: thresholds need rehearsal calibration; large state truncated server-side; audio processed by Workers AI/Deepgram Flux only.
CT-transfer: this is the pipeline skeleton for the live phase: one Durable Object per call session holding the rolling window and facts, Flux for streaming STT with interim/final events, env.AI.run('typesafe/jev', ...) per completed utterance, policy in TS. Assumption: Flux gives no speaker diarization in that setup; CT will need either a diarized feed from the telephony platform or two audio legs (as cuecard does), which is the same limitation the reference copilot notes.
2.8 Cloudflare-side Jev demos
[web] https://github.com/zeke/jev: research notes + Worker demo (jev-triage-playground.ziki.workers.dev). Notes:env.AI.run('typesafe/jev')needs "no separate API key"; TypeSafe direct access "currently waitlisted"; quotes TypeSafe's "70-500 ms end to end, usually around 100 ms"; limits quoted as 32k context, "~64,000 tokens shared budget across state and all questions" (note: the Cloudflare model page below says 32,000; treat 32k as the binding limit), up to 255 labels per Choice, 2-10 levels per Score; "Test with hostile inputs before putting this in front of the public".[web] https://github.com/matthewp/flue-jev-demo: Jev through Cloudflare AI Gateway with the WorkerAIbinding; "no application API keys or account-ID environment variables"; both the chat model and Jev routing appear in AI Gateway logs; auseJevRouter()hook takes a question map and returns typed intent + urgency + probabilities + confidence + Jev version + usage.[local] /home/stevan/dev/jev/docs/vendor/cloudflare/ai__models__typesafe__jev.md: the official model page.env.AI.run('typesafe/jev', { state, questions }); response{ model: "jev-1.13.0", answers: {...}, usage: {input_tokens, output_tokens} }; Context Window 32,000 tokens; pricing "View pricing in the Cloudflare dashboard" (not published on the page; assumption: it tracks TypeSafe's $0.042/M input, output free, but confirm in the dashboard). Its three worked examples are support routing, structured refund review (state = ticket + order + policy, Noul "doesrefund_policysupport the refund requested inticket.message, givenorder.charges?") and account risk (Score + escalate Noul).[local] /home/stevan/dev/jev/README.mdandscripts/jev.mjs: Stevan's own REST harness againstPOST /accounts/{id}/ai/runalready exists.
2.9 Admin-curation prior art (how others let humans define "good")
[web] https://github.com/cephalization/jev-triage("typeful-triage"): multiplayer GitHub-issue triage dashboard; Jev classifies each item on six dimensions; "Every correction is kept and shown to the model on later runs"; an "Unsure" view sorted by lowest confidence first; per-repo batch size/cadence/token budget; a System view exposing calibration metrics and spend. Stack: React + Rocicorp Zero + Postgres + Hono + Arize Phoenix tracing.[web] https://github.com/gtaras7/typesafe-jev(cv-screen/README.md): "A folder of CVs is judged once. After that, changing a weight, a cap or a threshold re-scores every stored candidate in about 20 ms and costs exactly nothing, because every number is recomputed from the judgments already on disk. Only adding a brand new question costs tokens, and only for the CVs that have not answered it yet." Also: a Noul in the 0.35-0.65 band is "too close to call and routed to a person", and the question map is a pure function of the policy so "the two can never drift".[web] https://semarize.com/resources/blog/jev-sales-call-scoring: scoring calls with Jev; keep "separate categories and scores" to distinguish rep performance from opportunity quality; answer presence vs answer correctness evaluated independently; correctness must be grounded in "product guides, pricing rules and playbooks" via a knowledge base, otherwise "correctness should remain unresolved"; validate against "manager-reviewed conversations". Cost example: "10,000 calls using 12,000 input tokens each would cost $5.04".[web] https://github.com/kenhuangus/jev-usecases: 37 harnesses (incl.customer_support,financial_crime,legal_compliance,invoice_processing) all returning anaction_bandofauto | confirm | human | block, thresholds stored in onedecisions.py"as starting values" and explicitly "not fitted to a measured false-positive rate".
CT-transfer: the CT admin console should (a) store every raw answer per utterance, (b) treat weights/thresholds/playbook text as a versioned policy whose edits recompute historical calls for free, (c) capture per-utterance corrections ("this was a safety objection, not a fee question"; "this move was wrong here") and show the lowest-confidence items first, and (d) keep rep-quality and call-outcome scores separate.
2.10 Not Jev, but adjacent
[web] https://github.com/ANTHONY-CHINEDU-ECHEM/SALES_CALL_COPILOT(MIT, 1 star): regex objection classifier (8 categories) -> TF-IDF retrieval with +0.3 boost for objection-type match -> Claude Haiku/Opus writes 2-3 sentence talking points -> deterministic rubric (objection identified 25, grounded response 30, citation 20, latency <3 s 15, no hallucination 10). Latency p95 ~0.8-1.2 s (Haiku) / 1.5-2.5 s (Opus). No STT. Useful only as a reminder of what the generative-first approach costs in latency and verification.- "minutes" (local-first meeting transcription whose live voice path evaluates through Jev) is listed in several awesome-jev catalogues but no canonical repo URL was found; not verified.
3. madewithjev.com: relevant builds
[web] https://madewithjev.com/ (295 builds, 91 guides at fetch; per-build pages under /builds/<slug>). Entries relevant to calls, sales, support, coaching, real-time, voice, or routing, with what each contributes:
| build | author | what it does | CT-transfer |
|---|---|---|---|
/builds/sales-copilot |
Moritz Kremb | the reference above | section 1 |
/builds/realtime-clippy |
Marek Sotak | assistant that "only wakes up when it thinks you're struggling" ("Hesitating? Confused? Stuck?"), reactions themselves gated by Jev | the silence-by-default stance: cue only on detected struggle/objection, not continuously |
/builds/mac-app-support-answers |
Malek Ould-Oulhadj | Jev routes user questions to built-in manual articles; "the whole built-in manual as state"; handles paraphrases, typos, FR/DE/ES, features that don't exist; "42/42 on a held-out set", median 0.93 s; "Jev decides, the app answers from its own docs" | the pattern for a CT knowledge card: Jev picks which approved answer (fees page, safeguarding explainer, settlement timeline), code shows the vetted text; include a "no article" option |
/builds/no-llm-chat-bot |
CJ (Coding Garden) | Jev "picks the tool and its arguments"; "instant, no hallucinations" | same: closed-set answer/tool selection |
/builds/on-device-audio-pipeline |
Desert Ant Labs | on-device STT (Voz) + language detect (Ear) + PII redaction (Redact); "Jev makes about 20 decisions in one call and picks which local model runs" | a redaction stage before transcripts leave the device/edge is the privacy pattern CT will want for client PII |
/builds/ambient-assistant |
Max Blade | always-on, no wake word; "knows (from probabilities) if I'm asking my computer to do something or blabbering" | is_addressed_to_me-style gating Noul |
/builds/voice-computer-assistant |
Marc Kohlbrugge | local Whisper + accessibility tree as closed options; "Jev decides which action to take" | closed-option selection over screen state |
/builds/lead-outreach-scoring |
Roman | 700 leads scored in 40 s for $0.09; flags lead/message mismatches | batch scoring economics for the historical transcript corpus |
/builds/inbox-triage-1500-emails, /builds/500-emails-3-cents |
vogel, Riley Brown | volume/cost anecdotes (500 emails for 3.5 cents) | same |
/builds/fraud-detection-jev-kimi |
Hassan | Jev first; anything under 95% confidence escalates to Kimi K3; 100 emails, 1.42 s, 96/100 correct, ~$0.07 (Jev $0.003, Kimi $0.068) | cascade: Jev gates, expensive model only for the uncertain band |
/builds/slack-agent-skill-routing |
John Yeo | Jev pre-picks skill/tool/params before the agent runs; 2x faster | pre-routing before any generative step |
/builds/jev-moderation-bot, /builds/agent-safety-monitor, /builds/pi-heed |
various | safety/verification uses | same shape as compliance checks on rep speech |
/builds/job-match-prediction |
Sarvagya Kulshreshtha | 400 companies matched to one candidate | many-vs-one scoring |
/builds/typesafe-ai-playground |
Val Alexander | 110 editable use-case prompts with A/B comparison (github.com/BunsDev/typesafe-ai-playground) |
quick place to try question wording |
/builds/predictive-launcher, /builds/live-viral-post-analyzer, /builds/gesture-canvas |
nader dabit, Riley Brown, Jack Cheng | real-time/voice demos | evidence of sub-second UI loops |
Directory metadata: madewithjev.com/github-repos lists 275 repos; awesome-jev-use-cases (github.com/walidboulanouar/awesome-jev-use-cases) adds two more voice entries (jev-use (voice), jev-use (mac), 87 stars) and quotes the limits page: "reads literally, is weak at math, counting and dates", "accuracy drops with irrelevant state", "$42 per billion input tokens, and output tokens are free".
4. TypeSafe official material (local copies) and which parts apply
All paths under /home/stevan/dev/jev/docs/vendor/typesafe/.
4.1 Patterns (patterns.md, patterns__*.md)
- Speculative fan-out (
patterns__fan-out.md): "putting all of the questions your system needs in a single request, and then using code to decide what is relevant after the fact. All questions are evaluated in parallel, so adding more questions usually has little effect on response time." Worked example is support-ticket triage (Choice category + Score severity + Nouls repro/refund + Score frustration) with code routing. The reference copilot is this pattern applied every utterance. - Confidence-gated routing (
patterns__confidence-routing.md): the example is voice banking (check_balanceat >= 0.6,approve_transferauto only > 0.85 else ask to confirm, < 0.6 -> human). "Thresholds scale with risk." Directly analogous to CT: a cue that says "quote the rate now" should need higher confidence than "ask an open question". - Composite scoring (
patterns__composite-scoring.md): score dimensions independently, normalise to 0-1, weight in code; "changing the weights re-ran no inference". Basis for any CT call-health score. - Intent routing (
patterns__intent-routing.md): Choice intent + Score complexity; deterministic handler vs specialist LLM vs human. For CT, the same shape decides whether a client question maps to a canned card, needs a rep, or needs escalation.
4.2 Concepts
concepts__how-to-build-with-system-one.md: the canonical checklist. "Keep control flow, deterministic rules, and side effects in code. Break broad judgments into narrow, typed questions with explicit instructions and criteria. Give each question only the context it needs. Use probabilities and confidence to act, ask for review, or escalate. Ask independent questions together, then compose their answers in code." Includes the contrastive Choice criteria shape{what, not_for, examples}(the copilot useswhat/not_for), structured Noul criteria{what, examples, not_for}, Score levels{what, signals}, and "Most queries complete in about 100 ms".concepts__state.md: state is a string, object or array; "Think of state as the material you would present to a panel of experts"; text only; English primary.concepts__use-case-map.md: under Customer support: "Process call transcripts to extract customer issues, commitments, and follow-up actions. Detect urgency, frustration, churn risk, and refund requests." Under Financial crime and Legal and compliance: policy-violation detection and escalation. Under Feature extraction: "Use autoresearch workflows to propose feature definitions and evaluate their predictive value against held-out ground truth."confidence.md: confidence is derived from the probability distribution (Choice and Score only; Nouls carry none); three bands (act / caution / do not act); "Start with conservative thresholds, test with your own data".model-jaggedness__jev-1.13.md(last reviewed 2026-09-17): nine failure modes. Most relevant to a call copilot: literal reading ("answers the question you wrote, not the one you meant"), math/counting/dates in code only, indirection, "Large state full of irrelevant detail" (context rot), adversarial content ("State is data, and jev-1.13 does not treat it as hostile"), contradictory instructions vs criteria, and structural invariants do not hold (a Noul and an equivalent yes/no Choice gave 0.22 vs 0.01/0.99;refund0.72 andnot_refund0.47 sum to 1.19; "don't carry a threshold tuned on a Noul over to a Choice"). Also: "A Choice over options and one Noul per option answer different questions: the Choice is relative... each Noul is absolute and can be low for all of them."
4.3 Demos
demos__smart-home.md(the only official demo): speculative questions asked before relevance is known; a Noul detects compound requests and an LLM splits them; conversational fallback to an LLM; "The initial TypeSafe response is so fast compared to the LLM response that it adds negligible latency to the overall system." Same division of labour as the copilot's tailored phrasing.
4.4 Cookbooks that apply (with the numbers)
| cookbook (file) | what it shows | CT-transfer |
|---|---|---|
cookbooks__parallel_questions.md |
13 questions over a 54k-char document: batched vs single calls give identical answers (std dev 0.0 on 11/13; the two noisy ones equally noisy either way); one call $0.000497 / 0.27 s vs 13 calls $0.006090 / 2.71 s: "12.2x cheaper, 10.0x faster" | justifies one request per utterance with 30-50 questions |
cookbooks__classification_using_confidence.md |
75-way Choice; at confidence >= 0.9 the confident half is right 90%, the unsure half 40%; reporting the parent division for unsure cases lifts them to 70% | when objection_type is unsure, show the parent bucket ("concern about money" vs "rate" / "fee") rather than nothing |
cookbooks__consistency_noul_cookbook.md |
14 Nouls on an insurance claim repeated 15x: Jev mean per-question std dev 0.0102, below all LLM conditions; a borderline covered answer spanned 0.43-0.53 across a 0.5 threshold; 0.30-0.70 mapped to an explicit uncertain outcome for human review |
define an uncertain band per gate; never let a cue depend on a 0.5 knife-edge |
cookbooks__consistency_choice_cookbook.md |
8 moderation Choices repeated 15x; plurality label repeated 90.8%; requiring top probability >= 0.60 raised agreement to 99.2% with automatic labels on 74.2% | the same >= 0.60 style floor for stage/objection labels |
cookbooks__autoresearch_feature_discovery.md |
LLM proposes questions, Jev answers them per row, CatBoost trains on the answers against a real outcome; 38 questions after 5 rounds beat asking for the score directly (RMSE 1.77 vs 2.15) and word counts (2.47); "Next steps" include screening candidate questions with Nouls before paying to answer them | CT has ground-truth outcomes (onboarded? traded? churned?). Run this over historical transcripts to discover which signals predict outcomes, then use them as weights instead of guessing |
cookbooks__skill_suggestion.md |
Choice over 182 skills + Nouls "need a skill at all?"; two-request rank-then-verify; wrong loads cut from 16.8% to 7.3% | two-stage move selection if the CT playbook grows large: Choice over all moves, then re-check the top 3 with full text |
cookbooks__semantic_find.md |
Choice over line IDs to point at the answering line + a Noul exists because "Choice probabilities always add up to 1, so some line ranks first even when the document doesn't answer"; thresholds FOUND 0.7 / ABSENT 0.35 |
pointing at the right knowledge-base paragraph for a live answer card, with an existence check |
cookbooks__llm_guardrails.md |
one request screens an LLM input/output with a Noul battery + harm Score, thresholds decide pass/review/block/support | screen any generated phrasing (and, later, rep speech) for prohibited claims ("guaranteed rate", advice) |
cookbooks__sde_cascade.md |
cheap model extracts, Jev per-field Nouls verify (FIRE_T 0.7), expensive model only when a verifier fires |
the tailored-phrasing verify step generalised |
cookbooks__hierarchical_classification.md |
beam search over a taxonomy with Choice at each node; observability per node | if CT's topic taxonomy becomes deep (product > corridor > issue) |
cookbooks__classifying_rag_passages.md, cookbooks__rerank_typesafe.md |
Nouls per query-passage pair (relevant / usable / contradicts / instructs the model); BM25 shortlist then Noul re-rank (top-1 5% -> 18%) | selecting which historical "good call" snippet or KB passage to surface |
cookbooks__function_calling.md |
closed-set arguments become Choices, an optional argument gets a stated Noul, the request's confidence is the least certain judgement |
if the copilot ever fires actions (create task in CRM, send document link) |
cookbooks__date_extraction_cookbook.md |
extract date parts as Choices, compare in code | settlement dates and value dates mentioned on calls |
4.5 TypeSafe workflow evals
[web] https://evals.typesafe.ai/ lists four workflow evals; customer_service is the relevant one: "Decide what customer service assistants should communicate and execute next" (actions SAY / REFUND / FREEZE CARD / SET INTENT / HAND OFF / FLAG FOR REVIEW / CLOSE), structured as (1) an initial assessment across eleven dimensions, (2) conditional follow-ups only when warranted, (3) integrity verification of assistant claims against records, (4) policy execution in nine safety-first sections. Reported: "Sol workflow 78.3% $0.0323 10.1 s", "DS v4 flash workflow 76.8% $0.0029", "Luna workflow 71.4% $0.0013 8.8 s", "Haiku 4.5 workflow 55.4% $0.0074". CT-transfer: the four-stage decomposition (assess -> conditional follow-ups -> verify claims against records -> policy in code) is a template for the customer-success scenario where the copilot could also check "did the rep's statement match the client's actual account state" if CRM/trade data is in the state.
5. Third-party write-ups
[web] https://flaviocopes.com/jev/: "The simplest way to describe Jev is as a smartifstatement"; API shape withjev-latest; RLCD ("Reinforcement Learning for Calibrated Decisions"); "70 to 500 milliseconds end to end"; "$0.042 per million input tokens, output tokens are free"; rate limits "250,000 tokens per second and 1,200 requests per minute"; cannot write text, count, do dates, or read images/audio; "pick a card from the deck instead of asking it to name one"; via Vercel AI Gateway astypesafe-ai/jev.[web] https://www.kdnuggets.com/what-everyone-is-getting-wrong-about-typesafe-ais-jev: "zero out-of-schema outputs, not zero incorrect decisions"; "the problem is old; the architecture and product around it may be new"; agent routing examples at "145-271 ms"; 724 ads analysed in ~40 s for ~$0.09; TypeSafe "reports 68% on internal benchmarks" with little independent verification ("promising, not as proof").[web] https://www.marktechpost.com/2026/09/23/a-coding-guide-to-typesafe-ai-jev/: Python SDK shapes (Choice,Score,Noul,SystemOneResponsetyped reads); confidence formula "(count x peak - 1) / (count - 1)" for Choice/Score, "A Noul carries no confidence field at all"; risk-adjustedSTAKESdict (check_balance 0.50,dispute_charge 0.70,approve_transfer 0.85,close_account 0.90);RetryPolicy(max_retries=3, backoff_initial=0.5, backoff_max=4.0, timeout=20.0); "12 tickets triaged concurrently in 45 ms wall time"; counting workaround (one Noul per item, sum in code).[web] https://primeline.cc/blog/typesafe-jev-pre-registered-test: three pre-registered tests, ~9,750 calls, ~$0.38, zero failed calls. Calibration over 3,600 items: at 0.9 confidence "Jev is correct about 92% of the time, and that threshold is cleared by 73% of the pooled test set"; calibration error by type: yes/no 0.012, pick-one 0.086, rating scale 0.254 ("a threshold tuned on one question type should never be reused on another"). Two real jobs, opposite winners: commit messages Jev 65.7% vs Opus 5 63.5% / GPT-5.6 59.5% / Haiku 4.5 54.8%; KB categories Haiku 97.8% / GPT-5.6 92.7% / Jev 90.7% / Opus 86.9%. Instruction-tuned models' self-reported confidence showed r = -0.005 with accuracy. Caveat: both production datasets from one developer's machine. Conclusion: "Benchmark your own task."
CT-transfer from these: design Noul-first (best calibrated), use Score sparingly and never for numeric magnitude, keep a CT-specific labeled set and measure calibration per question type before choosing thresholds, and expect Jev to be good-but-not-magic on accuracy (68% internal benchmark claim; the wins are cost, latency, calibration and consistency).
6. Commercial real-time sales coaching products (design reference only)
Nothing here is Jev-based; the point is how live cues are presented and configured. All are vendor or third-party marketing claims unless stated.
Balto ([web] https://www.balto.ai/, https://www.balto.ai/real-time-agent-assist/, search snippets from balto.ai/real-time-guidance/, cxponent.com, wiki.wfmlabs.org): connects to the phone/contact-centre system, converts speech to text, "matches phrases against rules, playbooks, and scoring models", pushes prompts to the agent and alerts to managers. UI: Dynamic Prompts ("phrases and questions when they need them most"), Smart Checklist ("tracks completion of required conversation elements, such as identity verification steps, disclosure statements, and closing procedures... checked off automatically, providing agents with a live progress view"), Playbook Designer (managers "author call flows and trigger prompts without code"), live manager alerts, AgentGPT knowledge answers "from proprietary knowledge bases", pain questions with outcome nudges ("This question could reduce your no-shows by 20%"). A third-party page claims "sub-200ms latency" (unverified). Agents pin/collapse modules to control density; layouts persist.
Cresta ([web] https://cresta.com/agent-assist, https://cresta.com/blog/what-is-real-time-agent-assist-and-how-does-it-work): "real-time hints, reminders, and workflows tailored to each conversation"; Knowledge Assist "combines what's being said with on-screen context to deliver exact, source-backed answers" with sources shown; checklists that "generate throughout each conversation" (e.g. "Verify identity", "Explain the waiver", "Offer two flight options"); behavioural hints "trained on top performers and successful outcomes"; no-code "Opera" workflow engine; "near-zero latency". Their pipeline article: "Every step inherits the quality of the one before it... If transcription lags, every downstream prompt lags with it"; "Guidance that arrives after the agent has already answered is a report, not assistance. Latency is the whole game"; static scripts "break the moment a conversation goes off-track, and agents learn to ignore them".
Attention ([web] https://www.attention.com/, /solutions/sales-reps, /product/ai-coaching-scorecards, search snippets): "AI powered battlecards help you answer any prospect question while on the call"; scorecards graded post-call against "MEDDIC, BANT, SPICED, or your own framework", and teams "build and assign multiple scorecards based on role, region, deal stage, or product"; insights pushed to Slack/Notion/Sheets. Battlecard triggering details are not published.
Gong ([web] https://www.gong.io/product/, https://www.oliv.ai/blog/gong-features, search snippets from lindy.ai, medium.com/@solironus): post-call conversation intelligence: recording, transcripts, Smart Trackers (keyword-based; "cannot tell 'we looked at Salesforce years ago' from 'we are in a bake-off with Salesforce right now'" per oliv.ai), talk ratios (a lindy.ai snippet cites top performers at "43:57"), coaching scorecards, call libraries, deal-risk warnings. Multiple sources state Gong has no in-call intervention: "Gong will flag it after the fact, not during."
Chorus (ZoomInfo) ([web] https://www.zoominfo.com/products/chorus): post-call; "average talk time, average filler words, and actionable tagging"; "winning behaviors that uplevel team skills"; no live assist on the page.
Meeting copilots and dialers ([web] https://www.itsconvo.com/blog/real-time-sales-coaching-software, a competitor's comparison): Convo (on-screen overlay, objection-handling frameworks, BANT/SPICED/MEDDPICC fill-in, talk-to-listen nudges, local audio capture so the overlay is hidden from screen share); Avoma Answer Cards ("Cards appear on screen for 20 seconds; framework checklists tick off MEDDIC or BANT topics", triggered by pre-configured keyword/phrase); Clari Copilot (live battlecards fired by keywords/topics); Cluely (overlay measured at "4 to 7 seconds" delay, "arrives after needed moment passes"); Trellus and Dialpad (coach cards inside dialers).
Design takeaways for the CT dashboard
- Two persistent surfaces: a checklist of required items that ticks itself (this is the copilot's fact locks with a UI), and a stage strip.
- One transient surface: a single cue card (objection card or next-move card) with a short "say" line and a why; hold it steady (hysteresis), expire it (20 s in Avoma's case; cooldown in cuecard/call-coach-ai), and default to "listening".
- Knowledge answers must be source-backed and pre-approved text (Cresta shows sources; the mac-app-support build answers only from its own docs). For a regulated FX firm this is also the compliance story.
- Manager side: a playbook designer (trigger -> card), scorecards per scenario (onboarding vs customer success), and post-call review metrics (talk ratio, longest monologue, items missed).
- Latency budget: sub-second from end of utterance to cue, or it is "a report, not assistance". The Jev numbers (300-500 ms) plus STT finalisation (~300 ms on-device in cuecard) fit; a generative step does not, which is why generation belongs off the critical path.
7. Gaps: what prior art does not cover for CT
- No Jev project found for FX, payments, fintech onboarding, or customer-success calls; the closest are generic B2B sales (reference, call-coach-ai), support-reply tone (jev-support-copilot) and the TypeSafe
customer_serviceeval. The CT objection taxonomy (rate vs bank/competitor, safety of funds / safeguarding, settlement timing, fees, "I'll think about it", KYC friction) and the onboarding/customer-success stage sets must be authored from scratch;wsmoak/jev-sales-callsshows how to generate Nouls from a library of such topics. - No prior art with real diarized telephony input; every open-source project either replays JSON, uses browser Web Speech with a manual speaker toggle, or captures two audio legs on-device. Assumption: CT's telephony/meeting platform can provide per-leg audio or diarized transcripts; if not, the two-leg capture pattern (cuecard) or Workers AI Flux on separate streams is needed.
- No prior art on regulatory constraints on what a rep may say (UK FCA-style communications rules). Assumption: CT wants playbook lines to be pre-approved text; the "Jev picks, code shows" architecture supports that, and the tailored-phrasing LLM step should probably be off by default or restricted to non-promissory moves.
- PII: transcripts will contain names, account details and amounts. The on-device-audio build's Redact stage and the copilot's "keys stay server-side" note are the only privacy patterns seen. Assumption: redaction before Jev is needed for CT; whether Workers AI processing satisfies CT's data-processing requirements is an open question.
- Historical call-coach transcripts of mixed quality: no Jev project curates a mixed corpus into "good vs bad"; the closest mechanisms are semarize's separate rep/opportunity scores, jev-triage's stored corrections, and the autoresearch cookbook's outcome-driven feature discovery.
8. Ranked: the 10 most useful transferable ideas
- One speculative fan-out request per utterance; code owns every number. Ask all ~30-50 questions every turn (signals, facts, stage, objection type, next move, per-move phrasing), mask irrelevant ones in code, combine with weights/EMA in code. Evidence: reference copilot (37 questions, ~350 ms, ~$0.0003/request);
patterns__fan-out.md;cookbooks__parallel_questions.md(12.2x cheaper, 10x faster, identical answers). - Playbook as data, with contrastive
what/not_foroption descriptions; Jev picks, code shows the text. Author separate onboarding and customer-success playbooks (moves + 2-3 approved lines each) and stage sets; the same engine loads either. Evidence:data/playbook.json;concepts__how-to-build-with-system-one.mdcontrastive criteria;mac-app-support-answers(answers only from own docs, 42/42). - Store raw answers; make weights, thresholds and playbook text a versioned policy that recomputes history for free. This is the admin "what good looks like" console: change a coefficient or threshold, every past call re-scores with 0 Jev calls; only new questions cost tokens. Evidence: copilot "Apply weights -> 0 Jev calls";
cv-screen("about 20 ms and costs exactly nothing");patterns__composite-scoring.md. - Confidence gates scaled to risk, an explicit "listening" state, and anti-flicker mechanics. Per-decision thresholds (higher for "quote the rate" than "ask an open question"), an uncertain band routed to nothing/human, switch margin + confirm streak + cooldown + rule blocks, one card per turn, no repeat within N minutes, card expiry. Evidence: copilot gate table;
call-coach-ai/public/decide.js;cuecard(max 2 captures/turn, no repeats within 4 min);slidepilotcooldown/staleness;patterns__confidence-routing.md;consistency_*cookbooks (0.30-0.70 = uncertain; >= 0.60 floor). - Durable fact locks fed back into state = the smart checklist. Once a Noul >= 0.70 says "safeguarding explained" / "fees disclosed" / "settlement timeline explained" / "next step agreed", persist it in code, tick it in the UI, feed it back as
known_factsso the copilot stops suggesting it. Evidence: copilotFACT_PERSIST_THRESHOLD; Balto Smart Checklist; Cresta generated checklists. - Cloudflare-native pipeline: Durable Object per call session + Workers AI Flux streaming STT (interim vs final) +
env.AI.run('typesafe/jev')through AI Gateway + policy in TypeScript. Replay mode first (JSON transcripts over WebSocket), live mic second. Evidence:slidepilot;flue-jev-demo(no keys, Gateway logs);zeke/jev;[local] cloudflare/ai__models__typesafe__jev.md(32k context);jev-voice-browserfor acting on partial transcripts (completeNoul + silence timer). - State and question hygiene against Jev's jaggedness. Rolling window (12 utterances) plus compact facts, not the whole call; speaker masking in code; literal, single-judgement questions with backticked paths and
{true,false}examples; anone/unlistedoption in every Choice and an existence Noul beside any "which one" Choice; never compare a Noul threshold with a Choice threshold; arithmetic, counting and dates in code. Evidence:model-jaggedness__jev-1.13.md;wsmoak/jev-sales-calls(unlisted_request,rep_misinformed);cookbooks__semantic_find.md(exists);cookbooks__skill_suggestion.md. - A hand-labeled CT utterance suite with threshold checks, run against the pinned model, before any tuning. 20-40 utterances covering rate, safety, settlement, fees, timing objections, acceptance, disengagement, rep monologue, etc.; assert Noul/Choice ranges; plus replay assertions on a good, a bad and a recovered call. Measure calibration per question type on CT data (Noul best, Score worst). Evidence: copilot
tests/test_integration_jev.py/eval/integration_report.json(56/56); primeline (ECE 0.012 / 0.086 / 0.254; "benchmark your own task");jev-voice-browserthresholds "re-checked for model updates". - Generative text only off the critical path, and only after Jev verifies it. The generic approved line shows immediately; a tailored sentence may arrive ~1 s later only if a small LLM wrote it and Jev's
invents_fact/on_move/ (for CT)makes_promise_or_guaranteeNouls pass. Consider keeping it off for onboarding until compliance signs off. Evidence: copilotpersonalize.pyandVERIFY_QUESTIONS;demos__smart-home.md;cookbooks__llm_guardrails.md;cookbooks__sde_cascade.md;fraud-detection-jev-kimi(95% gate). - Outcome-driven curation of "good": store corrections, surface the least confident items, and learn signal weights from real outcomes. Admin marks per-utterance corrections that are kept and shown on later runs; an "Unsure" queue sorted by lowest confidence; keep rep-quality and opportunity-quality scores separate; then run the autoresearch loop over historical transcripts with outcome labels (onboarded / first trade / retained) to discover which questions actually predict outcomes and set weights from data rather than guesses. Evidence:
jev-triage;semarizeblog;cookbooks__autoresearch_feature_discovery.md(38 discovered questions, RMSE 1.77 vs 2.15 asking directly);concepts__use-case-map.md(feature extraction);kenhuangus/jev-usecases(thresholds "not fitted to a measured false-positive rate" is the trap to avoid).
9. Source index
Local files read:
/home/stevan/dev/jev/reference/jev-sales-copilot/{README.md, DEMO.md, copilot/constants.py, copilot/engine.py, data/playbook.json, data/calls/cloudtalk.json, eval/integration_report.json}/home/stevan/dev/jev/README.md/home/stevan/dev/jev/docs/vendor/typesafe/{patterns.md, patterns__fan-out.md, patterns__confidence-routing.md, patterns__composite-scoring.md, patterns__intent-routing.md, concepts__how-to-build-with-system-one.md, concepts__state.md, concepts__use-case-map.md, confidence.md, model-jaggedness__jev-1.13.md, demos.md, demos__smart-home.md, cookbooks.md, cookbooks__parallel_questions.md, cookbooks__classification_using_confidence.md, cookbooks__consistency_noul_cookbook.md, cookbooks__consistency_choice_cookbook.md, cookbooks__autoresearch_feature_discovery.md, cookbooks__skill_suggestion.md, cookbooks__semantic_find.md, cookbooks__llm_guardrails.md, cookbooks__sde_cascade.md, cookbooks__hierarchical_classification.md, cookbooks__classifying_rag_passages.md, cookbooks__rerank_typesafe.md, cookbooks__function_calling.md}/home/stevan/dev/jev/docs/vendor/cloudflare/ai__models__typesafe__jev.md- Not present at survey time:
/home/stevan/dev/jev/docs/jev-guide.md.
Web (fetched 2026-09-24):
- https://madewithjev.com/ and
/builds/{sales-copilot, realtime-clippy, mac-app-support-answers, no-llm-chat-bot, on-device-audio-pipeline, ambient-assistant, slack-agent-skill-routing, lead-outreach-scoring, inbox-triage-1500-emails, 500-emails-3-cents, fraud-detection-jev-kimi, voice-computer-assistant, typesafe-ai-playground},/github-repos,/community - https://github.com/moritzkremb/jev-sales-copilot ; https://x.com/moritzkremb/status/2102537239662096658
- https://github.com/ZeroGold/call-coach-ai ; https://github.com/wsmoak/jev-sales-calls ; https://github.com/zfrqbl-CW/jev-support-copilot ; https://github.com/abhitsian/cuecard ; https://github.com/moritzkremb/jev-voice-browser ; https://github.com/AiPersonacademy/jev-sales-radar ; https://github.com/harshil1712/slidepilot ; https://github.com/zeke/jev ; https://github.com/matthewp/flue-jev-demo ; https://github.com/kenhuangus/jev-usecases ; https://github.com/cephalization/jev-triage ; https://github.com/gtaras7/typesafe-jev ; https://github.com/ANTHONY-CHINEDU-ECHEM/SALES_CALL_COPILOT
- https://github.com/Anil-matcha/awesome-jev-by-typesafe ; https://github.com/walidboulanouar/awesome-jev-use-cases ; https://github.com/kraayenjon/awesome-jev
- https://evals.typesafe.ai/ ; https://evals.typesafe.ai/customer_service
- https://flaviocopes.com/jev/ ; https://www.kdnuggets.com/what-everyone-is-getting-wrong-about-typesafe-ais-jev ; https://www.marktechpost.com/2026/09/23/a-coding-guide-to-typesafe-ai-jev/ ; https://primeline.cc/blog/typesafe-jev-pre-registered-test ; https://semarize.com/resources/blog/jev-sales-call-scoring
- https://www.balto.ai/ ; https://www.balto.ai/real-time-agent-assist/ ; https://www.balto.ai/blog/best-ai-tools-for-real-time-agent-assist-on-sales-calls-2026/ ; https://cresta.com/ ; https://cresta.com/agent-assist ; https://cresta.com/blog/what-is-real-time-agent-assist-and-how-does-it-work ; https://www.gong.io/product/ ; https://www.oliv.ai/blog/gong-features ; https://www.zoominfo.com/products/chorus ; https://www.attention.com/ ; https://www.attention.com/solutions/sales-reps ; https://www.attention.com/product/ai-coaching-scorecards ; https://www.itsconvo.com/blog/real-time-sales-coaching-software