-
-
Rooted helps families make an aging parent's home safer, from fall-risk check to a booked, paid contractor, in one ASI:One chat.
-
A real bathroom from a teammate's home, before and after Rooted's suggested fixes (AI preview; the contractor confirms on site).
-
The risk agent runs the CDC's STEADI fall-risk check. Rooted only recommends a remodel for high-risk parents.
-
Three contractors are asked at once. Mesa stays silent, so Rooted compares the other two and negotiates Arbor down to $5,267.
-
Funding is decided by official program rules, not an LLM: $500 insurance now, a county grant after approval, $633 due today.
-
The family pays its share with Stripe inside the chat, and the contractor is booked. The balance is due after a completion check.
Inspiration
We kept coming back to one number: more than 1 in 4 adults over 65 falls every year, and deaths from falls have risen 51% in a decade. At the same time, 75% of older adults want to stay in their own homes, and a private nursing-home room costs a median of $129,575 a year.
The fix is often simple: a couple of grab bars, a slip-resistant surface, a night light on the way to the bathroom. Research backs it up: home modifications lower fall rates for people at high risk. So why don't families do it?
Because the job is scattered across six different places. Is Mom actually at risk? What exactly should be fixed? Which contractor, and is the price fair? Are there grants or insurance benefits, and does she qualify? How do siblings split the cost? Does Mom even agree? Every answer lives somewhere else, so the job gets postponed, often until after a fall.
We wanted one conversation that takes a worried family from "I'm worried about Mom's bathroom" to "the contractor is booked and paid."
What it does
Rooted runs entirely inside an ASI:One chat:
- Fall-risk screening. The CDC's STEADI "Stay Independent" check (12 statements, developed by the VA in Los Angeles). A parent is at risk when
$$ S = \sum_{i=1}^{12} p_i \ge 4 \quad \text{or} \quad \text{fell in the past year} $$
Low-risk parents get simple self-help tips instead of a remodel.
- A safer preview of the real bathroom. The family attaches a photo, and Gemini edits it to show grab bars, a slip-resistant surface and night lights. No photo? They pick the closest layout.
- Three quotes at once, plus negotiation. Contractor agents are asked in parallel. A silent contractor is dropped after 15 seconds, and Rooted negotiates once with the CAPS-certified one.
- Who pays. A funding agent checks the LA County Senior Grant, NHS LA County, the PICF HUD program and a Medicare Advantage in-home safety benefit, using fixed rules from each program's official page, never an LLM, with the source shown on every result.
- The parent's consent. Nothing is booked until the parent agrees.
- Pay and book. The family splits a 30% deposit and pays with Stripe inside the chat through the Agent Payment Protocol:
$$ \text{due now} = \text{urgent fixes} - \text{insurance benefit}, \qquad \text{share} = \frac{0.3 \times \text{due now}}{\text{number of payers}} $$
For our demo parent Maria (82, East Los Angeles), the plan is \$5,267, insurance covers \$500 now, the county grant can cover the remodel after approval, and the family pays \$633 today. The balance is released only after a completion check.
How we built it
Rooted is seven agents built with Fetch.ai uAgents and registered on Agentverse:
| Agent | Job |
|---|---|
| Orchestrator | Talks to the family, sends ASI:One Interactive Cards, coordinates everyone, acts as the Stripe seller |
| Risk | Scores STEADI and maps hazards from the CDC "Check for Safety" checklist |
| Visualizer | Edits the bathroom photo with Gemini; falls back to pre-rendered layouts |
| Funding | Deterministic eligibility over programs.json, every record with source_url and as_of |
| Contractors (x3) | One codebase, three configs: quotes, counter-offers, bookings |
- Agent Chat Protocol for the conversation, and the Agent Payment Protocol with Stripe embedded checkout (test mode) for deposits and balances.
- Agents talk to each other with typed messages (
QuoteRequest,CounterOffer,FundingRequest, ...) andsend_and_receivewith timeouts, so one slow agent never blocks the flow. - Prices come from real national market rates (HomeAdvisor, Angi, Fixr, Homewyse) with a multiplier per contractor.
- A simulated client (
tests/sim_client.py) plays the family through every card, including failover and payment, and 125 unit tests cover scoring, eligibility, card parsing and payments.
Challenges we ran into
- Photos don't arrive the way the docs said. We expected an image attachment; ASI:One actually forwards the photo as a hosted link inside the message text. We extract the link, download it with strict size and type limits, and edit it.
- Showing the edited photo back. Cards rejected an inline image, so the whole card silently disappeared. We switched to Fetch's documented pattern: upload the image to Agentverse storage and send it as its own message, then the card.
- The checkout that never appeared. Our Stripe card rendered for a sample agent but not for ours. The cause was the route: a chat opened from the Agentverse profile goes through a personal-assistant proxy that can show cards but not a checkout. We now detect that sender and hand the payment over to a direct ASI:One chat with a short code.
- Button clicks arrive as prose. ASI:One sometimes narrates a card click in natural language. A sentence mentioning "CDC STEADI" was parsed as a STEADI submission instead of "Find the fixes." We now try the current card's valid actions first and added regression tests.
- Honest numbers. It is tempting to let a model say "you qualify." We encoded each program's published rules instead, labeled sample insurance plans as SAMPLE, and kept "AI preview; the contractor confirms on site" on every generated image.
Accomplishments that we're proud of
- The full path works end to end in ASI:One: screening, a preview of a real bathroom, parallel quotes with failover, negotiation, rules-based funding, consent, a Stripe deposit, a booking, and the balance after completion.
- Reliability is part of the demo, not a footnote: a contractor goes silent and the family never notices.
- Every dollar figure on screen can be traced to a rule or a source.
What we learned
- Multi-agent design is mostly about failure. Timeouts, partial answers and retries mattered more than the happy path.
- Keep the LLM away from eligibility. Deterministic rules plus cited sources are what make a funding answer trustworthy.
- Test the real channel early. Card rendering, photo forwarding and payments all behaved differently in ASI:One than in documentation or local tests.
- Design for the person, not just the payer. The consent step reminds us that the parent is the one whose home and life change.
What's next for Rooted
- Real contractor onboarding (CAPS-certified first) and local, ZIP-level pricing.
- Pre-filled grant application packets, starting with LA County.
- Real Medicare Advantage plan benefit lookups.
- Rooms beyond the bathroom: stairs, bedroom, entryway.
- A sustainable model: a 5% booking fee paid by contractors on completed jobs, so families pay nothing extra.
Built With
- agent-chat-protocol
- agent-payment-protocol
- agentverse
- agentverse-storage
- asi:one
- asi:one-interactive-cards
- cdc-steadi
- cloudinary
- fetch.ai
- gemini
- github
- google-genai
- matplotlib
- pillow
- pydantic
- pytest
- python
- stripe
- uagents
Log in or sign up for Devpost to join the conversation.