TenantMate has a single business-logic application at its core, with multiple front doors for different audiences and a small number of external services it reaches out to. The renter has three ways to use the product — web, iOS, Android — all built from one codebase and all talking to the same backend. The team has a separate admin interface into that same backend. The marketing site doubles as the service's website and as the place renters sign up and manage their subscription, with payments handled by Stripe.
flowchart TD
subgraph FE [Front-ends]
direction LR
M["Marketing & signup site"]:::fe
T["Tenant app
PWA · iOS · Android"]:::fe
A["Admin portal"]:::fe
end
APP["Business-logic application
business rules · APIs · admin UI"]:::core
subgraph OWN [Owned directly]
direction TB
DB["Database
incl. geospatial"]:::owned
DOC["Cloud document storage"]:::owned
end
subgraph EXT [Reached out to]
direction TB
DATA["External UK data sources
postcode · crime · energy · flood · council tax · broadband"]:::external
AI["AI document summarisation"]:::external
EM["Inbound email gateway"]:::external
PAY["Stripe
subscriptions"]:::external
end
FE -- APIs --> APP
APP --> OWN
APP --> EXT
classDef fe stroke:#7aa2ff,stroke-width:2px,fill:transparent;
classDef core stroke:#b48cff,stroke-width:2px,fill:transparent;
classDef owned stroke:#5fd29a,stroke-width:2px,fill:transparent;
classDef external stroke:#f0c66b,stroke-width:2px,fill:transparent;
style FE fill:transparent,stroke:#7aa2ff,stroke-dasharray:3 3,color:#7aa2ff
style OWN fill:transparent,stroke:#5fd29a,stroke-dasharray:3 3,color:#5fd29a
style EXT fill:transparent,stroke:#f0c66b,stroke-dasharray:3 3,color:#f0c66b
A standalone web site that doubles as the public face of the service and the place renters sign up. Renters using the PWA or the iOS/Android apps are redirected here to register a payment method and start their subscription. Hosted independently of the application itself.
The product. A single codebase delivered three ways — Progressive Web App (in any modern browser, installable to the home screen), iOS app, and Android app. Same screens, same flows, same data, whichever way the renter prefers to use it.
A separate user interface for the TenantMate team. Used to support tenants, review escalations, and operate the service.
A single application sits at the centre of the system. It:
Holds all structured tenant data — accounts, tenancies, evidence metadata, conversations, the audit trail. Includes geospatial capability so we can do things like locate a property and run flood-risk checks against its position.
Keeps the actual files — photos, PDFs, voice notes — separate from the structured database. Documents live in object storage; the database holds the references and metadata.
Public UK data feeds the application queries on the tenant's behalf — postcode and address resolution, crime statistics, energy ratings, flood risk, council tax bands, and broadband speed. Each source is a discrete integration following a shared pattern. Broadband uses Ofcom data where available, falling back to the App Factory's own Speedwatch dataset where it isn't.
An AI layer that takes complex tenant documents (tenancy agreements, deposit deduction lists, council notices, scheme correspondence) and produces tenant-friendly summaries. Routing is tiered so we use the right model for the right task, with sensitive content restricted to privacy-reviewed paths.
Each tenancy gets its own dedicated email address. When a landlord, agent, scheme, or contractor emails the tenant about that tenancy, the email is captured and added to the tenancy's record automatically.
Stripe is the payment processor. Renters subscribe and manage their subscription through Stripe Checkout and the Stripe Customer Portal, both surfaced from the marketing & signup site rather than inside the apps. The application listens to Stripe events to keep subscription state and entitlement in sync.