Logo Lanfrica

Kaleab85/job_feed

Domaine:

socioeconomic

Type de record:

software
Créateur:
Kal
Hôte:
An automated Telegram job matching bot and channel parser designed for Career Bridge Ethiopia. Automatically ingests job postings from a Telegram channel and delivers filtered, preference-based digests to job seekers. # Career Bridge Ethiopia — Job Alert Bot (Telegram MVP) A working prototype of a Telegram bot that onboards job seekers, collects their preferences, and pushes matched job digests on a daily or weekly schedule — built for low-data, mobile-first usage. ## What's included | File | Purpose | |---|---| | `bot.py` | Main bot: onboarding flow, commands, digest sending, scheduling | | `matching.py` | Rule-based matching engine that scores jobs against a user's preferences | | `storage.py` | Simple JSON file storage for users + sent-history (swap for a real DB later) | | `jobs_sample.json` | 10 sample Ethiopian job listings to test matching against | | `requirements.txt` | Python dependencies | ## Quick start 1. **Create a bot on Telegram** - Message @BotFather on Telegram - Send `/newbot`, follow the prompts, and copy the token it gives you 2. **Install dependencies** ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` 3. **Set your bot token** ```bash export TELEGRAM_BOT_TOKEN="123456:ABC-your-token-here" ``` 4. **Run it** ```bash python bot.py ``` 5. Open Telegram, find your bot, and send `/start`. ## Try it out - `/start` — onboarding: pick sectors, location, role type, level, and how often you want updates - `/mydigest` — get matched jobs immediately, on demand - `/search accountant` — free-text search across all listings - `/preferences` — see what's saved - `/pause` / `/resume` — control scheduled sends - `/unsubscribe` — delete your profile ## How matching works `matching.py` scores every job against a user's saved preferences: sector match is weighted highest (and acts as a hard filter — users won't see jobs totally outside their chosen sectors), then location, role type, and experience level add to the score. The 👍/👎 buttons on each job are wired up and logged (`feedback_handler` in `bot.py`) — the natural next step is turning that feedback into a per-user affinity score that feeds back into the matching function. …