Complete documentation for JAWB HUNT, the local resume-to-openings hunter.
JAWB HUNT is a small app that runs on your own computer. A local Python server does the work; your browser is the screen. Nothing is hosted, there are no accounts, and no API keys are required for the core features.
When you run a hunt, the server pulls live openings straight from each company's own public hiring feed (the same feeds their careers pages use), scores every role against your resume, and shows you a ranked list with the reasons for each match. From there it can prefill application forms in a browser window you control and draft answers to custom questions.
Eight kinds of hiring feed are supported: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Workday, Amazon Jobs, and Eightfold (Netflix).
JAWB HUNT folder together; the app looks for server.py next to itself.JAWB HUNT.app.JAWB HUNT.app, choose Open, then click Open in the dialog. You will not be asked again.Relaunching the app while the server is already running simply reopens the browser tab. Nothing is started twice.
Double-click Start JAWB HUNT.command, or in Terminal:
cd "/path/to/JAWB HUNT"
python3 server.py
Then open http://localhost:8914.
The server is plain Python 3 with no dependencies. In a terminal inside the unzipped folder:
python3 server.py
On Windows the command is usually py server.py or python server.py (install Python from python.org and tick "Add python to PATH"). Then open http://localhost:8914 in your browser. The .app and .command files are Mac only. Windows and Linux are supported by design but have not been tested by the makers; if something misbehaves there, the message in the terminal says what. Prefill apply and the Question coach work anywhere their power-up setup is done (sections 9 and 11).
Close the browser tab and quit the Python process (Ctrl+C in Terminal, or Activity Monitor: the process is Python running server.py). The app binds to 127.0.0.1 only, so nothing on your network can reach it.
Drop a file on the shark or click it to choose: .pdf, .docx, .txt, .md. Or paste the text directly.
Optional. Type one or more titles, comma separated, for example Chief Operating Officer, VP Operations. A target does three things:
A target works with no resume at all for a pure title hunt.
Hunt all companies (default) or pick a set. The picker has a filter box and select-all / clear buttons. Your selection is remembered.
Every company in the roster verified live with real postings when it was added. Companies that use closed hiring systems (Apple, Google, Meta) cannot be included without scraping and are deliberately left out. Some big names (for example Groq, Midjourney) expose no public feed and are out as well.
Under the company picker, "Hunt for" switches between "Roles that fit my resume" and "Data center jobs only". The second is a different kind of hunt: it lists only data center jobs, across every company in the roster, and the role does not have to be an exact match for anything.
How a role qualifies, strongest first. Each card carries the matching badge:
What keeps it honest: whole phrases only, so "Call Center" never matches. A company's own boilerplate is cancelled out, so a payroll role at a GPU cloud does not qualify just because the "About us" paragraph says data center three times. Software titles never qualify on description alone. "Mission critical" by itself proves nothing (it is defense and telecom language too) and needs a second telling word. Feeds that give no description qualify on the title only.
Results come with role family chips (Procurement and supply chain, Construction and commissioning, Facilities and critical operations, Engineering and design, Operations and site leadership, Program and project management, Energy, land and development, Network, hardware and IT, Security and safety, Sales, finance and corporate). Click one to narrow the list; it combines with the USA / International switch and the other filters. The minimum score slider drops to 0 for this hunt so nothing is hidden, and goes back to 30 for a resume hunt. A full data center hunt takes about a minute the first time and lists well over a thousand roles.
Press RELEASE THE JAWB. A progress bar shows companies scanned. A first full hunt takes two to three minutes; results are cached for six hours per company, so repeats take seconds. Tick "Skip cache" to force fresh pulls.
Huge boards are not downloaded whole. Workday, Amazon, and Netflix are searched with the top role and skill phrases from your resume (or your target title) and the best few hundred results are scored.
If a feed does not respond, the hunt continues and the insights panel names the companies that were skipped this run.
Each card shows:
Filters: minimum score slider, title text, location text, remote only. Show more loads the next 50.
Region switch: All, USA, or International. Every card carries a USA or INTL badge worked out from the posting's location (a role listing both, say Paris and Austin, shows USA + INTL). Roles with no stated country, such as a bare "Remote", have no badge and appear under All and USA. The count line above the list shows how many of the visible roles are USA and how many international.
Insights above the list:
Title word matches weigh most, then skill phrases, then department, location, and (where the feed provides it) description terms. Rare words count more than common ones. A typed target title is the strongest signal of all. A seniority gap of two or more levels between your resume (or target) and the role costs points. Description-heavy feeds are capped so they cannot crowd out title-only feeds.
The profile powers Prefill apply. Save it once.
profile/profile.json and profile/resume.<ext> inside the app folder. They never leave your machine.The Profile and Question coach panels sit below the results and fold closed once you are set up. The panel header shows your name and whether a resume file is attached.
For a new resume, a new search, or handing the app to someone else. The Start fresh button sits at the right of the Save profile row. It opens a confirmation that says exactly what will happen; nothing happens until you click "Yes, start fresh".
What it empties: the resume text and target title in step 1, the stored resume file, every profile field, the cover letter, the background notes, the results on screen, and the JAWB Fill setup (so the bookmark gets set up again for the new profile). Tick "Also clear the applications tracker" to empty that too; otherwise your application history stays.
What it never does is delete. The old profile, stored resume and (if ticked) tracker are moved into a dated folder, profile/_backups/2026-09-20_123212 for example, inside the JAWB HUNT folder. To bring something back, quit JAWB HUNT and copy the files from that folder back into profile/. To erase your old data for good, delete the _backups folder yourself.
Other tabs and browsers: a JAWB HUNT page left open in another tab empties itself the next time you look at it, and a browser that still holds the old resume text drops it on its next visit, with a one-line notice saying why. A page from before the reset can never write the old resume or profile back; the server refuses it.
Click Prefill apply on a result card. The real application form opens in the tab right next to JAWB HUNT, in your own browser. Click the JAWB Fill bookmark in that tab and the form fills itself: your profile fields, your cover letter where the form has a cover letter box, and your resume attached. You finish anything remaining and click Submit yourself.
What it never does:
Coverage: Greenhouse, Lever, Ashby, and Workable forms (roughly two thirds of the roster, including all the AI companies). Workday, Amazon, and Netflix require a per-company account, so those cards have no Prefill button; use the title link and copy from your profile.
A small JAWB HUNT notice in the corner of the application tab reports what happened, for example "Filled 7 fields and attached resume.pdf. Review the form and submit." Fields it could not fill are left for you.
Save your profile first: until it has at least a first name and an email the button reads "Save your profile first" and cannot be dragged, because the bookmark carries a copy of your profile as its offline fallback and an empty one would be useless.
Then open Profile & Prefill and drag the gold JAWB Fill button to your browser's bookmarks bar. If the bar is hidden: View menu, Show Bookmarks Bar (Safari and Chrome both call it that). Click "I added it" so JAWB HUNT stops reminding you. Nothing to install.
If you later change your name, email or phone, the panel warns that the bookmark is out of date. Delete the old bookmark, drag the button up again and click "I re-added it". Cover letter edits do not need this; the bookmark fetches those live.
How the bookmark works: it runs only when you click it, on the page you are looking at. It asks JAWB HUNT on this machine for your current profile and resume using a private token that only your bookmark contains, fills the fields it recognises, and attaches the resume to the resume slot. Websites cannot trigger it and cannot read your profile without the token.
The first time you use it on each hiring site, Chrome asks whether that page may access your local network. Click Allow: that permission is what lets the bookmark fetch your resume from JAWB HUNT. If you click Block, or your browser does not offer the choice, the bookmark still fills the text fields from a snapshot of your profile and asks you to attach the resume by hand.
If the form lives inside an embedded frame the page will not let the bookmark reach (some company career sites embed Greenhouse this way), it offers to open the form directly. Click OK, then click JAWB Fill again.
Prefer a separate window that fills and attaches everything on its own? Switch Prefill mode in the Profile panel to "Separate automated window". That mode drives a browser through Playwright and needs a one-time install:
pip3 install playwright
python3 -m playwright install chromium
Then relaunch JAWB HUNT. Without it, the Prefill button explains exactly this. The in-browser mode is the default because the form opens next to the app in the browser you already use.
Every Prefill is logged at the bottom of the page: role, company, date, how many fields were filled, and a status you can change (Opened, Prefilled, Applied, Interview, Offer, Rejected, No reply). Opened and Prefilled mean you have not submitted yet.
Housekeeping: the × on a row removes it. Clear incomplete removes every row still at Opened or Prefilled in one go, after asking. Removing a row you have marked Applied or beyond asks first, because that is real history. Stored in profile/applications.json.
Paste an application's custom questions, one per line, optionally with the company and role title. Click Draft answers. Claude drafts a brief first person answer for each (60 to 120 words) built strictly from your resume text in step 1 and your background notes in the Profile, using your cover letter for voice. Each answer has a Copy button.
Facts only: when neither your resume nor your notes contain the answer, the coach says NEEDS YOUR INPUT and tells you what is missing, rather than inventing experience. The fix is usually to add the missing story to your background notes and draft again. Always read and edit before pasting into a form.
The coach uses the Claude Code command line tool with your own Claude login, so no API key is stored in the app. Install Claude Code, sign in once (claude in Terminal, then /login), and the coach and Draft from resume (section 7) both work. Without it, either Draft button explains that the tool was not found.
The coach and Draft from resume are the two features that send your resume text off your computer, to Claude, and only when you click Draft.
On your machine:
profile/: profile.json, your application resume file, applications.json.profile/_backups/: appears the first time you use Start fresh. Each dated folder inside holds what the app held before that reset. JAWB HUNT never deletes these and never reads them again; they are yours to restore from or to delete.cache/: fetched job listings, refreshed every six hours. Safe to delete at any time.The local server only answers pages it served itself. A request that arrives under another host name, or a form post from any other website, is refused, so a page you happen to have open elsewhere cannot read or change your profile.
Leaves your machine:
Nothing is sent to the makers of JAWB HUNT. There is no analytics, no account, no telemetry.
companies.json holds only companies that verified live with at least one posting. To refresh or add companies:
python3 tools/build_roster.py
Add candidate slugs or Workday tenants to the lists at the top of the script; the probes keep whatever responds. The builder merges with the existing file, so a company that times out during a rebuild is kept rather than silently dropped. A company whose board answers "not found" (it moved or renamed its board) is retired and named in the output; find its new board, add the slug to the tables and rerun to bring it back.
Data center employers have their own candidate tables in the same script. To refresh only those:
python3 tools/build_roster.py --datacenter
An entry marked True there is a pure data center operator; it is written to companies.json with "focus": "datacenter", which is what makes every one of its openings count in a data center hunt. Use it for operators and colocation firms only, never for GPU clouds or suppliers, or their software and sales roles will flood the list.
python3 server.py in Terminal inside the folder and read the message.PORT near the top of server.py.Start JAWB HUNT.command. python3 server.py in Terminal always works.py server.py.profile/_backups/ back into profile/, and launch again.profile/ and cache/, and clear the site data for localhost:8914 in your browser.How do I switch to a new resume? Drop the new file in step 1; it replaces the old one, and the app asks before changing any contact detail that differs. Replace the application resume file in the Profile panel too, and click Draft from resume there if the old cover letter was written for a different role. To wipe everything (new search, or someone else's turn on this Mac) use Start fresh in the Profile panel. It keeps a dated backup.
I only want data center jobs. Use "Data center jobs only" under Hunt for in step 2 (section 4). Add a target title such as "procurement manager" to push that kind of role to the top.
Does it apply for me? No. It fills forms; you review and submit.
Why a bookmark instead of a browser extension? A bookmark needs no install, no store approval, and no permissions over every site you visit. It runs only when you click it, on the page you are looking at.
Can it hunt companies outside the roster? Only ones with a public feed. Add them to tools/build_roster.py and rerun it.
Is my resume uploaded anywhere? Only by you, into a form you submit, and to Claude if you use the Question coach or Draft from resume.
Can two people share one install? The profile is one per install. Copy the folder for a second person.
Why is a score not 100? 99 is the ceiling by design; the score is a ranking aid, not a verdict.
JAWB HUNT/
JAWB HUNT.app double-click launcher (Mac)
Start JAWB HUNT.command alternative launcher (Mac)
server.py the whole backend, Python standard library only
index.html the whole interface
companies.json the verified roster
tools/build_roster.py roster verifier and builder
docs/GUIDE.md this guide
README.md quick start
profile/ created on first use, your data
profile/_backups/ created by Start fresh, dated copies of old data
cache/ created on first use, safe to delete