
Handi
A guided home-services marketplace with search, provider matching, in-app messaging, and payments
Livebooking, messaging, and payments across both sides
The problem
Home-services marketplaces push people through forms, filters and checkout flows. Both sides would rather just message. Turning a free conversation into reliable booking, search and payment is the hard part. The software has to know who is talking, remember where they left off, and handle things going wrong, not just paste a chatbot on top.
What I built
Handi is an app-based marketplace where customers find plumbers, electricians and other professionals by talking. Professionals manage bookings, availability, pricing and their profile the same way. Registration, semantic search, scheduling and payment all happen in the conversation, across Hebrew, English, Arabic, Spanish and French.
How every message is handled
Every message follows the same path before anyone gets a reply:
- Check it: run security checks, handle blocked users, and save the message
- Work out who is talking: customer, professional, or someone new
- Check the account: stop paused, blocked, or archived professionals
- Do the work: use the right flow for a customer or professional
- Reply safely: check the answer, send it, and record what happened
The system rebuilds the right context from the conversation history, then lets Gemini choose from only the actions that person can use.
Keeping actions separate
Search, booking, messaging and profile updates are separate actions. One cannot quietly trigger another, and each one checks that the caller is allowed to reach only their own bookings, profile and conversations.
Each action has its own usage limits and audit trail, so risky behaviour can be traced and blocked without shutting down the whole conversation.
Search and matching
Matching starts with hard filters such as rating, price, experience and service area. It then finds professionals whose profile and availability fit what the customer described in the conversation, before presenting the best options as a message instead of a results grid.
Security by design
When people can type anything instead of clicking through forms, there are more ways to misuse the system. So the app checks suspicious input, keeps each phone number's data separate, scans replies for leaked personal details, and temporarily blocks high-risk behaviour. Permission checks are never skipped for convenience.
Deployment
The app runs on Google Cloud Run, with PostgreSQL holding its data and S3 storing uploads. Every AI step is traced and testable, which matters when the whole product is a conversation and every bug report is a transcript.



