Starter pack

SaaS Essentials.

Seven promises most software people pay for should keep. Ideas to think with, not rules to follow.

Have software already? Read each one against it. Some you keep already. Some you may not, and those are worth knowing about.

Starting something new? Pick the few that fit the people you serve.

  1. Clear terms

    When a customer chooses a plan or is asked to pay, they can see what they will pay, how often and for what, before they are charged.

    It protects a customer's informed choice.

    Could anyone be charged for something they never saw priced?

    Test the amount, how often and what for are shown before every charge is made.

  2. Fair charges

    When a customer is charged, they are charged what they agreed to, once, and never for a service they no longer have.

    It protects a customer's money.

    What happens on a retry, a plan change or a payment that half fails?

    Test a retried payment or a replayed payment message charges once.

  3. Their data stays theirs

    When one customer's data is stored, shown or used, it is never shown to, or used for, anyone else without their say.

    It protects each customer's privacy.

    Is everything read and written scoped to its own account?

    Test signed in as one customer, another customer's data cannot be read.

  4. Work is kept

    When a plan changes, a payment lapses or the software is changed, what a customer made is kept, never lost or held back as leverage.

    It protects a customer's work.

    When a card fails, what happens to what they made?

    Test after a downgrade or a lapsed payment, what they made is still there and can be taken away.

  5. Paid means delivered

    When a customer is paying, they get the service they pay for, or are told plainly when they do not.

    It protects what a customer paid for.

    If a paid feature stops working, does anyone tell them?

    Test when a paid feature fails, the customer is shown that it has.

  6. Free to leave

    When a customer wants to go, they can cancel as easily as they signed up, and take their data with them.

    It protects a customer's freedom to leave.

    How many steps to cancel? Can they take their data with them?

    Test cancelling takes no more steps than signing up, and an export holds all their data.

  7. Deleted means deleted

    When a customer asks for their data to be deleted, it is deleted, and they are told when it is gone.

    It protects control over their own data.

    Do backups, logs and copies elsewhere keep it?

    Test after deletion, their data is gone from every place you keep it, and they are told.

Making one yours

None of these is required, and none is added for you. In your repository, iz4 add asks three questions: when it applies, what must always stay true, and what that protects, then asks you to name it. Answer in your own words. Change it to fit, or leave it out.

Then give it its test: iz4 test writes one. With its test and its rule for change, the promise becomes an invariant, born exploring: you can reword the promise freely, and a failing test only warns. Once the promise is agreed and you establish the invariant, a change waits for your signed yes and a failing test stops the commit.

iz4 add

A promise you keep is worth more than seven you copied.

Back to getting started · the full guide