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.

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.

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
