<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Krish</title>
    <description>The latest articles on DEV Community by Krish (@krishagarwal314).</description>
    <link>https://dev.to/krishagarwal314</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4055740%2F412169e4-3bf1-47e4-a55d-55aaecf2282b.png</url>
      <title>DEV Community: Krish</title>
      <link>https://dev.to/krishagarwal314</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krishagarwal314"/>
    <language>en</language>
    <item>
      <title>One LLM reviewing another LLM's code is a coin flip. Use a jury instead.</title>
      <dc:creator>Krish</dc:creator>
      <pubDate>Thu, 30 Jul 2026 22:41:00 +0000</pubDate>
      <link>https://dev.to/krishagarwal314/one-llm-reviewing-another-llms-code-is-a-coin-flip-use-a-jury-instead-10fm</link>
      <guid>https://dev.to/krishagarwal314/one-llm-reviewing-another-llms-code-is-a-coin-flip-use-a-jury-instead-10fm</guid>
      <description>&lt;p&gt;CodeJury is a terminal-first multi-agent coding pipeline where every change is reviewed by a panel of independent, differently-modelled judges&lt;/p&gt;

&lt;p&gt;Every agentic coding tool eventually needs a reviewer, and almost all of them use the same design: ask one model whether the diff is good.&lt;/p&gt;

&lt;p&gt;That fails in a predictable shape. A single judge is &lt;strong&gt;confident, fast, and blind in exactly the places the author was blind&lt;/strong&gt; — same training distribution, same intuition about what "looks right", same willingness to accept a plausible diff that never actually wires the feature through. It's a single point of judgement on the one step whose whole job is catching what the previous step got wrong.&lt;/p&gt;

&lt;p&gt;So &lt;a href="https://github.com/krishagarwal314/CodeJury" rel="noopener noreferrer"&gt;&lt;strong&gt;CodeJury&lt;/strong&gt;&lt;/a&gt; sends every change to a &lt;strong&gt;panel&lt;/strong&gt; of independent, differently-modelled judges, plus a foreperson who synthesizes one verdict.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evidence
&lt;/h2&gt;

&lt;p&gt;This isn't a hunch. &lt;a href="https://arxiv.org/abs/2505.20854" rel="noopener noreferrer"&gt;&lt;strong&gt;SE-Jury&lt;/strong&gt;&lt;/a&gt; (Zhou et al., 2025) measured how well automatic judges agree with human experts on whether generated code is correct:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;CoNaLa&lt;/th&gt;
&lt;th&gt;Card2Code&lt;/th&gt;
&lt;th&gt;APR-Assess (repair)&lt;/th&gt;
&lt;th&gt;Summary&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Avg&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Best traditional metric (METEOR)&lt;/td&gt;
&lt;td&gt;41.2&lt;/td&gt;
&lt;td&gt;72.5&lt;/td&gt;
&lt;td&gt;45.0&lt;/td&gt;
&lt;td&gt;19.9&lt;/td&gt;
&lt;td&gt;44.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vanilla LLM (one judge)&lt;/td&gt;
&lt;td&gt;45.6&lt;/td&gt;
&lt;td&gt;70.4&lt;/td&gt;
&lt;td&gt;43.5&lt;/td&gt;
&lt;td&gt;33.9&lt;/td&gt;
&lt;td&gt;48.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ICE-Score (one judge, SOTA prompt)&lt;/td&gt;
&lt;td&gt;55.2&lt;/td&gt;
&lt;td&gt;66.5&lt;/td&gt;
&lt;td&gt;43.5&lt;/td&gt;
&lt;td&gt;33.1&lt;/td&gt;
&lt;td&gt;49.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SE-Jury (ensemble)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;63.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;80.3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;76.2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;37.3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;64.3&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The best &lt;em&gt;single&lt;/em&gt; judge in the literature scores 49.6. The same model, arranged as a panel, scores 64.3 — and the gap is biggest on &lt;strong&gt;program repair (+75.2%)&lt;/strong&gt;, which is the closest task in the paper to what a coding agent actually ships.&lt;/p&gt;

&lt;p&gt;The ablation kills the obvious objection ("maybe one judge is just the good one"): every individual strategy averages 48–58, all below the panel's 64.3. And single judges are wildly unstable — the best one overall is the &lt;em&gt;second worst&lt;/em&gt; on summarization. Whichever judge you pick, you're picking its blind spot too.&lt;/p&gt;

&lt;p&gt;Those numbers are &lt;strong&gt;SE-Jury's, measured on SE-Jury&lt;/strong&gt; — evidence for the architecture, not a benchmark of my repo. Full tables and the human-agreement results are in the &lt;a href="https://github.com/krishagarwal314/CodeJury#1-the-jury-why-one-llm-judge-is-not-enough" rel="noopener noreferrer"&gt;README&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Six stages, any model on each
&lt;/h2&gt;

&lt;p&gt;CodeJury isn't one agent with a reviewer bolted on — it's six stages, and you pick the provider and model for each, live, from the terminal:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Builds the repo's code graph + structured views&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Socratic clarify-loop on your request, then drafts tickets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Planner&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Decides &lt;em&gt;how&lt;/em&gt; the change is made; every symbol verified against the graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dev&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Implements on an isolated &lt;code&gt;agent/&amp;lt;key&amp;gt;&lt;/code&gt; branch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;QA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Runs tests, reviews independently of Dev&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Review&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The jury — N judges in parallel + foreperson&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/model dev anthropic claude-sonnet-5
/model planner gemini gemini-3.5-flash-lite
/jury                                     &lt;span class="c"&gt;# seat, unseat, re-model, re-brief judges&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude plans, Codex writes, GPT reviews. The reviewer running a &lt;em&gt;different family&lt;/em&gt; than the author is the same decorrelation argument, one layer up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You may not need an API key at all&lt;/strong&gt; — stages run headless on coding CLIs you're already logged into (Claude Code, Codex, Cursor, Aider, Gemini CLI), on your existing subscription. Or bring any key; defaults target Groq's free tier, so the whole thing can run for $0.&lt;/p&gt;

&lt;h2&gt;
  
  
  A jury costs tokens. The pipeline earns them back.
&lt;/h2&gt;

&lt;p&gt;A cold agent pays the localization tax on &lt;em&gt;every&lt;/em&gt; task — grep, open, guess, backtrack, re-derive the architecture from scratch. CodeJury pays it once, into a persistent code graph (158 languages) with local semantic search fused with BM25.&lt;/p&gt;

&lt;p&gt;Head-to-head vs. plain &lt;code&gt;claude -p&lt;/code&gt;, same plain-English request, on &lt;code&gt;Textualize/textual&lt;/code&gt; (~82.5k LOC) and &lt;code&gt;rich&lt;/code&gt; (~35.6k):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repo&lt;/th&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;CodeJury&lt;/th&gt;
&lt;th&gt;Cold &lt;code&gt;claude -p&lt;/code&gt;
&lt;/th&gt;
&lt;th&gt;Δ&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;rich&lt;/td&gt;
&lt;td&gt;cross-cutting bug&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.456&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.828&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−45%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;textual&lt;/td&gt;
&lt;td&gt;feature&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.380&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.590&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−36%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;textual&lt;/td&gt;
&lt;td&gt;extreme cross-cutting bug&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$1.705&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$6.830&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−75%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;textual&lt;/td&gt;
&lt;td&gt;greppable bug&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.374&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.401&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−7%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On the extreme case the baseline spent &lt;strong&gt;$6.83 over 207 turns and 14.3M tokens&lt;/strong&gt; hunting one cache-decorator bug. &lt;strong&gt;Repo size isn't the driver — localizability is.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It also loses sometimes: on a very cheap task the fixed gate floor costs more than a cold run saves, and on the hardest bug the cheap win shipped a narrower fix. Both are documented in the &lt;a href="https://github.com/krishagarwal314/CodeJury/blob/main/benchmarks/kb-vs-claude-code.md" rel="noopener noreferrer"&gt;full report&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Python 3.11+ and git. That's the hard list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/krishagarwal314/CodeJury
&lt;span class="nb"&gt;cd &lt;/span&gt;codejury &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./run.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, start to finish:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/kb add https://github.com/pallets/click     &lt;span class="c"&gt;# index a repo&lt;/span&gt;
add a &lt;span class="nt"&gt;--dry-run&lt;/span&gt; flag to the CLI runner       &lt;span class="c"&gt;# plain English; PM agent scopes it&lt;/span&gt;
/approve all                                 &lt;span class="c"&gt;# the human gate&lt;/span&gt;
/run                                         &lt;span class="c"&gt;# Planner → Dev → QA → jury → PR&lt;/span&gt;
/review                                      &lt;span class="c"&gt;# the verdict, every juror's findings&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Demo mode is on by default, so the PR stage is a dry run until you opt in.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;⭐ &lt;a href="https://github.com/krishagarwal314/CodeJury" rel="noopener noreferrer"&gt;github.com/krishagarwal314/CodeJury&lt;/a&gt;&lt;/strong&gt; — MIT, contributions welcome.&lt;/p&gt;

&lt;p&gt;I'd genuinely like to hear where the jury gets it wrong. Run it on a repo, and if the panel misses something obvious — or blocks something it shouldn't — open an issue with the diff. That's the failure mode I most want data on.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
