The decision brain
Which companies to spend the days on: P(offer), the shortlists, one company a day.
Thousands of companies are too many to work on. The decision brain (jobhunter/decide.py) asks five plain questions about every Bengaluru, Hyderabad and remote company, turns the answers into one chance of an offer, keeps the best of them on a shortlist, and gives you one company a day — fill it, or ask its referrer.
What the number means#
Best bets shows each company as, for example, “19% chance of an offer — about 1 in 5 companies like this”. Read it literally: if you worked on five companies that look like this one, from the first email to the last interview, you would expect about one offer among them. The “1 in N” is simply one divided by the chance, rounded.
Hover the number and it gives the range it is fairly sure of — “most likely 19%; we are fairly sure it is between 7% and 32%” (an 80% interval). Beside it: how many times better this company's odds are than the typical company on the same shortlist (“4.1× better than the typical company on your list”), and how DSA-heavy their interviews look.
The top of the shortlists as decided on 23 Oct 2026; the live figures are on Best bets.
The five questions#
Each company gets the same five yes/no questions. Every answer is a probability worked out from fields the pipeline already holds, with the evidence quoted — no model is asked to guess.
| Question | In plain words | Read from |
|---|---|---|
| open | Is a role open right now that a 2027 graduate can apply for? | Its scored roles — the more fresher roles, the surer |
| reach | Will a referral ask get a reply? | A reply rate learned from your own sent mail, over up to three asks, and whether a referrer is ready |
| screen | Does the resume pass a cold screen? | How well your skills cover the best role, its gaps, and company size |
| loop | Do you clear their interview loop? | Your DSA level against how DSA-heavy their interviews look, plus skills fit |
| pay | Will they pay at least your floor? | Stated pay, PPO, or the company’s pay power |
How they combine#
A referral matters most at the screen: it multiplies the screen's odds by six. So the chance of an interview call is (reply × screen with a referral) + (no reply × cold screen), and
chance of an offer = a role is open × you get an interview call × you clear the loop × they pay your minimumBest bets draws those four as bars and marks the weakest one — usually the place a fill, a referrer or practice would move the number most. Each answer is held as a range rather than a single value (stronger evidence, narrower range); the brain samples 4,000 times, seeded per company so the same inputs always give the same answer, and reports the middle and the 80% band.
The four verdicts#
- Target
- Enough is known and someone is ready to ask. Write to them.
- Fill first
- Too little is known to decide — fewer than 55% of the seven deciding fields (description, hiring checked, size or stage, pay evidence, a scored role, people searched, a ready referrer) — or nobody is ready to ask yet. A remote company whose pay is unknown is also fill-first. The brain abstains rather than guesses: fill it, then decide.
- After DSA
- India only. Their interviews are DSA-heavy (intensity 0.60 or more) and well above your level (more than 0.15 over it), and they pay at the top (₹35 LPA or more) or the loop is extreme (0.80+). Parked, not dropped: raise
decide.me.dsa_levelas you practise and they come back on the next run. - Skip
- A guardrail fails: quarantined, do-not-contact, overrated, a rejected tier, or below the pay bar. In India, a culture rating under 3.0/5 on at least ten AmbitionBox reviews (read by the mixer). For remote, thin pay. A hiring claim their own site doesn't back is not a skip — it just makes “a role is open” unlikely until a fill re-checks it.
The shortlists#
Among target and fill first, the best by chance of an offer are kept per pool: Bengaluru 100, Hyderabad 50, Remote 100 (decide.shortlist). On Best bets → Companies the tabs are Bengaluru, Hyderabad, Remote, After DSA and Skipped; the parked tabs show why each company is parked. On 23 Oct 2026 the brain had decided 2,479 companies:
| Pool | Target | Fill first | After DSA | Skip | Shortlisted |
|---|---|---|---|---|---|
| Bengaluru | 136 | 1,106 | 7 | 179 | 100 |
| Hyderabad | 10 | 278 | 1 | 71 | 50 |
| Remote | 109 | 485 | 0 | 97 | 100 |
One company a day#
- Picked on the first look of the dayThe first time Best bets (or
decide today) is opened on a day — Indian time — the best shortlisted company is picked, skipping any picked in the last 30 days and any you are already writing to. - Fill it, or askA target pick says Ask a referrer and opens the company page. A fill first pick says Fill it: description, hiring proof, facts and referrers are filled (a few minutes), then the brain decides it again and the card updates.
- Mark itMark asked when you have written. Skip picks the next company on the shortlist for today. What the brain said at the moment of the pick is frozen, so it can be scored later.
Your DSA level#
How DSA-heavy a company's interviews are (0–100%) is read from its own postings and description — LeetCode, HackerRank, “data structures and algorithms” push it up; a posting that says it cares less about LeetCode pulls it down — and, when the text says nothing, from size, stage and money. Your own level is one number in config.yaml:
decide:
me:
dsa_level: 0.35 # 0..1, your interview-DSA ability today — raise it as you practiseUpskill shows what raising it to 0.5, 0.65 or 0.8 would be worth, and which parked companies would come back.
Recording what happened, and checking the brain#
The brain gets less wrong only if it hears how things turned out. Record each company's outcome from the terminal (there is no dashboard button for this yet):
python scripts/run.py decide outcome 2802 replied # replied | referred | interview | offer | rejected | no_response
python scripts/run.py decide calibrate # how good its numbers have beencalibrate compares what the brain said with what happened, using proper scoring rules (the Brier score and log loss) for two things: did a written-to company reply, and did a finished story end in an offer. Under twenty outcomes it says too few to judge; after that, whether it beats simply guessing the average. The reply rate itself starts at 10% and is updated by every cold email sent and every positive reply.
When it runs#
Every free tick decides all the companies again after the role scores, and the shortlist job re-decides after each company it completes. You can also run it any time — decide run, a Fill from today's card, or a mixer run — and the shortlist shows when it last ran.
python scripts/run.py decide run # decide everything, re-rank the shortlists
python scripts/run.py decide top --pool Bengaluru # the shortlist; --verdict after_dsa | skip for the parked
python scripts/run.py decide show 2802 # every question, its chance and its evidence
python scripts/run.py decide today # today's company; --asked, or --skip "reason"
python scripts/run.py decide fill # fill today's company completely, then decide it again