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.

The Planotell landing page: the leaf-and-speech-bubble logo, the tagline "Your plants are telling you something.", the headline "Plant care that actually knows your plants" and Get started / Sign in buttons.
Planotell feature overview: AI species identification, personalised care reminders, disease detection and treatment, plant-care chat and shared species knowledge.

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

  1. Angular PWA
  2. Spring Boot API
  3. Kafka identification pipeline
  4. Vision + reasoning models
  5. PostgreSQL · Redis
  6. 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