Built a fully autonomous AI agent that scrapes, scores, and generates personalized applications — all controlled via Telegram.
A Python-based autonomous application agent that eliminates the terminal-CDE grind of manual job applications. The bot handles the entire heavy-lifting pipeline — scraping, scoring, bullet selection, cover letter generation, and PDF rendering — while the user retains a lightweight manual upload step where ATS platforms close the loop. The result: time-to-apply dropped from 2 hours to under 20 minutes.
The Challenge
Job hunting is notoriously time-intensive. Modern ATS portals rarely expose APIs for end-to-end automation. Customizing CVs, rewriting cover letters, and manually rendering LaTeX PDFs for each application creates a repetitive bottleneck that makes scaling beyond a handful of applications per week impractical.
The Solution
Built an autonomous Telegram-controlled agent that scrapes jobs (Jobspy), scores them by keyword fit (0–10), dynamically selects 8–12 of 43 competence bullets, and uses an LLM to write a language-aware cover letter. A Tectonic LaTeX pipeline renders the final personalized PDF. User reviews and approves via 1-click Telegram interactions.
Outcomes
Time-to-apply collapsed from ~2 hours to ≤20 minutes per position.
Average 8 hours of repetitive work saved per week.
Throughput of 4+ highly personalized applications per week.
Quality at 90–95% of a fully manual application — at a fraction of the time cost.
Context — Why It Mattered
Job hunting is notoriously time-intensive. Modern application portals (ATS) rarely expose end-to-end automation via email or API. Customizing CVs, writing cover letters, and manually uploading documents for each role creates a repetitive administrative bottleneck that drains energy better spent on actual work.
Constraints
Corporate ATS platforms (Stepstone, LinkedIn Easy Apply, company career portals) do not offer open APIs for submitting applications. 100% end-to-end automation is blocked by design. The system had to operate within this reality: automate everything upstream of the final manual upload.
My Role
Sole architect and developer across the entire stack: Python bot framework (aiogram), LLM integration (OpenAI / Anthropic), job scraping pipeline (Jobspy), LaTeX rendering (Tectonic), SQLite persistence, Telegram UX.
Approach & Process
1) Built a Telegram bot as the control plane — no heavy web app, just inline keyboards and 1-click approvals for speed. 2) Integrated Jobspy to scrape Stepstone, LinkedIn, and other boards. 3) Created a two-stage scoring pipeline: keyword match filter (score 0–10) followed by LLM-based semantic evaluation. 4) Maintained a pool of 43 competence bullets covering every conceivable project/tech/domain; the system dynamically selects the 8–12 most relevant ones per role. 5) An LLM writes the cover letter, auto-detecting the posting language (DE/EN) and matching tone. 6) A Tectonic LaTeX pipeline renders the final personalized CV + cover letter as a single polished PDF.
What I Learned
Chasing 100% automation is a trap when the platform layer doesn't cooperate. The real leverage is at the boundary: automate the hard parts (search, evaluation, generation), and accept the last mile of manual upload as a tax you happily pay. The product mindset — optimize for throughput and quality per unit effort — beats perfectionism every time.
— Daniel Peters

