Logo Lanfrica

JhonsonAyalew/ethiopian-jobs-bot

Domaine:

socioeconomic

Type de record:

software
Créateur:
Jho
Hôte:
Automated job aggregator bot for the Ethiopian job market. Scrapes EffoySira, GeezJobs, and HarmeeJobs, extracts qualifications using Groq AI, deduplicates with fingerprinting, and posts curated listings to Telegram. Built with Python, Supabase, and python-telegram-bot. # 🇪🇹 Ethiopian Jobs Aggregator Bot **An intelligent, automated job aggregation bot for the Ethiopian job market.** Scrapes multiple job sites, extracts qualifications with AI, and posts curated listings to a Telegram channel. --- ## ✨ Features - **🔍 Multi-Source Scraping** — Aggregates jobs from EffoySira, GeezJobs, and HarmeeJobs - **🤖 AI Qualification Extraction** — Uses Groq LLM to extract concise education and experience requirements from raw job descriptions - **🧠 Smart Deduplication** — Multi-level fingerprinting (strong / medium / weak) prevents duplicate posts across scraping cycles - **📱 Telegram Integration** — Posts beautifully formatted job cards with inline buttons to your channel automatically - **🗄️ Supabase Storage** — Persistent PostgreSQL backend for jobs, AI cache, and cycle statistics - **♻️ Cycle-Based Scheduling** — Runs autonomously on a configurable interval (default: every 2 hours) - **🔧 Debug Mode** — Single-cycle dry-run for safe testing before deploying --- ## 🏗️ Project Structure ``` job_bot/ ├── main.py # Entry point — bootstraps and runs the bot │ ├── config/ │ ├── settings.py # Configuration loader (env vars + YAML) │ └── sites.yaml # Per-site scraping configuration │ ├── core/ │ ├── bot.py # Main orchestrator (scrape → dedup → AI → post) │ ├── deduplicator.py # Duplicate detection engine │ ├── fingerprint.py # Multi-strategy fingerprint generator │ ├── qualifier.py # AI-powered qualification extractor │ └── telegram.py # Telegram message builder & sender │ ├── scrapers/ │ ├── base.py # Abstract base scraper class │ ├── effoysira.py # EffoySira.com scraper │ ├── geezjobs.py # GeezJobs.com scraper │ └── harmeejobs.py # HarmeeJobs.com scraper │ ├── storage/ │ ├── supabase_manager.py # Supabase CRUD operations │ ├── gist.py # (Le …