ghosted

command module
v0.5.0-beta Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2026 License: MIT Imports: 12 Imported by: 0

README ΒΆ

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.

TUI Overview

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.

Agent Integration

Edit Agent-Created Entries

Review and update the status of AI-created entries directly from the TUI.

Editing Entries

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)
  • Fetch Command - Auto-fetch job postings from Lever, Greenhouse, LinkedIn, and more
  • Agent Pipeline - Multi-agent system for automated resume and cover letter generation

Installation

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:

  1. Saved
  2. Applied
  3. Screening
  4. Interview
  5. Offer
  6. Accepted
  7. Rejected
  8. 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

# Fetch job posting from URL
ghosted fetch https://jobs.lever.co/company/job-id
ghosted fetch --output acme-swe.md https://example.com/job

# Help
ghosted help
Fetch Command

Automatically fetch and save job postings from popular job boards:

ghosted fetch <url>

Supported job boards:

  • Lever (jobs.lever.co)
  • Greenhouse (boards.greenhouse.io)
  • Workday
  • LinkedIn Jobs
  • Ashby
  • Generic HTML pages

The command extracts company name and position, converts the posting to markdown, and saves it to local/postings/.

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.

Agent Pipeline

Ghosted includes a multi-agent document generation pipeline for automating job applications:

Agent Purpose
Parser Extracts structured JSON from job postings
Resume Generator Creates tailored Typst resumes with skill matching
Cover Letter Generator Generates personalized cover letters
Reviewer Scores documents like a hiring manager (70+ to pass)
Tracker Integration Generates CLI commands to add applications

Prompt templates are in internal/agent/prompts/. See CLAUDE.md for integration details.

Development

Project Structure
β”œβ”€β”€ main.go                 # Entry point, CLI commands
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ agent/              # Agent pipeline implementation
β”‚   β”‚   β”œβ”€β”€ prompts/        # Agent prompt templates (parser, resume, cover, reviewer, tracker)
β”‚   β”‚   β”œβ”€β”€ resume.go       # Resume generator agent
β”‚   β”‚   β”œβ”€β”€ cover.go        # Cover letter generator agent
β”‚   β”‚   β”œβ”€β”€ reviewer.go     # Hiring manager review agent
β”‚   β”‚   └── tracker.go      # Tracker integration agent
β”‚   β”œβ”€β”€ fetch/              # URL fetching and job board parsing
β”‚   β”œβ”€β”€ 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

Changelog

See CHANGELOG.md for recent updates.

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 πŸ’€

Documentation ΒΆ

The Go Gopher

There is no documentation for this package.

Directories ΒΆ

Path Synopsis
internal
tui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL