Inspiration
Plant-diagnosis apps already exist — Plantix alone serves millions of farmers. But they all share the same flaw: they output a clinical report. And reports don't change behavior. Most houseplants still die of neglect, most beginners quit gardening after their first failure, and most kids learn botany from a textbook diagram instead of the living thing on their windowsill.
Our insight: people don't bond with reports — they bond with characters. The moment a wilting basil plant speaks and says "I've been thirsty for three days and this window gives me no sun," diagnosis becomes a relationship, and care instructions become something you actually feel responsible for.
Nabta (نبتة — "little plant" in Arabic) turns every plant into a teacher. It's a Tamagotchi, except the pet is real — and keeping it alive makes the planet a tiny bit greener.
What it does
Snap a photo of any plant, and Nabta:
- 🔍 Identifies the species with a scientific confidence score — and honestly says "I'm not sure" instead of guessing when confidence is low
- 📊 Rates its health 1–5 (Critical → Struggling → Okay-ish → Healthy → Thriving) on an animated meter
- 🗣️ Makes the plant speak in first person — with humor and personality, out loud via text-to-speech — telling you what's wrong and what it needs
- 🌿 Gives 3 concrete care recommendations matched to the plant's state
- 🧠 Teaches one real botany fact per scan — education through empathy
- 🔥 Tracks daily care streaks and ranks plant parents on a leaderboard by care days, not scan spam
- 📱 Works as a web app and an 85 KB native Android APK that runs fully offline
How we built it
- Frontend: mobile-first web app (HTML/CSS/vanilla JS) — camera capture, animated health meter, typewriter speech bubble, text-to-speech, care streaks.
- Backend: Python Flask + SQLite. One endpoint does the magic —
POST /api/analyze:- Species ID: PlantNet's scientific API (with a vision-LLM fallback) returns the species with a confidence score.
- Health scoring: leaf-color analysis (green vs. yellow vs. brown pixel ratios in HSV space) maps to the 5 health states.
- Personality layer: facts are computed first, then the character voice is applied on top — so the humor never corrupts the science.
- Accounts & security: PBKDF2-SHA256 password hashing, HttpOnly sessions, login rate-limiting, upload validation, parameterized SQL.
- Native Android: an 85 KB APK with camera integration and native TTS, built directly with the Android SDK.
Challenges we ran into
- Wrong species = wrong advice. Our early version confidently misidentified a medicinal flower as a snake plant — dangerous for edible or medicinal plants. We rebuilt identification around a confidence threshold: below ~55%, the app refuses to name a species, admits it honestly ("Mystery Plant 🌿"), and restricts itself to safe, general care advice.
- The blooming orchid bug. Our pixel engine rated a gorgeous flowering orchid as "Critical — leaves mostly brown and crispy." Its vivid yellow petals were being counted as sick, yellowing leaves! We moved to HSV color space so petals register as flowers — a positive signal — and added a rule: a plant in visible bloom can never be rated "dying."
- Character vs. accuracy. A sassy plant is fun until it gives wrong watering advice. Separating the pipeline — science first, personality second — fixed this permanently.
- One-day scope. We cut ruthlessly: everything the demo needs, nothing it doesn't.
Accomplishments that we're proud of
- We taught our AI to say "I don't know." Below the confidence threshold, Nabta refuses to guess — an honest "I'm not sure" beats a confident lie. We believe that's how all AI products should behave.
- We found and fixed our own worst bugs through real testing — the misidentified medicinal flower and the "dying" blooming orchid both became engineering stories we're proud of.
- Gamification with integrity: a leaderboard that can't be spammed, because it rewards showing up every day, not tapping a button.
- A full product in one day: working scan-to-speech pipeline, secure accounts, profiles, leaderboard, and an installable Android APK — all demo-ready.
What we learned
- Computer vision for plant health — how leaf color distribution correlates with stress, and how vision models identify species from a single photo.
- Confidence is a feature. Getting an AI to admit uncertainty is harder — and more valuable — than getting it to answer.
- Behavioral design — why "times opened per day" is a broken metric (it rewards spam) and how to reward consistency and outcomes instead.
- Prompt engineering for personality — keeping an LLM in character as a specific plant while staying factually accurate about botany.
What's next for Nabta
- 🌍 The Green Health Map: every talking plant is also a data point. Anonymized, geo-tagged scans can map vegetation health per school, neighborhood, and city — with communities competing to green their streets.
- 🗣️ More languages: Darija, Arabic, French — so a grandparent and a kid can hear the same plant speak.
- 📈 Recovery tracking: re-scan the same plant over time and watch its health curve climb — the plant thanks you personally when it recovers.
- 🏫 Classroom mode: one plant per class, one shared streak — botany as a daily group ritual.
Log in or sign up for Devpost to join the conversation.