JBoggsy/shortlist

An AI-powered job hunting and application tool.

★ 2Forks 0PythonGitHub ↗Compare

README

Shortlist

License: MIT

A desktop app and web app to track and manage job applications with an AI-powered assistant

Shortlist helps you organize your job search. Track applications through the hiring pipeline, store job details, and leverage an AI assistant that can search the web, scrape job postings, and automatically add jobs to your tracker — all through a simple chat interface. Available as a downloadable desktop app or as a web app you can run from source.

Features

  • Job Tracking Dashboard: Manage all your job applications in one place with sortable columns and status badges
  • AI-Powered Assistant: Chat with an AI that can research jobs, scrape URLs, search job boards, and add jobs automatically
  • Multi-LLM Support: Choose from Anthropic Claude, OpenAI GPT, Google Gemini, or run locally with Ollama
  • Web Search Integration: Built-in web search (via Tavily) for finding job postings and company information
  • Job Board Integration: Search JSearch, Active Jobs DB, and LinkedIn job boards directly from the chat
  • User Profile System: Personalized onboarding interview to understand your job preferences and goals
  • Resume Upload: Upload your resume (PDF or DOCX) so the AI assistant can reference it for job fit evaluation and recommendations. An AI agent automatically cleans up extraction artifacts and structures your resume into a rich, browsable format.
  • Document Editor: Write and version cover letters and tailored resumes per job with a rich text editor, AI assistance, and full version history.
  • Application Todos: Track per-job application steps (documents, questions, assessments, references) with completion checkboxes.
  • Rich Job Details: Track salary ranges, location, remote type, requirements, contact info, and more
  • Job Fit Ratings: Rate how well each job matches your profile (0-5 stars)
  • Guided Setup Wizard: First-time setup walks you through choosing a provider and entering your API key, with inline step-by-step instructions for each key
  • Agent Modes: Switch between freeform (single ReAct agent) and orchestrated (multi-agent pipeline with workflows) modes
  • Telemetry & Optimization: Passive trace collection for DSPy optimization — captures agent traces, tool calls, LLM metrics, and user feedback. Stored locally, exportable, fully configurable.
  • Desktop App: Download and install — no programming tools required. Also runs as a web app from source.

Download

Download the latest desktop app:

Platform Download Alternative
Windows Shortlist_1.0.0_x64-setup.exe .msi installer
macOS (Apple Silicon) Shortlist_1.0.0_aarch64.dmg
Linux Shortlist_1.0.0_amd64.deb .AppImage | .rpm

See all releases for older versions.

Install it, launch it, and a setup wizard will guide you through choosing an AI provider and entering your API key — with inline instructions for every key. See the Installation Guide for detailed step-by-step instructions.

Run from Source (Alternative)

For developers or users who prefer running from source:

git clone https://github.com/JBoggsy/shortlist.git
cd shortlist
./start.sh        # Mac/Linux
start.bat          # Windows

Requires: Python 3.12+, Node.js 18+, uv. See Installation Guide — Running from Source for full details.

Screenshots

Dashboard

Manage all your job applications in one place with sortable columns, status badges, and quick actions.

Job List Dashboard

AI Assistant

Chat with the AI assistant to search for jobs, scrape URLs, and get personalized recommendations. The assistant uses tools like web search and job board APIs to help you find opportunities.

Chat Panel: Searching for Jobs

Chat Panel: Adding a Job to the Tracker

Job Details

View comprehensive job information including requirements, nice-to-haves, salary, location, and job fit ratings.

Job Detail Panel

Add/Edit Jobs

Easily add new jobs or update existing ones with a clean, comprehensive form.

Job Form

User Profile

Manage your job search profile with preferences, skills, and goals. The AI uses this to personalize recommendations.

Profile Panel

Onboarding

First-time users go through a friendly interview to build their profile.

Onboarding Flow

Configuration

Using the Settings UI (Recommended)

The easiest way to configure the AI assistant is through the Settings panel:

  1. Open the app — launch the desktop app, or go to http://localhost:3000 if running from source
  2. Click "Settings" in the top navigation bar
  3. Choose your LLM provider from the dropdown (Anthropic Claude, OpenAI GPT, Google Gemini, or Ollama)
  4. Enter your API key (if required - Ollama runs locally and doesn't need one)
  5. Click "Test Connection" to verify your credentials work
  6. Click "Save Settings" to persist your configuration

Optional integrations (enables additional features):

  • Tavily Search API (Recommended): Enables web search tool
  • RapidAPI Key: Enables job board search (JSearch, Active Jobs DB, LinkedIn Job Search)

See the Installation Guide for instructions on obtaining API keys.

All settings are saved to a local config.json file and persist across restarts.

Available LLM Providers

Provider Default Model API Key Required Get API Key
Anthropic Claude claude-sonnet-4-5-20250929 Yes console.anthropic.com
OpenAI GPT gpt-4o Yes platform.openai.com
Google Gemini gemini-2.0-flash Yes aistudio.google.com
Ollama (Local) llama3.1 No ollama.com

Advanced: Environment Variables

For advanced users or automated deployments, you can also configure via environment variables (these override the Settings UI):

# LLM Configuration
export LLM_PROVIDER=anthropic
export LLM_API_KEY=your-api-key-here
export LLM_MODEL=custom-model-name  # optional

# Optional Integrations
export SEARCH_API_KEY=your-tavily-key
export INTEGRATIONS_RAPIDAPI_KEY=your-rapidapi-key

# Logging
export LOG_LEVEL=INFO

See docs/config.example.json for the complete configuration file format.

Getting Started

  1. Download and install — Get the app from GitHub Releases (or run from source)
  2. Enter your API key — On first launch, a setup wizard opens automatically. Choose an AI provider, follow the inline instructions to get your API key, and test the connection before continuing
  3. Complete onboarding — The AI assistant will interview you to build your job search profile
  4. Add jobs manually — Click "Add Job" to create entries from the dashboard
  5. Upload your resume — Click "Profile" in the navigation bar and upload your resume (PDF or DOCX). The AI assistant will reference it when evaluating job fit
  6. Use the AI assistant — Click the "AI Assistant" button in the navigation bar to open the chat panel:
    • Ask it to search for jobs: "Find software engineer jobs in San Francisco"
    • Scrape job postings: "Scrape this URL: https://example.com/job"
    • Research companies: "Search the web for info about Acme Corp"
    • The assistant will automatically add jobs to your tracker
  7. Track your progress — Update job statuses (saved → applied → interviewing → offer/rejected)
  8. Manage your profile — Click "Profile" in the navigation bar to view or edit your job preferences

Troubleshooting

Desktop App Issues

Windows SmartScreen warning: Click "More info" → "Run anyway" (the app is not yet code-signed).

macOS "unidentified developer": Go to System Settings → Privacy & Security → Click "Open Anyway".

Blank screen on launch: Wait a few seconds for the backend to start. If it persists, try restarting the app.

General Issues

"LLM is not configured": Click "Settings" in the navigation bar, select an LLM provider, enter your API key, and click Save Settings.

Ollama connection failed: Make sure Ollama is running separately (ollama serve) with a model pulled (ollama pull llama3.1).

Run from Source Issues

Dependencies not installed: Install Python 3.12+, Node.js 18+, and uv.

Windows "Python was not found": Disable app execution aliases in Settings → Apps → Advanced app settings → App execution aliases.

Port already in use: Stop other processes using ports 3000/5000, or restart your computer.

Missing dependencies after git pull: Run uv sync and cd frontend && npm install.

Need more help?

See the full Troubleshooting guide or report bugs at GitHub Issues.

Tech Stack

  • Backend: Python, Flask, SQLAlchemy, SQLite
  • Frontend: React 19, Vite, Tailwind CSS 4
  • Desktop: Tauri v2 (optional native wrapper, sidecar architecture)
  • AI Providers: Anthropic Claude, OpenAI GPT, Google Gemini, Ollama
  • Package Managers: uv (Python), npm (JavaScript)

Desktop App

The desktop app is built with Tauri v2, which wraps the React frontend in a native webview and bundles the Flask backend as a sidecar process. No Python or Node.js installation required.

Download the latest release from GitHub Releases. Data files are stored in platform-standard directories:

Platform Data Location
Linux ~/.local/share/com.shortlist.app/
macOS ~/Library/Application Support/com.shortlist.app/
Windows C:\Users\<user>\AppData\Roaming\com.shortlist.app\

Data & Privacy

All data stays on your machine. Shortlist never sends your data to external servers.

  • Job data is stored in app.db (SQLite) in the user_data/ directory (or the platform app data directory for desktop installs)
  • Telemetry data is stored in a separate telemetry.db file and is used to improve AI agent performance via DSPy optimization. It captures agent traces, tool calls, LLM metrics (token counts, latency, cost), and thumbs up/down feedback — but never leaves your machine
  • Telemetry is enabled by default and can be disabled at any time via the Settings page or by setting telemetry.enabled to false in config.json
  • Retention defaults to 90 days (configurable). Old data is automatically pruned on startup
  • Export: You can export telemetry data (full or anonymized) from the Settings page for sharing or analysis

For building from source or developing the desktop app, see DEVELOPMENT.md.

Development

For detailed technical documentation, development setup, API reference, and contribution guidelines, see:

License

This project is licensed under the MIT License — see the LICENSE file for details.

Acknowledgments

Contributors

JBoggsyCopilot

Issues