Skip to main content
Glama

Job Radar

Sammelt Stellenanzeigen aus mehreren Quellen, filtert sie mit nachvollziehbaren Regeln, speichert sie in SQLite mit Volltextsuche und macht sie über eine REST-API, einen MCP-Server für LLM-Agenten und RAG-Fragen nutzbar.

Der Job-Radar läuft seit September 2026 produktiv als n8n-Workflow: zweimal täglich, mit LLM-Auswertung jeder Anzeige und Zustellung als Telegram-Karte. Dieses Repository ist sein Kern als Python-Service – dieselben Regeln, aber getestet, mit SQL-Analysen, API, MCP, Docker und CI.

flowchart LR
    A[Adzuna API] --> R
    B[Arbeitnow API] --> R
    C[JSearch · RapidAPI] --> R
    R[Regeln<br/>classify.py] --> S[(SQLite + FTS5)]
    S --> API[REST-API<br/>FastAPI]
    S --> MCP[MCP-Server<br/>für LLM-Agenten]
    S --> RAG[RAG<br/>Retrieval + LLM]
    S --> SQL[SQL-Analysen]

Was drin ist

Modul

Aufgabe

sources.py

Adzuna, Arbeitnow, JSearch. Fällt eine Quelle aus, laufen die anderen weiter.

classify.py

Regeln: vor Ort nur Wien, sonst nur voll remote (hybrid zählt nicht); gesuchte AI-/LLM-Rollen (nur im Titel), Seniorität, Wochenstunden (Limit 20 h für Studierende in Österreich), Gehalt brutto/netto mit 14 Gehältern, Hinweise zu Sprache und Arbeitserlaubnis.

store.py

SQLite, Deduplizierung über Quellen hinweg (gleicher Titel + Firma), FTS5-Index mit BM25-Ranking, Statusverlauf.

analytics.py

SQL: Median-Gehalt per Window Functions, Skill-Nachfrage, Top-Firmen, Bewerbungs-Funnel per JOIN.

api.py

FastAPI: /jobs, /jobs/{id}, /search, /stats, /ask, Status setzen.

mcp_server.py

MCP-Tools search_jobs, get_job, job_stats, mark_job – etwa für Claude.

rag.py

Retrieval über FTS5, Antwort nur aus den gefundenen Anzeigen mit Quellen [id]; strukturierte Extraktion als JSON.

Related MCP server: Naitei MCP

Schnellstart

python -m venv .venv
.venv\Scripts\activate            # Windows; unter Linux/macOS: source .venv/bin/activate
pip install -e ".[dev]"

jobradar import data/sample_jobs.json   # fiktive Beispieldaten, keine API-Schlüssel nötig
jobradar list
jobradar search "RAG Python"
jobradar stats
jobradar serve                          # http://localhost:8000/docs

Echte Daten: Schlüssel als Umgebungsvariablen setzen (siehe .env.example) und jobradar fetch ausführen. Fragen an die eigene Datenbank: mit GEMINI_API_KEY z. B. jobradar ask "Welche Teilzeitstellen mit Python gibt es in Wien?"

Als MCP-Server in Claude Code

claude mcp add job-radar -- jobradar --db C:/pfad/zu/jobradar.db mcp

Danach kann Claude selbst suchen („Welche AI-Jobs in Wien sind neu?“), Statistiken abrufen und Stellen als applied markieren.

Docker

docker build -t job-radar .
docker run -p 8000:8000 -v jobradar-data:/data job-radar

Tests

pytest          # Regeln, Speicherung, SQL-Analysen, Quellen (gemockt), API, RAG, MCP
ruff check .

Die CI (GitHub Actions) führt Linting und Tests bei jedem Push aus und baut das Docker-Image.

Designentscheidungen

  • Regeln statt LLM beim Filtern. Günstig, schnell und jede Entscheidung ist erklärbar. Das LLM kommt erst bei der Auswertung der wenigen relevanten Anzeigen zum Einsatz.

  • FTS5 mit BM25 statt Vektordatenbank. Für einige tausend Anzeigen reicht Volltextsuche, ohne zusätzliche Infrastruktur. Embeddings wären der nächste Schritt, sobald semantische Suche gebraucht wird.

  • LLM als austauschbare Funktion. prompt -> text: Tests laufen ohne API-Schlüssel, der Anbieter lässt sich wechseln.

  • Fiktive Beispieldaten. Im Repository liegen keine fremden Anzeigentexte.

Struktur

src/jobradar/   sources · classify · store · analytics · pipeline · rag · api · mcp_server · cli
tests/          pytest, eine Datei pro Modul
data/           sample_jobs.json (fiktiv); die Datenbank selbst wird nicht eingecheckt

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables tracking job applications through a pipeline, scheduling follow-ups, and summarizing job search progress via natural language.
    7
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables job-search application tracking through a private application board, managing application facts, stage history, and interview prep documents while leaving summarization and decision-making to the connected agent.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to manage a personal job application tracker, allowing users to list, add, update, and delete job applications with company, role, and status details through natural language.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables an MCP-capable coding agent to run a local-first job search: recording verified opportunities in a private SQLite tracker, tracking follow-ups and outcomes, and preparing evidence-based resumes, application answers, and outreach drafts. It keeps all personal data on the user's machine and stops before submitting applications, uploading documents, or contacting anyone.
    1
    MIT