Skip to content

Repository files navigation

🎯 JobRadar

JobRadar Logo

πŸ‡©πŸ‡ͺ Dein persΓΆnlicher KI-Bewerbungsassistent Β |Β  πŸ‡¬πŸ‡§ Your personal AI job application assistant

Node.js SQLite Ollama PWA License Security


πŸ‡©πŸ‡ͺ Deutsche Version Β |Β  πŸ‡¬πŸ‡§ English Version


πŸ‡©πŸ‡ͺ Deutsche Dokumentation

Was ist JobRadar?

JobRadar ist ein vollstΓ€ndig lokaler Bewerbungsassistent mit KI-UnterstΓΌtzung. Stellensuche, KI-Anschreiben via Ollama, Bewerbungs-Tracking, Dokumenten-Verwaltung und Erfahrungsprofil β€” alles lΓ€uft auf deinem Rechner, keine Cloud, keine Datenweitergabe.


✨ Features

πŸ” Stellensuche

  • 7 Quellen gleichzeitig: Arbeitnow, Jobicy, Arbeitsagentur, The Muse, Remotive, Adzuna πŸ”‘, Jooble πŸ”‘
  • Automatischer Match-Score basierend auf Keywords und Blacklist aus deinem Profil
  • Umkreissuche nach Ort / PLZ (10–200 km)
  • Dublettencheck β€” bereits beworbene Stellen werden direkt markiert
  • Stellen ausblenden mit Grund-Auswahl (Ausbildung, kein Homeoffice, zu weit entfernt …)

πŸ€– KI-Anschreiben via Ollama

  • VollstΓ€ndig lokal β€” keine Cloud, keine Kosten, keine Datenweitergabe
  • Kontext enthΓ€lt: Stellentitel, Firma, Tags, Beschreibung, Profil und dein Erfahrungsprofil
  • Modell-Auswahl direkt in der UI (alle lokal installierten Modelle)
  • KI-Stile: eigene Vorlagen mit Ton, LΓ€nge, Sprache und freien Hinweisen
  • KI-Feedback: Analyse deines Anschreibens mit VerbesserungsvorschlΓ€gen
  • PDF-Export, E-Mail-Button, Kopieren

πŸ’Ό Erfahrungsprofil

Dein persΓΆnliches Kompetenzprofil β€” die KI nutzt es automatisch.

Bereich Inhalt
πŸ›  Skills & Technologien Name + Niveau (AnfΓ€nger / Fortgeschritten / Experte)
🏒 Berufsstationen Firma, Rolle, Zeitraum, TÀtigkeiten
πŸŽ“ Ausbildung & Zertifikate Titel, Jahr, Institution

πŸ“ Dokumente & Vault

  • Dokumente pro Bewerbung hochladen (PDF, DOCX, PNG, JPEG β€” max. 10 MB)
  • Lebenslauf-Vault: zentrale Ablage fΓΌr LebenslΓ€ufe, die beim Erstellen von Anschreiben referenziert werden kΓΆnnen
  • Path-Traversal-Schutz bei allen Datei-Downloads

πŸ“‹ Bewerbungs-Tracking

  • SQLite-Datenbank β€” Daten bleiben dauerhaft lokal erhalten
  • Status-Badges: Beworben / Interview / Angenommen / Abgelehnt
  • Kommentar-Zeitstrahl pro Bewerbung
  • Inline-Editor fΓΌr Notizen, Follow-up-Datum und Sterne-Bewertung
  • Follow-up-Erinnerungen: πŸ”΄ ΓΌberfΓ€llig / 🟑 fΓ€llig bald
  • Filter nach Status, Firma, aktiv / archiviert
  • CSV-Export

πŸ“Š Dashboard & Statistiken

  • 5 Kennzahlen-Kacheln: Gesamt, ÜberfΓ€llig, Interview, Angenommen, Abgelehnt
  • Erweiterte Statistiken: Erfolgsquote, Ø Reaktionszeit, Wochentags-Heatmap, Streak
  • Automatisches Nachladen alle 5 Minuten

πŸ”’ Sicherheit

  • HTTP Security Headers via helmet
  • Rate-Limiting: 200 req/15min (API), 20 req/5min (KI)
  • Input-Validierung via express-validator auf allen Endpunkten
  • Path-Traversal-Schutz bei Datei-Downloads
  • Stack-Traces werden in Production nie nach außen gegeben
  • Responsible Disclosure: siehe SECURITY.md

βš™οΈ Technik

  • PWA β€” als Desktop-App installierbar, offline-fΓ€hig
  • Dark / Light Mode mit automatischer System-Erkennung
  • Browser-Notifications fΓΌr fΓ€llige Follow-ups
  • Docker Compose β€” ein Befehl zum Starten
  • VollstΓ€ndig responsiv

πŸš€ Installation

Voraussetzungen

  • Node.js 18+
  • Ollama lokal installiert und laufend
  • Optional: Docker & Docker Compose

Option A β€” Direkt starten

git clone https://github.com/freddykrueger88/JobRadar.git
cd JobRadar
npm install
cp .env.example .env
npm start

Im Browser ΓΆffnen: http://localhost:3000

Option B β€” Docker Compose

git clone https://github.com/freddykrueger88/JobRadar.git
cd JobRadar
cp .env.example .env
docker compose up -d

βš™οΈ Konfiguration (.env)

PORT=3000
DB_PATH=./data/bewerbungen.sqlite
NODE_ENV=production

# Ollama KI (lokal)
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=mistral

# Adzuna (kostenlos β€” https://developer.adzuna.com)
ADZUNA_APP_ID=
ADZUNA_APP_KEY=

# Jooble (kostenlos β€” https://jooble.org/api/about)
JOOBLE_API_KEY=

πŸ€– Ollama Modell installieren

# Empfohlen fΓΌr Anschreiben auf Deutsch
ollama pull mistral

# Alternativ: kleiner und schneller
ollama pull llama3.2

# PrΓΌfen ob Modell lΓ€uft
curl http://localhost:11434/api/tags

πŸ† Modell-Vergleich

Kriterium Mistral 7B Llama 3.2 (3B) Phi-4 (14B)
Deutsch βœ… Sehr gut ⚠️ MittelmÀßig βœ… Sehr gut
Formeller Stil βœ… NatΓΌrlich ⚠️ Manchmal locker βœ… Exzellent
Grâße ~4 GB ~2 GB ~9 GB
RAM-Bedarf Ab 8 GB Ab 4 GB Ab 16 GB
Geschwindigkeit βœ… Schnell βœ… Sehr schnell ⚠️ Langsamer

Empfehlung: Mistral 7B ist der beste Kompromiss. Wer 16+ GB RAM hat, kann phi4 fΓΌr noch bessere QualitΓ€t nutzen.


πŸ“ Projektstruktur

JobRadar/
β”œβ”€β”€ public/                  # Frontend (HTML, CSS, JS, PWA)
β”‚   β”œβ”€β”€ index.html
β”‚   β”œβ”€β”€ css/style.css
β”‚   β”œβ”€β”€ js/
β”‚   β”‚   β”œβ”€β”€ app.js
β”‚   β”‚   └── erfahrungen.js
β”‚   β”œβ”€β”€ manifest.json
β”‚   └── sw.js
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.js             # Express-Server + helmet + Rate-Limiting
β”‚   β”œβ”€β”€ db/                  # SQLite-Datenbank
β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”œβ”€β”€ errorHandler.js
β”‚   β”‚   └── validate.js
β”‚   └── routes/
β”‚       β”œβ”€β”€ bewerbungen.js   # Tracking + Stats + CSV-Export
β”‚       β”œβ”€β”€ dokumente.js     # Datei-Upload pro Bewerbung
β”‚       β”œβ”€β”€ erfahrungen.js   # Skills, Berufsstationen, Zertifikate
β”‚       β”œβ”€β”€ ki.js            # Ollama-Integration
β”‚       β”œβ”€β”€ profil.js        # Nutzerprofil
β”‚       β”œβ”€β”€ suche.js         # 7 Jobquellen
β”‚       β”œβ”€β”€ vault.js         # Lebenslauf-Vault
β”‚       └── vorlagen.js      # KI-Stile
β”œβ”€β”€ tests/
β”‚   └── api.test.js
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ SECURITY.md
└── .env.example

🀝 Beitragen

BeitrΓ€ge sind willkommen! Bitte lies zuerst CONTRIBUTING.md.

git checkout -b feature/mein-feature
# Γ„nderungen machen
npm test
git commit -m "feat: mein Feature"
git push origin feature/mein-feature
# Pull Request ΓΆffnen

πŸ“œ Lizenz & Nutzung

MIT β€” also ja, mach damit was du willst. Wirklich.

Fork es. Verkauf es. Bau eine millionenschwere SaaS draus. Nenn es um, gib dir selbst einen GrΓΌnder-Hoodie und tu so als wΓ€re es deine Idee gewesen β€” kein Problem, null Stress.

Du musst mich nicht nennen. Aber falls du es tust, irgendwo in einem kleinen Changelog-Eintrag oder einem versteckten About-Screen, freue ich mich natΓΌrlich trotzdem. Bin halt auch nur ein Mensch.

⚠️ Die eine Bedingung β€” und die ist ernst gemeint:

Sollte aus diesem Projekt jemals ein kommerzielles Produkt mit bezahltem Zugang entstehen β€” egal ob von dir, deinem Cousin, einem VC-finanzierten Startup das den Code gefunden hat, oder irgendjemand anderem β€” erhΓ€lt freddykrueger88 lebenslang, unwiderruflich und kostenlos Zugang zum besten verfΓΌgbaren Abo-Tier.

Nicht das mittlere. Nicht das gΓΌnstigste mit β€žJobRadar-Freundβ€œ-Badge. Das beste.

Ja, das ist die einzige Bedingung. Nein, ich werde es wahrscheinlich nie einfordern müssen. Aber falls doch: du weißt es, ich weiß es, GitHub weiß es. Das Internet vergisst nicht. 🀝

Idee & Original: freddykrueger88 β€” gebaut mit KI, Koffein und der Hoffnung dass es irgendwann jemand anderem nΓΌtzt.



πŸ‡¬πŸ‡§ English Documentation

What is JobRadar?

JobRadar is a fully local job application assistant with AI support. Job search, AI cover letters via Ollama, application tracking, document management and experience profile β€” everything runs on your machine, no cloud, no data sharing.


✨ Features

πŸ” Job Search

  • 7 sources simultaneously: Arbeitnow, Jobicy, Arbeitsagentur, The Muse, Remotive, Adzuna πŸ”‘, Jooble πŸ”‘
  • Automatic match score based on keywords and blacklist from your profile
  • Radius search by city / ZIP code (10–200 km)
  • Duplicate check β€” jobs you've already applied to are highlighted
  • Hide jobs with reason selection (requires degree, no remote, too far away …)

πŸ€– AI Cover Letters via Ollama

  • Fully local β€” no cloud, no cost, no data sharing
  • Context includes: job title, company, tags, description, profile and your experience profile
  • Model selection directly in the UI (all locally installed models)
  • AI styles: custom templates with tone, length, language and free-text hints
  • AI feedback: analysis of your cover letter with improvement suggestions
  • PDF export, email button, copy to clipboard

πŸ’Ό Experience Profile

Your personal competency profile β€” the AI uses it automatically.

Section Content
πŸ›  Skills & Technologies Name + level (Beginner / Intermediate / Expert)
🏒 Work History Company, role, period, activities
πŸŽ“ Education & Certificates Title, year, institution

πŸ“ Documents & Vault

  • Upload documents per application (PDF, DOCX, PNG, JPEG β€” max. 10 MB)
  • CV Vault: central storage for rΓ©sumΓ©s, referenceable when generating cover letters
  • Path traversal protection on all file downloads

πŸ“‹ Application Tracking

  • SQLite database β€” data stays permanently local
  • Status badges: Applied / Interview / Accepted / Rejected
  • Comment timeline per application
  • Inline editor for notes, follow-up date and star rating
  • Follow-up reminders: πŸ”΄ overdue / 🟑 due soon
  • Filter by status, company, active / archived
  • CSV export

πŸ“Š Dashboard & Statistics

  • 5 KPI tiles: Total, Overdue, Interview, Accepted, Rejected
  • Extended statistics: success rate, avg. response time, weekday heatmap, streak
  • Auto-refresh every 5 minutes

πŸ”’ Security

  • HTTP security headers via helmet
  • Rate limiting: 200 req/15min (API), 20 req/5min (AI)
  • Input validation via express-validator on all endpoints
  • Path traversal protection on file downloads
  • Stack traces are never exposed in production
  • Responsible disclosure: see SECURITY.md

βš™οΈ Technical

  • PWA β€” installable as a desktop app, offline capable
  • Dark / Light mode with automatic system detection
  • Browser notifications for due follow-ups
  • Docker Compose β€” one command to start
  • Fully responsive

πŸš€ Installation

Prerequisites

  • Node.js 18+
  • Ollama installed and running locally
  • Optional: Docker & Docker Compose

Option A β€” Run directly

git clone https://github.com/freddykrueger88/JobRadar.git
cd JobRadar
npm install
cp .env.example .env
npm start

Open in browser: http://localhost:3000

Option B β€” Docker Compose

git clone https://github.com/freddykrueger88/JobRadar.git
cd JobRadar
cp .env.example .env
docker compose up -d

βš™οΈ Configuration (.env)

PORT=3000
DB_PATH=./data/bewerbungen.sqlite
NODE_ENV=production

# Ollama AI (local)
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=mistral

# Adzuna (free β€” https://developer.adzuna.com)
ADZUNA_APP_ID=
ADZUNA_APP_KEY=

# Jooble (free β€” https://jooble.org/api/about)
JOOBLE_API_KEY=

πŸ€– Installing an Ollama Model

# Recommended for German cover letters
ollama pull mistral

# Alternative: smaller and faster
ollama pull llama3.2

# Verify model is running
curl http://localhost:11434/api/tags

πŸ† Model Comparison

Criterion Mistral 7B Llama 3.2 (3B) Phi-4 (14B)
German quality βœ… Excellent ⚠️ Moderate βœ… Excellent
Formal style βœ… Natural ⚠️ Sometimes casual βœ… Outstanding
Size ~4 GB ~2 GB ~9 GB
RAM required 8 GB+ 4 GB+ 16 GB+
Speed βœ… Fast βœ… Very fast ⚠️ Slower

Recommendation: Mistral 7B is the best trade-off for most systems. If you have 16+ GB RAM, try phi4 for even better quality.


πŸ“ Project Structure

JobRadar/
β”œβ”€β”€ public/                  # Frontend (HTML, CSS, JS, PWA)
β”‚   β”œβ”€β”€ index.html
β”‚   β”œβ”€β”€ css/style.css
β”‚   β”œβ”€β”€ js/
β”‚   β”‚   β”œβ”€β”€ app.js
β”‚   β”‚   └── erfahrungen.js
β”‚   β”œβ”€β”€ manifest.json
β”‚   └── sw.js
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.js             # Express server + helmet + rate limiting
β”‚   β”œβ”€β”€ db/                  # SQLite database
β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”œβ”€β”€ errorHandler.js
β”‚   β”‚   └── validate.js
β”‚   └── routes/
β”‚       β”œβ”€β”€ bewerbungen.js   # Tracking + stats + CSV export
β”‚       β”œβ”€β”€ dokumente.js     # File upload per application
β”‚       β”œβ”€β”€ erfahrungen.js   # Skills, work history, certificates
β”‚       β”œβ”€β”€ ki.js            # Ollama integration
β”‚       β”œβ”€β”€ profil.js        # User profile
β”‚       β”œβ”€β”€ suche.js         # 7 job sources
β”‚       β”œβ”€β”€ vault.js         # CV vault
β”‚       └── vorlagen.js      # AI styles
β”œβ”€β”€ tests/
β”‚   └── api.test.js
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ SECURITY.md
└── .env.example

🀝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md first.

git checkout -b feature/my-feature
# Make your changes
npm test
git commit -m "feat: my feature"
git push origin feature/my-feature
# Open a Pull Request

πŸ“œ License & Usage

MIT β€” so yes, do whatever you want with this. Seriously.

Fork it. Sell it. Build a million-dollar SaaS out of it. Rebrand it, give yourself a founder hoodie and pretend it was your idea all along β€” no problem, zero stress.

You don't have to credit me. But if you do, somewhere in a tiny changelog entry or a hidden about screen, I won't complain. I'm only human.

⚠️ The one condition β€” and this is dead serious:

If this project ever becomes a commercial product with paid access β€” whether by you, your cousin, a VC-funded startup that stumbled across the code, or literally anyone else β€” freddykrueger88 gets lifetime, irrevocable, completely free access to the best available subscription tier.

Not the middle one. Not the cheapest with a cute "Friend of JobRadar" badge. The best one.

Yes, that's the only condition. No, I'll probably never need to enforce it. But if I do: you know it, I know it, GitHub knows it. The internet doesn't forget. 🀝

Original idea & concept: freddykrueger88 β€” built with AI, caffeine, and the quiet hope that someone out there finds it useful.

About

🎯 Bewerbungs-Assistent mit KI-Anschreiben via Ollama, 7 Jobquellen, Zeitstrahl und PWA-Modus

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages