Job Search Terminal
A free, source-available, local-first job-search dashboard for people who need structure, privacy, and better tools in a brutal job market.
Scan jobs. Score fit with AI. Generate tailored resumes. Track applications. Prepare for interviews. Keep your data on your machine.
No account. No subscription. No hosted database. Bring your own AI key — or run a model locally with Ollama and send nothing to the cloud at all.
Rather not do it yourself? If you already use an AI coding assistant, there is a ready-made prompt that installs it for you.
The job search is hard enough without another bill.
Too many people are looking for work right now. And too many tools ask those same people to pay monthly fees just to organize the chaos.
That never sat right with me.
This app is my attempt to make the job search a little less punishing. It is not magic. It will not apply for you. It will not guarantee interviews. But it can help you see what is worth your time, keep track of what you have done, and stop rebuilding the same resume and application answers from scratch every night.
See Job Search Terminal in action
What the app helps you do
Job Search Terminal is built around the work people actually do while job hunting: finding roles, evaluating fit, tailoring material, applying, following up, and preparing for conversations.
Scan job sources
Find new roles on company job boards, Dice, the Himalayas remote board, and Adzuna — or bring them in from LinkedIn and other boards with an AI assistant in your own browser.
Evaluate fit
Use AI to compare roles against your profile, resume, skills, preferences, and deal breakers.
Tailor resumes
Generate role-specific resume drafts from your own base resumes, then edit before export.
Draft application answers
Prepare answers for application questions. The app never submits anything for you.
Track applications
See every application as a list or as a drag-and-drop board, and move each one along as you hear back.
Answer gaps once
Every gap a job score raises lands in one list. Answer it once and every later resume reuses your answer — and only answers you finish are ever used.
Research and reach out
Get a company briefing and an outreach draft for each role. The app never sends a message; you decide what goes out.
Prepare for interviews
Build a library of your own work stories — what the situation was, what you did, how it turned out — by speaking them aloud and letting the app write them up.
What you can do in the first hour
The first goal is not perfection. The first goal is control.
Once the app is running, you can:
- Connect an AI service, or point the app at free AI running on your own computer.
- Upload or add your resume.
- Complete your career profile.
- Scan for jobs.
- Evaluate which roles are worth your time.
- Start tracking applications.
If you are not technical, use the AI setup prompt in the Documentation tab. Paste it into Claude Code or Codex and let it walk through the installation with you.
See how it works
Click any image to open a larger view.
Setup, features, and documentation
The setup guide, feature reference, roadmap, and release notes below are copied from the project’s GitHub repository every day, so they match the current version of the app. The app also has its own plain-language help, under Help in its top menu.
Overview
What this is
Job Search Terminal is a local job-search dashboard that runs on your computer. It helps you discover jobs, evaluate fit, tailor resumes, draft application answers, track applications, and prepare for interviews.
It is free to use, inspect, and adapt for non-commercial purposes under CC BY-NC 4.0. Commercial use requires written permission.
What this is not
This is not a job placement service. It does not guarantee interviews. It does not apply to jobs automatically. It does not replace judgment, networking, or human effort.
It is a tool to help you keep the work organized.
What you need
You need a computer, two free pieces of software (Node.js and Git), and access to an AI service if you want to use the AI features. Google Chrome is recommended for saving resumes as PDFs.
The app can use OpenAI, Anthropic, or Google Gemini with your own key, or Ollama, which runs a model on your own computer for free.
What it costs
The app is free.
There is no subscription, no paid account, and no access fee. The only possible cost is AI usage, paid directly to the AI provider you choose. I do not charge for that and I do not sit between you and the provider.
Your data stays with you
Your job search data is stored locally on your machine. The app does not use a cloud account or hosted database.
AI requests are only sent when you choose to use an AI feature, such as job evaluation, resume tailoring, profile extraction, or answer drafting.
Who this is for
This is for people who want more control over their job search and are willing to run a local tool on their own computer.
It is especially useful if you are applying to many roles, tailoring resumes often, tracking multiple applications, or trying to make better decisions about where to spend your time.
Getting started
Follow this guide to install and run Job Search Terminal on your computer. You do not need to know how to code, but you do need to be comfortable opening a terminal or using an AI coding assistant to help with setup.
If you are not technical, open the “Prompt for AI on this page” section and use that prompt to have an AI assistant help you install the app step by step.
Go to AI setup promptLast updated: August 29, 2026
First, an honest check
Job Search Terminal runs on your own computer. That is what makes it free and private — and it is also the catch: you have to install it yourself. There is no Download button and no website to sign up for.
You do not need to know how to code. You do need to be willing to copy and paste about six lines of text into a plain-looking window, and to keep going when it prints things you do not recognise. That is genuinely the whole skill required.
If that sounds manageable, set aside about half an hour. Nothing here can damage your computer, and you can undo all of it later by deleting one folder. If it sounds miserable, that is a fair reaction — skip to the AI setup prompt below. It hands the whole job to an AI coding assistant such as Claude Code or Codex, though you will need one of those already set up. Failing that, ask someone who installs software for a living; this is a fifteen-minute favour for them.
What you are actually doing
Four things, in this order:
- Install two free pieces of software the app needs to run.
- Download the app itself.
- Give it a key so it can talk to an AI service — or point it at a free one running on your own computer.
- Start it up, then open it in your browser like any other website.
Words you will run into
The guide below uses a handful of terms without stopping to define them. Here is what they mean.
| Term | What it actually means |
|---|---|
| Terminal | A window where you type commands instead of clicking buttons. Every Mac and Windows PC already has one. The guide shows you how to open it. |
| Node.js | Free software that lets this app run, the way a media player lets a video file play. You install it once and never think about it again. |
| Git | Free software for downloading code and getting updates later. You will use it twice. |
| npm | Comes free with Node.js. It fetches the extra pieces of code the app needs. You type one command and it does the rest. |
| Repository, or “repo” | The online folder holding the app’s code. Cloning it means downloading your own copy. |
| Clone | Developer word for “download your own copy of”. When the guide says clone the repository, it means copy the app’s code onto your computer. |
| Dependencies | Those extra pieces of code. npm install collects them for you. |
| API key | A long password from an AI company that lets the app use their AI on your behalf. You paste it into the app once. You can skip this entirely by running Ollama, which is free AI software that runs on your own computer. |
localhost:3000 | The address of the app running on your own machine. It looks like a website, but nothing is on the internet — only you can reach it. |
| Port | A numbered slot a program uses to talk to your browser. This app uses 3000. If something else is already using it, the app will say so — closing the other program fixes it. |
| ATS | Applicant Tracking System — the software companies use to post jobs and sort applicants. Greenhouse, Lever and Ashby are common ones. The app reads jobs from them. |
| WSL | Windows Subsystem for Linux. A free Microsoft add-on that Windows users install so developer tools work properly. Only relevant on Windows. |
Getting Started
This guide explains what the app is, what you need to run it, and how to get it running on your computer — even if you have no development background.
What is this app?
Job Search Terminal is a local job-search dashboard that runs entirely on your computer. It helps you:
- Discover new job postings automatically from company career pages.
- Score each job against your career profile using AI.
- Generate tailored resumes for specific roles.
- Draft application answers for copy-paste (it never submits anything on your behalf).
- Track every application through the full funnel.
- Prepare for interviews with a STAR story bank and voice practice.
Your stored account data stays on your machine. There are no accounts, no subscriptions, and no cloud storage. The app contacts the internet only for the features you run: AI-provider requests, job scans, source discovery, and browser-board scanning.
What you need
| Requirement | Details |
|---|---|
| Computer | Mac, Windows (WSL), or Linux |
| Node.js | Version 20 or later — download from nodejs.org |
| Git | Download from git-scm.com |
| An AI provider | OpenAI, Anthropic, or Google Gemini API key — or Ollama running locally |
| A Chrome-based browser | Needed for PDF export. Google Chrome is used automatically if it is installed in the usual place; otherwise see the PDF note below |
You do not need to know how to code. You just need to be comfortable opening a terminal (the black or white window where you type commands).
How to open a terminal
Mac: Press Command + Space, type Terminal, press Enter.
Windows: Press Windows key, type PowerShell, press Enter. (Or install
Windows Terminal for a better experience.)
Linux: Press Ctrl + Alt + T.
Step-by-step setup
1. Install Node.js
Go to nodejs.org, download the LTS version, and run the installer. Accept all defaults.
Verify it worked by opening a terminal and typing:
node --version
You should see something like v20.11.0.
2. Install Git
Go to git-scm.com, download the installer for your operating system, and run it. Accept all defaults.
Verify it worked:
git --version
3. Download the app
In your terminal, navigate to where you want to store the app (your Desktop or Documents folder works fine):
cd ~/Desktop
Then download the app:
git clone https://github.com/uxdesignlab/job-search-terminal.git
Once cloned, move into the project folder:
cd job-search-terminal
4. Install dependencies
This downloads everything the app needs to run:
npm install
It may take a minute or two. You will see a lot of text scrolling by — that is normal.
5. Add your AI provider
The app needs at least one AI provider to evaluate jobs and generate content. Cloud providers receive the text needed for the action you choose. Ollama runs models locally, so AI prompts stay on your machine when it is the active provider.
For cloud providers, you can use whichever service you have access to:
- Google Gemini (free tier): aistudio.google.com/apikey
- OpenAI: platform.openai.com/api-keys
- Anthropic: console.anthropic.com/settings/keys
To use Ollama, install it, pull a model, start the local server, and configure the Ollama base URL inside the app.
Configure your provider inside the app itself (Settings → AI Provider). You do not need to create any configuration files manually.
5a. Optional: Add job aggregator and source discovery keys
These are not required to use the app, but they significantly expand how many jobs and sources the app can find automatically.
Adzuna (job aggregator — free tier, 2,000 queries/month):
- Register at developer.adzuna.com to get a free App ID and API Key.
- Once configured in Settings → AI Provider → Discovery & Aggregators, the Dashboard Scan for new jobs button automatically runs an Adzuna scan in parallel with the ATS scan — no extra step needed.
- You can also run it independently from Settings → Sources → Job aggregators.
Brave Search (ATS source discovery — free tier, 2,000 queries/month):
- Register at brave.com/search/api to get a free API key.
- Once configured, the Search for companies button appears in Settings → Scan sources and finds new Ashby, Greenhouse, and Lever companies from live web search results (not just the Common Crawl archive).
Add both keys in Settings → AI Provider → Discovery & Aggregators.
6. Start the app
npm run dev
The terminal will print something like:
▲ Next.js 15.x
- Local: http://localhost:3000
Open http://localhost:3000 in your browser. The app will be running.
7. First-time setup in the app
When you first open the app at http://localhost:3000, the dashboard opens a guided setup flow:
Step 1: Add an AI API key Click the provider you want to use to expand the instructions. Pick one — you only need one:
- Google Gemini (free tier): go to aistudio.google.com/apikey, sign in with Google, click Create API key. Copy the key.
- OpenAI: go to platform.openai.com/api-keys, sign in, click Create new secret key. Copy the key.
- Anthropic (Claude): go to console.anthropic.com/settings/keys, sign in, click Create Key. Copy the key.
Choose one provider, paste its key, test the connection if needed, and save. Model selection and discovery integrations remain optional advanced settings.
Step 2: Upload your resume Click “Go to Profile → Resumes”. On the Resumes tab, each lane represents a different resume version. For any lane, click the blue “Upload PDF” button and select your resume file. The app extracts the text automatically.
After uploading, go to Profile → Overview and click “Extract with AI”. The AI reads your resume and populates your skills, target roles, preferences, and experience. Review each tab (Skills & Roles, Preferences, Constraints) and make any corrections.
Step 3: Confirm preferences and start scanning Confirm desired roles, title filters, and location mode. The Ready step offers an optional six-hour scan schedule while the local app is running. Open the Dashboard and click “Scan for new jobs” for an immediate scan.
Everyday use
| What you want to do | Where to go |
|---|---|
| Find new jobs (ATS + Adzuna if configured) | Dashboard → Scan for new jobs |
| Scan Adzuna independently | Settings → Sources → Job aggregators |
| Add a job from anywhere | Jobs → Add Job button |
| See all your jobs | Jobs |
| Evaluate a job | Jobs → click a job → Evaluation tab |
| Generate a tailored resume | Jobs → click a job → Resume tab |
| Prepare application answers | Jobs → click a job → Apply tab |
| Research a company | Jobs → click a job → Research |
| Draft a recruiter message | Jobs → click a job → Outreach |
| Track your applications | Applications |
| Practice for interviews | Interview Prep |
| Update your profile | Account → Profile |
| Upload or replace a resume | Account → Profile → Resumes tab |
| Add an AI key | Account → Settings → AI Provider |
| Add Adzuna or Brave Search keys | Account → Settings → AI Provider → Discovery & Aggregators |
| Discover new ATS sources | Settings → Scan sources → Crawl for companies or Search for companies |
| Review and approve discovered sources | Settings → Scan sources → Discovered sources |
| Check which sources are still live | Settings → Scan sources → Validate sources |
| See role fit strategy | Account → Strategy |
| Back up or restore the local account | Account → Settings → Data & Backup |
Adding jobs from anywhere
You are not limited to the jobs the scanner finds. Any job you see on LinkedIn, a company careers page, a job board, or hear about through a referral can be added and evaluated with AI.
How to add a job manually:
- Go to Jobs in the top navigation.
- Click the Add Job button.
- Fill in the details:
- Company — the employer name.
- Job Title — the exact title from the posting.
- Job URL — the link to the posting, so you can return to it later.
- Job Description — paste the full text of the job description. The more detail you include, the better the AI fit score.
- Click Submit Job. The app creates the job and opens it immediately.
Manual jobs go through the same pipeline as scanned jobs — fit scoring, resume tailoring, application tracking, company research, and outreach drafting all work exactly the same way. The fit score tells you whether it is worth applying before you invest time in a cover letter or tailored resume.
Good sources to add jobs from manually:
- LinkedIn job postings
- Wellfound, Work at a Startup, Glassdoor, Indeed, and Monster postings if you are not using the browser-board scanner
- Company careers pages
- Referrals and warm introductions (add what you know about the role)
- Jobs emailed to you by recruiters
- Any board the scanner doesn’t cover (Dice, Handshake, etc.)
Stopping and restarting
To stop the app: go to your terminal and press Ctrl + C.
To restart:
npm run dev
Updating the app
The footer of every page shows the version you are running, for example
Version 0.1.0 · b5bcb0d. Once a day the app asks GitHub whether newer commits
exist. When they do, the footer shows an Update available badge — open it to
see exactly what changed.
To update:
git pull
npm install
npm run dev
Turning the check off. The check sends only the commit your copy is built
from — nothing about you, your jobs, or your resumes — and it never delays a
page, because the answer is cached on your machine. If you would rather it never
contacted GitHub, start the app with JST_UPDATE_CHECK=off:
JST_UPDATE_CHECK=off npm run dev
The version keeps showing; only the GitHub call stops.
Backing up your data
Open Account → Settings → Data & Backup to create a portable .jst-backup
archive before migrations, cleanup, or moving the app to another machine. The
archive includes the database, resume files referenced by your resume lanes,
generated documents, approved source configuration, and scanner import
history. Every other file under assets/ is ignored.
Password protection is optional. If you create an unencrypted archive, the app asks you to acknowledge that it contains private resume data and locally stored provider credentials.
To restore an archive, choose the file in the same screen and click Inspect
backup. The app validates and previews the archive first. After you confirm,
it creates an automatic rollback backup before replacing managed local account
data. Unrelated files under assets/ remain untouched.
For a database-only SQLite snapshot, run:
npm run data:backup
Snapshots are saved to output/backups/. Export a readable JSON snapshot:
npm run data:export
Troubleshooting
The app won’t start
- Make sure you ran
npm installfirst. - Make sure no other app is using port 3000.
- Try stopping with
Ctrl + Cand runningnpm run devagain.
Pages show stale or missing data
- Restart the dev server.
- Run
npm run db:checkto verify the database.
PDF generation fails
PDF export drives a Chrome-based browser. The app finds one in this order:
- The path in
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH, if you set it. - Google Chrome at
/Applications/Google Chrome.app— macOS only. - A Chromium downloaded into Playwright’s browser cache.
The app installs playwright-core, which does not download a browser, so on
Windows and Linux — and on a Mac without Chrome in the standard location — step 3
finds nothing until you install one. Either:
-
Install a browser into that cache:
npx playwright-core install chromium -
Or point the app at a browser you already have. Add this to
.env.localand restart the app:PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/full/path/to/chromeOn Windows that is usually
C:\Program Files\Google\Chrome\Application\chrome.exe.
npm run document:check reads .env.local too, so the same setting applies when
you verify the fix.
No AI results
- Go to Settings → AI Provider and check that your key is entered and the correct provider is set as active. Use the “Test connection” button to verify.
Reset everything and start fresh
This deletes all local data and resets to an empty local profile:
npm run db:reset
Use with caution — this cannot be undone unless you have a backup.
Prompt for Claude Code or Codex (self-service setup)
If you want an AI coding assistant to set up and run this app with minimal manual work, paste the following prompt into Claude Code or Codex.
It will ask which AI provider you want and can set up Ollama for you, so you can finish the whole install without creating an account or paying for anything. If you pick a cloud provider instead, it opens the settings page and lets you paste your own key — it will not ask you to hand the key over.
Set up and run Job Search Terminal for me as a self-service local app.
Repository:
https://github.com/uxdesignlab/job-search-terminal.git
Goal:
Do the setup yourself end to end. Do not give me a list of terminal commands to
run. Use the terminal and browser tools available to you, verify each step, and
only ask me for information you cannot safely obtain or create yourself, such as
which AI provider I want to use or the local path to my resume PDF.
What to do:
1. Inspect the computer for required tools:
- Node.js 20 or newer (the project is tested on 22)
- npm
- Git
- Google Chrome or another Chromium browser for PDF generation
2. If a required tool is missing, try to install it using the normal package
manager for this computer, such as Homebrew on macOS, winget on Windows, or
apt/dnf/pacman on Linux. If installation requires administrator permission or
an approval prompt, ask me for that approval once, then continue after it is
granted. Do not stop at "please install this" unless there is no safe
automated installation path.
3. Create or reuse a local project folder:
- If the repository is already cloned, use the existing checkout, and delete
any `.next` folder inside it before continuing. A stale build cache left
over from an older commit is the most common cause of a confusing
first-run failure.
- If it is not cloned, clone it from the repository URL above.
- Avoid overwriting or deleting existing user data.
4. Install project dependencies with npm.
5. Run the project's verification checks:
- npm run lint
- npm run typecheck
Do not run `npm run build`. The development server does not need it, and it
roughly doubles the setup time for no benefit here.
6. Start the development server. If port 3000 is busy, use the next available
local port and tell me which URL is running.
7. Open the app in a browser yourself and verify the dashboard loads. Do not
simply tell me to open the URL.
8. Set up an AI provider. Ask me which I want before doing anything:
- Ollama runs a model locally on this computer. It is free, needs no account
and no API key, and no prompt text leaves the machine. If I choose this,
install Ollama if it is missing, pull a general-purpose model, start the
local server, then set the Ollama base URL in Settings -> AI Provider.
- A cloud provider (OpenAI, Anthropic, or Google Gemini) needs an API key
that I supply. If I choose this, open Settings -> AI Provider in the
browser and let me paste the key in myself. Do not ask me to send you the
key and do not type it on my behalf. Once I have pasted it, use the app's
connection test if available.
9. Complete the rest of the first-time setup:
- If a resume is needed, ask me for the local PDF path or use the browser file
picker if your tools support it. Upload it through Profile -> Resumes.
- Preserve multiple resume lanes. Do not merge everything into one universal
resume.
- Run profile extraction from Profile -> Overview after a resume is uploaded.
- Return to the dashboard and scan for jobs when setup is complete.
10. PDF export needs a Chrome-based browser. `npm install` pulls playwright-core,
which does not download one, and the app only auto-detects Google Chrome in
its standard macOS location. So on Windows and Linux, and on a Mac without
Chrome installed normally, either run `npx playwright-core install chromium`
or add PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH to `.env.local` pointing at a
browser that is already installed, then restart the server. Verify with
`npm run document:check`.
11. Safety rules:
- Never submit job applications, send emails, or message recruiters for me.
- Never delete resumes, generated documents, reports, backups, or tracked
application data unless I explicitly ask.
- Keep all data local. Do not paste my resume, my profile, or my API key
into any service other than this app.
12. If anything fails, read the actual error, fix what you can, retry once, and
then explain the blocker in plain language with the exact next approval or
input needed from me.
Finish by giving me the running local URL, what you verified, which AI provider
is active, and anything still needed from me.
Is this the same as Career-Ops?
No. Job Search Terminal was inspired by Career-Ops, but it is a separate project with a different product direction.
Career-Ops is a powerful CLI-first, agentic job-search system. Job Search Terminal is a browser-based, local-first dashboard designed to make the workflow more approachable for people who do not want to manage everything through AI coding tools and config files.
License note
Job Search Terminal is free for non-commercial use under CC BY-NC 4.0.
Commercial use requires written permission from the copyright holder.
Did this get you up and running?
Features
A plain-English summary of each part of the app. There is also a full technical reference, kept in step with the app automatically — it is thorough but heavy going, and you do not need it to decide whether to try this.
Dashboard
Where each day starts: run a scan, see fresh matches, what to apply to next, what you are waiting to hear back on, and gaps worth answering.
Jobs
Every job you found, with fit scores, filters, saved presets, bulk actions, manual entry, a check for whether a posting is still live, and a cleanup that clears untouched old jobs without losing your work.
Job Detail
A tabbed workspace for evaluating a role, reviewing fit, generating a tailored resume, preparing answers, researching the company, and drafting outreach.
Applications
Tracks every application from sent to offer. View them as a list or a drag-and-drop board, and get told when a follow-up is overdue.
Resumes
A resume studio for multiple base resume lanes, generated documents, editing, keyword coverage, preview, and PDF export.
Interview Prep
A library of your own work stories. Say an answer out loud and the app writes it up as a clear, repeatable story you can reuse in interviews.
Profile
A career profile system that captures goals, skills, role direction, preferences, constraints, resumes, and writing voice.
Strategy
A role-fit map that sorts the kinds of role you could go for into Direct, Adjacent, Selective, and Avoid, which you can correct. It also lets you edit the instructions the AI follows.
Analytics
Shows where your effort goes: how many jobs you scored and applied to, whether you apply to high or low fit scores, which kinds of role keep coming up, and the gaps employers raise most often.
Settings
Your AI services and the order to try them, the companies and job boards to scan, title filters, a review of broken company sources, an optional Clay connection, scan schedule, and password-protected backups.
Evidence Bank
Every gap a job score raised, in one list. Answer a gap once and every later resume and application reuses it. Only answers you finish are used, so resumes stay grounded in things you actually did.
Job scanning
Scans company ATS boards (Greenhouse, Lever, Ashby) plus Dice, Himalayas, and Adzuna, with title and location filters, freshness windows, and duplicate detection. Remote-only boards are traced back to the employer's own posting where possible.
Browser job boards
With Claude or Codex in your own logged-in browser, bring in jobs from LinkedIn, Wellfound, Work at a Startup, Glassdoor, Indeed, and Monster. It reads listings; it never clicks Apply.
Research and outreach
Company research and outreach drafts for each job, plus an optional search for the right people with your own Clay account. Everything is a draft — the app never sends a message.
Archived
Everything you skipped, archived, or cleared, kept out of the way. Restore any job, and it stays protected from future cleanup.
Help
A built-in help site written for job seekers, not developers: setup, every page, what leaves your computer, and what to do when something goes wrong.
Data and privacy
Data is stored locally in a SQLite database on your machine, with password-protected backups you can restore from inside the app.
Last updated: October 15, 2026
What’s new
Every release has a version number, shown in the app’s footer, and plain-language notes on what changed. The newest are copied here from the project’s changelog every day.
Changelog
The 6 most recent releases, copied from the project’s CHANGELOG.md, which has every release. Each version is shown in the app’s footer. This page is refreshed daily.
0.19.3 — 2026-10-23 — Easier to see
Fixed
- Orange links and buttons, green “good” labels, and yellow warning labels were too pale to read comfortably on white. They are a little darker now and meet the WCAG 2.2 AA contrast minimum (4.5:1) on both white cards and the grey page background. White text on orange buttons meets it too.
- Text boxes, drop-downs, and outlined buttons had a border so faint (1.26:1) that the box could be hard to find. Their border is now darker (3.24:1), so you can see where to click and type. Dividers between sections are unchanged.
- The highlight that shows which control the keyboard is on was a faint glow (about 1.3:1). It is now a solid orange outline with a small gap around the control (5.00:1), and the close buttons on dialogs use the same outline.
0.19.2 — 2026-10-15 — Keep means keep
Fixed
- Pressing Keep in the Jobs review list now also protects the job from Cleanup, like anything else you do to a job. Before, a kept job could still be cleared by the next cleanup if it was old or its posting had closed.
- Help told you to press Fetch description for a job whose description is short. That button only appears when no description is saved at all; Help now says to paste the full description under Edit job details instead.
- The privacy notes left out one thing that leaves your computer: when you type
in a location box, the letters you type are sent to OpenStreetMap to suggest
places. Both the in-app privacy page and
PRIVACY.mdnow say so.
0.19.1 — 2026-10-15 — Help for every page
Added
- Help now covers Analytics, the Evidence bank, and Strategy in a new guide, Learn from your search. It explains what each Analytics card counts, how to answer a gap once so every later resume can use it, and how to read and correct your Direct, Adjacent, Selective, and Avoid role directions. It also covers the AI Prompts tab and what Reset to default does.
- Help explains the Archived page: Restore, Delete, and Delete all archived, and that a restored job is protected from Cleanup.
- Help explains the Consolidate stories wizard for tidying old auto-generated interview story suggestions.
- A new troubleshooting entry for an Analytics, Strategy, or Evidence bank page that shows nothing.
Changed
- The privacy page in Help now also says what Brave Search and Clay receive, and
when. The project’s
PRIVACY.mdnow lists every service the app can contact — job boards, Brave, Clay, Common Crawl, and the daily GitHub update check — instead of AI providers only, and mentions Ollama. - The screenshots in Help and the README now show the app as it is today — seven Settings tabs, the provider priority list with Ollama, the Evidence bank card on the Dashboard — using a made-up job seeker instead of real data.
Fixed
- The “jobs need review” box on the Jobs page could never be cleared. It now opens into a list of those jobs, each with the reason it is there and two buttons: Keep if the job is fine as it is, and Archive to move it out of the way. Saving a full description also takes a job off the list by itself. Jobs already flagged show up in the list straight away; there is nothing to re-scan.
- Help told you to press Resolve posting on jobs from alert emails. That is the box’s name; the button is Find posting, or paste the link and press Save URL.
0.19.0 — 2026-10-02 — Himalayas searches for your keywords
Changed
- Himalayas is now searched for each of your title keywords instead of being read from the newest posting down. A scan now looks back about twelve hours rather than two, so jobs posted between scans are no longer missed. In a test with nine design keywords it found 109 matching jobs, where the old way found 12, and made fewer requests to Himalayas (48 instead of 60).
- What leaves your computer: your include keywords from Title filters are now sent to Himalayas as search words. If you have none, your target roles are sent instead. Nothing else from your profile or resume is sent. The privacy page in Help now lists the search words every job board receives.
- The scan window names each keyword as Himalayas searches it.
- If you have no include keywords and no target roles, Himalayas is skipped and the scan results say why. Before, it imported every recent Himalayas job that passed your other filters.
- Himalayas only reports a problem when a keyword could not be searched back six hours, the time between scans. A new Help entry explains each message and what to do about it.
0.18.0 — 2026-10-02 — Himalayas jobs that lead to the employer
Added
- New Himalayas jobs now link to the company’s own posting whenever the app can find it. Himalayas never shares the company’s link, so each scan looks for the same job, with exactly the same title, on the company’s Greenhouse, Lever, or Ashby job board. When the company has posted that title for several places, the app only picks one if just one fits where the Himalayas job is open. In a test on 80 recent design jobs, it found the right posting for 11 of them and never picked a wrong one.
- A Find the employer’s posting box on Himalayas jobs that still link only to Himalayas. Find posting checks the company’s job boards (and the web, if you have a Brave Search key) and lists every posting with that title, with where each is based. You check the result and press Use this posting, or paste a link you found yourself. Saving it brings back Check live and pulls in the fuller job description from the company’s page.
- A Found on Himalayas ↗ link on resolved jobs, so you can always get back to the original listing.
- Help now covers Himalayas: what it is, why its jobs link to Himalayas, and how to find the company’s posting.
Changed
- Himalayas jobs that still link to Himalayas show Himalayas listing ↗ instead of Job posting ↗, and no longer offer Check live. Himalayas blocks automated visits, so that check could only ever answer “uncertain”.
- Find posting and Open web search put the job title in quotes, so results must contain that exact title. For Himalayas jobs the search leaves out Himalayas’ own location wording (“United States (Remote)”) and skips Himalayas itself, so it no longer leads back to the listing you started from.
- When a scan finds a new Himalayas job, or you press Find posting, the app asks Greenhouse, Lever, and Ashby for that company’s public job list. The company’s name is part of the web address it asks for; nothing about you is sent.
Fixed
- The Himalayas scan now pages through results the way Himalayas asks. The old method is being retired, and once removed it would have quietly stopped this source from finding jobs.
- Scan results and the Dashboard no longer offer Disable on Himalayas, Dice, or Adzuna. Those sources run on every scan, and the button never switched them off — it only made the app claim they would be skipped. The row now says the source is part of every scan instead.
Jobs you already have from Himalayas are not looked up again automatically. Open one and press Find posting to resolve it.
0.17.7 — 2026-09-28 — Clearer feedback on the Outreach tab
Fixed
-
Draft message, Find email, and Find relevant people now show a progress panel while they work, with a moving bar and a clock counting the seconds, so you can tell the app is busy rather than stuck. Draft message was meant to show one already, but it never appeared until the draft was finished.
-
The contact buttons say what they are doing while you wait (Removing…, Deleting…, Adding…) instead of a generic “Saving…”. Find email used to say “Saving…” for up to a minute.
-
When Clay failed on the Outreach tab, the app always said “Clay could not be reached”, whatever the cause. It now tells you which problem you hit: no connection to Clay, a problem on Clay’s side (with its error code), a request Clay turned down, or — for Find email — a routine that was turned down, failed, or is still running. Each message says what to do next, and a lookup that is still running no longer tells you to press Find email again, which would have started a second paid lookup.
-
Find email always failed with Clay error 400 (“Social Profile URL: Must be a valid URI”), because the app sent LinkedIn links without
https://. It now sends the full link. Automatic email lookup after a search had the same problem and now works too. -
When Clay explains why it said no, its own words now appear under the red message (“Clay’s reply: …”). An account that has run out of Clay credits is now reported as that, instead of as a broken routine or a wrong company link.
Shipped so far
A timeline of the project’s major milestones. Job Search Terminal has kept a versioned changelog since 0.11.0 (August 2026), and every release since then is listed in full in the project’s CHANGELOG.md. The earlier labels were assigned after the fact from the commit history — they make the arc readable, but they do not describe builds you could have downloaded at the time.
| Date | What shipped | |
|---|---|---|
| 0.11 | Aug 2026 | Evaluation integrity — AI work staged by pipeline stage, cancel handling, clearer failure messages |
| 0.10 | Aug 2026 | Location precision and source quality — Himalayas lane, split location preferences, Ashby repost dedupe, Evidence Bank |
| 0.9 | Jul 2026 | ATS keyword tailoring; scan progress and freshness windows |
| 0.8 | Jul 2026 | Interview prep overhaul — core-story workspace, durable practice |
| 0.7 | Jun 2026 | Dice MCP scanner; approval-gated email job-alert imports |
| 0.6 | Jun 2026 | Adzuna aggregator, Brave discovery, source validation, fresh scanner |
| 0.5 | May 2026 | Job discovery expansion — browser-board imports, LinkedIn scanner, ATS scanning |
| 0.4 | May 2026 | Resume builder — section-mode generation, from-scratch resumes |
| 0.3 | May 2026 | Guided onboarding wizard; multi-question application assistant |
| 0.2 | May 2026 | Renamed to Job Search Terminal; profile tabs, resume lanes, docs restructure |
| 0.1 | Apr 2026 | Foundation — local data model, profile intelligence, scanner, evaluation, resume generation, application tracker |
Roadmap
Where the project is going, straight from the repository. The Not planned list matters as much as the rest: it is a commitment about what this tool will never do.
Last updated: October 15, 2026
Roadmap
Job Search Terminal is in early public development.
Current focus
- Improve setup experience
- Add screenshots and demo data
- Strengthen privacy and legal documentation
- Improve job source discovery
- Improve AI evaluation transparency
- Improve resume tailoring controls
- Improve accessibility and keyboard navigation
Fresh search scanner — not yet in the app
Add a hybrid fresh-job discovery lane modeled on the Google searches at pavel.ux.business/24h.
Status, checked 2026-10-15. Earlier versions of this page marked the first four items done. The current code has no unattended Brave job scan: Brave Search is used only for Search for companies, Find posting, and pay research during application preparation. The low-confidence review banner on the Jobs page gained working Keep / Archive controls in 0.19.1. The remaining items below are still open.
- Run unattended Brave Search scans for jobs indexed in the past 24 hours.
- Start with Greenhouse, Lever, Ashby, Workday, and jobs/careers subdomains.
- Route confidently parsed jobs through the existing local import, freshness, dedupe, notification, and liveness pipeline.
- ✅ Low-confidence imports (missing/short description) can be kept or archived from the review queue on the Jobs page (0.19.1).
- Add an agent-assisted Chrome workflow for exact Google 12-hour searches (partial — documented in CLAUDE.md).
- Preserve the local-first boundary: never auto-apply, click Apply, or send job data anywhere except the configured search API and local dashboard.
Next phase — Public ATS source bank
Add a curated, release-versioned catalog of Greenhouse, Lever, and Ashby sources so users can choose relevant companies instead of scanning a broad default list. See docs/source-bank.md for the saved implementation approach.
- Recommend sources from profile industries and preferred countries while keeping the full catalog available for browsing.
- Let users filter the catalog by industry, hiring coverage, and ATS provider.
- Add an onboarding source-selection step for new installs and preserve existing local portal configurations.
- When a manually added job reveals a supported ATS board, offer to track that company for future scans after explicit confirmation.
- Keep Common Crawl and Brave Search discoveries separate from the curated public catalog.
Planned improvements
- Expand fresh-search coverage beyond the initial ATS and careers-domain set
- Consider optional hosted read-only source-bank refreshes after the bundled local-first catalog workflow is proven
- More transparent fit scoring explanations
- Stronger application funnel analytics
- Safer rejection/archive handling
- Better backup and restore UX
- Improved generated resume editor
- More interview prep workflows
- Optional import/export flows
- Jooble API integration — add Jooble as a second job aggregator source alongside Adzuna; free API key, same scan-and-import pattern, covers a broad range of listings from across the web
- Lensa browser-board source — add Lensa as a browser-assisted scan target (Claude Desktop); no public API exists, so agent-driven browsing is the only viable path
Not planned
- Auto-submitting applications
- Spam outreach workflows
- Hosted user accounts by default
- Hidden telemetry
- Selling user data
- Commercial use without permission under the project license
Inspired by Career-Ops
Job Search Terminal was inspired by Career-Ops by Santiago Fernández.
Career-Ops is a powerful MIT-licensed AI job-search system built around agentic CLI workflows, Claude Code, Gemini CLI, job scanning, scoring, tailored PDF generation, and pipeline tracking.
Job Search Terminal follows a different product direction: a local-first visual dashboard with guided setup, structured application tracking, resume lanes, interview prep, and support for OpenAI, Anthropic, Google Gemini, and local models through Ollama.
Both projects share the same basic belief: job seekers need better tools, and those tools should not add more friction to an already exhausting process.
Career-Ops GitHub repository · Career-Ops system article
| Career-Ops | Job Search Terminal |
|---|---|
| CLI / agentic workflow | Browser-based visual dashboard |
| Optimized for Claude Code and power users | Designed for broader job seekers |
| Markdown, YAML, TSV, and generated reports | SQLite-backed local app |
| Strong batch automation | Strong application tracking and UX flow |
| Terminal dashboard | Web dashboard with guided setup |
| Claude Code first | OpenAI, Anthropic, Gemini, and local Ollama support |
| MIT licensed | CC BY-NC 4.0, non-commercial use only |
Want to help improve it?
This started as a practical tool for people trying to survive the job search. It can become better if more people touch it.
Developers can help simplify installation, improve scanning, package the app, and fix bugs.
Designers can help improve onboarding, accessibility, empty states, and workflow clarity.
Career coaches and job seekers can help test the real-world process and tell us where the app breaks down.
If you want to contribute, start with the GitHub repository or reach out to me directly.
Get in touch
Found a bug, got stuck during setup, or want to help? Tell me what happened — the more specific, the more useful. You can also email [email protected] directly.
Message sent.
Thanks — I read every one of these, and I’ll reply by email as soon as I can.
Job Search Terminal is a free, source-available tool licensed for non-commercial use under CC BY-NC 4.0. It does not guarantee interviews, job offers, recruiter responses, or application outcomes. You are responsible for reviewing all generated content before using it. You are also responsible for following the terms of service of any job boards, AI providers, or third-party services you choose to use.
License
Job Search Terminal is licensed under Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0).
You may use, share, and adapt it for non-commercial purposes with attribution.
Commercial use is not permitted without written permission from the copyright holder.
View license: https://creativecommons.org/licenses/by-nc/4.0/