← All projects
Build 04Job discovery & application orchestrationUsed on 100+ real application workflows

Job Beast

The job description can change what I emphasize. It can never change what's true.

Not an auto-apply bot. A system that treats job searching like real software: it watches many sources, ranks roles by fit and timing, rules out what I can't take, builds the strongest truthful résumé my evidence supports, and stops to ask whenever a decision is mine.

RoleSolo · built for my own search
Real use100+ application workflows
SourcesSimplify · LinkedIn · JobSpy
SafetyHuman-in-the-loop by design
StackPython · SQLite · LaTeX · Playwright
01 · The problemWhy it's a systems problem

Job searching is a messy distributed system.

Thousands of postings, many sources, deadlines that vanish and rules hidden in the fine print. I wanted to stop treating it like a chore and build it like a real system.

∞
Too many sources

No single board shows every opening.

×3
Same job, again

One role shows up on LinkedIn, Simplify and the employer's own site.

⏱
Gone fast

Strong roles fill up early, so timing matters.

Buried rules

Eligibility hides deep in the posting.

≠
Tailor, don't lie

Every application needs tailoring without inventing anything.

02 · The pipelineClick each stage

Nine stages. Each one exists because something broke.

Most of these design decisions came from real failures. Instead of patching one job, I fixed the whole class of failure in the system.

03 · The soul of the projectEvidence grounding

Tailor aggressively. Never hallucinate.

Those two goals pull in opposite directions. So every experience, project, skill and metric lives in an evidence bank with a stable ID, and every résumé line has to trace back to one. A requirement with no evidence stays a gap.

The job asks for
PythonEXACTSKILL-python · PROJ-orion
SQL databasesEXACTSKILL-sql · PROJ-forgedb
Cloud infrastructureUMBRELLAPROJ-pulsegrid (Docker workers)
REST APIsADJACENTEXP-rcc (Flask backend)
C++UNSUPPORTEDno evidence → stays a gap

ILLUSTRATIVE EXAMPLE · MATCH CLASSES ARE REAL

What the résumé gets
Skills · Projects
Python, SQL, Docker, FlaskSKILL-*
Built an AI analyst that traces every figure to a sourcePROJ-orion
Built a database engine with a B+ tree indexPROJ-forgedb
Built a backend for a local-AI readability appEXP-rcc
COVERAGE REPORT · C++ → UNSUPPORTED · reported, not added
04 · A ranking trade-offFit vs. freshness

New isn't the same as good.

Sorting by posting time is a trap: a weak match posted five minutes ago would beat a great one from yesterday. So fit and freshness are separate signals, and freshness can help but never dominate.

Queue priority = fit + freshness bonus

ILLUSTRATIVE JOBS · REAL RULES

The rules
01

Freshness is a bounded bonus, at most +15, decaying across age bands.

02

No bonus at all below a minimum fit score.

03

Fast lane only when a role is both ≤3 hours old and fit ≥70.

04

Stale fast-lane entries are demoted on every re-rank.

1H
3H
6H
12H
24H

BONUS DECAY SHAPE · ILLUSTRATIVE

05 · State managementWhat happens after something goes wrong

Failures aren't exceptions. They're states.

Every job lives in a persisted state machine. The radar re-ranks constantly, so it has to know which jobs it may never touch again, and a broken posting only fails itself, never the batch.

DISCOVERPREPAREEXECUTEOUTCOMEQUEUEDNEEDS_HYDRATIONREADY_FOR_OPERATORNEEDS CONFIRMATIONINELIGIBLENEEDS_INPUTHUMAN_CAPTCHAHUMAN_MFASUBMITTED ✓SUBMITTED_UNVERIFIEDCLOSEDFROZEN · THE RADAR NEVER PULLS THESE BACK
ActiveParked, needs dataWaiting for a humanFrozen
06 · Where AI fitsExecutor, not the brain

The AI fills forms. The system makes the rules.

Job Beast prepares everything and owns every decision. A browser operator, like Claude in Chrome or a Playwright script, only executes the live form, and it isn't allowed to invent an answer.

JOB BEAST OWNS
State, evidence, ranking and rules
  • Discovery, dedup and ranking
  • Eligibility gates and the evidence bank
  • The tailored résumé and application packet
  • Importing results and verifying outcomes
THE OPERATOR DOES
Fills the live application
  • Reads the packet and operator instructions
  • Fills fields with prepared, confirmed answers
  • Submits only when I authorize it
  • Writes back a result file
CAPTCHA & MFA

Never automated. The job is parked for me.

Legal questions

Answered only from answers I confirmed before.

Untrusted text

Instructions inside a job posting are never followed.

Private data

Voluntary EEO answers never enter a packet.

07 · ProofReal-world iteration

Run against the real world, 100+ times.

Stale listings, JavaScript-only pages, reworded legal questions, custom dropdowns, verification codes and confirmation pages that never arrive. Every ugly edge case improved the architecture.

100+real internship application workflows during development
9core application states in a persisted state machine
0invented skills, metrics or legal answers, by design
CIoffline test suite plus secret scanning on every push
Tested on
GreenhouseLeverAshbySmartRecruitersWorkdayJobvite+ more

“An action is not the same as an outcome.” Clicking Submit proves nothing: forms reject silently and sessions expire. A job only becomes SUBMITTED with an employer confirmation. Otherwise it's SUBMITTED_UNVERIFIED, which still blocks a duplicate application.

What I learned
In my words
Building something that works once is very different from building something you can trust repeatedly.

Most of the interesting work ended up being around edge cases, state transitions, verification and deciding when the system should stop and ask for help. That changed how I think about software. Now, when I build something, I automatically start thinking about how it fails, not just how it works.

— Vishalkiran
08 · What's nextFrom the roadmap
01

Poll Greenhouse, Lever and Ashby boards directly

02

Render JavaScript-only postings

03

Better requirement extraction from sparse postings

04

Smarter merging of reposts with employer listings

05

Wider student-visa exclusion detection

It started as a personal problem. It became a lesson in building automation you can trust.

PythonSQLiteState machinesLaTeXPlaywrightApifypytestGitHub Actionsgitleaks
↑↓ NAVIGATE↵ OPENESC CLOSE