Inspiration
When a tap leaks or a switch sparks, most people don't know whether it's a 5-minute fix or a real danger — and searching online gives confident advice that can be unsafe. We wanted an assistant that puts safety first, explains the problem in plain words, and connects people with a technician when it's not a DIY job.
What it does
MENDORA AI is a home-repair assistant for plumbing, electrical and carpentry.
- Describe the problem (and add up to 3 photos — location and camera data are removed automatically).
- Safety check first: a rule-based safety engine runs before any AI. High-risk cases (sparks, gas smell, flooding, structural cracks) get emergency guidance only — no AI and no DIY steps. Medium-risk cases get "professional only" advice.
- AI assessment for safe cases, with every sentence screened for unsafe instructions.
- AI web research (Tavily) that summarises trusted web pages with their sources.
- Find a technician by trade and service area, with a list or map view (approximate distances only).
- Book a visit, receive the technician's estimate, approve it, and pay in a sandbox (simulated escrow: held until the job is completed, then released).
- Reviews only from customers with a completed booking — no fake ratings.
- Repair guides that explain causes and warnings, plus an admin dashboard to verify technicians and watch high-risk reports.
How we built it
- Frontend: React 19 + TypeScript, Vite, Tailwind CSS, Leaflet + OpenStreetMap.
- Backend: Python FastAPI, SQLAlchemy + SQLite, Pydantic, Argon2 password hashing and JWT sign-in.
- AI: provider-agnostic layer supporting Nebius AI Studio (gpt-oss-120b), OpenAI-compatible APIs and Anthropic; Tavily for web research. Strict JSON validation — malformed AI output is rejected, never guessed.
- Quality: 438 automated backend tests (pytest) plus Playwright browser tests on mobile, tablet and desktop.
- Deployment: Docker + nginx setup included.
Challenges we ran into
- Making the AI never override safety: the rules engine runs first, the AI's answer is screened afterwards, and if the AI senses danger the case is escalated to high risk.
- Finding technicians when people type a city instead of a postal code.
- Keeping demo data honest: sample technicians are clearly labelled, payments are a sandbox, and reviews only come from completed bookings.
- Protecting privacy: emails and phone numbers are removed before anything is sent to an AI, and photos are never sent to the AI.
Accomplishments that we're proud of
A full journey — from "my sink is slow" to a completed, reviewed booking — that refuses to give dangerous advice, with hundreds of tests backing it.
What we learned
Safety in AI products has to be designed in layers, and being honest about what the AI can't see matters as much as the answer itself.
What's next
- Switch the AI diagnosis to Nebius in production (the trial currently uses Tavily's web-search summary).
- Real payment gateway and technician verification with documents.
- Regional languages and voice input.
Built With
- docker
- fastapi
- jwt
- leaflet.js
- nebius
- nginx
- openstreetmap
- playwright
- pydantic
- pytest
- python
- react
- sqlalchemy
- sqlite
- tailwindcss
- tavily
- typescript
- vite
Log in or sign up for Devpost to join the conversation.