buildwithai.in

Flagship project

AI Job Agent

Job searching is fragmented across boards, ATS platforms, email alerts, referrals, resumes, and follow-ups. AI Job Agent is a desktop application that keeps those workflows together — discovering roles, scoring fit, and preparing grounded application material — without handing account control to an uncontrolled bot.

How it works

DiscoverRankAnalyseTailorHuman reviewAssisted applyFollow upLearn

Human review is a durable pause, not a formality — the run checkpoints to disk and won't move to assisted-apply without an explicit approval.

Interactive demo

Pick a fictional job, watch the fit score break down, review a tailored resume, and step through the human-approval gate yourself.

Runs entirely in your browser on synthetic data — no real account, board, or application is ever touched.

Try the demo

Platform support

GreenhouseForm filling, live-validated
LeverForm filling, live-validated
AshbyForm filling (implemented)
SmartRecruitersForm filling (experimental)
JobviteForm filling (experimental)
WorkdayDiscovery
NaukriImport + assisted handoff
LinkedInAlert-email import

AI architecture

Model calls go through an application-owned provider abstraction rather than a single hardcoded SDK, so the same scoring and tailoring logic runs against Anthropic, OpenAI, NVIDIA NIM, or a local Ollama model. Fit scoring mixes model-judged categories (required skills, tech stack, experience level, preferred skills) with deterministic ones (seniority, location, remote preference, employment type, salary) — the model never sees the category weights, and application code, not the model, owns the safety rules and state transitions.

Safety architecture

  • Applicant data stays on the local machine — no hosted database, no server, no multi-tenant store.
  • The renderer process has no Node.js, filesystem, or credential access; a narrow typed bridge is the only path to the main process.
  • Background workers (discovery, run execution, assisted-apply sessions, Naukri handoff) run isolated, so a crash in one doesn't take the app down.
  • CAPTCHA and MFA are never automated or bypassed — those steps stay in the applicant's hands.
  • Nothing clicks Submit. ATS adapters have no submit method; a separate human confirmation records that a submission happened after the applicant does it themselves.
  • Standard ATS applications get a fresh browser context per application, discarded afterward, including on failure paths. Naukri assisted handoff is the deliberate exception — a durable, leased profile survives across applications, guarded by a single-holder lease rather than per-application isolation.

Engineering evidence

TypeScriptElectronReactSQLite + Drizzle ORMPlaywrightVitestZod-typed IPC contractsLangGraph state machine

290+ test files across backend, desktop, and Electron E2E as of August 2026. Cross-platform packaging targets Windows, macOS, and Linux.

Lessons learned

  • Stale DOM selectors on real ATS forms break silently — verification has to re-read filled values after the form settles, not just trust the write.
  • The Naukri handoff needed the opposite of per-application isolation — a durable, leased browser profile, since a login session has to survive across applications; a single-holder lease prevents two applications from fighting over it.
  • Dependable agent behavior comes from explicit boundaries (typed state transitions, deterministic policy, process isolation) more than from a better prompt.
  • Conservative capability labeling matters: a platform with implemented form-filling but no live validation is marked experimental, not fully supported.