Skip to main content

sdac-fringe-analysis

Purpose

Analyzes fringe benefit costs between two reporting periods. Calculates differentials, identifies contributing factors (new positions, removed positions, rate changes), assesses proportionality against salary movement, and evaluates the adequacy of any district-provided justification.

Tool type

AI-assisted (deterministic computation + narrative generation)

Tool ID

fringe_analysis

Inputs

  • currentFringe (number, required) -- Current quarter total fringe benefits in dollars
  • previousFringe (number, required) -- Previous quarter total fringe benefits in dollars
  • currentSalary (number, required) -- Current quarter total salary in dollars
  • previousSalary (number, required) -- Previous quarter total salary in dollars
  • personnelData (array, optional) -- Detailed personnel records for granular factor analysis
    • id (number)
    • name (string)
    • title (string)
    • salary (number)
    • fringe (number)
    • isNew (boolean, optional) -- True if new position this quarter
    • isRemoved (boolean, optional) -- True if position was removed this quarter
  • districtJustification (string, optional) -- District-provided justification to assess

Outputs

  • fringeDifferential (number) -- Percentage change in fringe benefits
  • salaryDifferential (number) -- Percentage change in salary for comparison
  • totalFringeIncrease (number) -- Dollar amount of fringe change
  • totalSalaryIncrease (number) -- Dollar amount of salary change
  • currentFringeRate (number) -- Current fringe as percentage of salary
  • previousFringeRate (number) -- Previous fringe as percentage of salary
  • fringeRateChange (number) -- Change in fringe rate (percentage points)
  • isProportional (boolean) -- Whether fringe change is proportional to salary change (within 2pp)
  • analysis (string) -- Detailed narrative analysis with factor breakdown
  • factors (array) -- Contributing factors with dollar impact and percentage of variance
  • justificationAssessment (object, optional) -- Adequacy assessment when justification provided
    • isAdequate (boolean)
    • missingElements (array of strings)
    • recommendation (string)
  • recommendedAction (string, optional) -- Suggested next steps for the auditor

Example output

{
"fringeDifferential": 10.25,
"salaryDifferential": 8.41,
"totalFringeIncrease": 29000,
"totalSalaryIncrease": 97000,
"currentFringeRate": 24.96,
"previousFringeRate": 24.54,
"fringeRateChange": 0.42,
"isProportional": true,
"analysis": "Fringe increased slightly more than salary, but the fringe rate changed by less than two percentage points.",
"factors": [
{
"name": "Added positions",
"dollarImpact": 18000,
"percentOfVariance": 62.1
}
],
"justificationAssessment": {
"isAdequate": true,
"missingElements": [],
"recommendation": "No follow-up needed based on the supplied justification."
},
"recommendedAction": "Accept the fringe explanation if no row-level fringe errors are present."
}

Functional details

  • Computes fringe and salary differentials, fringe rate, and rate change purely from numeric inputs.
  • When personnelData is provided, breaks the variance into new positions, removed positions, and general rate change factors.
  • Proportionality threshold is 2 percentage points -- fringe and salary differentials within this band are considered proportional.
  • Justification adequacy check looks for mention of new positions, rate changes, and specific dollar/percentage figures.

Usage notes

  • Used by the SDAC Fringe Analysis Agent and the SDAC Source Code Reviewer.
  • Supply personnelData for granular factor attribution; omit for aggregate-only analysis.
  • When a district justification is available, pass it via districtJustification to get a recommendation on whether to accept or request revision.

Code Location: packages/domain-sdac/src/tools/fringe-analysis.tool.ts