Project Margin
Project Margin: Gross margin on individual projects.
Formula
Project Margin = (Project revenue - Project costs) / Project revenue × 100 Computable definition
The canonical formula in the GASP formula grammar. The MCP server compiles it to SQL over the datasets listed below.
(sum(field.project_revenue where in_period(field.project_completion_date)) - sum(field.project_cost where in_period(field.project_completion_date))) / sum(field.project_revenue where in_period(field.project_completion_date)) Unit: percent (the formula yields an unscaled ratio)
Notes: Margin on projects completed in the period.
Data requirements
Grain: Monthly aggregate · Frequency: Monthly · Aggregation: aggregate (month) · Staged: no · Main source: PSA.
| Field | Dataset | Type |
|---|---|---|
project_completion_date | project | date |
project_cost | project | decimal |
project_revenue | project | decimal |
snapshot_date | project | date |
Example SQL (Postgres)
SELECT (CAST(((SELECT COALESCE(SUM(project_revenue), 0) FROM project WHERE snapshot_date = :period_end AND (project_completion_date >= :period_start AND project_completion_date <= :period_end)) - (SELECT COALESCE(SUM(project_cost), 0) FROM project WHERE snapshot_date = :period_end AND (project_completion_date >= :period_start AND project_completion_date <= :period_end))) AS DOUBLE PRECISION) / NULLIF((SELECT COALESCE(SUM(project_revenue), 0) FROM project WHERE snapshot_date = :period_end AND (project_completion_date >= :period_start AND project_completion_date <= :period_end)), 0)) AS project_margin From an agent: with the GASP MCP server, call
lookup_metric({ "name": "Project Margin" }) or generate_query({ "metric": "Project Margin", "adapter": "<your adapter JSON>" }).
What It Tells You
Profitability by engagement, including which ones lose money.