"AI-powered voice calls to collect real-time data from cocoa farmers in Cameroon β built with CALL-E"
# π± AgroVoice
**AI-powered voice calls to collect real-time harvest data from cocoa farmers in Cameroon β no smartphone, no app, just a phone call.**
Built for the **CALL-E: Your Code Is Calling** hackathon.
---
## The problem
Most cocoa farmers in Cameroon don't own smartphones and have no realistic way to fill out a digital form. But nearly all of them own a basic phone. AgroVoice calls them directly, in French with an authentic Bulu-language greeting, asks three simple questions, and turns their spoken answers into clean, structured, analysis-ready data β automatically.
## How it works
```
Farmer phone number
β
βΌ
CALL-E places an AI voice call (French + Bulu greeting/closing)
β
βΌ
CALL-E extracts a NATIVE structured result, validated against
a strict JSON schema (village, harvest_bags, logistics_issues,
call_outcome) β no separate LLM guesswork needed
β
βΌ
SQLite (persistent storage) βββΊ Excel report + aggregated stats
```
### Key design decision: honest data, always
Earlier prototypes of this pipeline hardcoded fallback values (a fake village name, a fake bag count) whenever extraction was ambiguous. This version **never fabricates data** β if CALL-E cannot produce a schema-valid result, the record is explicitly flagged `NOT_EXTRACTED` rather than silently guessed.
## Tech stack
- **Python 3** β pipeline orchestration
- **CALL-E** REST API β AI voice calling with native structured extraction (`result_schema`)
- **SQLite** β persistent local storage
- **pandas** β data aggregation & Excel export
## Getting started
### 1. Prerequisites
- Python 3.9+
- A CALL-E account with API access (sign up)
- Your CALL-E API key from
dashboard.heycall-e.com
### 2. Install dependencies
```bash
pip install requests pandas openpyxl
```
### 3. Set your API key
**Never hardcode your API key.** Set it as an environment variable instead:
```bash
# Windows (CMD)
set CALLE_API_KEY=your_real_key_here
# Windows (PowerShell)
$env:CALLE_API_KEY="your_real_ β¦