Job Market Analyzer for Career Readiness in South Africa (Streamlit dashboard, notebook pipeline)
# Job Market Analyzer for Career Readiness in South Africa
A transparent, explainable capstone system that analyses the South African IT
job market and measures **how career-ready a CV is** against it: candidate-job
matching, a fully inspectable career-readiness score, skill-gap analysis with
honest next steps, and a multi-page analytics dashboard.
The system is built from scratch for this capstone. Six public GitHub repos
(Resume-Job matchers) were studied for *technical inspiration only*; no code was
copied. The full idea-by-idea analysis is in `REPO_STUDY.md`.
---
## Quick Start
Python 3.12 is required. The pinned environment is `requirements.txt`.
```powershell
# 1. create + activate a venv with the pinned requirements
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# 2. build everything from scratch (wipe artifacts, run nb01 -> nb08 fresh)
python scripts/run_pipeline.py
# 3. run the unit tests
python -m pytest tests/ -q
# 4. launch the multi-page dashboard
streamlit run app/app.py # from the project root
```
The dashboard opens at with the pages **Home**,
**Analyze CV**, **Market Trends** and **About / Ethics**.
### Deploy to Streamlit Community Cloud
1. Push this folder to GitHub (no git installed? use
`scripts/push_to_github.py` with `GITHUB_TOKEN`, `GITHUB_OWNER`,
`GITHUB_REPO` env vars — the script pushes via the GitHub REST API).
2. Open → **Create app** → paste the repo URL →
main file path **`app/app.py`** → Deploy.
3. Wait for the build (~1–3 min). Pinned versions come from `requirements.txt`;
the pre-computed artifacts in `artifacts/` and `data/` are committed so no
pipeline run happens on the cloud.
---
## Project structure
```
5th project/
├── app/ # multi-page Streamlit dashboard
│ ├── app.py # Home
│ ├── dashboard_utils.py # shared artifact/engine loading
│ └── pages/ # 1_Analyze_CV, 2_Market_Trends, 3_About_Ethics
├── notebooks/ …