{
  "version": 1,
  "fictional": true,
  "software": "LMN / Granum",
  "title": "Hours over budget, configured dollars below estimate",
  "canonicalPage": "https://levelcfo.com/guides/software-integration/lmn/",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "fields": [
    {
      "name": "kind",
      "meaning": "Distinct teaching measure"
    },
    {
      "name": "amount",
      "meaning": "Fictional value; units depend on kind"
    }
  ],
  "calculation": "Actual job hours exceed estimated hours by 10. Yet configured actual labor dollars are $500 below estimated labor dollars. The implied estimating rate is $50 per hour and configured actual rate is $30. Verified payroll cost divided by 60 paid hours is $37.50; divided by 50 productive job hours it is $45. These are explicitly invented teaching bases, not LMN default rates.",
  "files": [
    {
      "filename": "lmn-labor-bases.csv",
      "sha256": "00afb2b0688241d16d08792924dff27c9b6993907879270801990eb147fd02d0"
    }
  ],
  "checks": [
    {
      "id": "est_hours",
      "operation": "sum",
      "expected": 40,
      "file": "lmn-labor-bases.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "estimated_hours"
      }
    },
    {
      "id": "job_hours",
      "operation": "sum",
      "expected": 50,
      "file": "lmn-labor-bases.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "actual_job_hours"
      }
    },
    {
      "id": "est_dollars",
      "operation": "sum",
      "expected": 2000,
      "file": "lmn-labor-bases.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "estimated_labor_dollars"
      }
    },
    {
      "id": "configured",
      "operation": "sum",
      "expected": 1500,
      "file": "lmn-labor-bases.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "configured_actual_dollars"
      }
    },
    {
      "id": "payroll",
      "operation": "sum",
      "expected": 2250,
      "file": "lmn-labor-bases.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "verified_payroll_cost"
      }
    },
    {
      "id": "paid_hours",
      "operation": "sum",
      "expected": 60,
      "file": "lmn-labor-bases.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "paid_hours"
      }
    },
    {
      "id": "hours_variance",
      "operation": "difference",
      "expected": 10,
      "operands": [
        "job_hours",
        "est_hours"
      ]
    },
    {
      "id": "dollar_difference",
      "operation": "difference",
      "expected": 500,
      "operands": [
        "est_dollars",
        "configured"
      ]
    },
    {
      "id": "paid_rate",
      "operation": "ratio",
      "expected": 37.5,
      "operands": [
        "payroll",
        "paid_hours"
      ]
    },
    {
      "id": "productive_rate",
      "operation": "ratio",
      "expected": 45,
      "operands": [
        "payroll",
        "job_hours"
      ]
    }
  ],
  "expectedResults": [
    {
      "label": "Hours over estimate",
      "value": 10,
      "unit": "hours",
      "meaning": "50 actual job hours less 40 estimated",
      "checkId": "hours_variance"
    },
    {
      "label": "Configured dollar difference",
      "value": 500,
      "unit": "USD",
      "meaning": "Estimated dollars less configured actual dollars",
      "checkId": "dollar_difference"
    },
    {
      "label": "Payroll cost per paid hour",
      "value": 37.5,
      "unit": "USD/hour",
      "meaning": "Payroll cost divided by paid hours",
      "checkId": "paid_rate",
      "decimalPlaces": 2
    },
    {
      "label": "Payroll cost per productive hour",
      "value": 45,
      "unit": "USD/hour",
      "meaning": "Same payroll numerator divided by job hours",
      "checkId": "productive_rate",
      "decimalPlaces": 2
    }
  ],
  "nextDecision": "Inspect the operating cause of the hours overrun, then choose the payroll/hour basis relevant to pricing. Do not equate the $500 configured difference with savings."
}
