Inspiration
One of us grew up around real estate and saw how misleading it looks from the outside. It seems passive, but the reality is constant coordination: tenant complaints, missed messages, rent issues, and maintenance problems all handled through scattered texts, calls, and spreadsheets.
That gap between perception and reality is what inspired Domi.
What it does
Domi is an AI system that turns tenant issues into resolved outcomes using real property and tenant data.
Instead of just responding to messages, it creates structured cases, checks relevant data like rent balances, leases, and maintenance records, and drives each issue to resolution. The goal is simple: eliminate manual back-and-forth and ensure every interaction actually moves toward a solution.
How we built it
We built the frontend with React, TypeScript, and Vite, structured around real property workflows like tenants, payments, maintenance, disputes, and live activity tracking.
The backend uses Python and FastAPI with a SQLite database containing tenants, leases, payments, maintenance requests, and communication logs. We generated realistic synthetic data to simulate real-world property operations.
For the AI layer, we used K2 Think V2 through OpenClaw. Since native tool-calling wasn’t directly supported, we built a custom execution loop that parses model outputs, triggers backend tools, and feeds results back into the system. This allowed the AI to operate on real data instead of just generating text.
Challenges we faced
The hardest part was making this feel like a real system, not a demo. Property management is deeply interconnected, and getting tenants, leases, payments, and maintenance to work together in a believable way required careful design.
Another challenge was avoiding a “chatbot.” We had to build a system that doesn’t just answer questions but actually takes action using real data.
We also had to bridge K2 Think V2’s tool-calling format with OpenClaw, building a parser and execution layer to turn model outputs into real backend operations.
What we learned
We learned that property management is fundamentally an operational problem, not just a communication problem. Most of the work comes from stitching together information across systems.
We also learned that AI becomes far more useful when it can take action on real data instead of just generating responses. The value isn’t in answering questions, it’s in resolving them.
What's next
Next, we would add authentication, tenant-facing accounts, payment integrations, and real communication channels like SMS and email.
More importantly, we would expand the system’s ability to handle complex workflows like lease renewals, maintenance triage, and delinquency prevention, pushing further toward full automation of tenant issue resolution.
Built With
- anthropic
- css
- fastapi
- git
- github.
- html
- k2-think
- leaflet.js
- node.js
- npm
- openai-sdk
- openclaw
- postgresql
- pydantic
- python
- react
- react-leaflet
- react-markdown
- rest-apis
- server-sent-events
- sqlite
- sse-starlette
- typescript
- uvicorn
- vite

Log in or sign up for Devpost to join the conversation.