A Chrome extension that autofills job applications on ATS sites (Greenhouse, Ashby, Lever, Workday,
...) with an AI-tailored resume and drafted answers to freeform questions, backed by a local
server and a persisted history of past applications. See PROGRESS.md for what's built and
CONTEXT.md for domain terminology.
packages/shared— zod schemas shared by both apps (Profile,JobInfo,TailoredResume, etc.)apps/backend— local Hono server: LLM calls (Anthropic), Postgres persistence (Neon + Drizzle), resume PDF rendering. Runs on127.0.0.1:5391.apps/extension— MV3 Chrome extension (Vite +@crxjs/vite-plugin+ React): content scripts that detect/scrape job pages and fill forms, a background service worker, an options page (profile setup), and a popup (review/fill).
- Node.js and
pnpm(^11.20.0— seedevEnginesinpackage.json) - A Neon Postgres database (or any Postgres connection string)
- An Anthropic API key
- Google Chrome (to load the extension)
pnpm installcp apps/backend/.env.example apps/backend/.envEdit apps/backend/.env:
DATABASE_URL=postgres://user:password@your-neon-host/djobi?sslmode=require
ANTHROPIC_API_KEY=sk-ant-...
PORT=5391
Run migrations against your database:
pnpm db:generate # only needed after changing apps/backend/src/db/schema.ts
pnpm db:migratepnpm dev:backendStarts the Hono server on http://127.0.0.1:5391 (via tsx watch, restarts on file changes).
Leave this running — the extension talks to it directly.
The extension needs a real dist/ build to load into Chrome (a plain vite dev server isn't
enough for an MV3 unpacked extension):
pnpm build:extensionThen in Chrome:
- Go to
chrome://extensions - Enable Developer mode (top right)
- Click Load unpacked and select
apps/extension/dist - Re-run
pnpm build:extensionafter making changes, or usepnpm --filter extension devfor@crxjs/vite-plugin's watch/HMR mode, then click the reload icon on the extension card inchrome://extensions
With the backend running and the extension loaded:
- Click the djobi icon → open the options page (or right-click the icon → Options)
- Fill in your contact info, links, work experience, education, skills, and stories
- Save — this is stored server-side and used to seed every tailored resume/answer
Navigate to a job posting on a supported ATS site with an application form. Open the popup:
- If the page looks like a job application, it scrapes the posting, extracts structured job info, and drafts a tailored resume + question answers for you to review/edit
- Fill form writes the reviewed values into the page, attaches the generated resume PDF, and
saves a
draftapplication record — nothing is submitted to the employer automatically
pnpm test # every package
pnpm --filter backend test # backend only
pnpm --filter extension test # extension only
pnpm --filter @djobi/shared test # shared schemas onlypnpm format # prettier --write .
pnpm format:check # prettier --check .apps/backendhas notsconfig.json, sopnpm --filter backend build(production build) fails.pnpm dev:backend(viatsx) is unaffected and works fine for local development.- See
PROGRESS.md→ "Known loose ends" for more.