# Ghana Earth Intelligence (GEI)
AI-powered geospatial intelligence platform for Ghana: mineral prospectivity + galamsey (illegal/environmentally destructive mining) monitoring, inspired by systems like Earth AI.
**Mission:** DISCOVER -> MONITOR -> VERIFY -> PROTECT -> RESTORE
> This project produces evidence and risk/prospectivity scores for **human verification**. It never issues automated legal or enforcement determinations. See `LIMITATIONS.md` and `PROJECT_AUDIT.md` before relying on any output.
## Current status: MVP + real database (Phase 1/2 of the roadmap)
The first working milestone, per the project spec:
> Given satellite imagery of a selected region in Ghana, detect significant land-use changes associated with possible mining activity and display those changes with an explainable risk score.
**Important:** the imagery is still **synthetic** (procedurally generated) -- see `app/synthetic_data.py` and `LIMITATIONS.md`. What's now real is the **database**: a Supabase Postgres + PostGIS project with the full schema from the spec, RLS security, and a persistence layer (`app/db.py`) that writes real rows for every alert and verification when configured.
## Quickstart
```bash
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # optional: add SUPABASE_SERVICE_ROLE_KEY to enable real persistence
uvicorn app.main:app --reload
```
Then visit `
localhost` for interactive OpenAPI docs.
Without any `.env`, the app runs entirely in-memory (no DB writes) -- useful for local dev and exactly what the test suite does. With `SUPABASE_URL` + `SUPABASE_SERVICE_ROLE_KEY` set (see `.env.example`), `GET /api/alerts` and `POST /api/verification` write real rows to Postgres, and each `Alert.persisted` field tells you whether it landed.
## Run tests
```bash
pytest -v
```
16 tests, all passing without any environment configuration.
## API surface (MVP)
| Endpoint …