Omegaswift
Solutions

SaaS Product Development

A SaaS product is a service you operate rather than a project you finish. We build it that way from the first commit, and the decisions that are hardest to reverse get made first.

How We Help

What saas product development looks like as a piece of work.

One Customer's Data, Nowhere Near Another's

This is the hardest thing to change later, so it gets decided first. Shared tables with a tenant column are cheap to run and one missing clause away from showing customer A the records of customer B. A database per customer is safer, costs more to migrate, and past a certain number of accounts stops being practical to operate. We choose against how many customers you expect, what your buyers will ask in a security questionnaire, and whether anyone will insist their data sits in a particular country. Then the rule gets enforced as far down the stack as we can push it, and we write tests that try to cross the line on purpose.

Sign Up, Billing And The Awkward Cases

Billing is where these projects overrun, because the path where everything works is a small part of it. A card fails on renewal night. Somebody upgrades mid month and expects the proration to be right. A trial ends and the account has to go read only rather than disappear. A customer needs a purchase order number on the invoice or their finance team will not pay it. Tax differs by where the buyer is. We build those paths and test them by moving the clock forward rather than waiting a month to find out, and the subscription state lives in your own database, so you are never asking a payment provider what your revenue was.

Shipping Without Taking Anyone Offline

Your customers are working while you deploy. Schema changes therefore go out in steps where the old code and the new code both keep running, unfinished features sit behind flags, and a release can be switched off without a rebuild. New versions reach a small slice of accounts first, and we watch the error rate there before it goes wider. Alongside that you get numbers per account: who is really using it, what each one costs to serve, and which accounts quietly generate most of your support load. That last figure changes how you price, and it is far easier to collect from the start than to reconstruct in year two.

The First Enterprise Customer Rewrites Your Product

There is a predictable moment in a subscription business where a deal arrives that is worth more than everything signed so far, and it comes with a list: single sign-on against their identity provider, an audit log they can export, role-based permissions finer than the three you built, a data processing agreement, an uptime commitment with consequences attached, and a security questionnaire measured in pages. None of these are difficult problems. All of them are expensive to retrofit into a product that assumed a user is an email address and a password, and they arrive at the least convenient time: with a signature waiting and a quarter to close. What makes this survivable is anticipating the shape of it in the identity and permission model early, even while shipping the simple version. It costs very little to leave the door open and a great deal to knock a new one through.

Churn Is An Engineering Problem Too

Cancellations get treated as a marketing concern, and a meaningful share of them are built rather than sold. An onboarding where a new account faces an empty screen with no obvious first action. An invoice that arrives without the purchase order number the customer's finance team requires. A card that expires and fails silently, so the first the customer hears of it is losing access. A plan change that is easy to make upward and requires an email downward, which reads as a trap and is remembered as one. Each is a product decision with a technical implementation, and each is measurable. Instrumenting the first week of an account's life, the renewal path and the downgrade path tells you where accounts are actually being lost, which is rarely where the assumption said.

What we build

The shapes saas product development work actually takes

  • New products

    From first commit to paying customers, with the decisions that are hardest to reverse, tenancy, identity, billing state, made first rather than deferred until they are load-bearing.

  • Tenancy and isolation

    One customer's data kept away from another's, enforced as far down the stack as it will go, with tests that deliberately try to cross the line.

  • Subscriptions and billing

    Sign-up, trials, upgrades, proration, failed cards, dunning, cancellation. The unhappy paths are the work, and they are tested by moving the clock rather than waiting a month.

  • Enterprise readiness

    Single sign-on, exportable audit logs, granular roles, data processing agreements. Cheap to anticipate, expensive to retrofit at the moment a large contract is waiting.

  • Zero-downtime delivery

    Expand-and-contract migrations, feature flags, staged rollouts. What turns a rollback into a decision rather than an emergency, and a release into a Tuesday morning.

  • Usage and unit economics

    Per-account usage, serving cost and support load, instrumented from the start. This is what gives pricing evidence instead of confidence.

How we work

How a saas product development engagement runs

  1. 01

    Irreversible first

    Tenancy, identity and billing state decided before the first table exists. Everything else can be changed later; these three are the ones that cannot.

  2. 02

    Charge early

    Real money from a first cohort, with the unscalable parts done by hand on purpose. It tells you which of them are worth automating and which were never needed.

  3. 03

    Build the unhappy paths

    Expired cards, lapsed trials, mid-cycle upgrades, purchase order numbers on invoices. This is where subscription products actually break.

  4. 04

    Ship without downtime

    Migrations that run with both old and new code live, features behind flags, releases reaching a slice of accounts while error rates are watched.

  5. 05

    Operate and measure

    Usage, cost and support load per account, plus the first-week, renewal and downgrade paths instrumented, because that is where accounts are quietly lost.

Who it is for

You probably need this if

  • You are building a product, not a project

    It will be operated for years rather than delivered once. The decisions that are hardest to reverse deserve to be made first, while they are still cheap.

  • Billing is where your roadmap goes to die

    Proration, failed renewals, trials expiring, invoices that finance teams will actually pay. The happy path is a small fraction of this work.

  • A large customer is asking for SSO and an audit log

    The first enterprise deal always arrives with a list. It is survivable if the identity and permission model left the door open.

  • You do not know what an account costs you

    Which means your pricing is a guess. Usage and serving cost per account is a report if collected from day one and archaeology if not.

FAQ

Questions we get asked

How do you keep one customer’s data away from another’s?

By deciding the isolation model before the first table is created, because it is the one thing that is genuinely painful to change later. Whether tenants share a database with enforced row-level separation or get their own depends on your customers and what they will be asked in security reviews. Whichever it is, the rule is enforced in one place rather than remembered in every query.

Should we build billing ourselves?

No. Use an established payments provider and let it own cards, invoices, tax and the retry logic for failed payments. What still belongs to you is the part nobody else can do: what a plan includes, what happens on the day a subscription lapses, and how an upgrade halfway through a month is counted. That logic is where subscription products actually break, and it is where we spend the time.

How do you ship updates without breaking existing customers?

Changes go out behind flags so a feature can be turned on for one account before all of them, and the database changes are written to work with both the old and the new code for as long as both are running. That is what makes a rollback a decision rather than an emergency, and it is what lets a SaaS product be updated on a Tuesday afternoon instead of at midnight.

What do enterprise customers ask for that startups do not?

Single sign-on, an audit log they can export, a data processing agreement, a defined uptime commitment and somewhere to point their own security questionnaire. None of these are hard if they are anticipated, and all of them are expensive to retrofit into a product that assumed every user signs up with an email address and a password.

How long before we can put it in front of paying customers?

Sooner than a full product, and the useful question is which parts cannot be faked. Sign-up, tenant isolation and taking money have to be real, because those are the ones that damage trust or leak data if they are improvised. A great deal else can be deliberately manual at the start: onboarding done by a person, reports assembled by hand, an admin action performed by your team rather than self-served. Charging real money from the first cohort tells you more than any amount of research, and doing the unscalable parts by hand tells you exactly which ones are worth automating.

What does it cost to run, and how do we know what to charge?

You should be able to see what a single account costs you to serve, and most products cannot, which is why so much SaaS pricing is guesswork with a confident face. We instrument usage and cost per account from the start: storage, compute, third-party API calls, and the support load, which is the expense that never appears in an infrastructure bill and frequently dominates. That is what lets you notice the customer paying the smallest plan while generating a third of your costs. Collected from day one it is a report; reconstructed in year two it is an archaeology project.

Who owns the code and the customer data?

You own both, and for a SaaS product the second half of that matters more than people assume. The code sits in your repository and the cloud accounts are in your company's name with your billing details. More importantly, you should be able to get every customer's data out in a usable form, on demand, without our involvement: because your own customers will eventually ask you for exactly that, and because a business whose data is only reachable through its supplier has a dependency it cannot price. Export is built as a product feature rather than as a favour someone performs with a database client.

What happens when a customer wants their own region or their own instance?

It is a business decision with a large engineering bill attached, and it is worth pricing as one rather than agreeing to in a sales meeting. A single deployment serving everyone is dramatically cheaper to operate than several, and each additional region or dedicated instance multiplies deploys, migrations, monitoring and the number of places an incident can happen. Sometimes the contract justifies it. What makes it survivable is having anticipated it in the isolation model rather than promising it to a large customer and then discovering the architecture assumed one deployment forever.

What you get

What is different once the saas product development work is done

  • Tenant separation enforced at the database, not by a filter somebody might forget
  • Sign up, plan changes, failed cards and cancellations all working before launch
  • Releases that go out on a Tuesday morning, behind flags, with no maintenance page
  • Usage and running cost visible per account, so pricing has evidence behind it

Ready to talk about your IT?

We are happy to answer any questions you have and help you work out which of our services fit your needs.