Resource Capacity Matrix
tasleemat asset PMO-00.04 template --lang en
Deliverable Summary & Governance Boundaries
Lifecycle Phase Alignment
Phase 00: Program and Portfolio Management
Sizing Tier Requirements
Tier 1
Validation Contract
This deliverable conforms to a strict companion Draft 2020-12 JSON Schema for automated structural and semantic validation.
tasleemat validate PMO-00.04 ./completed_data.json
Template Markdown (Bilingual)
<!--
LLM INSTRUCTIONS: Fill in the [ Add details... ] placeholders based on project context.
The resource capacity matrix shows whether the plan is feasible in terms of the
people available to carry it out. It compares what the programme or project
needs against what exists, and the difference is the thing worth reading: a
plan that requires more capacity than is available is not a plan that needs
more effort, it is a plan that cannot be executed as written.
The intent behind separating demand from supply is that they are gathered from
different places and are therefore rarely reconciled by accident. Demand comes
from the schedule and the scope, supply comes from the resourcing plan and the
organisation's actual shape, and nobody reconciles the two until a matrix like
this makes the gap visible. The Gap column is therefore the one the reader
cares about, and a matrix that records only the totals has omitted the only
figure that matters.
Alignment: the resource capacity matrix should be aligned and consistent with
the following documents: Portfolio roadmap, Program charter, Project management
plan, Resource breakdown structure, Procurement plan.
Writing guidance:
* State the unit of capacity once and use it throughout, whether that is
person-days, full-time equivalents, or hours per period. A matrix whose
rows use different units cannot be added up, and the total at the bottom
is then arithmetically meaningless rather than merely approximate.
* Record capacity per period, not in total. A resource with a thousand
person-days available who is fully committed in the month the work is
needed has no capacity at all, and a total figure hides exactly that.
* Record the demand from the plan, not from what the team currently is. The
demand column is what the schedule and scope require; the supply column is
what exists. Recording the same number in both columns is the single most
common way a capacity matrix comes to be wrong, because it makes the
matrix agree with the plan rather than with reality.
* Record named constraints as consequences, not as adjectives. "Test
automation is a single point of failure because one person holds it" is
actionable; "test automation is a risk" is not.
* Where a gap is covered by a contractor or a shared resource, record the
contract or agreement that covers it. A gap filled on the understanding
that someone will help is not covered, and the difference shows up the week
the help is needed elsewhere.
Tailoring Notes:
* The matrix may be maintained at portfolio level across all initiatives, or
at program level across the components, or for a single project. The form
should say which, because a portfolio matrix is used to decide between
initiatives and a project matrix is used to decide whether one plan is
credible.
* Where the organisation runs a resourcing tool, the matrix may be an
extract rather than the source of truth. Record that, so a reader does not
treat a stale extract as current.
* Add or remove rows as needed. Where a role is filled by more than one
person, record the role once and note the split in the notes column, since
a row per person hides the total capacity of the role.
* The matrix may be maintained by a resourcing or workforce planning
function, in which case cross-reference it rather than duplicating the
supply side.
Column guidance, by column:
Capacity by resource:
* **ID:** The identifier for the resource role, used in the demand and the
gap sections so the two can be compared row against row.
* **Resource Role or Team:** The role or team, named as the work requires it
rather than as the organisation chart draws it. A matrix organised by
existing departments cannot show a gap, because it only ever lists what is
already there.
* **Period:** The period the row covers, using the same periods throughout
the matrix and matching those of the schedule it is compared against.
* **Total Available:** The capacity that exists in the period, before any
allocation, stated in the unit declared for the matrix.
* **Allocated:** The capacity already committed elsewhere in the portfolio.
This is the column most often left out, and without it the available
figure is the total, which is not what the project can use.
* **Remaining:** What is left after allocation, which is the figure the
planner actually has.
* **Constraints or Single Points of Failure:** What limits this resource, such
as a location, a qualification held by one person, a licence, or a tool
only one person can operate. Record the consequence rather than the
adjective.
* **Notes:** Anything that changes how the row should be read, such as a
known vacancy, a planned leave, or a commitment shared with another
portfolio.
Demand rows:
* **ID:** The resource role the demand is for, matching the ID used above.
* **Required Capacity:** What the scope and schedule require in the period.
Record the figure the plan was built on rather than the figure currently
being achieved, since the second is a consequence of the first being wrong.
* **Source of Demand:** Which part of the plan generates it, such as a
specific deliverable or work package. A demand that cannot be traced to
something in the plan cannot be challenged, and demands that cannot be
challenged only ever grow.
* **Period:** The period the demand falls in.
* **Priority:** Whether the demand is essential, or could be deferred or
descoped. Without a priority a gap has no remedy, because the only
available responses are to add capacity, move the work, or reduce it, and
the matrix does not say which is acceptable.
Gap analysis rows:
* **Resource Role:** The role the gap applies to.
* **Gap:** The difference between required and remaining, stated as a number
and signed so a surplus is not read as a shortfall.
* **Period:** The period the gap falls in.
* **Resolution Planned:** How the gap will be closed, whether by recruitment,
by a contractor, by moving work between periods, or by reducing scope.
* **Resolution Owner:** Who is accountable for closing it. A gap with a
planned resolution and no owner is a gap that is being wished away, and it
is the most common way a capacity matrix comes to be relied upon.
* **Resolution Date:** By when the resolution is expected to be in place,
which is what tells the reader whether the plan is still feasible.
Contingency rows:
* **Resource Role:** The role the contingency applies to.
* **Contingency Type:** Whether the buffer is in capacity, in time, or in
scope. The three are not interchangeable: time contingency can be spent
once, capacity contingency can be spent on anything, and scope
contingency reduces the deliverable.
* **Contingency Amount:** The size of the buffer, in the declared unit.
* **How It Would Be Used:** What it protects, so that a buffer cannot be
quietly consumed on something it was not held for.
-->
<h3 dir="ltr" align="right">{{Company_Name}}</h3>
<h2 dir="ltr" align="right">{{Organization_Unit}} - {{Planning_Period}}</h2>
<h1 dir="ltr" align="center">RESOURCE CAPACITY MATRIX</h1>
| **Date Prepared:** {{Current_Date}} | **Program Manager:** {{Program_Manager_Name}} | **Prepared By:** {{Prepared_By}} |
| :--- | :--- | :--- |
---
## 1. Matrix Basis
<!-- What this matrix covers, in what unit, and over which periods. Record the
unit once and use it throughout: a matrix whose rows use different units
cannot be added up, and a total is then arithmetically meaningless rather than
merely approximate. Record the level the matrix is maintained at, because a
portfolio matrix is used to decide between initiatives while a project matrix
is used to decide whether a single plan is credible. And record whether this
is the source of truth or an extract from a resourcing tool, so a reader does
not treat a stale extract as current. -->
**Matrix Scope and Level:** [ Add details... ]
**Capacity Unit of Measure:** [ Add details... ]
**Periods Covered:** [ Add details... ]
**Source of Truth or Extract:** [ Add details... ]
**Matrix Owner:** [ Add details... ]
**Last Updated:** [ Add details... ]
---
## 2. Capacity by Resource
<!-- What exists, in what unit, in which period. The Allocated column is the one
most often left out, and without it the available figure is the total, which
is not what the project can use. Record capacity per period rather than in
total: a resource with a thousand person-days available who is fully
committed in the month the work is needed has no capacity at all, and a total
figure hides exactly that. Record constraints as consequences, not as
adjectives; "test automation is a single point of failure because one person
holds it" can be acted on, and "test automation is a risk" cannot. Where a
role is filled by more than one person, record the role once and note the
split, since a row per person hides the total capacity of the role. Add or
remove rows as needed. -->
| ID | Resource Role or Team | Period | Total Available | Allocated | Remaining | Constraints or Single Points of Failure | Notes |
| :---: | :--- | :---: | ---: | ---: | ---: | :--- | :--- |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 3. Demand by Resource
<!-- What the plan requires, which is a different number from what is
currently being achieved. Record the figure the plan was built on rather than
the figure being achieved, since the second is a consequence of the first
being wrong. Record the source of the demand so it can be traced to a
deliverable or a work package; a demand that cannot be traced to something in
the plan cannot be challenged, and demands that cannot be challenged only ever
grow. Record a priority, because without one a gap has no remedy, since the
available responses are to add capacity, move the work, or reduce it, and
nothing in the matrix says which is acceptable here. Add or remove rows as
needed. -->
| ID | Resource Role | Period | Required Capacity | Source of Demand | Priority |
| :---: | :--- | :---: | ---: | :--- | :---: |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 4. Gap Analysis
<!-- The difference between what is required and what is remaining, which is
the only figure in the matrix the reader is looking for. State it as a signed
number so a surplus is not read as a shortfall. Record a planned resolution
and, separately, an owner for it: a gap with a resolution and no owner is a
gap being wished away, and it is the most common way a capacity matrix comes
to be relied upon after it has already been superseded. The resolution date is
what tells the reader whether the plan is still feasible, so record it rather
than leaving the row open. Add or remove rows as needed. -->
| Resource Role | Gap | Period | Resolution Planned | Resolution Owner | Resolution Date |
| :--- | ---: | :---: | :--- | :--- | :---: |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 5. Contingency
<!-- What the plan holds in reserve, and what that reserve protects. The three
kinds of contingency are not interchangeable: time contingency can be spent
once, capacity contingency can be spent on anything, and scope contingency
reduces the deliverable. Record which kind each buffer is, because a plan that
holds no scope contingency and states only that it has float is a plan whose
contingency is the work being cut. Record what each buffer protects so that it
cannot be quietly consumed on something it was not held for. Add or remove
rows as needed. -->
| Resource Role | Contingency Type | Contingency Amount | How It Would Be Used |
| :--- | :--- | ---: | :--- |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 6. Sign-off and Approvals
| Role | Name | Signature | Date |
| :--- | :--- | :---: | :---: |
| **Resource Planning Lead** | {{Resource_Planning_Lead_Name}} | _______________________ | [ .... - .... - .... ] |
| **Program Manager** | {{Program_Manager_Name}} | _______________________ | [ .... - .... - .... ] |
| **PMO Director** | {{PMO_Director_Name}} | _______________________ | [ .... - .... - .... ] |
---
<div dir="ltr" align="right" style="margin-top: 20px; font-size: 12px; color: #7f8c8d;">
<span>Electronic Audit Trail: Hash SHA256: {{Audit_Trail_SHA256_Hash}}</span> <br>
<strong>Template:</strong> Resource Capacity Matrix | <strong>Ref:</strong> PMO-00.04 <br>
<i>Generated on: {{Current_Timestamp}}, by <a href="https://github.com/fakhruldeen/Tasleemat/" style="color: #7f8c8d;">Tasleemat</a></i>
</div>
User Guide & Practitioner Instructions
Tasleemat Forms Guide
Project Artifact: Resource Capacity Matrix
Document Reference: PMO-00.04
This document provides a comprehensive, professional reference to understand the purpose and effective usage of the Resource Capacity Matrix in alignment with the Tasleemat framework.
1. What?
A formal Tasleemat-aligned project document known as the Resource Capacity Matrix, showing whether the plan is feasible in terms of the people available to carry it out.
It records the basis of the matrix and its unit of measure, the capacity that exists by role and period with what is already allocated elsewhere, the demand the scope and schedule create with the source and priority of each, the gap between the two with how each gap will be closed and by whom, and the contingency the plan holds and what that contingency protects.
2. Why?
Because demand and supply are gathered from different places and are therefore never reconciled by accident. Demand comes from the schedule and the scope, supply comes from the resourcing plan and the organisation's actual shape, and nobody sets the two against each other until a matrix like this makes the gap visible. The Gap column is the one the reader is looking for, so a matrix that records only totals has omitted the only figure that matters.
3. When?
This artifact is prepared at the PROGRAM AND PORTFOLIO MANAGEMENT Process Group, and re-reconciled whenever the schedule changes materially or the organisation is restructured. It is a recurring reconciliation rather than a document produced once, because capacity is reallocated continuously and a matrix that is not refreshed describes an organisation that no longer exists.
4. Who?
Responsibilities: Owned by the Program Manager and reconciled with the resource or workforce planning function that holds the supply side. Signed by the PMO and by the finance business partner, since a gap closed by a contractor is a cost change and should not be agreed without someone who can see the cost.
Tailoring Tips
- The matrix may be maintained at portfolio level across all initiatives, or at program level across the components, or for a single project. The form should say which, because a portfolio matrix is used to decide between initiatives and a project matrix is used to decide whether one plan is credible.
- Where the organisation runs a resourcing tool, the matrix may be an extract rather than the source of truth. Record that, so a reader does not treat a stale extract as current.
- Add or remove rows as needed. Where a role is filled by more than one person, record the role once and note the split in the notes column, since a row per person hides the total capacity of the role.
- The matrix may be maintained by a resourcing or workforce planning function, in which case cross-reference it rather than duplicating the supply side.
- The contingency section may be omitted where the organisation holds contingency centrally, but the form should say so explicitly rather than leaving a reader to assume the plan holds none.
Alignment & Dependencies
1. Pre-requisites & Inputs (Upstream Dependencies)
- Mandatory:
- Portfolio Roadmap (PMO-00.01)
- Program Charter (PMO-00.02)
- Organizational Staffing Budgets
- Optional / Contextual:
- Resource Management Plans (PMO-04.06.01)
- Resource Requirements (PMO-04.06.02)
2. Downstream Dependents
- Mandatory:
- Project Resource Management Plans (PMO-04.06.01)
- Project Schedules (PMO-04.03.08)
- Optional / Contextual:
- Responsibility Assignment Matrix / RAM (PMO-04.06.04)
- Procurement Strategy (PMO-04.09.02)
5. How?
To accurately and professionally complete the RESOURCE CAPACITY MATRIX, the
responsible party must populate the following sections based on the project
context (ensure parameters.md is referenced for global project variables):
- Matrix Scope and Level: What this matrix covers and at what level it is maintained, whether portfolio-wide across initiatives, program-wide across components, or for a single project. The level decides what the matrix is used to decide: a portfolio matrix decides between initiatives, a project matrix decides whether one plan is credible, and reading either as the other produces a confident wrong answer.
- Capacity Unit of Measure: The unit used for every figure in the matrix, whether person-days, full-time equivalents, or hours per period. State it once and use it throughout: a matrix whose rows use different units cannot be added up, and the total at the foot of it is then arithmetically meaningless rather than merely approximate.
- Periods Covered: The periods the matrix covers, matching those of the schedule it is compared against. Where the matrix is annual and the schedule is weekly, the comparison has to be done by hand every time and is therefore not done, which is how a quarterly shortfall survives to become a delivery failure.
- Source of Truth or Extract: Whether this matrix is the authoritative record or an extract from a resourcing tool. Record which, because a reader who treats a stale extract as current will plan against capacity that was reallocated weeks ago, and the error surfaces only when the work cannot be staffed.
- Matrix Owner: The single role accountable for the matrix as a whole, which is normally not the owner of any one resource in it. Where this is blank, the matrix has contributors but nobody who notices that a row has not been updated since the reorganisation.
- Last Updated: The date the matrix was last reconciled against the plan, and against which version of the schedule. Without it a reader cannot tell a current matrix from an abandoned one, and the two are indistinguishable on the page.
- ID: The identifier for the resource role, used in the demand and gap sections so the three can be compared row against row. Without a shared identifier the comparison is done by eye, and two similarly named roles are the ones most often confused.
- Resource Role or Team: The role or team, named as the work requires it rather than as the organisation chart draws it. A matrix organised by existing departments can never show a gap, because it only ever lists what is already there, and the absence of a needed capability reads as its absence from the plan rather than from the organisation.
- Period: The period the row covers, using the same periods throughout the matrix. Capacity recorded per period rather than in total is what makes the matrix usable, because a resource with a thousand person-days available who is fully committed in the month the work is needed has no capacity at all.
- Total Available: The capacity that exists in the period, before any allocation, in the unit declared for the matrix. This is a figure about the organisation rather than about the project, and recording it here is what allows the reader to see how much of it is actually available.
- Allocated: The capacity already committed elsewhere in the portfolio. This is the column most often left out, and without it the available figure is the total, which is not what the project can use. It is also the column that reveals a resource being shared between initiatives without either owner knowing.
- Remaining: What is left after allocation, which is the figure the planner actually has. Where this is negative, the matrix has found a real problem; where it is silently recorded as zero because nobody wanted to write a negative number, the problem has been hidden instead of solved.
- Constraints or Single Points of Failure: What limits this resource: a location, a qualification held by one person, a licence, a tool only one person can operate, or a notice period. Record the consequence rather than the adjective, because "test automation is a single point of failure because one person holds it" can be acted on, while "test automation is a risk" cannot.
- Notes: Anything that changes how the row should be read, such as a known vacancy, planned leave, or a resource shared with another portfolio. Where a role is filled by more than one person, record the role once and note the split here, since a row per person hides the total capacity of the role.
- ID: The resource role the demand is for, matching the ID used in the capacity section so the two can be set against each other.
- Resource Role: The role the demand falls on, using the same naming as the capacity section. The two must be the same list, or the comparison in the gap section silently excludes roles that appear in only one of them, which are usually the ones in trouble.
- Period: The period the demand falls in. A demand recorded with no period cannot be compared with a capacity figure that has one, and is therefore dropped from the comparison without anyone deciding to drop it.
- Required Capacity: What the scope and schedule require in the period. Record the figure the plan was built on rather than the figure currently being achieved, since the second is a consequence of the first being wrong and reporting it back as the requirement makes the shortfall disappear from the plan.
- Source of Demand: Which part of the plan generates it, such as a named deliverable, work package, or activity. A demand that cannot be traced to something in the plan cannot be challenged, and demands that cannot be challenged only ever grow.
- Priority: Whether the demand is essential, or could be deferred or descoped. Without a priority a gap has no remedy, because the available responses are to add capacity, move the work, or reduce it, and nothing in the matrix says which of those the programme would accept.
- Resource Role: The role the gap applies to, using the same naming as the sections above. Where a role appears in the demand but not the capacity, the gap is the whole requirement rather than a shortfall, and that case is worth distinguishing because it is a different problem.
- Gap: The difference between required and remaining, stated as a signed number so that a surplus is not read as a shortfall. This is the figure the whole matrix exists to produce, and a matrix that records only the totals has omitted the only number anyone reads.
- Period: The period the gap falls in. A gap in a period with no demand in it is a different problem from a gap in a period the work needs, and reporting both as "a gap" sends the reader looking for the wrong remedy.
- Resolution Planned: How the gap will be closed: recruitment, a contractor, moving work between periods, reducing scope, or accepting the risk. Where the gap is covered by a contractor or a shared resource, record the contract or agreement that covers it, because a gap filled on the understanding that someone will help is not covered at all.
- Resolution Owner: Who is accountable for closing the gap. A gap with a planned resolution and no owner is a gap being wished away, and it is the most common way a capacity matrix comes to be relied upon long after it was last true.
- Resolution Date: By when the resolution is expected to be in place. This is what tells the reader whether the plan is still feasible, so record it rather than leaving the row open, and where the date has passed without resolution, escalate rather than moving the date.
- Resource Role: The role the contingency applies to, or "plan" where the buffer is held across all roles rather than against one.
- Contingency Type: Whether the buffer is in capacity, in time, or in scope. The three are not interchangeable: time contingency can be spent once, capacity contingency can be spent on anything, and scope contingency reduces the deliverable. A plan that holds no scope contingency and states only that it has float is a plan whose contingency is the work being cut.
- Contingency Amount: The size of the buffer, in the declared unit. Record it as a figure rather than a percentage, because a percentage of a demand that was never reconciled produces a number that looks precise and is not.
- How It Would Be Used: What the buffer protects, recorded so it cannot be quietly consumed on something it was not held for. A contingency with no stated use is the first thing cut in a difficult month, which is precisely the month it was held for.
📥 Associated Templates
- 📄 Printable Template (Markdown)
- 🤖 LLM Generation Prompt
- 📊 Data Structure (JSON)
- 📈 Tabular Data (CSV)
6. Reference Example
A fully completed, gold-standard reference example illustrating this artifact in practice is available:
📖 Completed Example: 00_04_Resource_Capacity_Matrix_Example.md
LLM Generation Prompt & Agent Instructions
RESOURCE CAPACITY MATRIX - LLM GENERATION GUIDE
System Prompt / Instructions: This document serves as the detailed instruction set for generating the
RESOURCE CAPACITY MATRIX. When asked to populate this form, use the guidance provided for each section below to accurately generate the required content. Referenceparameters.mdfor global project variables.Context & Definition: The resource capacity matrix shows whether the plan is feasible in terms of the people available to carry it out. It compares what the programme or project needs against what exists, and the difference is the thing worth reading: a plan that requires more capacity than is available is not a plan that needs more effort, it is a plan that cannot be executed as written.
Alignment: This resource capacity matrix must be consistent with: Portfolio roadmap, Program charter, Project management plan, Resource breakdown structure, Procurement plan.
Matrix Scope and Level
Instruction: What this matrix covers and at what level it is maintained, whether portfolio-wide across initiatives, program-wide across components, or for a single project. The level decides what the matrix is used to decide: a portfolio matrix decides between initiatives, a project matrix decides whether one plan is credible, and reading either as the other produces a confident wrong answer.
Generated value: [ Add details... ]
Capacity Unit of Measure
Instruction: The unit used for every figure in the matrix, whether person-days, full-time equivalents, or hours per period. State it once and use it throughout: a matrix whose rows use different units cannot be added up, and the total at the foot of it is then arithmetically meaningless rather than merely approximate.
Generated value: [ Add details... ]
Periods Covered
Instruction: The periods the matrix covers, matching those of the schedule it is compared against. Where the matrix is annual and the schedule is weekly, the comparison has to be done by hand every time and is therefore not done, which is how a quarterly shortfall survives to become a delivery failure.
Generated value: [ Add details... ]
Source of Truth or Extract
Instruction: Whether this matrix is the authoritative record or an extract from a resourcing tool. Record which, because a reader who treats a stale extract as current will plan against capacity that was reallocated weeks ago, and the error surfaces only when the work cannot be staffed.
Generated value: [ Add details... ]
Matrix Owner
Instruction: The single role accountable for the matrix as a whole, which is normally not the owner of any one resource in it. Where this is blank, the matrix has contributors but nobody who notices that a row has not been updated since the reorganisation.
Generated value: [ Add details... ]
Last Updated
Instruction: The date the matrix was last reconciled against the plan, and against which version of the schedule. Without it a reader cannot tell a current matrix from an abandoned one, and the two are indistinguishable on the page.
Generated value: [ Add details... ]
ID
Instruction: The identifier for the resource role, used in the demand and gap sections so the three can be compared row against row. Without a shared identifier the comparison is done by eye, and two similarly named roles are the ones most often confused.
Generated value: [ Add details... ]
Resource Role or Team
Instruction: The role or team, named as the work requires it rather than as the organisation chart draws it. A matrix organised by existing departments can never show a gap, because it only ever lists what is already there, and the absence of a needed capability reads as its absence from the plan rather than from the organisation.
Generated value: [ Add details... ]
Period
Instruction: The period the row covers, using the same periods throughout the matrix. Capacity recorded per period rather than in total is what makes the matrix usable, because a resource with a thousand person-days available who is fully committed in the month the work is needed has no capacity at all.
Generated value: [ Add details... ]
Total Available
Instruction: The capacity that exists in the period, before any allocation, in the unit declared for the matrix. This is a figure about the organisation rather than about the project, and recording it here is what allows the reader to see how much of it is actually available.
Generated value: [ Add details... ]
Allocated
Instruction: The capacity already committed elsewhere in the portfolio. This is the column most often left out, and without it the available figure is the total, which is not what the project can use. It is also the column that reveals a resource being shared between initiatives without either owner knowing.
Generated value: [ Add details... ]
Remaining
Instruction: What is left after allocation, which is the figure the planner actually has. Where this is negative, the matrix has found a real problem; where it is silently recorded as zero because nobody wanted to write a negative number, the problem has been hidden instead of solved.
Generated value: [ Add details... ]
Constraints or Single Points of Failure
Instruction: What limits this resource: a location, a qualification held by one person, a licence, a tool only one person can operate, or a notice period. Record the consequence rather than the adjective, because "test automation is a single point of failure because one person holds it" can be acted on, while "test automation is a risk" cannot.
Generated value: [ Add details... ]
Notes
Instruction: Anything that changes how the row should be read, such as a known vacancy, planned leave, or a resource shared with another portfolio. Where a role is filled by more than one person, record the role once and note the split here, since a row per person hides the total capacity of the role.
Generated value: [ Add details... ]
ID
Instruction: The resource role the demand is for, matching the ID used in the capacity section so the two can be set against each other.
Generated value: [ Add details... ]
Resource Role
Instruction: The role the demand falls on, using the same naming as the capacity section. The two must be the same list, or the comparison in the gap section silently excludes roles that appear in only one of them, which are usually the ones in trouble.
Generated value: [ Add details... ]
Period
Instruction: The period the demand falls in. A demand recorded with no period cannot be compared with a capacity figure that has one, and is therefore dropped from the comparison without anyone deciding to drop it.
Generated value: [ Add details... ]
Required Capacity
Instruction: What the scope and schedule require in the period. Record the figure the plan was built on rather than the figure currently being achieved, since the second is a consequence of the first being wrong and reporting it back as the requirement makes the shortfall disappear from the plan.
Generated value: [ Add details... ]
Source of Demand
Instruction: Which part of the plan generates it, such as a named deliverable, work package, or activity. A demand that cannot be traced to something in the plan cannot be challenged, and demands that cannot be challenged only ever grow.
Generated value: [ Add details... ]
Priority
Instruction: Whether the demand is essential, or could be deferred or descoped. Without a priority a gap has no remedy, because the available responses are to add capacity, move the work, or reduce it, and nothing in the matrix says which of those the programme would accept.
Generated value: [ Add details... ]
Resource Role
Instruction: The role the gap applies to, using the same naming as the sections above. Where a role appears in the demand but not the capacity, the gap is the whole requirement rather than a shortfall, and that case is worth distinguishing because it is a different problem.
Generated value: [ Add details... ]
Gap
Instruction: The difference between required and remaining, stated as a signed number so that a surplus is not read as a shortfall. This is the figure the whole matrix exists to produce, and a matrix that records only the totals has omitted the only number anyone reads.
Generated value: [ Add details... ]
Period
Instruction: The period the gap falls in. A gap in a period with no demand in it is a different problem from a gap in a period the work needs, and reporting both as "a gap" sends the reader looking for the wrong remedy.
Generated value: [ Add details... ]
Resolution Planned
Instruction: How the gap will be closed: recruitment, a contractor, moving work between periods, reducing scope, or accepting the risk. Where the gap is covered by a contractor or a shared resource, record the contract or agreement that covers it, because a gap filled on the understanding that someone will help is not covered at all.
Generated value: [ Add details... ]
Resolution Owner
Instruction: Who is accountable for closing the gap. A gap with a planned resolution and no owner is a gap being wished away, and it is the most common way a capacity matrix comes to be relied upon long after it was last true.
Generated value: [ Add details... ]
Resolution Date
Instruction: By when the resolution is expected to be in place. This is what tells the reader whether the plan is still feasible, so record it rather than leaving the row open, and where the date has passed without resolution, escalate rather than moving the date.
Generated value: [ Add details... ]
Resource Role
Instruction: The role the contingency applies to, or "plan" where the buffer is held across all roles rather than against one.
Generated value: [ Add details... ]
Contingency Type
Instruction: Whether the buffer is in capacity, in time, or in scope. The three are not interchangeable: time contingency can be spent once, capacity contingency can be spent on anything, and scope contingency reduces the deliverable. A plan that holds no scope contingency and states only that it has float is a plan whose contingency is the work being cut.
Generated value: [ Add details... ]
Contingency Amount
Instruction: The size of the buffer, in the declared unit. Record it as a figure rather than a percentage, because a percentage of a demand that was never reconciled produces a number that looks precise and is not.
Generated value: [ Add details... ]
How It Would Be Used
Instruction: What the buffer protects, recorded so it cannot be quietly consumed on something it was not held for. A contingency with no stated use is the first thing cut in a difficult month, which is precisely the month it was held for.
Generated value: [ Add details... ]
Resource Capacity Matrix (Reference Example)
🏆 Gold Standard Reference Example: This document illustrates a fully completed, production-grade artifact adhering to the Tasleemat PMO Framework (
PMO-00.04). All company names, project references, and figures are realistic fictional simulations.
Apex Global Solutions
Information Technology & Enterprise Operations - 2026-Q1 to 2027-Q4
RESOURCE CAPACITY MATRIX
1. Matrix Basis
Matrix Scope and Level: Deliver operational excellence, process automation, and unified cloud integration adhering to enterprise standards.
Capacity Unit of Measure: Full-Time Equivalent (FTE) Billable Work Hours, benchmarked at 160 hours per month per engineer.
Periods Covered: 2026-Q1 through 2027-Q4 (Annual cycle with quarterly governance refresh)
Source of Truth or Extract: Fully defined and aligned with Apex Global Solutions operational baseline and project objectives.
Matrix Owner: Elena Vance, PfMP (Portfolio Transformation Director)
Last Updated: 2026-Q1 through 2027-Q4 (Annual cycle with quarterly governance refresh)
2. Capacity by Resource
| ID | Resource Role or Team | Period | Total Available | Allocated | Remaining | Constraints or Single Points of Failure | Notes |
|---|---|---|---|---|---|---|---|
| INIT-01 | Automated database ETL pipeline extraction | 2026-Q2 | 60 FTE Hours (Buffer) | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Validated against enterprise ISO27001 cloud security standards. |
| REQ-02 | Secure electronic archiving with compliance audit | 2026-Q3 | 40 FTE Hours (Buffer) | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Weekly steering coordination meetings on schedule. |
| ACT-03 | API ingestion streams with tokenized logging | 2026-Q4 | 50 FTE Hours (Buffer) | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Contingency reserve allocated for critical path dependencies. |
| BEN-04 | Automated database ETL pipeline extraction | 2027-Q1 | 60 FTE Hours (Buffer) | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Operational KPIs performing within target tolerance. |
| WBS-05 | Secure electronic archiving with compliance audit | 2027-Q2 | 60 FTE Hours (Buffer) | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Approved and aligned with Apex Global Solutions governance baseline | Validated against enterprise ISO27001 cloud security standards. |
3. Demand by Resource
| ID | Resource Role | Period | Required Capacity | Source of Demand | Priority |
|---|---|---|---|---|---|
| INIT-01 | Automated database ETL pipeline extraction | 2026-Q2 | 480 FTE Hours / mo | Automated database ETL pipeline extraction | Approved and aligned with Apex Global Solutions governance baseline |
| REQ-02 | Secure electronic archiving with compliance audit | 2026-Q3 | 620 FTE Hours / mo | Secure electronic archiving with compliance audit | Approved and aligned with Apex Global Solutions governance baseline |
| ACT-03 | API ingestion streams with tokenized logging | 2026-Q4 | 540 FTE Hours / mo | API ingestion streams with tokenized logging | Approved and aligned with Apex Global Solutions governance baseline |
| BEN-04 | Automated database ETL pipeline extraction | 2027-Q1 | 500 FTE Hours / mo | Automated database ETL pipeline extraction | Approved and aligned with Apex Global Solutions governance baseline |
4. Gap Analysis
| Resource Role | Gap | Period | Resolution Planned | Resolution Owner | Resolution Date |
|---|---|---|---|---|---|
| Automated database ETL pipeline extraction | Approved and aligned with Apex Global Solutions governance baseline | 2026-Q2 | Approved and aligned with Apex Global Solutions governance baseline | Elena Vance, PfMP | 2026-06-30 |
| Secure electronic archiving with compliance audit | Approved and aligned with Apex Global Solutions governance baseline | 2026-Q3 | Approved and aligned with Apex Global Solutions governance baseline | Faisal Al-Harbi, PMP | 2026-09-30 |
| API ingestion streams with tokenized logging | Approved and aligned with Apex Global Solutions governance baseline | 2026-Q4 | Approved and aligned with Apex Global Solutions governance baseline | Tariq Al-Mansoor, PfMP | 2026-11-30 |
| Automated database ETL pipeline extraction | Approved and aligned with Apex Global Solutions governance baseline | 2027-Q1 | Approved and aligned with Apex Global Solutions governance baseline | Sultan Al-Dossary | 2027-01-31 |
5. Contingency
| Resource Role | Contingency Type | Contingency Amount | How It Would Be Used |
|---|---|---|---|
| Automated database ETL pipeline extraction | Technical & Integration | $950,000 USD | Approved and aligned with Apex Global Solutions governance baseline |
| Secure electronic archiving with compliance audit | Operational & Functional | $1,150,000 USD | Approved and aligned with Apex Global Solutions governance baseline |
| API ingestion streams with tokenized logging | Governance & Compliance | $780,000 USD | Approved and aligned with Apex Global Solutions governance baseline |
6. Sign-off and Approvals
| Role | Name | Signature | Date |
|---|---|---|---|
| Resource Planning Lead | Sami Al-Ghamdi (Resource Management Lead) | [Electronically Signed] | 2026-03-18 |
| Program Manager | Khalid Al-Otaibi, PgMP | [Electronically Signed] | 2026-03-18 |
| PMO Director | Tariq Al-Mansoor, PfMP | [Electronically Signed] | 2026-03-18 |
| --- |
Generated on: 2026-03-15 10:00 UTC, by Tasleemat
Draft 2020-12 JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://tasleemat.pmo/schemas/completed/PMO-00.04.schema.json",
"title": "Completed Resource Capacity Matrix Data Contract",
"description": "Additive structural schema validating completed Resource Capacity Matrix artifact data payloads (PMO-00.04).",
"type": "object",
"properties": {
"artifact_id": {
"type": "string",
"const": "PMO-00.04"
},
"metadata": {
"type": "object",
"properties": {
"project_name": {
"type": "string",
"minLength": 1
},
"project_code": {
"type": "string"
},
"date_prepared": {
"type": "string",
"format": "date"
},
"project_manager": {
"type": "string",
"minLength": 1
},
"prepared_by": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"baselined",
"in_review",
"approved"
]
}
},
"required": [
"project_name",
"date_prepared",
"project_manager",
"prepared_by"
]
},
"matrix_basis": {
"type": "object",
"properties": {
"matrix_scope_and_level": {
"type": "string",
"minLength": 1,
"description": "What this matrix covers and at what level it is maintained, whether portfolio-wide across initiatives, program-wide across components, or for a single project. The level decides what the matrix is used to decide: a portfolio matrix decides between initiatives, a project matrix decides whether one plan is credible, and reading either as the other produces a confident wrong answer."
},
"capacity_unit_of_measure": {
"type": "string",
"minLength": 1,
"description": "The unit used for every figure in the matrix, whether person-days, full-time equivalents, or hours per period. State it once and use it throughout: a matrix whose rows use different units cannot be added up, and the total at the foot of it is then arithmetically meaningless rather than merely approximate."
},
"periods_covered": {
"type": "string",
"minLength": 1,
"description": "The periods the matrix covers, matching those of the schedule it is compared against. Where the matrix is annual and the schedule is weekly, the comparison has to be done by hand every time and is therefore not done, which is how a quarterly shortfall survives to become a delivery failure."
},
"source_of_truth_or_extract": {
"type": "string",
"minLength": 1,
"description": "Whether this matrix is the authoritative record or an extract from a resourcing tool. Record which, because a reader who treats a stale extract as current will plan against capacity that was reallocated weeks ago, and the error surfaces only when the work cannot be staffed."
},
"matrix_owner": {
"type": "string",
"minLength": 1,
"description": "The single role accountable for the matrix as a whole, which is normally not the owner of any one resource in it. Where this is blank, the matrix has contributors but nobody who notices that a row has not been updated since the reorganisation."
},
"last_updated": {
"type": "string",
"minLength": 1,
"description": "The date the matrix was last reconciled against the plan, and against which version of the schedule. Without it a reader cannot tell a current matrix from an abandoned one, and the two are indistinguishable on the page."
}
},
"required": [
"matrix_scope_and_level",
"capacity_unit_of_measure",
"periods_covered",
"source_of_truth_or_extract",
"matrix_owner",
"last_updated"
]
},
"capacity_by_resource": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The identifier for the resource role, used in the demand and gap sections so the three can be compared row against row. Without a shared identifier the comparison is done by eye, and two similarly named roles are the ones most often confused."
},
"resource_role_or_team": {
"type": "string",
"minLength": 1,
"description": "The role or team, named as the work requires it rather than as the organisation chart draws it. A matrix organised by existing departments can never show a gap, because it only ever lists what is already there, and the absence of a needed capability reads as its absence from the plan rather than from the organisation."
},
"period": {
"type": "string",
"minLength": 1,
"description": "The period the row covers, using the same periods throughout the matrix. Capacity recorded per period rather than in total is what makes the matrix usable, because a resource with a thousand person-days available who is fully committed in the month the work is needed has no capacity at all."
},
"total_available": {
"type": "string",
"minLength": 1,
"description": "The capacity that exists in the period, before any allocation, in the unit declared for the matrix. This is a figure about the organisation rather than about the project, and recording it here is what allows the reader to see how much of it is actually available."
},
"allocated": {
"type": "string",
"minLength": 1,
"description": "The capacity already committed elsewhere in the portfolio. This is the column most often left out, and without it the available figure is the total, which is not what the project can use. It is also the column that reveals a resource being shared between initiatives without either owner knowing."
},
"remaining": {
"type": "string",
"minLength": 1,
"description": "What is left after allocation, which is the figure the planner actually has. Where this is negative, the matrix has found a real problem; where it is silently recorded as zero because nobody wanted to write a negative number, the problem has been hidden instead of solved."
},
"constraints_or_single_points_of_failure": {
"type": "string",
"minLength": 1,
"description": "What limits this resource: a location, a qualification held by one person, a licence, a tool only one person can operate, or a notice period. Record the consequence rather than the adjective, because \"test automation is a single point of failure because one person holds it\" can be acted on, while \"test automation is a risk\" cannot."
},
"notes": {
"type": "string",
"minLength": 1,
"description": "Anything that changes how the row should be read, such as a known vacancy, planned leave, or a resource shared with another portfolio. Where a role is filled by more than one person, record the role once and note the split here, since a row per person hides the total capacity of the role."
}
},
"required": [
"id",
"resource_role_or_team",
"period",
"total_available",
"allocated",
"remaining",
"constraints_or_single_points_of_failure",
"notes"
]
},
"demand_by_resource": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The resource role the demand is for, matching the ID used in the capacity section so the two can be set against each other."
},
"resource_role": {
"type": "string",
"minLength": 1,
"description": "The role the demand falls on, using the same naming as the capacity section. The two must be the same list, or the comparison in the gap section silently excludes roles that appear in only one of them, which are usually the ones in trouble."
},
"period": {
"type": "string",
"minLength": 1,
"description": "The period the demand falls in. A demand recorded with no period cannot be compared with a capacity figure that has one, and is therefore dropped from the comparison without anyone deciding to drop it."
},
"required_capacity": {
"type": "string",
"minLength": 1,
"description": "What the scope and schedule require in the period. Record the figure the plan was built on rather than the figure currently being achieved, since the second is a consequence of the first being wrong and reporting it back as the requirement makes the shortfall disappear from the plan."
},
"source_of_demand": {
"type": "string",
"minLength": 1,
"description": "Which part of the plan generates it, such as a named deliverable, work package, or activity. A demand that cannot be traced to something in the plan cannot be challenged, and demands that cannot be challenged only ever grow."
},
"priority": {
"type": "string",
"minLength": 1,
"description": "Whether the demand is essential, or could be deferred or descoped. Without a priority a gap has no remedy, because the available responses are to add capacity, move the work, or reduce it, and nothing in the matrix says which of those the programme would accept."
}
},
"required": [
"id",
"resource_role",
"period",
"required_capacity",
"source_of_demand",
"priority"
]
},
"gap_analysis": {
"type": "object",
"properties": {
"resource_role": {
"type": "string",
"minLength": 1,
"description": "The role the gap applies to, using the same naming as the sections above. Where a role appears in the demand but not the capacity, the gap is the whole requirement rather than a shortfall, and that case is worth distinguishing because it is a different problem."
},
"gap": {
"type": "string",
"minLength": 1,
"description": "The difference between required and remaining, stated as a signed number so that a surplus is not read as a shortfall. This is the figure the whole matrix exists to produce, and a matrix that records only the totals has omitted the only number anyone reads."
},
"period": {
"type": "string",
"minLength": 1,
"description": "The period the gap falls in. A gap in a period with no demand in it is a different problem from a gap in a period the work needs, and reporting both as \"a gap\" sends the reader looking for the wrong remedy."
},
"resolution_planned": {
"type": "string",
"minLength": 1,
"description": "How the gap will be closed: recruitment, a contractor, moving work between periods, reducing scope, or accepting the risk. Where the gap is covered by a contractor or a shared resource, record the contract or agreement that covers it, because a gap filled on the understanding that someone will help is not covered at all."
},
"resolution_owner": {
"type": "string",
"minLength": 1,
"description": "Who is accountable for closing the gap. A gap with a planned resolution and no owner is a gap being wished away, and it is the most common way a capacity matrix comes to be relied upon long after it was last true."
},
"resolution_date": {
"type": "string",
"minLength": 1,
"description": "By when the resolution is expected to be in place. This is what tells the reader whether the plan is still feasible, so record it rather than leaving the row open, and where the date has passed without resolution, escalate rather than moving the date."
}
},
"required": [
"resource_role",
"gap",
"period",
"resolution_planned",
"resolution_owner",
"resolution_date"
]
},
"contingency": {
"type": "object",
"properties": {
"resource_role": {
"type": "string",
"minLength": 1,
"description": "The role the contingency applies to, or \"plan\" where the buffer is held across all roles rather than against one."
},
"contingency_type": {
"type": "string",
"minLength": 1,
"description": "Whether the buffer is in capacity, in time, or in scope. The three are not interchangeable: time contingency can be spent once, capacity contingency can be spent on anything, and scope contingency reduces the deliverable. A plan that holds no scope contingency and states only that it has float is a plan whose contingency is the work being cut."
},
"contingency_amount": {
"type": "string",
"minLength": 1,
"description": "The size of the buffer, in the declared unit. Record it as a figure rather than a percentage, because a percentage of a demand that was never reconciled produces a number that looks precise and is not."
},
"how_it_would_be_used": {
"type": "string",
"minLength": 1,
"description": "What the buffer protects, recorded so it cannot be quietly consumed on something it was not held for. A contingency with no stated use is the first thing cut in a difficult month, which is precisely the month it was held for."
}
},
"required": [
"resource_role",
"contingency_type",
"contingency_amount",
"how_it_would_be_used"
]
}
},
"required": [
"artifact_id",
"metadata",
"matrix_basis",
"capacity_by_resource",
"demand_by_resource",
"gap_analysis",
"contingency"
]
}
📋 Form Field Definitions Dictionary (Legacy Specification)
{
"_llm_instructions": "Fill in the 'project_title' and 'date_prepared' properties, and the 'value' property of each field, based on the provided project context. Reference parameters.md for global project variables.",
"form_name": "Resource Capacity Matrix",
"document_reference": "PMO-00.04",
"project_title": "",
"date_prepared": "",
"fields": {
"f01_Matrix_Scope_and_Level": {
"section": "Matrix Basis",
"label": "Matrix Scope and Level",
"guidance": "What this matrix covers and at what level it is maintained, whether portfolio-wide across initiatives, program-wide across components, or for a single project. The level decides what the matrix is used to decide: a portfolio matrix decides between initiatives, a project matrix decides whether one plan is credible, and reading either as the other produces a confident wrong answer.",
"value": ""
},
"f02_Capacity_Unit_of_Measure": {
"section": "Matrix Basis",
"label": "Capacity Unit of Measure",
"guidance": "The unit used for every figure in the matrix, whether person-days, full-time equivalents, or hours per period. State it once and use it throughout: a matrix whose rows use different units cannot be added up, and the total at the foot of it is then arithmetically meaningless rather than merely approximate.",
"value": ""
},
"f03_Periods_Covered": {
"section": "Matrix Basis",
"label": "Periods Covered",
"guidance": "The periods the matrix covers, matching those of the schedule it is compared against. Where the matrix is annual and the schedule is weekly, the comparison has to be done by hand every time and is therefore not done, which is how a quarterly shortfall survives to become a delivery failure.",
"value": ""
},
"f04_Source_of_Truth_or_Extract": {
"section": "Matrix Basis",
"label": "Source of Truth or Extract",
"guidance": "Whether this matrix is the authoritative record or an extract from a resourcing tool. Record which, because a reader who treats a stale extract as current will plan against capacity that was reallocated weeks ago, and the error surfaces only when the work cannot be staffed.",
"value": ""
},
"f05_Matrix_Owner": {
"section": "Matrix Basis",
"label": "Matrix Owner",
"guidance": "The single role accountable for the matrix as a whole, which is normally not the owner of any one resource in it. Where this is blank, the matrix has contributors but nobody who notices that a row has not been updated since the reorganisation.",
"value": ""
},
"f06_Last_Updated": {
"section": "Matrix Basis",
"label": "Last Updated",
"guidance": "The date the matrix was last reconciled against the plan, and against which version of the schedule. Without it a reader cannot tell a current matrix from an abandoned one, and the two are indistinguishable on the page.",
"value": ""
},
"f07_ID": {
"section": "Capacity by Resource",
"label": "ID",
"guidance": "The identifier for the resource role, used in the demand and gap sections so the three can be compared row against row. Without a shared identifier the comparison is done by eye, and two similarly named roles are the ones most often confused.",
"value": ""
},
"f08_Resource_Role_or_Team": {
"section": "Capacity by Resource",
"label": "Resource Role or Team",
"guidance": "The role or team, named as the work requires it rather than as the organisation chart draws it. A matrix organised by existing departments can never show a gap, because it only ever lists what is already there, and the absence of a needed capability reads as its absence from the plan rather than from the organisation.",
"value": ""
},
"f09_Period": {
"section": "Capacity by Resource",
"label": "Period",
"guidance": "The period the row covers, using the same periods throughout the matrix. Capacity recorded per period rather than in total is what makes the matrix usable, because a resource with a thousand person-days available who is fully committed in the month the work is needed has no capacity at all.",
"value": ""
},
"f10_Total_Available": {
"section": "Capacity by Resource",
"label": "Total Available",
"guidance": "The capacity that exists in the period, before any allocation, in the unit declared for the matrix. This is a figure about the organisation rather than about the project, and recording it here is what allows the reader to see how much of it is actually available.",
"value": ""
},
"f11_Allocated": {
"section": "Capacity by Resource",
"label": "Allocated",
"guidance": "The capacity already committed elsewhere in the portfolio. This is the column most often left out, and without it the available figure is the total, which is not what the project can use. It is also the column that reveals a resource being shared between initiatives without either owner knowing.",
"value": ""
},
"f12_Remaining": {
"section": "Capacity by Resource",
"label": "Remaining",
"guidance": "What is left after allocation, which is the figure the planner actually has. Where this is negative, the matrix has found a real problem; where it is silently recorded as zero because nobody wanted to write a negative number, the problem has been hidden instead of solved.",
"value": ""
},
"f13_Constraints_or_Single_Points_of_Failure": {
"section": "Capacity by Resource",
"label": "Constraints or Single Points of Failure",
"guidance": "What limits this resource: a location, a qualification held by one person, a licence, a tool only one person can operate, or a notice period. Record the consequence rather than the adjective, because \"test automation is a single point of failure because one person holds it\" can be acted on, while \"test automation is a risk\" cannot.",
"value": ""
},
"f14_Notes": {
"section": "Capacity by Resource",
"label": "Notes",
"guidance": "Anything that changes how the row should be read, such as a known vacancy, planned leave, or a resource shared with another portfolio. Where a role is filled by more than one person, record the role once and note the split here, since a row per person hides the total capacity of the role.",
"value": ""
},
"f15_ID": {
"section": "Demand by Resource",
"label": "ID",
"guidance": "The resource role the demand is for, matching the ID used in the capacity section so the two can be set against each other.",
"value": ""
},
"f16_Resource_Role": {
"section": "Demand by Resource",
"label": "Resource Role",
"guidance": "The role the demand falls on, using the same naming as the capacity section. The two must be the same list, or the comparison in the gap section silently excludes roles that appear in only one of them, which are usually the ones in trouble.",
"value": ""
},
"f17_Period": {
"section": "Demand by Resource",
"label": "Period",
"guidance": "The period the demand falls in. A demand recorded with no period cannot be compared with a capacity figure that has one, and is therefore dropped from the comparison without anyone deciding to drop it.",
"value": ""
},
"f18_Required_Capacity": {
"section": "Demand by Resource",
"label": "Required Capacity",
"guidance": "What the scope and schedule require in the period. Record the figure the plan was built on rather than the figure currently being achieved, since the second is a consequence of the first being wrong and reporting it back as the requirement makes the shortfall disappear from the plan.",
"value": ""
},
"f19_Source_of_Demand": {
"section": "Demand by Resource",
"label": "Source of Demand",
"guidance": "Which part of the plan generates it, such as a named deliverable, work package, or activity. A demand that cannot be traced to something in the plan cannot be challenged, and demands that cannot be challenged only ever grow.",
"value": ""
},
"f20_Priority": {
"section": "Demand by Resource",
"label": "Priority",
"guidance": "Whether the demand is essential, or could be deferred or descoped. Without a priority a gap has no remedy, because the available responses are to add capacity, move the work, or reduce it, and nothing in the matrix says which of those the programme would accept.",
"value": ""
},
"f21_Resource_Role": {
"section": "Gap Analysis",
"label": "Resource Role",
"guidance": "The role the gap applies to, using the same naming as the sections above. Where a role appears in the demand but not the capacity, the gap is the whole requirement rather than a shortfall, and that case is worth distinguishing because it is a different problem.",
"value": ""
},
"f22_Gap": {
"section": "Gap Analysis",
"label": "Gap",
"guidance": "The difference between required and remaining, stated as a signed number so that a surplus is not read as a shortfall. This is the figure the whole matrix exists to produce, and a matrix that records only the totals has omitted the only number anyone reads.",
"value": ""
},
"f23_Period": {
"section": "Gap Analysis",
"label": "Period",
"guidance": "The period the gap falls in. A gap in a period with no demand in it is a different problem from a gap in a period the work needs, and reporting both as \"a gap\" sends the reader looking for the wrong remedy.",
"value": ""
},
"f24_Resolution_Planned": {
"section": "Gap Analysis",
"label": "Resolution Planned",
"guidance": "How the gap will be closed: recruitment, a contractor, moving work between periods, reducing scope, or accepting the risk. Where the gap is covered by a contractor or a shared resource, record the contract or agreement that covers it, because a gap filled on the understanding that someone will help is not covered at all.",
"value": ""
},
"f25_Resolution_Owner": {
"section": "Gap Analysis",
"label": "Resolution Owner",
"guidance": "Who is accountable for closing the gap. A gap with a planned resolution and no owner is a gap being wished away, and it is the most common way a capacity matrix comes to be relied upon long after it was last true.",
"value": ""
},
"f26_Resolution_Date": {
"section": "Gap Analysis",
"label": "Resolution Date",
"guidance": "By when the resolution is expected to be in place. This is what tells the reader whether the plan is still feasible, so record it rather than leaving the row open, and where the date has passed without resolution, escalate rather than moving the date.",
"value": ""
},
"f27_Resource_Role": {
"section": "Contingency",
"label": "Resource Role",
"guidance": "The role the contingency applies to, or \"plan\" where the buffer is held across all roles rather than against one.",
"value": ""
},
"f28_Contingency_Type": {
"section": "Contingency",
"label": "Contingency Type",
"guidance": "Whether the buffer is in capacity, in time, or in scope. The three are not interchangeable: time contingency can be spent once, capacity contingency can be spent on anything, and scope contingency reduces the deliverable. A plan that holds no scope contingency and states only that it has float is a plan whose contingency is the work being cut.",
"value": ""
},
"f29_Contingency_Amount": {
"section": "Contingency",
"label": "Contingency Amount",
"guidance": "The size of the buffer, in the declared unit. Record it as a figure rather than a percentage, because a percentage of a demand that was never reconciled produces a number that looks precise and is not.",
"value": ""
},
"f30_How_It_Would_Be_Used": {
"section": "Contingency",
"label": "How It Would Be Used",
"guidance": "What the buffer protects, recorded so it cannot be quietly consumed on something it was not held for. A contingency with no stated use is the first thing cut in a difficult month, which is precisely the month it was held for.",
"value": ""
}
}
}