job-search-tool
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 7 GitHub stars
Code Fail
- rm -rf — Recursive force deletion command in docker/entrypoint.sh
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Automated job aggregation with relevance scoring, Streamlit dashboard, REST API, and MCP server for LLM-powered job search assistance. Multi-source scraping (LinkedIn, Indeed, Glassdoor), SQLite + ChromaDB semantic search, Telegram notifications, Docker Compose deployment.
Job Search Tool
Local-first job search automation: collect jobs from multiple boards, score
them against your own criteria, store them in SQLite, review them in a
dashboard, query them through REST, or expose them to MCP clients.
Features
- Multi-board ingestion through JobSpy.
- Configurable keyword scoring with separate save and notification thresholds.
- SQLite persistence with bookmarks, applied state, blacklist, and retention.
- Streamlit dashboard for review, filtering, cleanup, and CSV/Excel export.
- Local semantic search through ChromaDB's bundled ONNX embedder.
- Telegram notifications for high-scoring new jobs.
- REST API and MCP server over the same local data layer.
- Docker Compose deployment with localhost-first network defaults.
Docker Quick Start
Create your runtime configuration:
cp config/settings.example.yaml settings.yamlEdit
settings.yaml, especiallylocations,queries,scoring, and
optional Telegram settings.Start the scheduler and dashboard:
docker compose up -dOpen the dashboard:
http://127.0.0.1:8501
API and MCP are opt-in Compose profiles:
docker compose --profile api --profile mcp up -d
By default, dashboard, API, and MCP bind to 127.0.0.1. To expose a service on
a trusted LAN, set the relevant bind variable in .env, for exampleJOB_SEARCH_MCP_BIND=0.0.0.0. Do not expose these services directly to the
public internet.
Interfaces
| Surface | Command | Default URL | Notes |
|---|---|---|---|
| Scheduler | job-search scheduler |
none | continuous search loop |
| Dashboard | job-search dashboard |
http://127.0.0.1:8501 |
human review UI |
| REST API | job-search-api |
http://127.0.0.1:8502 |
optional JOB_SEARCH_API_TOKEN |
| MCP | job-search-mcp |
http://127.0.0.1:3001/mcp |
streamable HTTP |
Documentation
- Docker deployment
- Configuration
- REST API
- MCP server
- Operations
- Architecture
- Testing
- Release process
- Current system audit
Local Development
uv sync
cp config/settings.example.yaml config/settings.yaml
uv run pytest
uv run pre-commit run --all-files
Local commands run through installed package entrypoints:
uv run job-search once
uv run job-search dashboard
uv run job-search-api
uv run job-search-mcp
Releases
Docker images are published to Docker Hub by the release workflow when a v*
tag is pushed. Release tags produce semver tags, latest, SBOM, and provenance
metadata for vincenzoimp/job-search-tool.
License
MIT. See LICENSE.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found