Developer builds Python job aggregator that combines HH, Habr Career, and GeekJob
A Habr author explained that he got tired of manually checking five or more job sites every morning, so he wrote his own aggregator in Python. The tool collects listings from HH, Habr Career, GeekJob, and Telegram channels, automatically removes duplicates, and sends a digest straight to Telegram. The project's code is open source, so other developers can reuse it.
AI-processed from Habr AI; edited by Hamidun News
A developer who got tired of manually checking five or more job sites every morning wrote his own job-search aggregator in Python and published the source code openly on Habr.
How the aggregator works
The tool addresses a common pain point for tech job seekers: relevant openings are scattered across a dozen different sources. These range from large aggregators like HH.ru to specialized sites like Habr Career and GeekJob, plus numerous niche Telegram channels where recruiters and HR staff post openings directly. Checking all of these sources by hand every day eats up time, and many listings appear on several sites at once.
- Data sources — HH, Habr Career, GeekJob, and Telegram channels
- Implementation — a Python script
- Key feature — automatic removal of duplicate listings
- Delivery — Telegram notifications
- The project's source code is open
Why tools like this keep appearing
Merging several job sources into a single feed isn't a new idea. Job boards have offered built-in subscriptions with similar features for years, as have third-party services and Telegram bots for the job market. But most sites have no official public API, or offer only a heavily restricted one. So developers who want flexible, customized filtering and deduplication logic usually write their own scripts, relying on official APIs where they exist and scraping public pages where they don't.
Publishing the source code openly is standard practice for personal tools like this on Habr. Other developers don't have to write integration logic for well-known sources from scratch; they can adapt the existing codebase to their own stack and choice of sites.
Why deduplication is the hardest part
Merging several job sources looks simple at first glance, but in practice the hardest part of these aggregators isn't collecting data — it's normalizing it afterward. Employers often post the same opening on several sites with different titles, slightly different job descriptions, or differently formatted salary ranges, and recruiting agencies frequently duplicate a single position under different company names. To filter out these duplicates, developers have to compare semantic similarity rather than exact strings — using keywords, company names, and matching salary ranges. That goes beyond simple scraping and calls for more flexible matching logic.
Delivering results through Telegram is also a deliberate choice: the messenger has become the de facto main channel for the Russian IT job market, where many openings are already posted through niche channels and bots, not just through traditional job boards.
What it means
This story is a small but telling example of how job seekers and developers tackle the fragmented job market themselves rather than waiting for big players to build a unified aggregator. Until such a universal solution exists, niche open source projects like this one will keep filling the gap for individual users.
- Nov 1, 2026Adobe's EditAgent judge picks a usable edit 81.3% of the time, versus 74.8% for EditScore
- Nov 1, 202616 models tested on 7 search tools: Exa averaged 10.5 out of 14, SearXNG about 3
- Nov 1, 2026MoneyGate safety layer blocked all 42 fraudulent requests to local AI models
- Nov 1, 2026Hugging Face's BERT Tokenizer Gets a 50x Speedup by Skipping Needless Work on ASCII
Key Questions Answered
How the aggregator works?
The tool addresses a common pain point for tech job seekers: relevant openings are scattered across a dozen different sources. These range from large aggregators like HH.ru to specialized sites like Habr Career and GeekJob, plus numerous niche Telegram channels where recruiters and HR staff post openings directly. Checking all of these sources by hand every day eats up time, and many listings appear on several sites at once. Data sources — HH, Habr Career, GeekJob, and Telegram channels Implementation — a Python script Key feature — automatic removal of duplicate listings D
Why tools like this keep appearing?
Merging several job sources into a single feed isn't a new idea. Job boards have offered built-in subscriptions with similar features for years, as have third-party services and Telegram bots for the job market. But most sites have no official public API, or offer only a heavily restricted one. So developers who want flexible, customized filtering and deduplication logic usually write their own scripts, relying on official APIs where they exist and scraping public pages where they don't. Publishing the source code openly is standard practice for personal tools like this on
Why deduplication is the hardest part?
Merging several job sources looks simple at first glance, but in practice the hardest part of these aggregators isn't collecting data — it's normalizing it afterward. Employers often post the same opening on several sites with different titles, slightly different job descriptions, or differently formatted salary ranges, and recruiting agencies frequently duplicate a single position under different company names. To filter out these duplicates, developers have to compare semantic similarity rather than exact strings — using keywords, company names, and matching salary ranges
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
The AI world, distilled — once a week
Seven stories that actually mattered, hand-picked. No noise, no reposts, no press releases.
Done! Check your inbox for a confirmation.