← All workHEALTHCARE INSURANCE·2023 – now

Insurance Calculator

Health-insurance quote engine — An international health insurer was building client proposals by hand — a spreadsheet, a calculator, and a great deal of hope. The brief was to turn that into software: pick the parameters, compute the premium, produce a branded PDF in the client's language, and keep a record of every quote. It now runs as a white-label product.

Drupal 11PHP 8Entity PrintParagraphsPlugin APImPDFDrupal Migrate APIDockerMySQL
Insurance Calculator
Sector
Healthcare insurance
Year
2023 – now
Role
Lead engineer · architect
Outcome
~30% of a team's week automated · now a white-label product · zero-dev pricing updates
The problem

What needed fixing.

Quoting a policy meant juggling age bands, country of nationality, country of expatriation, plan level, deductible, coinsurance and optional modules — by hand, per applicant, several applicants per proposal. Then the numbers were retyped into a client-ready document. Every change to the rate tables meant a developer ticket and a wait. It was slow, error-prone, and nobody's idea of a good week.

The approach

How I built it.

Drupal's Plugin API let me build the calculator as modular, testable pieces rather than one heroic function. The pricing lives in data, not code, so staff upload new rates from a validated CSV and the engine simply uses them — no deployment, no developer. Quotes compose in real time across all the dimensions, then Entity Print and mPDF render a branded proposal translated into the client's language. The result automated roughly a third of the insurance managers' daily work, which is the sort of number that gets a project a sequel.

A pricing matrix with seven dimensions, a multilingual PDF at the end of it, and insurance managers who no longer file a developer ticket to change a number.

Objectives
  • 01Replace the manual, spreadsheet-driven quoting process with software
  • 02Let non-technical staff update pricing themselves, without a deployment
  • 03Compute multi-applicant quotes across every pricing dimension in real time
  • 04Produce branded, multilingual PDF proposals ready to send
  • 05Keep a tracked history of every quote for management
Key elements built
  • Multi-dimensional pricing engine (age × nationality × expatriation × plan × deductible × coinsurance × module)
  • Multi-applicant quote composition with side-by-side option comparison
  • CSV-driven rate import with validation — staff update pricing, not developers
  • Branded multilingual PDF proposals via Entity Print + mPDF
  • Self-service admin: data import, base prices, currencies, companies, countries
  • Quote-history tracking and reporting for management

The premium nobody could calculate by hand

A health-insurance premium isn't one number — it's the product of an applicant's age band, country of nationality, country of expatriation, plan level, deductible, coinsurance, optional modules, currency and payment frequency, multiplied across every person on the proposal and then run through a discount engine. For years an insurance team did that by spreadsheet and a steady nerve: a couple of hours per quote, the constant risk of a fat-fingered rate, and a manager who couldn't update a price without a developer. GHI is the system that took that whole job off their desk.

Built from scratch on Drupal, Dockerised with CI/CD from day one, it now automates roughly 30% of the insurance team's week — and it works so well that it's been turned into a white-label product other brokers run under their own name.

Quote Portal
Spec
CMS
Drupal 11
Search
By quote #, applicant, cover, currency, status
Delivery
Dockerised, CI/CD
Outcome
~30% of a team's week, automated

The spreadsheet era, replaced by one portal a manager can actually run.

The Quote Portal: every proposal in one searchable list — applicant, premium, currency, frequency, status. Anonymised.

Nine dimensions, several applicants, one quote

The heart of it is the calculator. A manager adds each insured person — name, date of birth, nationality, country of expatriation — then sets the shared terms: payment frequency, currency, area of cover, start date. From there they build option columns side by side, each its own combination of plan level, deductible, coinsurance, dental and vision and discount, with the annual premium recomputing live as they go. Six options on one screen, compared at a glance, where there used to be six spreadsheets and a prayer.

Multi-applicant quote builder
Spec
Applicants
Multiple per proposal
Dimensions
Age × nationality × country × plan × deductible × coinsurance × module × currency × frequency
Pricing
CSV-driven, staff-editable
Engine
Live recompute + discount engine

Pricing lives in data, not code — no deployment to change a rate.

The calculator: several applicants, multiple option columns, live pricing across every dimension. Anonymised.

A proposal the client can actually read

A quote is only useful once it's a document someone can put in front of a client. So the end of the flow is a branded proposal — translated into the client's language, generated by Entity Print and mPDF, tracked by quote ID. It opens with a clean quote summary (applicant, area of cover, underwriting terms, applicable law) and lays out the indicative premium with the full breakdown: plan level, dental and vision, deductible, coinsurance, and the discount engine showing the saving applied. Pick a language, download, present.

Handed back to the people who run it

The part that makes it a product rather than a tool is that the managers own it. Rate tables, base prices, currencies, companies, countries, email notifications — all of it is maintained through a self-service admin, by data import and on-screen editing, no developer in the loop. That's the whole point: a pricing change that used to be a support ticket and a deployment is now a CSV upload over lunch. It's why GHI stopped being one broker's internal calculator and became a white-label platform others run as their own.

Full stack
Drupal 11PHP 8Entity PrintParagraphsPlugin APImPDFDrupal Migrate APIDockerMySQL
Next projectEuropean Insurtech Fractional CTO engagement (NDA)

Got something with similar shape? I read every message personally.

Start a project →