Case study
PlantDoctor: Building a Vision-Powered Plant Companion App
AI Powered Plant Detection App
Client
Personal project / founder platform
Role
Lead full-stack mobile developer
Timeline
About 4 months · 2025–2026
Platform
iOS & Android
Framework
Flutter + GPT-4 Vision
Category
AI / Computer Vision, Lifestyle
4 mo
Idea → dual-platform build
1 photo
Species + health entry point
3 in 1
ID · disease · care loop
Product tour
Drag or swipe through the camera scan, result, care, disease, and pest flows.
In-app screens · iPhone
Drag or swipe to browse screens
Camera scan → identify result → care guide → disease & pest checks — the full vision-care loop on iOS-sized frames.
Overview
Most plant apps do one thing: tell you a name. Point a camera at a leaf, get a species label, done. That's useful for about five seconds — right up until the plant's leaves start yellowing and the app has nothing left to say.
PlantDoctor was built to go further. It's a vision-AI plant companion that identifies species from a single leaf photo, flags diseases and pests before they spread, and follows up with real care guidance — watering schedule, light needs, fertilizer timing, and whether the plant is safe around pets. Identification is the entry point. Ongoing care is the actual product.
The problem
Plant owners — especially first-time ones — don't fail because they don't care. They fail because plant care advice online is generic, scattered, and rarely matches the specific plant on their windowsill. A quick search for "why are my plant's leaves turning yellow" returns a dozen causes; without the exact species, none of that advice is reliable.
- People couldn't identify half the plants they already owned, let alone new ones at a nursery
- Early signs of disease or pest damage went unnoticed until the plant was already in serious trouble
- Pet owners had no fast way to check whether a plant was toxic to cats or dogs before bringing it home
- The product needed identification, health monitoring, and ongoing care in one flow — not three bolted-on features
Why Vision AI, Not a Static Database
Faster time-to-value
Identification in seconds from a photo beats manual search every time — especially when the user does not already know the plant's name.
One pipeline for health signals
Disease and pest detection needed vision anyway. Extending the same classification pipeline to flag common issues was a natural next step, not a separate system.
Lower friction, more usage
An earlier static-database prototype technically worked, but put all the effort on the user. Vision AI flips that: take a photo, get a answer, then open the care guide.
Architecture & tech stack
Species identification runs through a cloud vision model (GPT-4 Vision) for higher accuracy across a large species set, while basic image quality checks — blur detection, lighting, and leaf-in-frame confirmation — run on-device first. Users get instant retake guidance before a photo is sent to the server, which protects both accuracy and API cost. Once a plant is confirmed, care content, toxicity flags, and reminder schedules attach to that plant profile so the product keeps delivering after the first scan.
| Category | Tools / tech |
|---|---|
| Mobile framework | Flutter (iOS & Android) with selective SwiftUI platform polish where needed |
| Vision AI / ML | GPT-4 Vision API for species, disease, and pest interpretation from leaf photos |
| On-device checks | Image preprocessing plus quality gates (blur, lighting, leaf-in-frame) before cloud inference |
| Backend | Cloud functions for care-guide delivery, user plant profiles, and scan history |
| Database | Cloud document store for plant profiles, care schedules, and photo history |
| Push notifications | Firebase Cloud Messaging for watering and fertilizer reminders |
| Image handling | Cropping and lighting normalization on-device to stabilize phone-camera variance |
| CI / CD | Codemagic / Fastlane-style store release pipelines for dual-platform shipping |
| Category | AI-powered plant identification & care |
Key features
Snap-to-identify
Point the camera at a leaf and get the species name, confidence context, and a short profile — no manual search required.
Engineering challenges & solutions
Solution
Added on-device pre-checks that flag blurry or poorly lit photos before submission, with simple prompts like "move closer" or "more light needed." Cleaning the input before cloud inference measurably improved downstream accuracy on messy real-world camera shots.
Results
- Shipped a dual-platform Flutter companion covering identify, disease, pest, care, and profile tools in one product loop
- Moved from a static-search prototype to photo-first vision AI that removes the "you must already know the name" barrier
- Built care, toxicity, and reminder flows so the app remains useful after the first species label
- Captured eight production UI flows for a full product tour: dashboard, scan, result, care, health, disease, pest, and profile
What I’d do differently
- I would invest earlier in a larger, more diverse training and evaluation set for less common species and tougher outdoor lighting.
- Disease-detection confidence thresholds need continuous tuning — too low creates alarm fatigue; too high misses early issues.
- Offline or degraded-network identification support would have helped sooner, because many plant photos are taken outdoors with weak signal.
Frequently Asked Questions
Building a vision-AI or Flutter companion app?
Book a free consultation or message on WhatsApp — bring your scan flows, platforms, and must-have launch features.
Prefer a quick jump? Start on the ads landing page or return to portfolio.







