Skip to main content

SDAC Coordinator Release Agent

Overview

The Coordinator Release Agent is the primary agent for the SDAC AI Widget. It helps state auditors analyze cost report data by calling validation tools and providing concise, actionable analysis.

  • Registry ID: sdac_coordinator-release-agent
  • Profile ID: sdac-coordinator-release

Communication Style

The agent is designed for state auditors who need direct, evidence-based analysis:

  • Concise -- Gets to the point without lengthy explanations
  • Actionable -- Tells auditors what to DO, not what IS
  • Specific -- Uses exact numbers, names, and dollar amounts (e.g., "Williams added $2,800" not "new hires increased costs")
  • Direct -- Avoids hedging language like "appears," "seems," or "potentially"

Position-First Behavior

  • Treats the position or role as the primary unit of analysis.
  • Rolls non-DSP replacement/support rows into the linked main-roster position when possible.
  • Treats DSP=Y linked rows as valid add-on positions.
  • Enumerates every flagged position and every reason it was flagged.
  • Calls out ambiguity explicitly when lower-section rows cannot be linked confidently.
  • Keeps the legacy claimable-based federal-funds fringe calculation path in place.

Available Tools

The agent has access to persisted report-analysis tools plus targeted real-time tools:

ToolPurpose
sdac-get-analysis-packetRetrieves the precomputed report analysis packet from SDAC.analysis_Results
sdac-get-analysis-resultRetrieves one precomputed analysis result, such as FRINGE, SALARY, or COMMENT_QUALITY
sdac-start-report-analysisStarts or reuses the post-ingestion report analysis workflow
sdac-search-analysis-evidenceSearches persisted report, row-level finding, comparison, and historical evidence before raw tools
sdac-validate-fringeValidates fringe benefit rates using position-level aggregation and linked-occupant context
sdac-get-report-infoRetrieves report context: district name, year, quarter, salary/fringe totals, and position counts
sdac-fetch-costsSyncs TherapyLog cost data and returns a report context the widget can analyze
sdac-compare-quartersCompares the current report to prior-year data using position counts and position-family changes
sdac-compare-multiple-quartersCompares the current report against selected historical quarter/year targets
sdac-cross-reference-replacementsCross-references replacements, substitutions, and DSP add-ons against main-roster positions

The agent extracts the report_id from its system context and passes it to tools automatically.

Precomputed Analysis Behavior

When a report_id is available, the agent should prefer persisted report-analysis evidence:

  1. For broad review prompts, validation readiness questions, send-back questions, row-level finding questions, or historical evidence search, call sdac-search-analysis-evidence.
  2. For focused prompts, call sdac-get-analysis-result with the requested analysis_type.
  3. If persisted evidence is missing because report analysis has not started, call sdac-start-report-analysis.
  4. For broad current-report packet summaries, sdac-get-analysis-packet remains available as a compatibility wrapper.
  5. Call raw validation tools only when the persisted result is missing, stale, still running, or explicitly refreshed.
  6. Do not mention hidden analysis sections. Conversational filtering is handled by the evidence/packet/result tools using SDAC feature flags.

The persisted packet is produced by Report analysis workflow.

API Endpoint

POST /sdac/chat

The agent is accessed via the source-backed streaming chat endpoint with automatic session management. Browser widget code should call the same-origin proxy at POST /api/ingestion/sdac/chat.

Request:

{
"reportId": "8201EDC2-2EDE-4CA1-AF44-D0F5AA185CDB",
"message": "What is the fringe variance for this report?",
"userId": "auditor@state.gov",
"sessionId": "browser-session-abc123",
"conversationId": null
}

Response: Server-Sent Events stream with metadata, tool-start, tool-result, delta, usage, and done events.

See Streaming Responses for full SSE event documentation.

Session Management

Conversations are managed server-side with:

  • Context persistence across page refreshes
  • Token usage tracking per turn for cost analysis
  • 90-day automatic conversation expiration
  • Cross-session context for the same report

See Session Management for architecture details.

Configuration

The agent's system prompt and LLM settings are managed via Core.AgentProfiles:

  • Edit prompts through the Admin Dashboard without code changes
  • Version tracking with automatic cache invalidation on prompt updates
  • Per-profile LLM model overrides (temperature, max tokens, deployment)

Example Interaction

Auditor: "What is the fringe variance for this report?"

Agent calls: sdac-get-report-info → retrieves district context
Agent calls: sdac-validate-fringe → analyzes fringe benefit rates
Agent calls: sdac-compare-quarters → explains position-count movement versus prior year

Agent: "Three positions need review. Speech-Language Pathologist [row 16]
has a high fringe rate after combining split-occupancy costs. Principal [row 12]
has a linked DSP add-on. Ask the district to justify these specific positions."