Skip to content
All posts
ProductInsurers

Launch an insurance product without writing code

Rate tables, rules and pricing as configuration: versioned, effective-dated and approved by a second person before they price a single policy.

The BimaStack team · · 6 min read

Most insurance software makes a new product a project: requirements, a developer, a release. On BimaStack a product is configuration your own team writes, checks and approves. We set up six insurers with five products each (motor, travel, home, personal accident and medical) this way, using rate tables and workflows and no code at all.

The pieces

Piece What it holds
Rate table A whole rate card: bands, rates, minimums, excess and add-ons, checked for gaps and overlaps when published
Workflow How the premium is worked out, step by step, readable as text and as a diagram
Product definition Its inputs, its covers, and the rules that accept, refer or decline
Agreement Who may sell it, on which terms, for what commission

A workflow you can read

This is part of the motor workflow every insurer in our demo shares. Each insurer’s own rate tables supply the figures, so one workflow prices six insurers.

motor-private-pricing.wf (extract)
workflow "motor-private-pricing" {
    input vehicleValue : NUMBER

    block MP_baseRate {
        in x : NUMBER
        out rate : NUMBER
        param tableCode = "motor-private-base-rate"
        binding: block "protected:table-rate:band"
    }
    block MP_minPremium {
        in x : NUMBER
        out rate : NUMBER
        param tableCode = "motor-private-min-premium"
        binding: block "protected:table-rate:band"
    }
    formula MP_rawBase {
        in value : NUMBER
        in rate : NUMBER
        expression: value * rate / 100
    }
    formula MP_basePremium {
        in raw : NUMBER
        in minPremium : NUMBER
        expression: round(max(raw, minPremium), 2, "HALF_EVEN")
    }

    connect vehicleValue -> MP_baseRate.x
    connect vehicleValue -> MP_minPremium.x
    connect vehicleValue -> MP_rawBase.value
    connect MP_baseRate.rate -> MP_rawBase.rate
    connect MP_rawBase -> MP_basePremium.raw
    connect MP_minPremium.rate -> MP_basePremium.minPremium
}

Safe to change

  • Two people. Whoever drafts a change can’t approve it (unless they’re their organisation’s only member).
  • Dated versions. A new rate card can be published today to take effect on the first of next month, while today’s keeps pricing until then.
  • Test before it’s live. Simulate a draft against real cases and see every step of the calculation.
  • Every quote remembers. Each quote records exactly which versions of which tables and workflows priced it, and can be replayed to show what moved when something changed.

Launch your next product in days

Book a demo with your own rate card.

Book a demo