The client
A California real estate group whose work spans three related businesses: property deals, financing, and the legal side that comes with both. Several people work the pipeline, and they don't all need — or want — the same view of it.
The problem
Deals were tracked across scattered tools, so nobody had one reliable picture of what was in flight. Adding a person meant adding another spreadsheet, and there was no way to give somebody their own slice of the pipeline without handing them everything.
What we built
- A single CRM hub for the group's deal flow, running on the client's own domain rather than a generic vendor URL.
- Role-scoped pipelines. Team-level users see everything; coaches see only the people assigned to them. Access is a property of the role, not a convention people have to remember.
- Self-serve account setup. New users set their own password through a reset flow, so no working credential is ever sent by email.
- Proper transport security — forced HTTPS and session cookies that only travel over it, which is not a given when an app is moved onto a new hostname.
Continuous development, not a one-off
This one is deliberately built as a hub. New projects across the group's three business lines hang off the same system as they come up, and the hostname is a single configuration value so the whole thing can be rebranded without a rebuild.
The outcome
One place where the group's deals live, under their own name, with each person seeing exactly their own book — and a foundation that takes the next project without starting over.
What's under the hood
- Laravel + MySQL CRM, hosted and maintained by us
- Role-based access control with per-user pipeline scoping
- Self-serve password reset as the account-creation path
- Forced HTTPS with HSTS and secure session cookies
- Client-branded hostname, kept to one config value