SG Sanjay Gangwar

Project · Alpha · macOS

JobBot applies to jobs on your own accounts, from your own Mac.

A desktop app that opens the job boards you already use, signed in as you, reads each listing, skips what does not fit, answers screening questions from answers you have approved, and applies up to the caps you set. It is at version 0.1 and it is not finished.

Alpha — not a final product

Read this before you judge it

JobBot is published while it is still being built. It runs real job hunts every day, but it is unfinished software and it behaves like unfinished software.

  • It changes underneath you. Screens, settings and run behaviour can change from one build to the next, without a migration path.
  • Board coverage is uneven. Naukri and LinkedIn get the most testing. Indeed, Glassdoor, Wellfound, Hirist, Instahyre and Weekday work less consistently.
  • Some applications will not finish. CAPTCHAs, unusual forms and questions it cannot answer from your approved answers are handed back to you rather than guessed at.
  • Automated applying is against most job boards' terms. Accounts can be restricted for unusual activity. That risk is real and it is yours to weigh — start with small caps.
  • macOS only. No Windows or Linux build exists.

It saves you the typing. It does not promise interviews or offers.

Behaviour

What it actually does

Runs on your machine, as you

It drives a real browser profile you have already signed in to. It never asks for job-board passwords and it does not sign in on your behalf. Résumé, saved answers and sessions stay on the Mac.

Local-firstOwn sessions

Filters before it applies

Only the job titles you enter, only above the salary floor you set, best-paying listings first. Anything outside your profile is skipped rather than attempted.

Salary floorTitle scoping

Answers from answers you approved

Screening questions are resolved against a cache of answers you have reviewed, with a local model doing the matching. If it cannot match one confidently, it skips the job instead of inventing an answer.

Local LLMAnswer cache

Capped and stoppable

Caps per run and per job title, human-paced timing, a preview mode that reads without applying, and a stop that never lands mid-application. Every decision is visible in the run log.

Preview modeRun log

Build

How it is put together

Electron + React + TypeScript

Desktop shell with a React renderer and a TypeScript main process. Vite for the renderer, esbuild for main, vitest for the test suite.

ElectronReactTypeScript

Playwright for the boards

Each job board gets its own driver — readiness checks, search, listing parse, apply flow and questionnaire handling — over persistent browser profiles rather than headless throwaways.

PlaywrightPer-board drivers

Local model for the questions

Screening answers are resolved through a locally running model, so the text of your applications never has to leave the machine to be matched against your approved answers.

OllamaOn-device

Self-hosted updates

Builds and the update feed are served from my own infrastructure rather than a hosting CDN, with electron-updater pointed at it. The site only serves the page; the binary comes from the release feed.

electron-updaterSelf-hosted

Roadmap

Where it goes from here

Make the weaker boards reliable

Bring Indeed, Glassdoor, Wellfound, Hirist, Instahyre and Weekday up to the consistency Naukri and LinkedIn already have.

Fewer hand-backs

Widen what the answer resolver can handle safely, so fewer runs stop on a question it will not guess at.

Stability before features

Alpha ends when a build stops changing behaviour on people between updates — not when the feature list is longer.

Links

Try it or ask about it

The product page, pricing and the macOS build live on trei.dev. Builds are sent to alpha users on request.