# Ethiopian Medical Telegram API
An end-to-end data product that scrapes, processes, analyzes, and exposes insights from Ethiopian medical product discussions on public Telegram channels.
All Tasks (Task 0–5) Completed
Includes scraping, dbt modeling, YOLO image enrichment, FastAPI analytics, and Dagster orchestration.
---
## Project Overview
This project enables medical professionals, analysts, and policy-makers to:
- Scrape and collect messages and images from Ethiopian Telegram medical channels
- Structure and model the data using a star schema with dbt
- Apply YOLOv8 object detection on images
- Expose analytics via a FastAPI-based web API
- Orchestrate the entire pipeline with Dagster for scheduling and monitoring
---
## Tech Stack
| Area | Tools/Tech |
| ----------------- | ----------------------- |
| Scraping | Telethon (Telegram API) |
| Data Storage | JSON, PostgreSQL |
| Data Modeling | dbt |
| Image Enrichment | YOLOv8 (Ultralytics) |
| API Layer | FastAPI, Uvicorn |
| Orchestration | Dagster |
| CI/CD | GitHub Actions |
| Containerization | Docker |
---
## Project Structure
```plaintext
ethiopian-medical-telegram-api/
├── data/ # Raw JSON, media, YOLO outputs
│ ├── raw/
│ └── yolo_outputs/
├── dbt/ # dbt models (staging + marts)
│ ├── models/
│ │ ├── staging/
│ │ └── marts/
│ └── schema.yml
├── src/
│ ├── api/ # FastAPI app (main, crud, schemas, db)
│ ├── enrich.py # YOLO detection code
│ ├── scrape.py # Telegram scraper
│ ├── load.py # Loader to PostgreSQL
├── dagster_pipeline/ # Dagster job, ops, schedule
├── tests/ # Unit tests
├── docs/img/ # Diagrams and visuals
├── Dockerfile
├── docker-compose.yml
├── .env
├── requirements.txt
├─ …