A comprehensive CLI tool to track job applications, analyze interview transcripts and notes, and seamlessly integrate with your Obsidian vault.
- Track Job Applications: Store and manage all your job applications with detailed information
- Interview Management: Track multiple interviews per application with dates, types, and interviewers
- Obsidian Integration: Automatically create and link markdown notes in your Obsidian vault
- Fabric Integration: Analyze interview transcripts and notes using AI-powered Fabric patterns
- Audio Transcription: Transcribe interview recordings using Fabric
- Statistics Dashboard: View insights and analytics about your job search
- Export Data: Export your applications to CSV or JSON
-
Clone this repository or download the source code
-
Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate- Install dependencies:
pip install click sqlalchemy pyyaml rich python-dateutil- Run Career Compass using one of these methods:
Option A: Using the wrapper script (recommended):
./career-compass.sh --helpOption B: Direct Python module:
python -m career_compass.cli --helpOption C: Add an alias to your shell (optional):
# Add to ~/.bashrc or ~/.zshrc
alias career-compass="$PWD/career-compass.sh"- Make sure you have Fabric installed if you want to use analysis features:
# Follow Fabric installation instructions at:
# https://github.com/danielmiessler/Fabric./career-compass.sh initThis will:
- Prompt for your Obsidian vault path
- Create the Job-Tracker folder in your vault
- Initialize the SQLite database
- Set up configuration
./career-compass.sh addFollow the interactive prompts to enter:
- Company name
- Position
- Status (Interested, Applied, Interview Scheduled, etc.)
- Date applied
- Salary range
- Job URL
- Contact person
- Notes
./career-compass.sh listFilter by status:
./career-compass.sh list --status Applied./career-compass.sh show <app_id># Add a new application
./career-compass.sh add
# List all applications
./career-compass.sh list [--status STATUS]
# Show application details
./career-compass.sh show <app_id>
# Update application
./career-compass.sh update <app_id>
# Update application status
./career-compass.sh status <app_id> <new_status>
# Delete application
./career-compass.sh delete <app_id>Available Statuses:
- Interested
- Applied
- Interview Scheduled
- Interviewed
- Rejected
- Withdrawed
- Ghosted
# Add interview to application
./career-compass.sh interview add <app_id>
# List interviews for an application
./career-compass.sh interview list <app_id>
# Update interview details
./career-compass.sh interview update <interview_id>
# Delete interview
./career-compass.sh interview delete <interview_id># Create Obsidian note for application
./career-compass.sh note create <app_id>
# Link existing note to application
./career-compass.sh note link <app_id> <note_path>
# Sync applications from Obsidian vault
./career-compass.sh syncThe sync command scans your Job-Tracker folder and imports applications found in markdown files.
# Analyze interview transcript or notes
./career-compass.sh analyze interview <app_id> [--interview-id ID] [--pattern PATTERN]
# List available Fabric patterns
./career-compass.sh analyze patterns
# Transcribe audio file
./career-compass.sh transcribe <audio_file> <app_id> [--interview-id ID] [--save-to PATH]Common Fabric Patterns:
extract_interview_feedback- Extract key feedback from interviewsanalyze_interview_performance- Assess your performanceextract_wisdom- Extract insights from notesimprove_response- Suggest better answers
# View statistics dashboard
./career-compass.sh stats
# Export to CSV
./career-compass.sh export --format csv [--output filename.csv]
# Export to JSON
./career-compass.sh export --format json [--output filename.json]The tool creates the following structure in your vault:
Obsidian Vault/
└── Job-Tracker/
├── Google/
│ ├── Google-SWE.md # Main application note
│ ├── Interview-1-Phone-20250112.md # Interview notes
│ └── Interview-2-Technical-20250119.md
├── Amazon/
│ └── Amazon-SDE.md
└── templates/
├── application-template.md
└── interview-template.md
Each application note includes:
- YAML frontmatter with metadata (company, position, status, etc.)
- Job description section
- Application timeline
- Links to interview notes
- Discussion notes
- Follow-up checklist
Each interview note includes:
- YAML frontmatter with interview metadata
- Preparation notes
- Interview notes section
- Questions asked
- Questions you asked
- Technical topics covered
- Follow-up actions
- Feedback and reflection
- Link back to main application note
Configuration is stored in ~/.config/career-compass/config.yaml:
obsidian_vault_path: /path/to/your/vault
job_tracker_folder: Job-Tracker
database_path: ~/.config/career-compass/jobs.db
fabric_command: fabric
default_status: InterestedHere's a typical workflow:
-
Save a job listing
./career-compass.sh add # Enter: Company, Position, Status=Interested -
Apply to the job
./career-compass.sh status 1 Applied
-
Schedule an interview
./career-compass.sh status 1 "Interview Scheduled" ./career-compass.sh interview add 1 # This creates an Obsidian note for prep
-
Record the interview (optional)
- Use your preferred tool to record
-
Transcribe and analyze
./career-compass.sh transcribe interview_audio.mp3 1 --interview-id 1 ./career-compass.sh analyze interview 1 --interview-id 1
-
Review statistics
./career-compass.sh stats
-
Update status after decision
./career-compass.sh status 1 Rejected # or ./career-compass.sh status 1 Interviewed
- Use the Obsidian notes to prepare for interviews by reviewing company research and technical topics
- Leverage Fabric patterns to get insights from your interview performance
- Regularly run
./career-compass.sh statsto track your application-to-interview ratio - Use
./career-compass.sh syncif you prefer creating notes in Obsidian first - Export your data periodically as a backup
Career Compass includes specialized Claude agents to supercharge your job search:
Job Researcher - Research companies and analyze job postings
- Company background, culture, and recent news
- Job requirement analysis
- Interview topic predictions
Interview Coach - Improve your interview performance
- Mock interviews with realistic questions
- Transcript analysis and feedback
- STAR method coaching
- Answer improvement suggestions
Application Writer - Craft compelling application materials
- Tailored cover letters
- Resume optimization
- Application question responses
- Follow-up email drafts
Agents are available when using Career Compass with Claude Code. They integrate seamlessly with your tracked applications and Obsidian notes.
See .claude/agents/README.md for detailed usage instructions and example workflows.
.
├── career_compass/
│ ├── __init__.py
│ ├── cli.py # Main CLI and core commands
│ ├── models.py # Database models
│ ├── config.py # Configuration management
│ ├── interview_commands.py # Interview management
│ ├── analysis_commands.py # Fabric integration
│ ├── note_commands.py # Obsidian note commands
│ ├── stats_commands.py # Statistics and export
│ ├── obsidian.py # Obsidian integration
│ └── fabric_integration.py # Fabric API wrapper
├── tests/
├── pyproject.toml
└── README.md
pytestblack career_compass/
flake8 career_compass/- Python 3.8+
- SQLAlchemy
- Click
- Rich (for beautiful terminal output)
- PyYAML
- Fabric (optional, for analysis features)
Error: "Please run './career-compass.sh init' first"
- Run
./career-compass.sh initto set up configuration and database
Fabric command not found
- Ensure Fabric is installed and in your PATH
- Update the
fabric_commandin config.yaml if needed
Obsidian notes not appearing
- Check that your vault path is correct in config
- Ensure the Job-Tracker folder exists in your vault
This project is open source and available for personal use.
Feel free to submit issues and enhancement requests!