Inspiration
Rental repairs turn into a runaround: the tenant repeats the problem, the property manager chases safety and access details, and contractor prices, availability, approvals, and confirmation live in separate conversations. Tenants should not need another portal just to get a leak fixed, and an agent should not be allowed to approve its own consequential work.
What it does
Fix This keeps the tenant in SMS and gives the property manager one shared repair case. A repair agent gathers safety and access facts, follows the building's stored contractor agreements in order, and prepares the next action through typed WebMCP tools. The property manager sees the evidence and explicitly approves one contractor call bound to the contractor, agreed price, and permitted time windows.
In the recorded controlled-live run, one allowlisted tenant MMS woke the background agent. The agent triaged the repair and replied in the same thread. WebMCP prepared the stored-agreement path for the manager. After one explicit approval, the contractor heard a fixed AI disclosure and pressed 1 before any audio reached OpenAI. The contractor confirmed a time inside both authorized windows, Fix This booked the visit, and the tenant received the confirmation text.
The public judge URL is a separate, resettable synthetic Pennsylvania build. It exposes the same shared-case and WebMCP boundaries without sending a real message or placing a real call.
Why WebMCP
The public build exposes twelve typed tools over the same workflow API and repair record used by the dashboard. The tools cover case discovery, triage, tenant messaging, preferred-contractor ordering, access evidence, contractor confirmation, and booking. The agent acts on structured state instead of guessing through DOM clicks.
The most important tool is the one that does not exist: manager approval is deliberately absent from the WebMCP surface. The server rejects booking until the current proposal has matching manager approval, tenant access authorization, and contractor confirmation.
What people and agents do together
The tenant reports the repair in a channel they already use. The agent handles repeatable fact gathering and prepares the approved-contractor path. The property manager makes the consequential cost and contact decision. The contractor gives affirmative consent before the AI call and confirms the visit. Fix This then records the booking and notifies the tenant in the original thread.
That replaces fragmented coordination with one causally ordered, auditable workflow without handing approval to the agent.
How it was built
Fix This uses React, Vite, TypeScript, Express, Node.js, an atomically written JSON store, Twilio, OpenAI Responses and Realtime APIs, Vitest, and Render. document.modelContext.registerTool() registers thin browser adapters over the same HTTP operations used by the dashboard.
The controlled-live route validates provider signatures and exact allowlists, deduplicates wake events, serializes work per repair case, journals outbound effects for retry safety, and keeps the fixed disclosure plus keypad-consent gate outside the model. No raw call audio is retained.
How Codex helped
OpenAI Codex helped turn the product idea into decision tickets, challenge unsafe or vague assumptions, implement the shared workflow and controlled-live seams, write and run the tests, diagnose provider failures offline, review the deployment boundary, and assemble privacy-safe evidence. The final controlled-live commit passed 119 tests, the production build, and a production dependency audit with zero reported vulnerabilities. Jacob retained the product decisions and every consequential approval, provider mutation, live message, and call authorization.
Evidence and source
- Public synthetic demo: https://fix-this-demo.onrender.com
- Public repository: https://github.com/Elemperor1/building-repairs-webmcp
- Controlled-live source: https://github.com/Elemperor1/building-repairs-webmcp/tree/codex/controlled-live-deploy
- Sanitized end-to-end proof: https://github.com/Elemperor1/building-repairs-webmcp/issues/19#issuecomment-5517032165
Current limitations
The public judge build is synthetic and cannot contact real people. The recorded real-provider journey was one bounded, allowlisted controlled-live proof—not a pilot, production launch, or reliability claim. The controlled-live deployment is protected and single-operator; judges should use the public synthetic URL. WebMCP browser support is experimental. The public Render service may cold-start after idle. No measured savings, legal certification, general availability, or autonomous approval claim is made.
Built With
- express.js
- node.js
- openai-codex
- openai-realtime-api
- openai-responses-api
- react
- render
- twilio
- typescript
- vite
- vitest
- webmcp
Log in or sign up for Devpost to join the conversation.