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
Developer builds Python job aggregator that combines HH, Habr Career, and GeekJob
Source: Habr AI. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceHabr AI ↗
Editor-in-Chief
Key metric #1Data sources — HH, Habr Career, GeekJob, and Telegram channels
Key metric #2Implementation — a Python script
Key metric #3Key feature — automatic removal of duplicate listings

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.

Story

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

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Unified AI Workspace · Nomad

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.

Try Nomad AI →Launch Nomad Agent
What do you think?
Loading comments…