Skip to content
Ahmad Nasrullah
All work

AgriTech Client · Agriculture · 🇵🇰 Pakistan

Farmers get a diagnosis from a phone photo in seconds, offline, instead of waiting days for a vet.

A custom image classifier covering six-plus common poultry diseases, running on the device so it works where there is no signal.

Engagement
Fixed scope · 6 weeks
Year
2024
Industry
Agriculture
Services
Computer vision, Mobile
Training results for the poultry disease classification model

The situation

Smallholder poultry farmers could not reach a vet quickly enough to matter. By the time a diagnosis arrived, a flock could already be lost, and the difference between acting on day one and day four was the difference between a treatable outbreak and a write-off.

The constraint that shaped everything: the people who needed this were standing in a shed on a low-end Android phone, frequently with no usable data connection.

What we built

A classifier trained on a curated, annotated dataset of healthy and diseased birds, optimised until it ran on the device rather than in a datacentre, wrapped in an app that does one thing — take a photo, get a likely diagnosis and a recommended next step.

Model training and validation curves for the disease classifier
The field app showing a diagnosis and recommended next steps after a photo
Trained on annotated field photography; deployed to run entirely on the handset.

What we deliberately left out

No cloud inference. The obvious architecture was an API call. It was also useless in a shed with no signal, so the model was shrunk until it ran locally instead.

No treatment prescribing. The app names a likely condition and tells the farmer what to do next, including when that is "call a vet now." It does not prescribe.

No account system in v1. Nothing to sign up for. Removing the login removed the largest reason people abandoned the app in testing.

The result

6+
Disease classes covered
On-device
Inference
None
Connection required

Predictions were validated against vet diagnoses before release. The app runs offline on low-end Android hardware, which is precisely where the problem is.

Built with

  • Python
  • TensorFlow
  • TFLite
  • Flutter

Have something like this?

Tell me what the problem is on a 30-minute call. If it's a fit, discovery starts with a written scope and a fixed number — not an estimate that moves.

Replies within 24 hours