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.
- 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 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.
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 # WindowsRequires: Python 3.12+, Node.js 18+, uv. See Installation Guide — Running from Source for full details.
Manage all your job applications in one place with sortable columns, status badges, and quick actions.
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.
View comprehensive job information including requirements, nice-to-haves, salary, location, and job fit ratings.
Easily add new jobs or update existing ones with a clean, comprehensive form.
Manage your job search profile with preferences, skills, and goals. The AI uses this to personalize recommendations.
First-time users go through a friendly interview to build their profile.
The easiest way to configure the AI assistant is through the Settings panel:
- Open the app — launch the desktop app, or go to http://localhost:3000 if running from source
- Click "Settings" in the top navigation bar
- Choose your LLM provider from the dropdown (Anthropic Claude, OpenAI GPT, Google Gemini, or Ollama)
- Enter your API key (if required - Ollama runs locally and doesn't need one)
- Click "Test Connection" to verify your credentials work
- 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.
| 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 |
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=INFOSee docs/config.example.json for the complete configuration file format.
- Download and install — Get the app from GitHub Releases (or run from source)
- 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
- Complete onboarding — The AI assistant will interview you to build your job search profile
- Add jobs manually — Click "Add Job" to create entries from the dashboard
- 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
- 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
- Track your progress — Update job statuses (saved → applied → interviewing → offer/rejected)
- Manage your profile — Click "Profile" in the navigation bar to view or edit your job preferences
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.
"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).
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.
See the full Troubleshooting guide or report bugs at GitHub Issues.
- 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)
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\ |
All data stays on your machine. Shortlist never sends your data to external servers.
- Job data is stored in
app.db(SQLite) in theuser_data/directory (or the platform app data directory for desktop installs) - Telemetry data is stored in a separate
telemetry.dbfile 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.enabledtofalseinconfig.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.
For detailed technical documentation, development setup, API reference, and contribution guidelines, see:
- DEVELOPMENT.md — Comprehensive developer guide
- CONTRIBUTING.md — How to contribute to this project
This project is licensed under the MIT License — see the LICENSE file for details.
- Tavily for web search API
- JSearch, Active Jobs DB, and LinkedIn Job Search for job search APIs
- Built with Flask, React, and Tailwind CSS






