Self-hosted, open source

Committed and expected load, on one grid.
Capacity planning you host yourself.

MP Planner weighs every pipeline project by its win probability and sets that demand against your people's real capacity, month by month. It runs on your own servers with PostgreSQL and Redis, under the MIT licence.

52%
100%
118%
  • under 70% — headroom
  • 70–100% — well booked
  • over 100% — overbooked

Number = planned hours · bar = utilisation · tick = 100%

Planner, role view and heatmap
The three screens a weekly staffing meeting runs on, with sample data.

2

Demand measures

committed, probability-weighted

4

Planner pivots

person, team, role, project

3

Time views

day, week, month

Capabilities

Demand against capacity, month by month

Four things the product does today, on the screens the tour below shows.

Probability-weighted demand
Every lead carries a win probability. Its estimated hours count as expected demand from the first estimate and become committed when the deal is won.
Capacity from real calendars
Standard hours, FTE, regional public holidays and absences give each person a monthly capacity, and the grid shows utilisation against it.
One planner, four pivots
Plan by person, team, role or project, by day, week or month, and edit allocations in the cell.
Overbooked and unstaffed, listed
Reports name who is over 100% and which role placeholders have no person yet, with the fix on the same screen.
Who it's for

Built for the weekly staffing meeting

A services firm of 30 to 150 people, planning consultants, engineers and designers across client projects and a sales pipeline.

Heads of delivery
Decide whether to staff, hire or decline from one number per role and month.

- See expected load against capacity per role for the next twelve months.

- Read the pipeline's weight on next quarter before a deal is signed.

- Run the staffing meeting from the heatmap instead of a spreadsheet.

Resource managers
Find the person behind the overbooked role.

- Open a role row to see who is over 100% and who has headroom.

- Move hours between people in the same role, with rebalancing suggestions.

- Export the unstaffed list for the staffing meeting.

Project managers
Turn a won lead into a staffed project without retyping.

- Client, value, hours and start date carry over from the lead.

- Role-based allocation rows come from a work package template.

- Try a change in a scenario and compare it with the plan before publishing.

IT and operations
Run it on your own infrastructure.

- Docker Compose, PostgreSQL and Redis; no vendor account.

- Six roles from viewer to admin; REST and tRPC APIs with API keys.

- English and German interface.

Product tour

See what each screen answers for you

Sketches of the real screens, filled with sample data. Every numbered point is a question you can answer in seconds instead of a spreadsheet afternoon.

Planning & allocation

Planner overview

See every role's load for the next twelve months, and where it tips over, on one screen.

What you get

  1. 1The number is planned hours, the colour is utilisation — green is well booked, red is over 100%.
  2. 2Overbooking shows up months ahead, while there is still time to move work or hire.
  3. 3Switch between committed and probability-weighted demand to plan for what is likely, not just what is signed.

Sketch of the real screen with sample data

PlannerAllocationControl loop
Workflows

From a lead to a staffed month

Three loops the product supports today: intake, allocation and exception handling.

Workflow 01·From lead estimate to project conversion
Pipeline to staffed delivery
A lead's role estimates count as expected demand from day one; winning it converts them into a confirmed project with allocation rows.

- Estimate hours per role on the lead and set its win probability.

- Watch expected load per role move as probabilities change.

- Convert the won lead in four steps; nothing is retyped.

LeadsProbabilityProjects
Workflow 02·Across person, team, role and project pivots
Allocation and capacity control loop
Balance assignments and capacity with planner updates, role-demand views and heatmap drilldowns.

- Plan and rebalance allocations in the person, team, role and project views.

- Inspect expected vs committed utilisation in the heatmap drilldown.

- Try a change in a scenario, compare it with the plan, then publish.

PlannerHeatmapScenarios
Workflow 03·From exception detection to a fix on the row
Exception resolution
Overbooked and unstaffed lists, a quick fix on the row, and scheduled reports to the people who need them.

- Use the overbooking and unstaffed reports to surface the biggest gaps.

- Reduce a project's hours or assign a person from the report row.

- Build a custom report and send it by email on a schedule.

ReportsQuick fixReport builder
Self-hosted

Your data stays on your servers

MP Planner is open source under the MIT licence and runs wherever you run PostgreSQL.

Data sovereignty
People, absences and pipeline value stay on your infrastructure. Nothing is sent to a vendor.
Open source, MIT
Read the code, run it without a licence key and change it. There is no hosted tier and no seat count.
Standard stack
Next.js, Fastify, PostgreSQL and Redis in Docker Compose. Backups are PostgreSQL backups.
Open APIs
REST v1 with OpenAPI and tRPC, API keys and an OAuth2 server, so the data you put in is yours to get out.
What ships
Installed by default; nothing here needs a module switched on.
Docker ComposePostgreSQL + RedisREST + tRPC APIsOpenAPISix roles, viewer to adminCSV/Excel import/exportScheduled email reportsEnglish and German
Get started

Run it on your own server

Clone the repository and follow the deployment guide. The development stack seeds a sample company, so you can read the planner with data on day one.