A data pipeline represents and analyze the job market in egypt showing its trends and needs
# π Egypt Job Market Intelligence Pipeline
> An automated, end-to-end data engineering pipeline that harvests job postings from **multiple Egyptian job posting websites**, processes them through a **Medallion Data Warehouse**, and powers a live **Power BI dashboard** with real-time market intelligence.
---
## π§° Tech Stack
| Layer | Technology |
|---|---|
| **Web Scraping** | Scrapy + Playwright (headless browser) |
| **NLP & Skill Extraction** | Rule-based Regex NLP (60+ skills) |
| **Cloud Database** | Supabase (PostgreSQL) |
| **Data Warehouse** | Bronze β Silver β Gold (Medallion Architecture) |
| **Normalization** | Custom Python NLP (`normalize.py`) |
| **Visualization** | Power BI (Star Schema, DAX measures) |
| **Automation** | GitHub Actions (scheduled every 2 days) |
---
## ποΈ Architecture & Data Flow
The pipeline follows a **Medallion Architecture**, moving data from raw extraction through progressive refinement into analytics-ready layers.
```
[Job Postings Websites]
β Scrapy + Playwright crawl
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β BRONZE LAYER β job_postings β Raw scraped data
β Auto-created by spider on first run β job_hash, date_first_seen,
β UPSERT via job_hash deduplication β date_last_seen, status
βββββββββββββββββββββββββββββββββββββββββββ
β normalize.py (auto-triggered after crawl)
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β SILVER LAYER β job_postings_clean β Normalized & enriched
β NLP classifies job family, seniority β job_family, seniority_level,
β Extracts city/governorate, salary, β city, governorate,
β education, and inferred skills β salary_min/max, education
βββββββββββββββββββββββββββββββββββββββββββ
β Analytical SQL Views
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β GOLD LAYER β Star Schema Views β Power BI consumption
β Fact table + 8 dimension/bridge views β DAX measures, KPIs,
β Live connection from Power BI β interactive dashboard β¦