Inspiration
Early plant problems look alike. A fungal spot, a nutrient shortage and sun scorch can all start as brown patches, and the advice online contradicts itself. A plant clinic works differently: it takes a history, checks the weather, lists possible causes, and sometimes says "send us a sample." We wanted that in a phone, including the part where it admits it doesn't know.
What it does
Leaf is a garden platform at leafathon.site. No account needed.
- Today: each morning, what to water, protect or check, based on your forecast and NWS alerts. Every task has a reason and a source.
- Season plan: 52 weeks of sowing, planting and protection around your frost dates. Code removes anything unsafe, and Nemotron Super checks the rest.
- Doctor: send a photo. You get ranked causes, a care plan where every step cites a passage Leaf read, and one of three verdicts: Confident, Likely, or Send a sample to a lab. Code decides the verdict, not the model.
- Radar: what extension services report in your state.
- Connect: an MCP server and REST API, plus Home Assistant soil readings.
How we built it
Every model call goes to Nebius Token Factory:
- Nemotron 3 Ultra diagnoses and writes season plans.
- Nemotron 3 Super verifies diagnoses and plans.
- Nemotron 3.5 Lightning handles the fast steps.
- Nemotron Nano 3 screens check-in notes and web pages.
- Kimi K2.6 reads photos, with Nemotron 3.5 Super VL as the fallback.
The app is Python and FastAPI in one Cloudflare container, behind a Worker that holds D1, KV, a queue and cron. Tavily supplies the sources. Every safety rule, threshold and limit is in code, with 835 offline tests.
Challenges
- Reasoning tokens count toward
max_tokens, so JSON came back empty until we raised the budgets. - Combining
toolswithresponse_formatmade Ultra silently stop calling tools. - Nemotron 3.5 Super VL read plant photos about 16 points worse than Kimi: 33% vs 50% right first time on 24 held-out photos. We kept Kimi for photos and made Nemotron the fallback.
- "Confident" over-claimed. Set at the strictest level that was right on every tuning photo, it was still right only 6 of 9 times on new ones. We publish that number.
Accomplishments
- It runs live on a real forecast, and on the day we tested it, it caught a real NWS freeze watch.
- Tested in real browsers at phone width, and Claude Code talks to it over MCP.
- A diagnosis costs about 4 cents and a season plan 21 cents.
- We built a held-out photo set under written leak rules and ran the evals on it once.
What we learned
Settings mattered more than prompt wording. Small evals are noisy. Saying "I'm not sure" is a feature, and it's the one we measured hardest.
What's next
Re-measure NVIDIA's vision model when a new one ships, run Auto with Kimi on the held-out photos, and test Leaf with real gardeners next season.
Built With
- claude
- cloudflare-containers
- cloudflare-d1
- cloudflare-queues
- cloudflare-r2
- cloudflare-workers
- css
- fastapi
- html
- javascript
- kimi-k2.6
- model-context-protocol
- national-weather-service-api
- nebius-token-factory
- nvidia-nemotron-3-super
- nvidia-nemotron-3-ultra
- nvidia-nemotron-3.5-lightning
- nvidia-nemotron-nano-3
- open-meteo
- openapi
- python
- sqlite
- tavily
- web-push
- xai
Log in or sign up for Devpost to join the conversation.