← All projects
Active

JobHound TUI

Terminal dashboard for tracking job applications in real time. Two-pane Textual layout — job list on the left, full details on the right. Color-coded by status, one key to export, one key to open any listing.

Python
language
Textual
framework
30s
poll
MIT
license

Screenshot

┌─ JobHound ──────────────────────────────────────────────────────┐
│ [LIVE] 47 tracked · 3 queued · 12 applied · 2 interviewing      │
├──────────────────────────┬──────────────────────────────────────┤
│ ▶ Bree          applied  │  Bree — Software Engineer, Backend    │
│   Modal         applied  │  Applied: 2026-03-11 via Ashby        │
│   LangChain     applied  │  Score: 87/100                        │
│   Cohere        queued   │  Method: direct POST                  │
│   Anthropic     new      │                                       │
│   Cursor        failed   │  Cover Letter:                        │
│                          │  > The line that stood out in your... │
├──────────────────────────┴──────────────────────────────────────┤
│ [s]can  [p]ause  [f]ilter  [o]pen URL  [x]export  [q]uit        │
└─────────────────────────────────────────────────────────────────┘

Keybinds

s — scan
Trigger an immediate scan across all configured job sources, pulling fresh listings into the queue.
p — pause
Toggle automatic scanning and submission on/off. The status bar shows LIVE or PAUSED to confirm state.
f — filter
Open an inline filter bar. Filter by status (new, queued, applied, interviewing, failed, rejected) or by company name substring.
o — open URL
Open the selected job listing in your default browser. Pulls the canonical URL from the ATS record.
x — export
Export the current filtered view to ~/jobhound_export_YYYYMMDD.md and .csv. Includes company, title, status, score, applied date, and URL.
q — quit
Exit the TUI. The MCP server continues running in the background — only the dashboard closes.

Status colors

new — cyan
Freshly scanned listing. Not yet scored or reviewed. Awaiting Claude's first pass.
queued — blue
Scored above threshold. Sitting in the queue waiting for Claude to tailor and submit.
applied — green
Application submitted successfully via the ATS API. Timestamp and method logged.
interviewing — yellow
Recruiter or hiring manager has reached out. Manually set via jobhound_update or the TUI.
failed — red
Submission attempt returned an error. Error message stored in the record for debugging.
rejected — dim
Application closed without an interview. Dimmed to keep focus on active opportunities.

Install

git clone https://github.com/Null-Phnix/jobhound-tui
cd jobhound-tui
pip install -r requirements.txt
# point it at the same DB as the MCP server
export JOBHOUND_DB=~/.jobhound/jobs.db
python -m jobhound.tui

Stack

Python 3.11+ Textual ≥0.52 sqlite3


Open source on github.com/Null-Phnix/jobhound-tui. Issues and PRs welcome.