← projects
Bloomprint
Turns yard inspiration into a buildable plan — what to buy, how much, what tools, in what order, and what can go wrong.

What it is
Problem
Landscaping a yard is overwhelming: an inspiration photo says nothing about materials, quantities, tools, sequencing, or the ways a project can go wrong — and most tools answer with a chatbot's confident guess.
Solution
A structured planning app, not a chatbot: a deterministic engine is the source of truth and works fully offline with no AI key and no photo — AI only rephrases the finished plan. Every plan is grounded in a region-aware catalog (Ontario-first), price bands instead of fake exact prices, material calculators that widen when you haven't measured, and per-phase how-to guides.
What it looks like
Planning engineThe demo exposes the deterministic stages before the result: intake, regional scoring, quantities, risk checks, and packaging.
Built with
Frontend
- Next.js
- React 19
- TypeScript
- Tailwind CSS
- Konva
Backend
- Supabase
- Zod
ML
- TensorFlow.js
Highlights
- Deterministic planning engine as the source of truth
- Local-first storage with optional Supabase cross-device sync
- Free/Open Data Mode — works with no paid API
- Region-aware retailer links and honest price bands
- Optional AI presentation (Claude) with silent fallback
- On-device photo segmentation (TensorFlow.js)
Engineering
- Process 01
Make the planner deterministic before adding AI
- Context
- Material quantities, sequencing, and regional suitability cannot depend on a model improvising plausible advice.
- Approach
- Let a rules-based engine own the plan and restrict Claude to rephrasing facts that are already set.
- Outcome
- Plans remain inspectable and work without AI, while expanding capability requires catalog and rule work rather than prompt changes.
- Process 02
Represent uncertainty instead of hiding it
- Context
- Users may not have measurements, retailer inventory changes, and Ontario-first data does not generalize everywhere.
- Approach
- Return ranges, confidence labels, sources, last-checked dates, and explicit verify-before-buying notes.
- Outcome
- The output is less magically precise but more trustworthy and actionable.
Under the hood
Architecture notes
- The deterministic engine owns the truth; AI and live data only enrich, never override.
- Local-first by design — the plan never waits on the network; cloud sync sits behind the local layer.
- Every live fact carries a source, a confidence tag, and a 'last checked' time.
Challenges
- Producing useful material ranges when users have not measured their yard without disguising uncertainty as precision.
- Keeping AI, live-data adapters, and optional cloud sync additive so the core planner still works when every external service is absent.
- The current catalog is Ontario-first; recommendations outside that region need broader data before they can claim the same grounding.
Outcome
A working local-first planning app live at bloomprint.online that chooses honest grounding — sourced facts, confidence tags, price ranges — over confident AI guesswork.
Roadmap & lessons
Lessons learned
- 01Deterministic-first earns trust a chatbot-first tool can't.
- 02Honest hedging — ranges, 'verify before buying' — reads as more credible than false precision.
- 03Local-first changes every assumption about state, sync, and failure.
Next steps
- 01Expand the catalog beyond Ontario
- 02Connect and evaluate live-data providers
- 03Add collaborative plan review