IntelliJev JetBrains Hackathon · Help the Developer

How do you help a developer in 2026?

IntelliJev

An IntelliJ plugin for agent efficiency. We put a decision model in the agent's hot path, so the expensive model is only called when it has earned the call.

Team  Blackbeard Pirates Members  Tanvir · Abdul Aziz · Mahad Date  September 2026
IntelliJevThe framing

Jevons paradox, running inside your IDE

The models got better, so we spend more on less

The name is not a pun we reverse-engineered. It is the actual problem.

What one routine agent decision costs today Generative round trip The decision you needed
TODAY · ONE LLM CALL Load the context. Reason in prose. Emit tokens. Parse them back. seconds of latency · thousands of tokens billed WHAT YOU ACTUALLY NEEDED one of three The rest is packaging. You pay for the essay to receive the glance. same answer INTELLIJEV · ONE JEV CALL one of three 70–500ms output free drawn to scale against the call on the left Why it got worse, not better Every model generation is smarter, so we hand agents more to do. The scope of the work grew faster than the price per token fell. The decisions are not the work. Not one of them writes a line of code.
The correction  a model that cannot write prose, answering the glances, at a fraction of a cent and a fraction of a second02
IntelliJevThe problem

Real problems, not invented ones

We asked each other what actually slows us down

Three developers on this team, three answers, all of them the same shape.

?
Tanvir

I cannot follow my own agents

Several sessions at once, each producing more than anyone can read. Tracking what each one changed, while still doing your own work, becomes the bottleneck.

TASK IN PROGRESS 58% done then nothing what was finished? start again
Mahad

Rate limits land mid-task

The limit hits halfway through and the thread is lost, so you restart rather than resume. Nothing tells you what was finished and what was not.

which file holds this? A GLANCE $$$ FRONTIER PRICE
Abdul Aziz

I pay frontier prices for trivia

A throwaway question asked inside a long session, because a new chat would lose the context. The dumbest question in the room costs the most.

What they share  none of these are reasoning problems. They are cheap judgements that nothing cheap is making.03
IntelliJevThe model

Jev · TypeSafe System One

Jev decides. The LLM writes. Only when it has earned it.

Jev cannot emit a string. That constraint is the whole design, and the shape below is reused by every feature.

Latency70–500msper decision, end to end
Input$0.042per million tokens
OutputFreetoo cheap to meter
Choice255options per decision
Two-tier control Deterministic Jev decision LLM generation
CANDIDATES Thousands of code elements from PSI, already indexed JEV Typed questions would_edit · same_rule belongs_here · is_simple ~150ms · fractions of a cent above threshold? LLM Writes the code seconds, real money a handful of calls Dropped, never generated most candidates land here yes no Jev runs thousands of times a session. The LLM runs only when Jev says it is worth it.
Endpoint  openrouter.ai/api/alpha/decisions · Model  jev-latest · Context  32k04
IntelliJevThe product

What every idea turned out to be

Six finders on one decision layer

We brought eight ideas and found they were one idea: a go and look, done before the expensive model wakes up.

One Jev client, one PSI layer, six surfaces Ships first Built on the same client
JEV decision layer shared by all six 01 · FILE FINDER · FLAGSHIP Which files does this task touch? Score the repository, pack the window. 02 · BUG TWINS · FLAGSHIP Where else is this bug? The same rule, under three different names. 03 · TOOL FINDER Which tool for this step? Shortlist three, so the model is not shown forty. 04 · MODEL ROUTER Which model for this question? Rate the difficulty, route to the cheapest that fits. 05 · CONTEXT GUARD Does this prompt belong here? If not, it opens beside the thread as a bubble. 06 · RUN WATCH What did the run actually do? A status per turn, and a summary before the limit bites.
Why they belong together  one shape reused six times, not a chicken with boots that also swims05
IntelliJevFeature 01

File finder · the flagship

Context exploration, without the exploring

Grep needs the right word. Embeddings need an index that goes stale. Agents read files one at a time. Jev reads all of them at once.

Packing the context window IntelliJ PSI Jev LLM
REPOSITORY 8,000 files already indexed by the IDE PSI SKETCH Signatures only ~400 tokens per file, no parser to write JEV · BATCHED ~60 sketches per call four questions each, every call fired in parallel ~120 calls · seconds · ~$0.14 SCORED BY ROLE would_edit 0.94 example 0.88 constrains 0.71 defines 0.63 a budget per role, not top-k on one score LLM One packed window one shot, no browsing Why a balanced window beats top-k Ranking on one relevance score returns six near-identical implementations of the same thing. Budgeting across roles returns the file to edit, two patterns to copy, the test, and the interface. Projected figures. The batching limit and real latency are the first things we measure.
Why it needs Jev  an LLM cannot afford to read 8,000 files to decide which 6 to read06
IntelliJevFeature 02

Bug twins

You fixed one path. Which others had the same bug?

The same business rule, written three times by three people under three names. No search finds all of them.

One narrow question, asked of every function in the repository Jev ranks The developer decides
YOU JUST FIXED Checkout.applyCoupon() expired coupons were passing validation JEV ASKS, EVERYWHERE "Does this function enforce the same eligibility rule?" every function · cents ExpressCheckout.applyPromo() same rule, same gap 0.96 SubscriptionRenewal.validate() expiry read off the wrong clock 0.91 GiftCard.redeem() a different rule, correctly different 0.12 Why grep fails Nothing was copied. Different names, different implementations, one shared rule. The hard part: some differences are deliberate, so we show the code and let the developer judge.
The demo  fix one checkout path, discover a forgotten path, reproduce the original bug there live07
IntelliJevProof

How we prove it

Before and after, with the meter running

Split screen, same task, same LLM, one real repository. Left explores by opening files. Right packs the window in one pass.

One task, answered both ways Projected, not yet measured Baseline agent IntelliJev
Tool calls to reach the answer 24 2 Baseline IntelliJev Seconds to first useful answer 48 6 Baseline IntelliJev Cost per task, in dollars 0.42 0.05 Baseline IntelliJev Hatched bars are projections. On the day, these are replaced by counters running live on stage.
The evaluation  50 real commits, the message is the task and the files it touched are the answer key. Recall at ten, against grep and against embeddings.08
IntelliJevNext

What we need from you

What is settled, what is open, what we are asking

We would rather be told now which features to drop than find out on stage.

Settled

The architecture

Jev decides in the hot path, the LLM writes on demand, PSI supplies structure for free. Six features, one shape, which is why they fit in one plugin rather than six.

Kotlin, IntelliJ Platform SDK, Koog, Jev via OpenRouter.

Open

Three unknowns

  • How many questions fit in one call. All of our batching maths depends on it.
  • Real latency under parallel load.
  • Whether signatures carry enough signal, or we need a second pass on full text.
Asking

Your steer

  • File finder or bug twins as the flagship?
  • Does a measured before-and-after count for more than a wider feature set?
  • How much JetBrains integration do you want to see by the deadline?
Blackbeard Pirates  Tanvir · Abdul Aziz · Mahad09