Five roles. Three surfaces. One backend. From listing intake to deal-room close - with an AI Butler that speaks English and Swahili, and payments via Stripe and M-Pesa.
AI-Powered PropTech SaaS - Multi-Role Real-Estate Platform
An AI-powered real-estate platform that connects agents, buyers, tenants, and professionals with property search, deal management, messaging, and payments.
East African real-estate transactions are fragmented across WhatsApp threads, spreadsheet listings, PDF lease templates, and cash or mobile-money payments with no common platform connecting agents, buyers, lawyers, caretakers, and tenants. This platform replaces that entire stack with one AI-powered workspace built for the market.
Five roles share one Flutter codebase and one FastAPI backend with role-based routing, permissions, and dashboards. Buyers search 300+ live listings on a PostGIS + OpenSearch geo-map with 10 km radius filters and AI area summaries. Agents manage listings, enquiries, and the full 9-milestone deal room. Lawyers and valuers join deals as invited parties. Caretakers handle maintenance triage and inspection reports. Tenants manage leases and rent from their own dashboard.
The streaming OpenAI Butler co-pilot is present on every screen: it compares properties in markdown tables, suggests professionals as one-tap cards, drafts buyer questionnaires, and answers rent and maintenance questions in both English and Swahili. Offline-first messaging survives flaky 3G with outbox queuing and reconnect-drain deduplication. Payments run on Stripe for cards and Startbutton for M-Pesa and African mobile money.
The platform covers the full East African real-estate transaction lifecycle: agents list and manage properties, buyers discover and enquire through geo-search and AI recommendations, lawyers and valuers participate in a structured 9-milestone deal room, caretakers handle maintenance and inspections, and tenants manage leases and rent - all in one workspace.
Three client surfaces share a single event-driven FastAPI backend: a React + Vite web SPA for agents and admin, a cross-platform Flutter mobile app (iOS, Android, and Web) for all roles, and a streaming OpenAI Butler chat embedded across both. There is no API drift between surfaces because every client calls the same typed endpoints enforced by Pydantic v2 and PydanticAI structured outputs.
The platform is built specifically for emerging-market realities: offline-first messaging that survives flaky 3G, bilingual EN/SW with ~1,900 localized strings, mobile-money payments via M-Pesa through the Startbutton API alongside Stripe card billing, and Flutter builds optimized for low-spec Android devices. PostGIS + OpenSearch geo-indexing delivers sub-300ms map queries over 300+ listings, with the architecture ready for 10x volume without changes.

- AI PropTech SaaS
- East African Real Estate Platform
- Flutter Multi-Role App
- OpenAI Butler Real Estate
- PostGIS Geo Search
- Multi-Party Deal Room
- Offline-First Messaging
- M-Pesa Stripe Payments
- Swahili English Bilingual SaaS
- FastAPI Multi-Tenant Backend
- 9-Milestone Transaction Workflow
- Keycloak RBAC Real Estate
Solving real problems with smart engineering
One Event-Driven Backend for Three Surfaces
Problem
No unified platform for the full transaction lifecycle - East African property transactions move across WhatsApp for communication, PDF or paper for listings, Excel spreadsheets for tracking, and separate MPESA or cash processes for payments. Agents, buyers, lawyers, caretakers, and tenants have no shared workspace, so every handoff between parties loses context and creates delays.
Solution
A single FastAPI + PostgreSQL backend powers the React web SPA, Flutter mobile app, and OpenAI Butler chat with zero API drift. Every client calls the same typed Pydantic v2 endpoints. Feature changes deploy once and reach all three surfaces simultaneously, cutting feature development time by approximately 40%.
PostGIS + OpenSearch Geo-Search with AI Area Summaries
Problem
Property discovery is broken without geo-search - listings are shared as WhatsApp images, Facebook posts, or printed flyers with no structured search, no map view, and no way to filter by location radius, price, or property type. Buyers cannot compare properties side by side or get AI-powered area summaries to understand a neighbourhood before visiting.
Solution
Buyers search 300+ live listings on a clustered Mapbox/Leaflet map with 10 km radius filters, price facets, and property-type filters. Sub-300ms geo queries powered by PostGIS spatial indexing and OpenSearch. The AI Butler generates area summaries for any searched neighbourhood on demand.
9-Milestone Multi-Party Deal Room
Problem
Deals collapse without a structured multi-party workflow - a property transaction involves an agent, a buyer, a lawyer, a valuer, and sometimes a lender, coordinating over WhatsApp with no shared document vault, no milestone tracking, and no dispute mechanism. Deals fall through because no one knows what stage they are at or who needs to act next.
Solution
Every transaction spins up a realtime Socket.IO workspace with nine milestones, a shared document vault, a parties tab showing agent, buyer, lawyer, and valuer, and a dispute tracker. All parties see the same milestone state in real time across web and mobile via Socket.IO + Redis pub/sub.
Streaming AI Butler Co-Pilot on Every Screen
Problem
No AI assistant for a market with low digital literacy - first-time buyers and tenants in East Africa need guided help comparing properties, understanding lease terms, and knowing which professionals to engage. An AI Butler that speaks Swahili and presents results as one-tap cards rather than raw data lowers the barrier to using the platform significantly.
Solution
OpenAI GPT-4/GPT-4o co-pilot streams responses via WebSocket across web and mobile. It compares properties in markdown tables, surfaces lawyers and valuers as one-tap action cards, drafts buyer questionnaires, and answers rent and maintenance questions in both English and Swahili. PydanticAI validates all structured outputs.
Offline-First Messaging for Flaky 3G
Problem
Connectivity is unreliable but messaging must work - East African markets have widely variable 3G and 4G coverage. A messaging platform that drops messages or shows errors when connectivity is intermittent is unusable. Agents in the field, caretakers on-site, and tenants in low-signal areas all need chat that works offline and syncs reliably when connectivity returns.
Solution
Messages are assigned temp-UUIDs on send and stored in a per-mutation Bloc outbox on the device. On reconnect, the outbox drains in order with server-side idempotency key deduplication preventing double delivery. Optimistic UI shows messages immediately; delivered/failed status updates on sync.
Tenant + Caretaker Operations Workspace
Problem
Tenant and caretaker operations have no digital home - lease management, rent tracking, maintenance requests, and property inspections are handled through paper, WhatsApp, and phone calls. Caretakers have no structured workflow for maintenance triage, no way to upload inspection photos, and no PDF inspection report generation. Tenants have no rent dashboard or maintenance tracking.
Solution
Tenants have a lease dashboard, rent history, and maintenance request tracker. Caretakers receive FCM push notifications for new requests, triage them across four severity tiers, upload inspection photos to Cloudinary, and generate branded PDF inspection reports via ReportLab/WeasyPrint - all from one workspace.
Bilingual EN/SW + M-Pesa & Stripe Payments
Problem
African payment methods are excluded from most SaaS tools - Stripe card billing works for the minority of East African users with international cards. The majority pay via M-Pesa and mobile money. Any platform that does not natively support Startbutton or equivalent M-Pesa API integration is inaccessible to the primary payment method of the market.
Solution
Approximately 1,900 localized strings with compile-time i18n safety on Flutter (ARB files) and react-i18next on web. One-tap language switching with no restart. Subscription billing via Stripe for card payments and Startbutton API for M-Pesa and African mobile money, with per-role plan configuration.
A closer look at AI-Powered PropTech SaaS - Multi-Role Real-Estate Platform
tap any screen to zoom
What it does
AI Butler Co-Pilot (EN/SW)
- Streaming GPT-4o assistant on every screen via WebSocket - responds in the user's active language
- Property comparison tables, professional suggestion cards, and buyer questionnaire drafts
- sherpa-ONNX on-device speech-to-text: voice input processed on the device, no audio leaves the phone
- Neighbourhood AI summaries for any searched area on the geo-map
- PydanticAI validates all structured card outputs before UI render
Geo-Indexed Property Search
- 300+ listings on a clustered Mapbox/Leaflet geo-map with 10 km radius filter
- Sub-300ms geo queries via PostGIS GIST spatial index + OpenSearch geo_distance
- Price range, property type, bedroom count, and amenity facets
- AI-generated neighbourhood summaries on demand
- Save-to-shortlist and side-by-side comparison from map or list view
Listing Intake & Agent CRM
- Structured listing creation with Cloudinary photo upload, PostGIS geo-tag, and OpenSearch auto-index
- Enquiry pipeline with lead-to-deal conversion tracking
- Agency workspace with team invitation, listing assignment, and deal oversight
- Bulk listing import via CSV for agency onboarding
- Listing performance analytics: views, enquiry rate, and time-to-deal
9-Milestone Multi-Party Deal Room
- Deal room spins up on agent acceptance of buyer enquiry with parties auto-populated
- Nine sequential milestones with document-vault requirements gating progression
- Shared document vault via Cloudinary with role-scoped access
- Dispute tracker: raise, log, and resolve disputes inline in the deal room
- Realtime milestone fan-out via Socket.IO + Redis pub/sub to all parties
Offline-First Messaging
- Temp-UUID optimistic UI: messages shown instantly on send regardless of connectivity
- Per-mutation Bloc outbox: unsent messages stored in Hive local store on device
- Reconnect-drain: outbox processes in order on Socket.IO reconnect
- Server-side idempotency-key deduplication prevents double delivery
- Raw WebSocket fallback for environments where Socket.IO is blocked
Tenant Dashboard
- Current lease details: property, landlord, start/end dates, monthly rent
- Rent payment history with M-Pesa and Stripe transaction records
- Maintenance request submission with photo attachment and status tracking
- AI Butler answers lease and rent questions in EN/SW
- FCM push notifications for payment reminders and maintenance updates
Caretaker Operations
- FCM push on new maintenance request with property and tenant details
- 4-tier severity triage: Critical / High / Medium / Low with AI-suggested initial tier
- Work-in-progress logging with time stamps and photo uploads to Cloudinary
- Branded PDF inspection report generation via ReportLab/WeasyPrint
- Caretaker schedule view: all active and upcoming maintenance assignments
Lawyer & Valuer Portal
- Invited to specific deals via deal-room parties tab with scoped JWT access
- Document upload to deal-room vault: title deeds, valuation reports, legal opinions
- Milestone sign-off: lawyers and valuers confirm completion of their milestone responsibilities
- Searchable professional directory: buyers and agents can find lawyers/valuers via AI Butler
- Deal-room chat participation with full offline-first messaging support
Bilingual EN/SW i18n
- Approximately 1,900 localized strings across web (react-i18next) and mobile (ARB + flutter_localizations)
- Compile-time i18n safety on Flutter: missing keys caught at build time, not runtime
- One-tap language switching on mobile and web with no app restart required
- AI Butler detects active language and responds in EN or SW accordingly
- All notification copy (FCM, SendGrid) rendered in user's preferred language
Payments & Subscriptions
- Stripe Checkout and Subscriptions for card billing with webhook auto-reconciliation
- Startbutton API integration for M-Pesa and African mobile-money payments
- Per-role subscription plans: Agent Pro, Agency, Tenant, Caretaker
- Stripe Connect for agent commission payouts on completed deals
- PostgreSQL ledger tracking all payment events, subscription changes, and refunds
Multi-Tenant RBAC & Auth
- Keycloak SSO with OAuth2 and role-scoped JWT enforced at FastAPI middleware
- Agency-scoped workspace isolation: team members see only their agency's data
- Five role types with distinct permission sets and tailored dashboard views
- Passkey (FIDO2/WebAuthn) and biometric login on Flutter mobile
- Full audit logging on sensitive operations: deal-room actions, payment events, role changes
Inside AI-Powered PropTech SaaS - Multi-Role Real-Estate Platform
Built with
Mobile App (Flutter)
- Flutter + Dart - iOS, Android and Web
- flutter_bloc + GetIt - state management and DI
- Material 3 - design system
- Hive - offline local store
- flutter_localizations + ARB - EN / SW bilingual
- flutter_map + Mapbox - property maps
- sherpa-ONNX - on-device speech-to-text
- flutter_secure_storage - secure device storage
Web Console (React)
- React 18 + TypeScript + Vite - agent console
- TanStack Query - data fetching and caching
- TailwindCSS - styling
- Mapbox GL - geo-search maps
- react-i18next - EN / SW interface
- Socket.IO client - realtime deal room
- dnd-kit - drag-and-drop workflows
- Stripe Checkout - browser payments
Backend (FastAPI)
- FastAPI (Python) - async API with uvicorn + gunicorn
- Pydantic v2 - typed schemas and validation
- async SQLAlchemy + asyncpg + Alembic - ORM and migrations
- Celery + Redis - background jobs
- REST + WebSocket - sync and realtime transport
AI Engine
- OpenAI GPT-4 / GPT-4o - Butler co-pilot
- PydanticAI - structured card outputs and routing
- sherpa-ONNX - on-device speech recognition
- WebSocket streaming - token-by-token responses
Geo & Search
- PostgreSQL + PostGIS - GIST spatial index
- OpenSearch - full-text and geo_distance filters
- Mapbox GL - clustered listing maps on web
- flutter_map + Leaflet - maps on mobile
Realtime & Messaging
- Socket.IO server + Redis pub/sub - multi-instance fan-out
- Raw WebSocket fallback - flaky-network resilience
- Bloc offline outbox - messages queue on the device
- Idempotency-key deduplication - no double sends
- Firebase Cloud Messaging - push notifications
Database
- PostgreSQL + PostGIS - primary store and spatial index
- OpenSearch - search index
- Redis 7 - Celery broker and Socket.IO pub/sub
- Hive - mobile local store
Auth & Multi-Tenancy
- Keycloak SSO - OAuth2 identity provider
- Role-scoped JWT - per-role access tokens
- RBAC middleware - enforced in FastAPI
- FIDO2 / WebAuthn passkeys - passwordless login
- Argon2 - password hashing
Payments
- Stripe Checkout + Subscriptions + webhooks - card billing
- Startbutton API - M-Pesa mobile money
- Multi-currency support - local and international
Storage & CDN
- Cloudinary - listing photos, inspection images and documents
- Signed uploads - direct-to-CDN with access control
DevOps & Infrastructure
- Docker - containerised builds
- GitHub Actions - CI/CD
- Nginx - reverse proxy
What actually changed
- Shipped five distinct roles (agent, buyer, lawyer/valuer, caretaker, tenant) from one Flutter codebase and one FastAPI backend with role-scoped JWT and RBAC - zero code duplication across roles
- PostGIS + OpenSearch geo-search delivers sub-300ms map queries over 300+ listings and is architected for 10x volume without infrastructure changes
- 9-milestone multi-party deal room with realtime Socket.IO sync replaces fragmented WhatsApp, email, and spreadsheet coordination for the full transaction lifecycle
- Offline-first Bloc outbox with temp-UUID optimistic UI, reconnect-drain deduplication, and idempotency-key dedup - chat works reliably on flaky 3G across East Africa
- Streaming OpenAI Butler in EN/SW with sherpa-ONNX on-device speech, PydanticAI structured card outputs, and context-aware screen reading
- Bilingual EN/SW with ~1,900 localized strings and compile-time ARB i18n safety on Flutter - zero runtime i18n key errors
- Startbutton M-Pesa + Stripe card billing as co-equal first-class payment methods with per-role subscription plans and webhook auto-reconciliation
- Event-driven FastAPI core powering three surfaces - ~40% faster feature development, no API drift across React SPA, Flutter mobile, and AI chat
See it for yourself
Have a similar project in mind?
Let's talk about how AI can transform your service business.
Discuss Your Idea Today


