← back to all projects

Case Study · 2026

CropDx — Crop Disease Detector

A field-first crop disease detection assistant. A farmer uploads a leaf photograph and receives a confidence-rated disease prediction, plain-language explanations, and practical next steps — in 10 languages, with a voice guide, on a low-power Android device.

👤 Designer & Full-stack Engineer⏱ ~2 months📍 Live · field-tested
CropDx — Crop Disease Detector

CropDx — Crop Disease Detector — 2026

The Problem

Farmers were losing harvests to diseases they couldn't name

In Kwara State, a farmer watching maize leaves yellow doesn't have an agronomist on speed dial. By the time extension officers visit, the disease has spread. Existing AI solutions assumed conditions the field doesn't have: fast internet, new phones, English literacy, and constant connectivity.

  • ✗Diseases are identified late — after spread, when treatment is costliest
  • ✗Existing tools need stable internet and modern phones; villages have neither
  • ✗Language: the farmer speaks Yoruba or Hausa, not English
  • ✗Most ML demos are CNN-heavy — heavy, opaque, and unexplainable to the user

Why this solution

An inspectable model that runs anywhere and speaks the farmer's language

I deliberately chose a classical ML pipeline over a CNN — not because CNNs are bad, but because a 113-feature HSV/GLCM pipeline with an RBF SVM is small enough for low-power devices, fast enough on 2G connections, and its decisions can be inspected and explained feature by feature.

  • ✓Inspectability: feature-based model means we can point at WHAT triggered a diagnosis
  • ✓Offline-first: browser voice guide (SpeechSynthesis) needs zero AI credits or API keys
  • ✓10 languages: English, Hausa, Yoruba, Igbo, French, Arabic, Spanish, Portuguese, Swahili, Hindi
  • ✓Fail-closed billing: the Whop Field Pass integration degrades safely if Whop is down

How it works

01

Upload

Farmer photographs the affected leaf; image is validated and sent to the Flask API

02

Feature extraction

113 features pulled via HSV colour stats, GLCM texture and OpenCV morphology

03

Inference

Calibrated RBF SVM scores the disease with a confidence percentage

04

Guidance

SQLite-backed database returns symptoms + grouped, practical recommendations

05

Voice guide

Device SpeechSynthesis reads the result in the farmer's language — free, offline, no API

Challenges I faced

⚠️ Class imbalance & CNN cost

→ fixed: Chose a classical pipeline trained on PlantVillage — CPU-friendly training, no GPU required, inspectable output

⚠️ No internet in the field

→ fixed: Voice guide uses the browser/device SpeechSynthesis API with curated translations — no cloud dependency at all

⚠️ Trust — farmers won't act on a black box

→ fixed: Confidence-rated outputs with plain-language symptoms and grouped next steps, so the farmer can verify before acting

⚠️ Billing must never block diagnosis

→ fixed: Whop Field Pass is fail-closed server-side: if checkout is misconfigured, diagnosis still works

Results

10

languages in the voice guide

113

engineered image features

0

AI credits needed per diagnosis

2G

connection is enough

🧰 Built with

ReactTypeScriptVitePythonFlaskscikit-learnOpenCVSQLiteWhop API

💡 What it taught me

The best model isn't the most accurate one — it's the one a farmer will actually use. Constraints (no internet, low-end phones, local languages) made the engineering better, not worse.