Skip to Content

Projects

The engagement after a proposal is accepted — milestones, blockers, change control, and the money that rides on them. See Reading the tables for the conventions, and /admin/settings/scope in the platform for the live per-tenant answer.

Capabilities — delivery

CapabilityGateAdminCSMSDMExpertVendorCustomer
View milestonesmilestone.view✔️✔️✔️✔️ (own)✔️✔️ (own)
Start a milestonemilestone.start✔️✔️✔️✔️
Complete a milestone (owner / manager)milestone.complete✔️✔️✔️✔️
Block a milestonemilestone.block✔️✔️✔️✔️
Unblock a milestonemilestone.unblock✔️✔️✔️✔️
Acknowledge a completed milestonemilestone.acknowledge✔️✔️✔️✔️ (own)
Raise a blocker (own work only)blocker.raise✔️✔️✔️✔️
Clear a blockerblocker.clear✔️✔️✔️✔️
Record change control (own work only)changeControl.record✔️✔️✔️✔️
Add an action itemactionItem.add✔️✔️✔️✔️
Complete an action item (own work only)actionItem.complete✔️✔️✔️✔️✔️
Escalateescalation.raise✔️✔️✔️
Raise a concernconcern.raise✔️✔️
Message the delivery teammessage.team✔️✔️
View the engagement activity timelineactivity.view✔️✔️✔️✔️ (own)✔️✔️ (own)
View the people on the engagementpeople.view✔️✔️✔️✔️ (own)

Completing a milestone is held by the delivering expert and by managers — the owner / manager qualifier is a hint the platform renders next to the lever, not a second gate. Raising a concern and messaging the delivery team are the customer’s channels; escalation is the managers’ equivalent, and the two are separate capabilities.

Completing and acknowledging are different acts by different parties. Completing is the expert’s statement that the work is finished; acknowledging is the customer’s agreement that it is. The expert is deliberately not granted milestone.acknowledge — the party that did the work is not the party that accepts it. Managers hold it so they can record a customer’s acknowledgement on their behalf, attributed and marked as such, which keeps the measure moving for customers who never sign in.

Capabilities — money on the engagement

CapabilityGateAdminCSMSDMExpertVendorCustomer
View quotesquote.view✔️✔️✔️✔️
Approve a quote for issuequote.approve✔️✔️✔️
Respond to a quote (owner only)quote.respond✔️✔️
View invoicesinvoice.view✔️✔️✔️✔️ (own)✔️✔️ (own)
Submit an invoiceinvoice.submit✔️✔️
Approve an invoiceinvoice.approve✔️✔️✔️
Pay an invoiceinvoice.pay✔️✔️
Resolve an invoice disputeinvoice.resolveDispute✔️✔️✔️✔️

Invoices are raised by the expert per milestone and approved by a manager — there is no automatic issue on milestone completion. The quote is the other direction: managers approve it for issue, the customer responds to it.

Surfaces

PageGateAdminCSMSDMExpertVendorCustomer
/projectsexplicit — persona surface✔️✔️✔️✔️
/projects/createexplicit — the customer’s request form✔️
/financesderived from invoice.view✔️✔️✔️✔️✔️✔️
/finances/approvalsderived from invoice.approve✔️✔️✔️
/activityexplicit — full-tenant log, staff only✔️✔️✔️
/customer/workspaceexplicit — persona surface✔️
/customer/messagesexplicit — persona surface✔️
/customer/invoicesexplicit — persona surface✔️

/activity is the whole-tenant log with no per-persona scoping, so it stays staff-only even though activity.view is held more widely — own-scoped personas read their own timeline inside the lead workspace instead. /projects is an explicit persona list rather than a derived one, which is why CSM is absent from it: the CSM’s route into an engagement is the lead workspace.

Last updated on