The document-chasing layer a leasing platform never had
The problem
VerifySSI ran its lease applications through QuickLease Pro, which collects applications but has no document processing layer. Nobody could see which applicant still owed which document, so chasing them was manual, inconsistent, and the thing that quietly held up every approval.
The insight
Chasing a document is a state problem, not an email problem
The obvious build is a mail-merge that nags everyone. The useful build tracks state: which document slots exist on each application, which are still empty, and which were empty when you last asked. That last distinction is what makes it work in practice — a document often arrives after a reminder is queued, and a system that cannot tell the difference re-asks for something already sitting in the file, which is exactly how staff learn to ignore it. The overview is rebuilt from the vendor's own data on every sync, with a flood detector that refuses to act if the picture suddenly changes more than it plausibly should.
What we built
- A Document Overview that reconstructs, per applicant, which document slots are outstanding — including auto-detected slots the vendor exposes but does not track
- Targeted reminder emails listing only what is actually missing, with delivery and open tracking and a full send history per applicant
- Reconciliation that suppresses a reminder for any document that arrived after the reminder was composed
- A provider-adapter framework with a registry, so additional leasing platforms onboard as an adapter rather than a rewrite of ingestion
- Multi-company support with per-company credentials, sync-health monitoring, and a flood detector as an absolute backstop
- Single sign-on against the client's Microsoft Entra tenant, with access on an explicit allow-list, and staff email signatures synced from Microsoft Graph
In progress — not yet shipped
Now in build — the greenfield replacement
The add-on proved the domain, and the engagement expanded into a full multi-tenant screening platform for community associations: applicant intake, document collection, payment, background checks, e-signatures, and decision delivery to the board — replacing the third-party platform outright. Tenant isolation is enforced in the database with row-level security on every table rather than trusted to application code.
- FastAPI
- React
- TypeScript
- Postgres 16 + RLS
- GCP Identity Platform
- Cloud Run
- Cloud Storage
Have something with a domain problem underneath it?
Those are the ones worth talking about. Describe it and you will get a straight answer about what it would take.
Start a conversation