
ApplyRadar
STRATEGY
WEB DESIGN
Overview
ApplyRadar is a full-stack AI-powered job application automation platform I designed and built solo as a founder-led product. It reduces the time spent on job applications from hours to minutes by combining intelligent CV parsing, AI-driven job matching, automated cover letter generation, and a Chrome extension that auto-fills employer application forms across any job site.
Problem
Job hunting is one of the most repetitive, demoralizing workflows a person goes through. The average job seeker spends 3-5 hours per application — rewriting cover letters, copy-pasting profile details into ATS forms, tracking applications in spreadsheets, and losing context between dozens of open tabs. The core insight: 80% of this work is identical every time, and AI can handle it.
What I Built
A production-grade platform with four interconnected layers:
1. Intelligent Profile Engine Users upload their CV (PDF, DOCX, or plain text). The backend parses it using PyPDF2 and python-docx, then sends the extracted text to Google Gemini which returns a structured JSON profile — name, experience, skills, education, links, summary. This profile becomes the source of truth for everything downstream.
2. Job Discovery & Matching Pipeline A background scheduler (APScheduler) continuously ingests jobs from multiple sources — Bundesagentur für Arbeit, Greenhouse, Lever, Ashby, Workable, Adzuna, RemoteOK, Remotive, and The Muse — normalising them into a unified schema and upserting into MongoDB to avoid duplicates. When a user requests AI matching, Gemini scores each job against their profile, identifies skill gaps, and surfaces the most relevant opportunities with reasoning.
3. Application Workflow For jobs on Greenhouse, Lever, and Ashby — the three major ATS platforms with public submission APIs — ApplyRadar submits the application directly from the backend, attaching the user's CV as a file. No form filling, no redirect. For all other job sites, a Chrome extension (Manifest V3, TypeScript, Vite) scrapes the employer's form, sends the field structure to the backend, and Gemini semantically maps each field to the user's profile — filling the form automatically and highlighting low-confidence fields for review.
4. Admin & Subscription Infrastructure A full RBAC system separates admin and user roles. Admins manage job sources, monitor ingestion stats, and view platform analytics. The subscription model (Free / Pro / Max at €0/€9/€19) is driven by a configuration file with FastAPI middleware enforcing feature gates per tier.
Tech Stack
Layer | Technology |
|---|---|
Frontend | React, TypeScript, Tailwind CSS, shadcn/Radix UI |
Backend | Python, FastAPI, Motor (async MongoDB) |
Database | MongoDB |
AI | Google Gemini |
Auth | JWT, bcrypt |
Resend | |
Extension | Chrome MV3, TypeScript, Vite |
Document parsing | PyPDF2, python-docx |
Job scheduler | APScheduler |
Payments (planned) | Stripe with SEPA Direct Debit |
Key Engineering Challenges
The Ghost Form Problem The initial apply flow was a generic internal form that tracked applications but never reached employers. The fix required three layers: direct ATS API submission for Greenhouse/Lever/Ashby, a Chrome extension for everything else, and CV file storage for API attachments — each solving a different segment of the job posting landscape.
Mixed Content Blocking The Chrome extension needs to call a localhost backend from HTTPS job sites — a mixed content violation the browser blocks at the content script level. The fix was routing all API calls through the background service worker instead, which isn't subject to the same CORS and mixed content restrictions.
ATS Diversity Hundreds of companies use different form structures. Rather than hardcoding field mappings, the extension scrapes form field metadata (labels, names, placeholders, aria-labels) and sends the structure to Gemini, which semantically maps each field to the user's profile. Specific adapters for Greenhouse, Lever, and Ashby handle their predictable DOM structures first, with the generic AI approach as fallback.
Job Deduplication at Scale Multiple sources often list the same job. The ingestion pipeline uses a compound source + external_id upsert strategy in MongoDB, ensuring jobs are updated rather than duplicated across scheduler runs.
Results & Scope
Full-stack solo build from zero to production-ready
15+ integrated job sources across EU and global markets
Chrome extension covering any job application form on the web
Complete admin panel with ingestion monitoring and analytics
Subscription-ready architecture with per-feature tier enforcement
Designed specifically for the German/EU job market with Bundesagentur integration
What I Learned
Building ApplyRadar forced me to think in layers — what can be solved cleanly with an API, what requires browser-level access, and what requires AI to handle variability at scale. The biggest lesson was that the hard problems in automation aren't the AI parts — they're the infrastructure around it: deduplication, session management across contexts, mixed content restrictions, and making a system that degrades gracefully when one layer fails. Shipping this solo also reinforced how much product thinking matters before writing code — the ghost form problem wasn't a bug, it was a fundamental architecture decision I had to rethink mid-build.


