Service SaaS engineering

Ship a SaaS product without rebuilding it twice.

End-to-end product engineering from discovery to billing to scale. We have built our own SaaS, WP Vanguard, end-to-end on the same stack we will use for yours.

WP Vanguard, our security SaaS, runs on this exact stack
Billing edge cases the part that leaks money
Card declined, day 3 Retry 4x over 14 days, then dunning email Retrying
Seats 12 to 30, mid-cycle Prorated to the day, invoiced now Automatic
Downgrade at renewal Access held until period end Automatic
Refund after usage Flagged for a human, not auto-approved Human

Every one of these is a decision someone has to make. Making them at build time is cheaper than making them in a support queue.

Why this matters

Most SaaS rewrites happen because the first build skipped the boring parts.

The boring parts are the parts you regret skipping. Billing webhooks that retry properly. Tenant isolation that survives a security review. Background jobs that do not silently die. Auth that an enterprise buyer can audit. Logs you can actually grep when production goes sideways at midnight.

We build SaaS on the second-build patterns from day one. The first launch ships with the architecture that the second launch would have needed anyway. Your team takes over a codebase that scales, not one that needs a rewrite to survive product market fit.

Health, live

What a working SaaS looks like at month 13.

The metrics dashboard pattern we ship with every SaaS build. MRR, active tenants, average cost-to-serve, conversion. Plus a live feed of recent billing events. Real shape, real cadence, real on-call rotation. Scroll up and back down to replay.

acme.app · this month live UTC
MRR $0 + 9.2% vs prev
Active tenants 0 + 14 this week
ARPU $0 flat
Trial → paid 0.0% + 1.2 pts
Recent billing events 5 of 142 today
  • evt_8421 14:23 UTC subscription.created · Team plan $199/mo Active
  • evt_8420 14:21 UTC invoice.paid · Pro plan $99/mo Paid
  • evt_8419 14:18 UTC subscription.upgraded · Pro → Team + $100/mo Active
  • evt_8418 14:14 UTC payment.requires_action · 3DS $199/mo 3DS
  • evt_8417 14:09 UTC trial.converted · Pro plan $99/mo Active
  • Stripe wired · subscriptions, proration, 3DS, dunning, tax all tested at deploy
  • Multi-tenant · pattern picked deliberately, not by default
  • Marketing site + docs ship with v1 · not a backlog item

What we build

A SaaS that holds up after the launch tweet.

Stripe billing wired and tested. Multi tenant pattern picked deliberately. Auth that matches your buyer. Background work that scales. Marketing site that converts. Docs that exist on day one. All shipped together.

01

Stripe billing on day one

Subscriptions, metered billing, trials, dunning, webhooks. Cashier on Laravel or Stripe SDK on Node. Customer portal, invoice history, plan upgrades. Wired before the first user signs up.

Revenue flows from launch day.

02

Multi tenant, the right way

Team based isolation or per tenant database based on the threat model. Roles and permissions enforced at the policy layer, not the controller. Audit log surfaces every privileged action.

Enterprise tier sales become possible.

03

Auth that scales with the company

Magic link, OAuth, SSO, MFA. SCIM provisioning when you need it. Passkeys when your customers ask. We pick the auth stack to match the buyer, not to match a tutorial.

Sales never blocked by auth requirements.

04

Background work, observability, alerts

Queues from the first job. Horizon or BullMQ to manage them. Sentry for errors, Pulse or Datadog for metrics, Slack alerts for the things that page the on-call person.

Outages caught before customers report them.

05

Marketing site that ships product

Astro frontend with real product screenshots, real pricing, real changelog. Lead form to your CRM. Docs site auto-published. The product and marketing share a design system.

Conversion path measurable from day one.

06

Documented, deployable, transferable

README that actually works. Architecture diagram in the repo. Deploy runbook. Onboarding doc for the next engineer. Code we ship is code your team can extend without us.

No vendor lock-in to our agency.

Production

we run our own SaaS in production using the same patterns

WP Vanguard, full stack Laravel + Astro + Stripe + Cloudflare. Public proof on request.

Process

How a SaaS engagement runs.

01

Discovery and shape

Two to three weeks. Domain map, user journeys, integrations, billing model, compliance posture, deploy target. Output is a roadmap, a fixed price for phase one, and a candidate architecture.

Build starts with a real plan.

02

Build in sprints

Two week sprints. Working demo at end of every sprint. Auth, billing, core feature, marketing site, docs ship in parallel tracks. Customers can be invited to staging from sprint two.

No big bang launches.

03

Launch and iterate

Soft launch to first ten customers, monitor, iterate. Public launch when retention and core flows hold. Retainer or transfer, your call.

Launch is the start of growth, not the end of the engagement.

What it costs

SaaS pricing follows tenancy, billing and how much product already exists.

A first version proving one idea and a platform with tenants, billing and dashboards are the same sentence and very different projects. Here is what moves the number.

What moves the number

  • How tenants are separated Deciding this before the first line is cheap. Changing it later is close to a rewrite, and it is the single most consequential early call.
  • How money works Plans, trials, proration, upgrades, dunning and tax. Simple individually, complicated together, and painful bolted on.
  • How much exists A prototype to harden is a different job from a blank page, and usually a better starting point than people expect.
  • What has to be true on day one Uptime, audit trails, data residency and procurement requirements each shape the build rather than sitting on top of it.
  • Who takes it over A codebase your own team can own needs documentation, tests and a deploy path, and that is deliberate work.

Small, well-defined work is usually better handled as an hourly block than scoped as a project, and we will say so rather than inflate it into one.

Rough idea to delivery

  1. You send the details What you want built, roughly, plus budget range and timing. The form asks for all of it
  2. Within 4 business hours We read it and reply. Nothing is scheduled before we know what it is about
  3. Then the call Free discovery, booked once there is enough on the table to make it worth your hour
  4. Within 48 hours of the call A written fixed-price quote you approve before anything starts
Get an estimate

Quick enquiry

Building a product, or rebuilding one?

Tell us where it is today and what is blocking the next stage. If multi-tenancy or billing is unresolved, mention it first.

Prefer the full form? Start a project

No drip sequences, no marketing list. We reply and that is it.

Common questions

Frequently asked

  1. What stack do you build SaaS on?

    Default is Laravel + Inertia (Vue or React) for full stack apps, or Laravel API + Next.js when the frontend team is separate. Astro for the marketing site. Postgres for data. Redis for queues and cache. Cloudflare or Forge for deploy. We pin the stack to your team, not the other way around.

  2. How do you handle billing?

    Stripe is the default. Cashier on Laravel handles subscriptions, trials, metered, and seat based pricing. Customer portal embedded. Webhook handlers tested with Stripe CLI before launch. We have shipped this exact integration in WP Vanguard.

  3. Do you build the marketing site too?

    Yes. The product and the marketing site share a design system from day one. Marketing site in Astro for speed and SEO, product app in your chosen frontend framework. Same brand tokens, same components where it makes sense.

  4. How do you decide multi tenant pattern?

    Two questions. Is data isolation a contractual requirement (HIPAA, SOC 2 with strict tenant separation)? And what is the expected tenant count in two years? Combined answers determine team based isolation, schema per tenant, or database per tenant. We document the choice in the discovery doc.

  5. How long does a full SaaS build take?

    Three to six months for a focused product (auth, billing, core feature, marketing site, docs). Longer for products with heavy integrations or compliance. We ship in two week sprints with a working demo at the end of every sprint.

  6. What does it cost?

    SaaS work is estimated against scope rather than sold at a list price. Proving one idea and building a platform with multi-tenancy, billing and dashboards are very different projects. The section above sets out what moves the number.

Ready to ship a SaaS that lasts?

Tell us what you want to build.

Discovery call is free. Fixed-price quote within 48 hours. Builds are scope-dependent.