## Inspiration

An elephant is killed every 15 minutes for its ivory. Cameroon lost over 60% of its forest elephant population in a single decade — not because rangers stopped caring, but because they were always one step behind. Poachers move at night, during high moon, through gaps in patrol coverage. Rangers react. We wanted to flip that.

We asked: what if rangers knew tonight's highest-risk zones before their shift started?

## What We Built

The Tembo Project is a real-time anti-poaching intelligence platform for Cameroon. It combines machine learning risk prediction, live GPS elephant tracking, real-time weather, and IBM watsonx.ai to give rangers a single command view — and a plain-English tactical briefing generated by AI before every patrol.

The map shows 20 named patrol zones across Cameroon's major parks — Waza, Kalamaloue, Benoue, Lobeke, Mt. Cameroon — color-coded by live risk score. Click any zone and you see exactly why it's flagged: patrol coverage gap, moon illumination, night activity window, ivory market demand index.

The collar tracks are real GPS data — six collars across five elephants from Movebank research archives, covering Cameroon's most at-risk parks. Rangers can see where the herds are and prioritize accordingly.

The AI briefing is generated live by IBM Granite-3 via watsonx.ai. Every shift, it synthesizes the current risk scores, weather, and lunar conditions into a tactical brief a field ranger can act on immediately — in plain English, not a dashboard.

## How We Built It

  • ML model: Random Forest (300 trees) trained on historical elephant poaching incident data, scoring a 20×20 grid across Cameroon hourly. Top features: patrol gap, moon phase, night activity window, market demand index.
  • Backend: FastAPI (Python) serving live predictions, GPS collar overlays, weather, and the IBM AI briefing endpoint.
  • IBM watsonx.ai: Granite-3-8b-instruct called via IBM Cloud API to generate ranger briefings from structured risk + ambient data.
  • Weather: Open-Meteo API for real-time temperature, rainfall, wind, and humidity.
  • Frontend: React + Vite with Leaflet maps. Risk zones, collar tracks, and the AI briefing all update live.

## Challenges

Getting the geography right was harder than expected. Our ML model and patrol zone data started life referencing South Africa's Kruger NP — we had to migrate the entire prediction grid, zone polygons, and mock data to Cameroon coordinates mid-build. Real GPS collar tracks from Mt. Cameroon extend into the Gulf of Guinea coastline, requiring coordinate filtering to keep the map clean.

Integrating IBM watsonx.ai required navigating IAM token auth, project-service association in IBM Studio, and building a fallback briefing system for when the API is unreachable during demos. The AI briefing is generated live by IBM Granite-3 via watsonx.ai. Every shift, it synthesizes the current risk scores, weather, and lunar conditions into a tactical brief a field ranger can act on immediately — in plain English, not a dashboard.

## How We Built It

  • ML model: Random Forest (300 trees) trained on historical elephant poaching incident data, scoring a 20×20 grid across Cameroon hourly. Top features: patrol gap, moon phase, night activity window, market demand index.
  • Backend: FastAPI (Python) serving live predictions, GPS collar overlays, weather, and the IBM AI briefing endpoint.
  • IBM watsonx.ai: Granite-3-8b-instruct called via IBM Cloud API to generate ranger briefings from structured risk + ambient data.
  • Weather: Open-Meteo API for real-time temperature, rainfall, wind, and humidity.
  • Frontend: React + Vite with Leaflet maps. Risk zones, collar tracks, and the AI briefing all update live.

## Challenges

Getting the geography right was harder than expected. Our ML model and patrol zone data started life referencing South Africa's Kruger NP — we had to migrate the entire prediction grid, zone polygons, and mock data to Cameroon coordinates mid-build. Real GPS collar tracks from Mt. Cameroon extend into the Gulf of Guinea coastline, requiring coordinate filtering to keep the map clean.

Integrating IBM watsonx.ai required navigating IAM token auth, project-service association in IBM Studio, and building a fallback briefing system for when the API is unreachable during demos.

## What We Learned

Conservation data is messy and geographically scattered. Making it useful in real time — for a ranger in the field, not a data scientist — requires as much UX work as it does ML work. The IBM Granite model was genuinely useful here: it turns structured numbers into language that a person can act on without reading a dashboard.

Built With

Share this project:

Updates