Our CEO originated the concept and a sketch of what he wanted. I took it over, gave it an architecture, tied it to defined business outcomes, put governance around it, and built it.

The problem was five disconnected systems. Sales ran in Dynamics 365. Resourcing sat in Resource Guru. Time entry lived in proprietary timesheeting software. Contracts and project documents were in SharePoint. Delivery work happened in Azure DevOps. Nothing joined them. If someone in sales wanted to know how a project was tracking before a customer call, the only route was a conversation.
I built MCP integrations against each source system, so each one's authentication, rate limiting and pagination is handled in a layer that can be updated without touching the analytics above it. Data lands in Cosmos DB against a unified model, with common keys mapped across systems so a Dynamics contract joins to a Resource Guru project joins to Azure DevOps work items joins to timesheet entries. The platform runs on Azure with Key Vault, Blob storage and services calling the Anthropic API; code lives in enterprise GitHub with branch control and review.
What it surfaces is more interesting than the dashboards themselves. Project profitability is simple arithmetic once contract value and billed time sit together — but putting them together immediately showed that budgets in the timesheeting system and contract values in CRM were sometimes wildly different, because variations were being captured in one and not the other.
Every person carries a utilisation target set by employment type and role. Leave lives in yet another system, so pulling that in and subtracting it produces genuine net billable utilisation rather than a figure distorted by annual leave. Azure DevOps data gives ticket velocity by consultant and work type; tickets are mapped to technology types using AI, cross-referenced against their commits, which shows who is genuinely more efficient in which technologies and feeds resource planning with observation rather than assumption.
On top of that sits an AI resourcing engine. It takes current allocation, project and contract data, the skills register and the real constraints — leave, shutdown periods, skill gaps, per-role utilisation targets — and models optimal allocation, recommending moves, staggered starts, or identifying where no allocation solves the problem without hiring.
Nobody asked for the profitability-gap finding — it fell out of the unification, and it exposed a process gap rather than a reporting one. The platform now gives the business a single, live view across sales, delivery and resourcing that previously only existed as a conversation.