Multi-tenant field canvassing and lead-acquisition platform with GPS-verified visits
A multi-tenant SaaS platform for property-acquisition field teams: a React Native app for door-to-door canvassing agents over a Laravel API and web back office, with GPS-verified visit logging, a configurable per-tenant data model, and a multi-stage acquisition pipeline.
Property-acquisition teams buy lists of leads, hand them to canvassing agents, and send those agents out to knock doors — historically on spreadsheets, paper and trust. Lead lists arrive from many providers in wildly different column layouts, and re-keying them by hand is slow and loses whatever nobody had time to transcribe.
Nobody could verify that an agent had actually visited a property. "No answer" is unfalsifiable, and when agent compensation is tied to activity volume, an unverifiable log is a management problem as much as a reporting gap.
The conversation at the door produces the real value — the owner's intent, the property's condition, their timeline — and that is worthless sitting in a notebook. And a lead that goes anywhere afterwards moves through very different downstream stages — follow-up, nurture marketing, purchase negotiation, closed deal — each wanting its own fields and its own reporting, for tenants who each wanted their own data model without a schema migration per customer.
Built a spreadsheet import wizard where a tenant maps source columns to platform fields once; the mapping is saved as a reusable template, and columns that do not correspond to an existing field can be promoted into tenant-defined custom fields instead of discarded.
Pushed the data model into configuration: custom field definitions, statuses, types, list-column ordering and per-stage view layouts are all tenant-scoped records rather than code, and a new tenant is provisioned by cloning the platform's default statuses, activity events and field set into working configuration.
Verified field visits on the device: at the moment an agent logs a doorstep outcome, the app captures the device's current position, computes the distance to the property's stored coordinates locally, and persists the outcome together with both coordinate pairs, the computed distance and a verification flag — keeping the underlying measurement rather than only a pass/fail verdict, so the verification rule can be revisited later without re-collecting data.
Structured the doorstep conversation itself: a questionnaire defined per tenant is instantiated against each lead and presented to the agent at the door, turning the conversation into structured, reportable answers instead of free text.
Modelled the pipeline as distinct stages — follow-up, nurture marketing, purchase, closed deal — each with its own configurable field layer and list view, connected by explicit promotion and a preserved link back to the originating lead, and layered two complementary audit mechanisms on top: a machine-readable before/after change record for compliance, and a separate declarative history engine that renders the same changes as a readable activity timeline for the people using the product day to day.
Lead lists are imported instead of re-keyed, with a saved mapping per provider that makes a repeat import a single step instead of a transcription exercise, and new tenants can be onboarded without engineering work because fields, statuses and views are configuration cloned from working defaults.
Field activity became measurable and reviewable — every visit carries its own location evidence rather than resting on self-report — and doorstep conversations become structured data that reporting, follow-up and marketing can all act on.
The pipeline beyond the first conversation is tracked in one place, with every record still traceable back to the original lead, and every meaningful change is accountable through a machine-readable audit trail for compliance and a readable activity timeline for everyday use.
Something holding you back?
New build, rebuild, or adding AI to what you already have — I'll take a look and give you an honest perspective.