Inspiration
A small leak can create a lot of work. A tenant reports it, someone checks if it is dangerous, contacts vendors, waits for replies, shares the arrival time, checks the repair, and follows up with the tenant.
Small landlords and property managers often do all of this manually through messages and spreadsheets. I built No More Buckets to automate most of this work while keeping tenants, vendors, and property managers informed.
What it does
No More Buckets is an automatic repair coordination system for rental properties.
A tenant sends a Telegram report using text, photos, video, or a voice note. The system then:
- Uses Gemini 3.5 Flash to understand the problem.
- Checks for safety risks.
- Sends instructions to help the tenant contain the leak.
- Creates a work order with a S$250 spending limit.
- Contacts the preferred vendor.
- Contacts another vendor if the first one does not respond.
- Collects and confirms the vendor’s price and arrival time.
- Updates the tenant automatically.
- Collects an after-repair photo, work summary, and final price.
- Checks the repair evidence.
- Asks the tenant if the repair is holding.
- Closes or reopens the incident based on the tenant’s answer.
People still make the decisions that require real-world knowledge. The tenant reports the problem, the vendor completes the repair, and the tenant confirms the result. The agent handles the coordination between those steps.
How we built it
The backend uses FastAPI, and the web control room uses React and TypeScript. The complete application runs in one container on Google Cloud Run.
Gemini 3.5 Flash reads the tenant’s text, image, and voice note. It returns structured facts such as the issue type, severity, visible water, and possible hazards.
Gemini only describes what it observes. Normal application code decides whether it is safe to continue, how much the system can spend, which vendor to contact, and whether the repair can be closed.
Firestore stores incidents, messages, vendor sessions, and the audit timeline. Cloud Tasks handles vendor deadlines, retries, and delayed tenant follow-up. Cloud Storage stores photos, videos, and voice notes. Telegram is used for tenant and vendor communication.
The repair moves through clear states:
REPORTED → TRIAGED → CONTAINED → DISPATCHING → SCHEDULED → IN_PROGRESS → VERIFYING → PROVISIONALLY_RESOLVED → CLOSED
The website shows tenant messages, agent decisions, vendor messages, media, deadlines, and state changes as they happen.
Challenges we ran into
One challenge was handling Telegram group privacy. A bot may not receive a vendor’s normal group message unless the vendor replies directly to the bot. We solved this by creating a guided process for entering the price, arrival time, repair photo, work summary, and final price.
Another challenge was handling timeouts and repeated events. A late timeout must not contact another vendor after the job has already been accepted. We added saved deadlines, unique event IDs, and checks before every important action.
Text, images, and voice notes can also disagree. Instead of hiding these differences, the system records missing information, conflicts, and confidence levels. Safety rules then decide whether the repair can continue automatically.
We also needed the demo to move quickly without faking the workflow. The demo uses shorter deadlines, but it still uses the real timeout, retry, and vendor fallback process.
Accomplishments that we're proud of
- The system completes a full repair workflow instead of only answering questions.
- Vendor B is contacted automatically when Vendor A does not respond.
- A late Vendor A response cannot replace Vendor B.
- Repairs can begin with a safe S$250 spending limit.
- Higher prices require approval.
- Missing or incorrect evidence cannot close an incident.
- Repeated Telegram messages and background tasks do not create duplicate actions.
- The workflow can continue after the service restarts.
- Important actions are saved in an audit timeline.
- The demo uses real Telegram messages and a real Google Cloud deployment.
What we learned
We learned that useful agents need clear limits.
Gemini is good at understanding messy reports, but important decisions should use clear and testable rules. Separating Gemini’s observations from the system’s decisions made the project safer and easier to understand.
We also learned that background workflows need strong state management. Timeouts, retries, duplicate messages, old buttons, and delayed responses are normal parts of the workflow.
Finally, users need to see what the agent is doing. Tenants and vendors need simple updates, while property managers need a clear record of every important decision.
What's next for No More Buckets
The next version could support electrical, appliance, air-conditioning, and access problems.
Other possible improvements include:
- A manager approval page for high prices and safety issues.
- Vendor scheduling and calendar support.
- Vendor performance tracking.
- Support for more languages.
- Better comparison of before and after photos.
- Reports for repeated maintenance problems.
- Connections to property management and accounting software.
The long-term goal is to handle routine repair coordination automatically and ask a person for help only when it is truly needed.
Log in or sign up for Devpost to join the conversation.