Overview
Decision Optimisation System using Operations Research

This project is a decision optimisation engine designed to formalise marketing budget allocation under fixed constraints. The system does not rely on heuristic rules or intuition-led budgeting. Instead, it translates strategic priorities into a constrained optimisation problem. This problem is solved using Linear Programming.
The focus of this work is not dashboarding or performance reporting, but the design of a reproducible, auditable decision system.
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 judgment 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.
Technologies Used
- Python
- Linear Programming (PuLP)
- Streamlit
- Modular system design
- KPI modelling and forecasting
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 and 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.
