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
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
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.