Lurio
Property management SaaS with Claude-powered inspection agents
Multi-tenant property platform for SA landlords. WhatsApp-first tenant experience, web dashboard, and production Claude agents doing vision-based inspection review, listing generation, and move-in vs move-out comparison — with per-call cost tracing.
AI provider
Anthropic Claude
Model
claude-haiku-4-5
AI services
5 (~1,400 LOC)
Cost tracing
Per-call, cents
The problem
What I set out to solve
SA landlords still coordinate rent, maintenance, and inspections over WhatsApp voice notes and paper — the operations layer that would make property management scale doesn't exist for the small-portfolio market. And when it comes to inspections, human-written reports are inconsistent, slow, and legally weak when disputes arise.
What I built
The build
- Multi-tenant workspace model — landlord, agent, or tenant can create inspections, all scoped by workspaceId.
- WhatsApp-first tenant experience with the web dashboard as the operator surface.
- 5 Claude-powered services totalling ~1,400 lines of production AI code, all on claude-haiku-4-5.
- Inspection coach — agentic photo review using Claude's native tool-use (flag_photo_unusable, reshoot_or_absent, confirm_observation). Returns per-space descriptions with a confidence tier and structured review items.
- Listing coach — property listing title/description/features generated from photos + details, in SA English ("braai", "lounge", "flat") via a generate_listing tool.
- Compare coach — diffs move-in vs move-out photo sets and surfaces concerns for dispute handling.
- Inspection summary — space + overall summaries as legal-document-style neutral text.
- AI trace + cost tracking — every Claude call logged with token counts and per-call cost in cents; admin observability at /admin/traces.
Key decision
Why Claude Haiku 4.5 with tool-use instead of a fine-tuned model
Property inspections have long-tail edge cases (blurry photos, missing spaces, ambiguous damage). A fine-tuned model would need continuous relabelling to keep up. Claude Haiku 4.5 with vision + native tool-use lets me express the review logic as tool schemas (flag_photo_unusable, reshoot_or_absent, confirm_observation) — the model chooses when to call which. Same architecture works across inspection, listing, and compare with different tool sets. Per-call cost tracing means I can compare tool-use v1 to tool-use v2 empirically, without guessing.
Outcome
Where it landed
- ✓Claude agents working in production for inspections, listings, and comparisons.
- ✓Per-call cost tracing means real dollar visibility into AI usage.
- ✓Same tool-use pattern reused across 3 different coaches — proves architecture is right.
- ✓Admin trace dashboard at /admin/traces for observability.
Stack
Deep dive
Going deeper
Optional reading for the technically curious.