Florist concierge that recommends, escalates, or politely declines
An online florist sells into emotional moments: birthdays, anniversaries, get-well wishes and condolences. Buyers know the occasion but not what to send, so many leave without ordering; the few who buy ask the same delivery and care questions, and a one or two person team answers them by hand. The routine load and the genuinely sensitive cases (a late condolence stand, wilted flowers before an event) wait in the same slow queue.
Lucy is the shop's concierge. She talks to the customer directly and reaches exactly one of three outcomes on every message: resolve it with an approved tool, escalate it to a human, or politely decline it.
Recommends two real bouquets by occasion, budget and colour, each with a flower-meaning reason. Never invents a product or price.
Every message is resolved, escalated to a human, or declined, decided in that order before anything runs.
Delivery cut-offs, coverage, care, hours and store location, answered from the shop's knowledge base.
Looks up an order number with a fixed query. It can read an order; it can never change one.
On escalation, writes a Situation / Order / Mood / Reason summary for the human, shown owner-side only.
Flowers, Occasions, Gifts, Delivery and a live Track-Order page, plus three real product pages.
Lucy's universe is eight fixed, approved tools. She chooses which tool and supplies parameter values only; she cannot author SQL, browse the schema, or invoke anything that writes. The safety comes from what is missing: there is no refund, cancel, or change tool, so those actions cannot happen autonomously.
recommend_bouquets, get_delivery_cutoff, get_coverage_areas, get_care_tips, get_hours, get_store_location, flower_meaning, get_order_status.
Refunds, cancellations, order changes, custom or bulk orders, complaints and upset customers go to the manager, Ms. Young, with a summary.
Staff details, suppliers, margins, ownership, internal metrics and non-business questions are refused, never transferred.
In a paying build the rule-based router becomes one Gemini classification call at the same function boundaries; the gate, the tools and the handoff stay unchanged.
bloom-house.db), embedded in the page as base64 so the same fixed queries run live in the browser, on GitHub Pages and from file://.SELECT statements, not hard-coded replies.No build step, no API key, no server. The database is embedded, so the page is fully self-contained.
Hosted free on GitHub Pages as part of the AI project portfolio.