Executive Summary
PlantCheck is an AI crop guard for smallholder farmers who grow under rain shelters. It watches the air around the crop around the clock, names a disease from one leaf photo, forecasts the conditions that let disease spread, and switches on ventilation and irrigation before the crop is lost.
We built it as Team McLovin for AI Hacker Dorm's Predictive Model track and placed third against university teams from across the country. An ESP32 reads the sensors, a Flask API logs every reading and runs the forecast model, and a web dashboard turns it all into warnings and controls on a laptop or phone. I led the dashboard and wrote most of the API.
Client & Challenge
We designed around one persona: Mr Kumar, a smallholder farmer who grows his crops under a rain shelter in Malaysia. Every season he faces the same three problems.
1. Sudden heat and drought
A hot, dry spell can stress and wilt his plants within days, before he has time to react.
2. He spots disease too late
He checks his plants by eye, so disease is found after it has already spread.
3. He doesn't know how to treat it
Even when he finds a sick plant, he isn't sure which disease it is or how to treat it.
The stakes are high: pests and plant diseases destroy up to 40% of global crop production each year, and diseases alone cost over US$220 billion (FAO, 2021). What Mr Kumar needs is an early warning, clear advice, and a farm that reacts on its own.
Our Approach & Solution
We set three goals, one for each of Mr Kumar's problems, and brought them together on one dashboard that goes from warning to action.
Automation
Irrigation and ventilation run on their own, so the farm reacts even when the farmer is away. In Automate mode the fan switches on at 32°C or 80% humidity, and the plant is watered for a minute once it reaches 33°C.
The farmer can still take over by hand. Each command goes from the dashboard to the API, and a Python bridge passes it to the ESP32's fan relay and valve within seconds.
Environment Prediction
A gradient-boosting model reads the last 6.5 hours of sensor data and forecasts temperature, humidity and rain an hour ahead. It also gives the chance of heat or humidity stress in the next 3 hours, so the farmer can act before conditions turn risky.
The dashboard pairs this with the official MET Malaysia forecast from the data.gov.my weather API.
Disease Detection
The farmer snaps a leaf photo. An AI vision model (Qwen 27B) names the disease, rates how severe it is and explains what to do next. The request goes through a server-side proxy so the API credential never reaches the browser, and every scan is saved with its photo.
My Contribution
- Built the dashboard's Overview page: plant health at a glance, live temperature, humidity and rain cards, the weather forecast, and the fan and irrigation controls.
- Built the Three.js plant scene, which shows the plant as healthy, sick or withered and follows the live weather and time of day.
- Wrote most of the Flask API: storing readings in SQLite, serving history and report data, relay control, and saving disease scans with their photos.
- Connected a teammate's forecast model to the API and the Prediction page.
- Built the Simulation page, which runs the ESP32, bridge and backend in software with five 6-hour test scenarios, so the dashboard can be demoed on stage without the hardware.
Impact & Results
3rd Place, AI Hacker Dorm
Placed third in the Predictive Model track against university teams from across the country
≈RM26k per Hectare
Our estimate of what a farmer saves each season by preventing even half of the usual crop loss
From Warning to Action
Sensor readings, forecasts and disease scans lead straight to fan and irrigation control on one dashboard
Live & Demo-Ready
Deployed at plantcheck.duckdns.org, with a simulation mode that works without the physical prototype
The Team
Built with Team McLovin. Teammates wrote the ESP32 firmware, trained the forecast model and designed the mobile layout. I led the dashboard and the backend API that ties everything together.