Michi
Sign inKnow MichiKnow

Michi router vs Jev

A live side-by-side on 40 tasks, run 2026-10-15. Jev (jev-1.13.0) is an optional second opinion that never chooses the model that runs.

Agreement is not accuracy

No model was run on these tasks, so nothing here says which one chose the better model. For task kind and difficulty the only reference is the author's own judgement, a sanity check and not ground truth. For model choice there is no reference at all. Read this as a first look, not a verdict.

Headline

Same model picked
27/40 (68%)
Same task kind (V3 vs Jev)
32/40 (80%)
Same difficulty band (V3 vs Jev)
32/40 (80%)
Kind vs the author's labels, V3 / Jev
32/40 (80%) / 36/40 (90%)
Difficulty vs the author's labels, V3 / Jev
30/40 (75%) / 32/40 (80%)
Same request twice, same Jev pick
8/8
Jev latency, median / p90
492 ms / 681 ms

What stands out

  • Labels are close: the two agree on 32 of 40 kinds and 32 of 40 difficulty bands. Jev is ahead of V3 by 4 kinds and 2 bands against the author's labels, which is within noise at this size.
  • Where they chose different models and both are priced (11 tasks), Jev chose the dearer one 11 times and the cheaper one 0. Whether the extra spend buys better results is untested.
  • The scheduler's pool was only 4 offerings on 18 tasks (mostly hard ones), which forces agreement: 18/18 there against 9/22 on the wider pools.
  • One model sold by several providers counts as the same model, so exact-offering agreement is lower (25/40 (63%)).

Only models that answer a live ping

The same 40 tasks again, with the pool cut to the offerings that answered a ping today. Jev ran on 22 of them and was skipped on 18: all 18 skipped tasks were hard, where only one offering passed the quality floor and Jev needs at least two. So this run says nothing about hard tasks.

  • Same model picked on 12/22 (55%) of the tasks that ran (15 trivial, 7 moderate).
  • 10 disagreements, always the same: the scheduler chose deepseek-v4-flash, Jev chose gemini-3.8-flash. Both are cheap, fast models; which is better here is untested.

Every task

TaskAuthor's labelsV3JevScheduler pickJev pickPool
rename the variable x to count in util.pysmall_edit / trivialsmall_edit / trivialsmall_edit / trivialdeepseek-ai/DeepSeek-V4-Flash-0731deepseek-flash (0.26)44
fix the typo 'recieve' in README.mdsmall_edit / trivialsmall_edit / trivialsmall_edit / trivialdeepseek-v4p1-flashdeepseek-v4p1-flash (0.34)30
change the default timeout from 30 to 60 seconds in config.pysmall_edit / trivialsmall_edit / trivialsmall_edit / trivialdeepseek-v4p1-flashdeepseek-v4p1-flash (0.36)23
remove the unused import os from server.pysmall_edit / trivialsmall_edit / trivialsmall_edit / trivialdeepseek-ai/DeepSeek-V4-Flash-0731deepseek-flash (0.29)44
update all call sites of get_user(id) to get_user(id, include_deleted=False)small_edit / moderatesmall_edit / moderatesmall_edit / moderatedeepseek-ai/DeepSeek-V4-Flash-0731gemini-3.8-flash (0.31) — different model40
write a function that reverses a string in Pythonwrite_code / trivialwrite_code / trivialwrite_code / trivialdeepseek-v4p1-flashdeepseek-v4p1-flash (0.32)44
add a unit test for parse_date covering leap years and invalid inputwrite_code / moderatewrite_code / moderatewrite_code / moderatedeepseek-v4p1-flashdeepseek-v4p1-flash (0.4)24
implement a rate limiter middleware with a token bucket for our Express appwrite_code / moderatewrite_code / moderatewrite_code / moderategemini-3.8-flashclaude-opus-5-5 (0.47) — different model12
implement a lock-free concurrent hash map in Rust with resizing and testswrite_code / hardwrite_code / hardwrite_code / hardclaude-opus-5-5claude-opus-5-5 (0.94)4
write a SQL query planner rule that pushes predicates below joins, with proofs of equivalence in commentswrite_code / hardwrite_code / hardwrite_code / moderateclaude-opus-5-5claude-opus-5-5 (0.9)4
the login endpoint returns 500 when the email has a plus sign; find whydebug / moderatedebug / harddebug / moderateclaude-opus-5-5claude-opus-5-5 (0.77)4
this test passes locally but fails in CI with a timeout; investigatedebug / moderatedebug / moderatedebug / moderatemimo-v2.6-progemini-3.8-flash (0.47) — different model13
the worker deadlocks under load roughly once an hour; find the root causedebug / harddebug / harddebug / hardclaude-opus-5-5claude-opus-5-5 (0.89)4
memory grows 2% per hour in production, heap dumps show many open file handles from three libraries; track the leakdebug / harddebug / harddebug / hardclaude-opus-5-5claude-opus-5-5 (0.89)4
python says NameError: name 'np' is not defined, what's wrong in my scriptdebug / trivialquestion / trivialdebug / trivialgemini-3.8-flashgemini-3.8-flash (0.71)20
extract the duplicated validation in the three signup handlers into one helperrefactor / moderaterefactor / moderaterefactor / moderatemimo-v2.6-proclaude-opus-5-5 (0.37) — different model19
port the scheduler to async and keep the public API stablerefactor / hardrefactor / hardrefactor / hardclaude-opus-5-5claude-opus-5-5 (0.97)4
split the 4000-line models.py into a package without breaking imports or migrationsrefactor / hardrefactor / hardrefactor / hardclaude-opus-5-5claude-opus-5-5 (0.94)4
rename the function calc to calculate_total everywhererefactor / trivialrefactor / trivialsmall_edit / trivialdeepseek-v4p1-flashdeepseek-v4p1-flash (0.2)44
convert these callbacks to async/await in the file upload modulerefactor / moderatewrite_code / moderaterefactor / moderatedeepseek-v4p1-flashclaude-opus-5-5 (0.41) — different model26
design a migration from SQLite to Postgres with zero downtime for a 200GB databasedesign / harddesign / harddesign / hardclaude-opus-5-5claude-opus-5-5 (0.57)4
design a multi-region active-active architecture for our payments servicedesign / harddesign / harddesign / hardclaude-opus-5-5claude-opus-5-5 (0.59)4
propose a caching strategy for our product catalogue APIdesign / moderatedesign / harddesign / moderateclaude-opus-5-5claude-opus-5-5 (0.87)4
sketch the data model for a team calendar with recurring events and exceptionsdesign / moderatedesign / moderatedesign / moderatedeepseek-v4p1-flashclaude-opus-5-5 (0.46) — different model20
what folder structure should a small Flask app havedesign / trivialquestion / trivialquestion / trivialdeepseek-ai/DeepSeek-V4-Flash-0731gemini-3.8-flash (0.39) — different model44
review this pull request for security problems: it adds file upload and image resizingreview / moderatereview / hardreview / hardclaude-opus-5-5claude-opus-5-5 (0.89)4
audit our JWT handling and session refresh flow for vulnerabilitiesreview / hardreview / hardreview / hardclaude-opus-5-5claude-opus-5-5 (0.84)4
does this function look ok? def add(a,b): return a+breview / trivialreview / trivialreview / trivialdeepseek-v4p1-flashdeepseek-v4p1-flash (0.28)27
check the diff for race conditions in the job queuereview / moderatedebug / hardreview / hardclaude-opus-5-5claude-opus-5-5 (0.87)4
review the migration script for data-loss risksreview / moderatereview / hardreview / moderateclaude-opus-5-5claude-opus-5-5 (0.85)4
write a one-line docstring for the function normalize_pathdocs / trivialdocs / trivialdocs / trivialdeepseek-ai/DeepSeek-V4-Flash-0731gemini-3.8-flash (0.7) — different model31
write the release notes for version 2.4 from the changelogdocs / moderatedocs / trivialdocs / trivialdeepseek-v4p1-flashgemini-3.8-flash (0.4) — different model24
document the public API of the billing module with examplesdocs / moderatedocs / trivialdocs / moderatedeepseek-ai/DeepSeek-V4-Flash-0731gemini-3.8-flash (0.65) — different model44
draft a README for this CLI tool covering install, usage and configdocs / moderatedocs / trivialdocs / trivialdeepseek-ai/DeepSeek-V4-Flash-0731gemini-3.8-flash (0.76) — different model31
write an architecture guide for new engineers covering the routing, recorder and permission subsystemsdocs / harddesign / harddocs / hardclaude-opus-5-5claude-opus-5-5 (0.66)4
what does the -r flag do in grepquestion / trivialquestion / trivialquestion / trivialdeepseek-ai/DeepSeek-V4-Flash-0731gemini-3.8-flash (0.33) — different model44
what is the difference between a list and a tuple in Pythonquestion / trivialquestion / trivialquestion / trivialdeepseek-ai/DeepSeek-V4-Flash-0731gemini-3.8-flash (0.42) — different model44
explain the tradeoffs between CRDTs and operational transformation for collaborative editorsquestion / moderatedesign / hardconversation_or_research / trivialclaude-opus-5-5claude-opus-5-5 (0.7)4
when should I use a message queue instead of a database table for jobsquestion / moderatedesign / hardquestion / trivialclaude-opus-5-5claude-opus-5-5 (0.9)4
compare Raft and Paxos for a geo-distributed key-value store and say which one fits a 5-region deploymentquestion / harddesign / hardconversation_or_research / moderateclaude-opus-5-5claude-opus-5-5 (0.75)4

Limits

  • 40 tasks written by one person, one pass. Not a sample of real use.
  • Michi side: Michi Decider V3 labels and the Michi scheduler over a 44-offering catalogue, with no learned history, as a fresh install would behave.
  • Jev's difficulty uses its own 0–4 rubric, bridged to Michi's bands by thresholds chosen by the author.
  • Latency is from one machine and network. Jev's price is not published, so its cost per decision is not measured.

Try the Router Playground