Planotell
Your plants are telling you something — a live-beta AI plant-care app: identify from a photo, diagnose, treat, and never miss a watering.


Problem
Working out what a plant is — and then what is wrong with it — usually means guesswork or scattered forum threads. And even with an answer, plants die of the follow-through: the missed watering, the treatment abandoned halfway. People want one place that tells them what the plant is, whether it is healthy, what to do about it — and then reminds them to actually do it.
Solution
Planotell (launched as PlantPal) turns a single photo into a full care loop. The species is identified and its health checked in the same scan; a reasoning model turns the raw classification into a personalised watering, feeding and treatment plan, and push reminders keep it on schedule. Every diagnosis comes with a step-by-step treatment plan tracked through to recovery, and a chat assistant that knows the plants you actually own answers follow-up questions, streamed as it thinks. Identification runs asynchronously over Kafka so a slow model never blocks the app, and a provider-agnostic AI layer routes each task across several vision and reasoning models — hosted and local — with the user able to choose. Every identification also enriches a shared botanical knowledge base, so advice improves for everyone. The app speaks English, French and Arabic (right-to-left included), and it is live (beta) at planotell.com — frontend on Vercel, backend on its own hardened VPS. A scan taken offline waits on the device and uploads when you are back online, and uploaded photos are stripped of GPS data before storage or AI use.
Features
- Species identification and health check from one photo
- Personalised care plans with web-push reminders
- Disease detection with step-by-step, trackable treatment plans
- Plant-care chat that knows your garden, streamed in real time
- Multi-model AI — Claude, GPT-4o, PlantNet, DeepSeek and a local fallback
- Shared species knowledge base that grows with every scan
- English, French and Arabic, with right-to-left layout and read-aloud
- Installable PWA plus an administration console
- Offline scan queue — scans taken without a connection upload automatically later, with retry and discard
- First-run guidance: a skippable intro, photo tips and an upload fallback
- Plant groups by room, bed or greenhouse, with one-tap group watering or feeding
- Plant journal for repotting, pruning, flowering, fruiting and propagation
- "Was this right?" feedback on identifications, reviewable by an admin
- Photo timelines per plant and per species, ordered by the date taken
- Privacy by design — GPS coordinates stripped from every uploaded photo; only a coarse region and light/placement are kept, never a precise location
- Self-service data export — plants, care log, scans and journal as JSON and CSV, plus photos
- Crawlable English and French public pages and transactional email (verification, recovery)
- Task-driven delivery with a SonarQube quality gate on every pull request
Architecture
- Angular PWA
- Spring Boot API
- Kafka identification pipeline
- Vision + reasoning models
- PostgreSQL · Redis
- Care plans, reminders & web push
Tech
- Angular
- Spring Boot
- Java 21
- PostgreSQL
- Redis
- Kafka
- Vision Models
- LLMs
- Server-Sent Events
- Web Push
- Docker
- Vercel
- SonarQube
- Playwright
- Testcontainers
Challenges
- Combining two very different AI models — a vision classifier and a reasoning LLM — into one coherent answer.
- Keeping the conversation anchored to the actual image and classification rather than letting the LLM drift.
- Living with real AI providers in production: rate limits, empty or truncated replies and slow models — handled with an asynchronous pipeline, honest retry timing and fallbacks instead of a spinner that never ends.
- Three languages over AI-generated content: each section keeps its own saved translation and is only translated on demand, so switching language never silently re-bills the whole garden.
Lessons
- Prompt engineering matters as much as model choice: the product only feels intelligent when the reasoning step is tied to real classifier output and conversation memory.
- A provider-agnostic AI layer pays for itself — the models underneath changed several times; the product did not.
- Shipping is its own discipline: the first production boot needed six layered fixes, and a quality gate (SonarQube, blocking auth test suites) is what keeps the next release from needing them again.
Future work
- Broaden the species database
- On-device / offline recognition
- Graduate the experimental "atlas" interface — a second, exploratory frontend over the same API — into the main app