Find a job
Supports vacancy collection from five job boards in one review and analysis workflow.
Production siteFour practical goals: job search, technology experiments, AI-assisted development, and QA learning.
Supports vacancy collection from five job boards in one review and analysis workflow.
Production siteA real production project for trying, integrating, and learning new technologies in practice.
GitHub repoThe project is developed with Codex and Claude Code throughout the development workflow.
Source repositoryA structured knowledge base covering interview questions, learning paths, and different QA-related areas.
Interview catalogCode is stored in GitHub, built in GitHub Actions, and deployed on Cloudflare.
Source repository
Build, checks, and deployment workflow
Edge/runtime execution
Frontend assets served with the deployment
The Python AI backend uses FastAPI, LangGraph, LangChain, OpenAI, Langfuse, and the canonical Cloudflare RAG pipeline.
Authenticated Python backend for chat, learning paths, and interview evaluation.
Owns the explicit learning-path workflow, state transitions, and orchestration.
Model messages, structured output, and OpenAI integration used inside the graph.
Structured answer generation for the AI assistant workflows.
Tracing, token/cost observability, runtime scores, and RAG evaluation support.
Cloudflare Workers AI + Vectorize with lexical fallback in one retrieval pipeline.
Two production n8n workflows process forwarded job-email events and send a daily operational report while GimmeJob keeps D1 as the source of truth.
User filters forward selected job emails to a per-user GimmeJob token address
Routes the forwarded message to the GimmeJob Worker email handler
Resolves the tenant and stores structured metadata in D1
Workflow 1 runs every minute: classify pending mail with deterministic rules first and OpenAI only when needed. Workflow 2 runs daily at 08:00 Kyiv: read D1 statistics, format the previous day's report, and send it by SMTP.
Lifecycle, job alert, service, non-job, or review classification persisted in D1
Received, processed, pending, job-relevant, rule-vs-AI, token, held, and failure metrics
Previous complete Kyiv day is formatted as HTML and emailed at 08:00
GimmeJob remains the system of record; n8n orchestrates but does not own application state
The production n8n environment is provisioned and configured from repository code on Hetzner Cloud.
Runs the production provisioning workflow on infrastructure changes or manual dispatch
Creates or reuses the server and firewall, applies cloud-init, and configures Cloudflare DNS
Ubuntu 24.04 production VM created reproducibly from code
n8n + PostgreSQL + Caddy
PostgreSQL, n8n, and Caddy volumes
Public 22/80/443; application and database ports stay internal
n8n.gimme-job.com points to the provisioned production VM
OpenAI is used for vacancy analysis and resume/application drafting.
Vacancy text and candidate context
Score, match, explain, and extract structured vacancy signals
Tailored resume and application drafting support
Deterministic logic when AI is unavailable.
Short-term production diagnostics and long-term operational monitoring.
Recent runtime diagnostics
Selected operational events
Aggregated long-term metrics
Dashboards and alerting
System and usage metrics
Thresholds and notifications
Data used for further analysis
CI generates test coverage and sends static-analysis results to SonarQube Cloud before deployment.
Tests, LCOV coverage, and Sonar scan
Static analysis, quality gate, and code-quality history
Security and bug findings
Code smells and technical debt
LCOV coverage and duplicated code
Application data is stored in Cloudflare D1.
Application reads and writes
Production application storage
Stored vacancies
Analysis results
Application settings
Events and snapshots