AI career-opportunity Telegram bot for the Ethiopian market (English + Amharic) — LLM matching pipeline, SQLAlchemy, Alembic
# JobBot — AI Career Opportunity Assistant (Telegram)
A production-ready Telegram bot that discovers jobs, internships, freelance and
remote opportunities from job sites, RSS feeds, and public Telegram channels;
normalizes every posting with an LLM into a clean card; matches it to each
user's profile with an explainable score; and offers per-opportunity AI actions
(why match, missing skills, cover letter, interview prep).
Initial market: **Ethiopia** (English + Amharic postings). Architecture is
data-driven so new countries, sources, and categories (scholarships, training,
events) need no schema changes.
## Features
- **Multi-source ingestion** — config-driven scrapers (HTML listings, JSON APIs, RSS) plus a Telethon reader for public Telegram channels; new sources are rows in a table, not code.
- **LLM normalization** — every raw posting is extracted into a structured opportunity card (title, skills, level, deadline, salary) via a single `llm.complete()` façade.
- **Explainable matching** — rule-based scorer (0–100) with machine-readable reasons; the "why you" line on every card is rendered from those reasons, zero LLM cost.
- **Per-opportunity AI actions** — why match, missing skills, cover letter, interview prep — gated by per-user quotas (referral tiers) and a global daily USD budget.
- **Bilingual** — English + Amharic postings, with Gemini Flash routed for Amharic.
- **Admin dashboard** — FastAPI app for sources, users, broadcasts and pipeline health.
## Tech highlights
- **Alembic migrations** with a data-driven schema: new countries, sources and categories need no schema changes.
- **Explainable, deterministic matching** — every score decomposes into factors like `{"factor": "skills", "hit": ["python"], "pts": 18}`, so recommendations are auditable.
- **LLM cost engineering** — response caching, provider/key rotation, task-based model routing, per-user quotas and a hard global daily budget.
- **aiogram 3 FSM onboarding** with webhook and long-pollin …