Wazobia Agent is a production-grade FastAPI application engineered for RAG-driven institutional query and voice operations in Nigeria/Africa.
wazobia-agent/ (wazobia-rag/)
├── api/ # FastAPI Application
│ ├── routers/ # API Route Controllers
│ ├── dependencies.py # DI Providers
│ └── main.py # Application Entrypoint
├── agents/ # AI Orchestrator & RAG Agents
├── voice/ # Audio, Speech-To-Text & Text-To-Speech
├── ingestion/ # Scrapers, Cleaners, Chunkers & Embeddings
├── store/ # Database clients (Postgres, Redis, Qdrant)
├── registry/ # Institutional definitions
├── config/ # Settings & JSON Logging Config
└── tests/ # Testing Suite
Ensure you have the following installed on your system:
cp .env.example .env
.env to configure database credentials, API keys (e.g., OPENAI_API_KEY, COHERE_API_KEY), and set ADMIN_API_KEY to the bcrypt hash of your admin secret.docker compose up -d
ScrapeJob and QueryLog):
uv run alembic upgrade head
Spin up the FastAPI API server:
uv run uvicorn api.main:app --host 0.0.0.0 --port 8000 --reload
Spin up the Celery worker and Celery Beat scheduler in separate terminal sessions (ensure Redis is running):
# Run Celery Worker
uv run celery -A ingestion.tasks worker --loglevel=info -c 4
# Run Celery Beat
uv run celery -A ingestion.tasks beat --loglevel=info
To trigger your first scraping and ingestion run for a registered institution (e.g., GTBank), invoke the admin endpoint:
curl -X POST http://localhost:8000/v1/institutions/gtbank/ingest \
-H "X-API-Key: test-admin-secret-key-123"
Execute the test suite with coverage reporting:
uv run pytest tests/ -v --cov
Wazobia Agent is a production-grade FastAPI application engineered for RAG-driven institutional query and voice operations in Nigeria/Africa.
wazobia-agent/ (wazobia-rag/)
├── api/ # FastAPI Application
│ ├── routers/ # API Route Controllers
│ ├── dependencies.py # DI Providers
│ └── main.py # Application Entrypoint
├── agents/ # AI Orchestrator & RAG Agents
├── voice/ # Audio, Speech-To-Text & Text-To-Speech
├── ingestion/ # Scrapers, Cleaners, Chunkers & Embeddings
├── store/ # Database clients (Postgres, Redis, Qdrant)
├── registry/ # Institutional definitions
├── config/ # Settings & JSON Logging Config
└── tests/ # Testing Suite
Ensure you have the following installed on your system:
cp .env.example .env
.env to configure database credentials, API keys (e.g., OPENAI_API_KEY, COHERE_API_KEY), and set ADMIN_API_KEY to the bcrypt hash of your admin secret.docker compose up -d
ScrapeJob and QueryLog):
uv run alembic upgrade head
Spin up the FastAPI API server:
uv run uvicorn api.main:app --host 0.0.0.0 --port 8000 --reload
Spin up the Celery worker and Celery Beat scheduler in separate terminal sessions (ensure Redis is running):
# Run Celery Worker
uv run celery -A ingestion.tasks worker --loglevel=info -c 4
# Run Celery Beat
uv run celery -A ingestion.tasks beat --loglevel=info
To trigger your first scraping and ingestion run for a registered institution (e.g., GTBank), invoke the admin endpoint:
curl -X POST http://localhost:8000/v1/institutions/gtbank/ingest \
-H "X-API-Key: test-admin-secret-key-123"
Execute the test suite with coverage reporting:
uv run pytest tests/ -v --cov