~/work / one-pro-suite

One Pro Suite

I architect and build a modular, multi-tenant insurance quoting SaaS for agencies, producers, and consumers.

role
Lead architect
product
Quoting and operations SaaS
stack
Laravel, Inertia, Vue, TypeScript
delivery
Blue/green on AWS

the-problem

From an agent's side, a quote looks like one question. Behind the screen it becomes many requests to carriers that each have their own rules, data, and failure modes.

A slow provider shouldn't hold up the agent, and adding a carrier shouldn't mean rewriting the product. The platform also had to serve agencies, producers, and consumers while keeping each company's data separate. It needed to absorb all of that variety and stay simple to work on.

my-role

I lead the architecture and work hands-on in the code with the team. That covers the module structure, the integration boundary, the contracts between backend and frontend, and how releases reach production. The team builds on that foundation, so the product is shared work. The decisions below are the ones I'm responsible for.

how-a-quote-moves

Every quote follows the same path, whichever product or carrier is involved. That consistency is what makes the rest of the system easy to reason about.

  1. IntakeSchema-driven forms collect what each product needs.
  2. PrefillData providers fill in what is already known.
  3. OrchestrationRequests go out to multiple carriers.
  4. DeliveryQuotes reach the screen in real time.

Simplified. Provider and carrier details are left out.

key-decisions

Forms come from schemas

Intake is schema-driven, so the questions can change by product without a new screen for each one. Data providers can then fill in what is already known, which saves the agent from typing it again.

Carriers sit behind one boundary

Each carrier connects through an explicit contract. Product code depends on a capability, and the differences between carriers stay behind the boundary. External providers are rarely consistent, so this boundary does a lot of the work in the system.

Types come from the backend

Typed Laravel-to-TypeScript contracts mean the backend defines the shape of the data and the frontend receives it. That removes a common source of regressions in a large product, where two sides of the same feature slowly drift apart.

Tenancy and access are part of the foundation

Tenant-aware roles, encrypted integration credentials, and audit history sit in the core of the platform. Every module inherits them, so a new feature starts with the same rules as the rest of the product.

Releases can be reversed

One immutable build moves through environments, and production uses blue/green deployments on AWS with health checks and rollback. Database changes follow an expand and contract approach, so rolling back code doesn't need a destructive schema change.

what-it-adds-up-to

The result is a consistent way to extend the platform. New modules and carriers follow the same path, with the same types, tests, and release process around them.

results

  • 17carrier integrations
  • 18backend modules
  • 450+automated test files
  • 15GitHub Actions workflows

Measured in the codebase on 21 October 2026. This is proprietary software, so customer details, carrier names, and internals stay off this page.