GHOSTED π»
.-.
(o o) GHOSTED
| O | job application tracker
| | for the perpetually ghosted
'~~~'
A terminal-based job application tracker for those of us who know the void all too well.
Built with Go and Charm libraries.
Demo
TUI Overview
Navigate, search, filter, and manage your job applications from the terminal.

AI Agent Integration
Drop a job posting into local/postings/ and let an AI agent (like Claude Code) extract the details and add it to your tracker.

Edit Agent-Created Entries
Review and update the status of AI-created entries directly from the TUI.

Features
- Interactive TUI - Full keyboard-driven interface with vim-style navigation
- CLI Commands - Script-friendly commands for automation and AI agents
- JSON Storage - Human-readable data format, easy to backup and version control
- Status Pipeline - Track applications from saved β applied β ghosted into oblivion
- Search & Filter - Quickly find applications by company, position, or status
- Quick Actions - Change status with single keystrokes (1-8)
Installation
From Source (Recommended)
git clone https://github.com/celloopa/ghosted.git
cd ghosted
make install
This installs ghosted to your Go bin directory (~/go/bin by default).
Make sure it's in your PATH:
export PATH="$HOME/go/bin:$PATH"
Go Install (Latest Release)
go install github.com/celloopa/ghosted@latest
Usage
Interactive TUI
ghosted
Keyboard Shortcuts:
| Key |
Action |
j/k or arrows |
Navigate up/down |
a |
Add new application |
e |
Edit selected |
d |
Delete selected |
Enter |
View details |
1-8 |
Quick status change |
/ |
Search |
f |
Filter by status |
c |
Clear filters |
? |
Toggle help |
q |
Quit |
Status Keys:
- Saved
- Applied
- Screening
- Interview
- Offer
- Accepted
- Rejected
- Withdrawn
CLI Commands
# Add new application
ghosted add --json '{"company":"Acme","position":"Engineer","salary_min":150000}'
# List all applications
ghosted list
ghosted list --json
# Get single application (supports partial ID)
ghosted get abc123
ghosted get abc123 --json
# Update application
ghosted update abc123 --json '{"status":"interview","notes":"Phone screen scheduled"}'
# Delete application
ghosted delete abc123
# Help
ghosted help
Data Storage
By default, data is stored at:
~/.local/share/ghosted/applications.json
Override with environment variable:
export GHOSTED_DATA=/path/to/your/applications.json
Sample Data
New installations are seeded with 3 sample applications to help you get started. Delete them with d in the TUI or start fresh:
rm ~/.local/share/ghosted/applications.json
JSON Schema
{
"company": "string (required)",
"position": "string (required)",
"status": "saved|applied|screening|interview|offer|accepted|rejected|withdrawn",
"date_applied": "2025-01-15T00:00:00Z",
"salary_min": 150000,
"salary_max": 200000,
"job_url": "https://...",
"location": "City, State",
"remote": true,
"contact_name": "string",
"contact_email": "string",
"resume_version": "string",
"cover_letter": "string",
"notes": "string",
"interviews": [
{
"date": "2025-01-20T14:00:00Z",
"type": "phone|video|onsite|technical",
"notes": "string",
"with_whom": "string"
}
]
}
See schema.json for the complete JSON Schema specification.
Local Files (Optional)
For organizing job-related documents, create a local/ directory:
local/
βββ postings/ # Job posting files (txt, md, png)
βββ resumes/ # Resume versions
βββ cover-letters/ # Cover letter templates
This directory is gitignored by default.
Development
Project Structure
βββ main.go # Entry point, CLI commands
βββ internal/
β βββ model/
β β βββ application.go # Data structures, status constants
β βββ store/
β β βββ json.go # JSON persistence, CRUD operations
β βββ tui/
β βββ app.go # Main TUI controller
β βββ list.go # List view
β βββ detail.go # Detail view
β βββ form.go # Add/edit form
β βββ styles.go # Lip Gloss styling
β βββ keys.go # Key bindings
βββ samples/
β βββ applications.json # Sample data for new users
βββ schema.json # JSON Schema specification
Building
make build # Build binary locally
make install # Build and install to ~/go/bin
make clean # Remove local binary
Dependencies
License
MIT License - see LICENSE for details.
Contributing
Contributions welcome! Please feel free to submit a Pull Request.
Built with tears and mass rejection emails π