← agent army
🐌
MALI APP

Sidney

An AI gardener riding shotgun in the Mali app.

AI gardener riding shotgun in Mali. Reads the user's plants, growth log and local weather, then writes a clear daily care plan.

// architecture

The Mali app (Flutter) keeps each user's plants and per-plant care state in Firestore. For a care insight, the app POSTs to a Python FastAPI backend that runs Gemini 2.5 Flash, grounded by vector search over a plant knowledge base (and optionally the local weather). Plant photos are run through a Plant.id health assessment whose findings feed the model. The daily plan is separate: a Cloud Function runs hourly and timezone-aware, tallies everything due, and sends one grouped push. Real-time voice chat runs on Gemini Live.

garden data (Firestore)POST /gardens/{id}/insightsFastAPI backendGemini 2.5 Flash + vector searchcare plan → appdaily FCM push

// how it works

  1. 1

    Know the garden

    Reads the user's plants and per-plant care state from Firestore — what's due for water, feeding, a germination check or a transplant.

  2. 2

    Ground the advice

    On demand, the app POSTs to a Python backend that runs Gemini 2.5 Flash, grounded by embedding-based vector search over a plant knowledge base, optionally folding in local weather — so the tips are about today, not generic.

  3. 3

    Photo check-ins

    A plant photo is run through a Plant.id health assessment; the findings feed the model, which falls back to Gemini-only if that quota is hit.

  4. 4

    Daily plan

    A Cloud Function runs hourly and timezone-aware, tallies everything due, and sends one grouped push — N plants need water today, tap for the full report — instead of a pile of separate reminders.

  5. 5

    Talk it through

    The user can voice-chat Sidney in real time on Gemini Live for a quick, plants-only second opinion (capped to a few short sessions a day).

// tool calls

  • POST /gardens/{id}/insightsapp → FastAPI backend; returns Gemini-synthesized care tips
  • Gemini 2.5 Flashwrites the grounded care insights
  • embedding + Qdrantvector search over the plant knowledge base for grounding
  • Plant.id assessmentdiagnoses issues from a plant photo
  • dailyGardenSummary (hourly)tallies due tasks per timezone and sends one grouped FCM push
  • Gemini Livereal-time voice chat, capped 3/day × 10 min

// daily report

Sidney:☀️ 24°C and dry today — 3 plants need attention:
• Basil — soil's drying fast, water this morning
• Fern — move it back from the window (leaf-scorch risk)
• Chilli — germination check due, day 9

// stack

FlutterFirebase / FirestoreGemini 2.5 Flash (Vertex AI)Gemini LivePython FastAPIQdrantPlant.idOpenWeather

// infrastructure

  • App: Flutter (iOS + Android)
  • AI backend: Python FastAPI
  • Daily push: Cloud Function (hourly, timezone-aware) → FCM
  • Data: Firestore
  • Models: Gemini 2.5 Flash + Gemini Live

// why it exists

Plant-care advice online is generic. Sidney's is specific to your plants, your climate, and what they need today.

← back to all agents// part of the agent army