← All work

Case study · Decision system

Digital Budget Optimisation Engine

Decision optimisation system using Operations Research. A decision optimisation engine that formalises marketing budget allocation under fixed constraints. It does not rely on heuristic rules or intuition-led budgeting. Instead, it translates strategic priorities into a constrained optimisation problem, solved using Linear Programming.

The focus of this work is not dashboarding or performance reporting, but the design of a reproducible, auditable decision system.

Open-sourced as CLARO and distributed on PyPI as claro-engine. SSRN preprint; software paper under review at SoftwareX.

Source Code
Live App
PyPI Package
Optimisation engine walkthrough

The problem

In many SME environments, digital marketing budgets are allocated using static percentages, historical benchmarks, or subjective judgement. These approaches do not explicitly model trade-offs between competing objectives or account for platform-level productivity differences under a fixed investment constraint.

As a result, budget decisions are often opaque, difficult to justify, and hard to reproduce.

I designed a modular optimisation engine that separates human strategic intent from machine-led decision logic. Users define:

  • Strategic objectives
  • Total investment constraints
  • Platform-level priorities

The system then computes an optimised budget allocation using Operations Research techniques, enforcing constraints and explicitly modelling trade-offs between goals and platforms.

Optimisation result

Why this project is different

This project goes beyond typical analytics tools in several ways:

  • It implements a flow-locked decision architecture rather than an exploratory dashboard
  • It formalises budget allocation as a constrained optimisation problem
  • It separates human judgement from machine-led optimisation
  • It applies Operations Research techniques in a practical SME decision context

The originality lies in system and decision design, not in surface-level tooling.

System architecture

The engine is implemented as a multi-stage decision pipeline with strict flow control:

  • Module 1: Strategic objective selection and total budget definition
  • Module 2: Platform selection and priority weighting
  • Module 3: Historical KPI input and productivity ratio calculation
  • Module 4: Data transformation into cost-per-unit efficiency metrics
  • Module 5: Linear Programming optimisation engine
  • Module 6: KPI forecasting with uncertainty bands
  • Module 7: Insight generation and plain-language decision explanation

A central state controller enforces irreversible progression through the decision stages, ensuring traceability and decision integrity.

Optimisation logic

The core optimisation model is formulated as a Linear Programming problem:

  • Decision variables represent budget allocations per platform and per strategic goal
  • The objective function maximises weighted expected KPI output
  • Weights combine system-level strategic priorities with platform-specific importance
  • A global budget constraint enforces realistic trade-offs

The optimisation formulation and weighting logic were designed specifically for this system rather than adopted from a pre-existing template.

Distribution and reliability

The engine is distributed through three public channels: the source repository on GitHub, a hosted Streamlit demonstration, and a standard Python package on PyPI (pip install claro-engine). The package contains the optimisation pipeline only, with no UI dependencies.

Every change is verified by 243 automated tests covering numerical accuracy, behavioural invariants, and edge cases, executed automatically on continuous integration. The archived research snapshot (v0.2.1) is preserved on Zenodo with a version DOI.

Technologies used

Python · Linear Programming (PuLP) · Streamlit · PyPI packaging · Modular system design · KPI modelling and forecasting