Skip to content

cost-selected-item-check

Slugcost-selected-item-check
Version0.1.0
Statusexperimental
Last fully evaluatednone
Eval stateno validated eval cases
Categoryreview
Domainresearch-administration
Manifestationsprompt
Created2026-05-21
Updated2026-05-21

Tags: cost-allowability post-award selected-items-of-cost review federal-grants research-administration

Audience: post-award-staff, sponsored-programs-staff, grant-accountants

Manifestations in repo: prompt.md

Identifies which selected item of cost under 2 CFR 200.421-200.476 governs an expense and applies that section's rule. It is one of the single-requirement checks in the federal cost-allowability analysis workflow and emits a structured finding consumed by the final determination step.

Output contract: schema.json Contract scope: repo-local

Inputs

A normalized expense record, extracted award terms, and a regulated-activity classification from the Stage 1 components of the cost-allowability-analysis workflow. Any may be partial.

Outputs

A single structured finding — see schema.json — carrying a status of pass, issue, not_allowable, needs_info, or not_applicable, with rationale, cited evidence, follow-up actions, and a confidence level. The rationale names the specific 2 CFR section applied.

The check

Subpart E of the Uniform Guidance enumerates roughly fifty selected items of cost (2 CFR 200.421-200.476), each with its own rule — some unallowable outright, some allowable only with conditions, caps, or prior approval. Rather than a separate component per cost type, this check routes: it identifies the governing section for the expense and applies that section's rule. The general allowability factors are handled by the other checks.

Contract scope

Repo-local. The finding object is the shared single-requirement finding contract used across the cost-allowability check components; check_id, check_name, and regulation_anchor are fixed for this check. It is not a shared AI4RA-UDM schema.

Triad integration

  • Evaluation datasets: none yet — repo-local synthetic coverage planned.
  • Harness notes: canonical manifestation is prompt.md; validation surface is schema.json. Invoked as a Step 2 task of the cost-allowability-analysis workflow.
  • Shared UDM relationship: aligned to sponsored-project cost-allowability semantics; does not define or depend on a shared UDM schema.

Manifestations

  • prompt.md — canonical, LLM-agnostic prompt

Evals

See evals/.

Provenance

Created 2026-05-21 as the selected-items-of-cost router in the federal cost-allowability analysis component set, anchored to 2 CFR 200.421-200.476.

Contract scope

  • Output format: json_object

  • Contract scope: repo_local_single_requirement_finding_contract

  • Validation surfaces: json_schema

  • Schema entrypoints: #

  • Notes: Repo-local single-requirement allowability finding for the selected items of cost check (2 CFR 200.421-200.476). Routes an expense to its governing selected-item section and emits the shared cost-allowability finding object.

  • Machine-readable catalog entry: component_catalog.json

Triad integration

  • UDM alignment: repo_local_single_requirement_finding_contract — Aligns to sponsored-project cost-allowability semantics; the finding object is a prompt-library contract shared across the cost-allowability check components, not a shared UDM schema.

  • Evaluation datasets: no shared evaluation-data-sets catalog entry recorded yet; current references are repo-local eval artifacts.

  • Harness notes: Validate JSON output against schema.json. Canonical invocation surface is prompt.md. Invoked as a Step 2 task of the workflows/cost-allowability-analysis Vandalizer workflow.

Prompt body

Source: prompt.md.

Show prompt

Selected Items of Cost Check

Purpose: Identify which selected item of cost under 2 CFR 200.421-200.476 governs an expense and apply that section's rule.

Expected input: A normalized expense record, extracted award terms, and a regulated-activity classification.

Expected output: One structured finding conforming to schema.json.

This component is a single-requirement check in the federal cost-allowability analysis workflow. It applies the selected-item-of-cost rule only.

Prompt

You are a federal cost-allowability reviewer performing one specific check: Selected Items of Cost under 2 CFR 200.421 through 200.476. Review one expense and return a single structured finding for this check only — do not evaluate any other allowability requirement.

Return only a single JSON object conforming to the finding contract. No prose, Markdown, comments, or code fences.

Input

You receive a normalized expense record, extracted award terms, and a regulated-activity classification, produced by the upstream steps of the cost-allowability analysis workflow. Any of these may be partial or missing.

What this check evaluates

Whether the cost complies with the specific rule for its selected item of cost. Subpart E of the Uniform Guidance enumerates the selected items of cost at 2 CFR 200.421 through 200.476 — roughly fifty specific cost items, each with its own allowability rule. Examples:

  • Unallowable outright — alcoholic beverages (200.423); entertainment costs (200.438); fundraising (200.442); lobbying (200.450); fines and penalties (200.441); bad debts; goods or services for personal use.

  • Allowable only with conditions, caps, or prior approval — advertising and public relations (200.421); conferences (200.432); equipment and other capital expenditures (200.439); participant support costs (200.456); travel costs (200.475); memberships, subscriptions, and professional activity costs (200.454); compensation and fringe benefits (200.430, 200.431).

  • Allowable as ordinary costs when no selected-item section restricts the expense type.

Identify the selected-item section that best fits this expense and apply that section's rule. Name the specific section you applied in the rationale.

This check applies the selected-item rule only. The general allowability factors — reasonableness, allocability, period of performance, documentation, prior approval, consistent treatment, and award-terms conformance — are covered by the other checks.

Decision rule

Set status to exactly one of:

  • pass — a selected-item section applies and the expense satisfies that section's rule, or no selected-item section restricts this expense type.

  • issue — a selected-item section applies and the expense is allowable only if a condition (documentation, allocation, prior approval, or a cap) is met, and that condition is unconfirmed.

  • not_allowable — the applicable selected-item section makes this cost type unallowable, or the expense violates that section's rule.

  • needs_info — a selected-item section may apply but there is not enough detail about the expense to identify the section or apply its rule.

  • not_applicable — no selected item of cost in 2 CFR 200.421-200.476 governs this expense type.

Use the most conservative status the evidence supports. Never record pass when the evidence needed to satisfy the requirement is absent — that is needs_info.

Evidence and non-fabrication

  • Ground every finding in the supplied evidence. Populate evidence with short source_label / detail pairs (e.g., expense:description, expense:expense_category_hint).

  • Name the applied 2 CFR section in rationale (for example "200.475 Travel costs").

  • Do not invent section rules or caps. If you cannot identify the governing section from the supplied detail, that is needs_info, never pass.

Output

Emit the finding object:

  • check_id — "cost-selected-item"

  • check_name — "Selected Items of Cost"

  • regulation_anchor — "2 CFR 200.421-200.476"

  • expense_id — the expense reference from the input, or null

  • status — one of the values above

  • summary — one sentence stating the outcome, including the applied section

  • rationale — the evidence-grounded reasoning, naming the applied 2 CFR section

  • evidence — array of {source_label, detail}

  • follow_up_actions — concrete actions needed before the cost is approved or charged; empty array when none

  • confidence — "high", "medium", or "low", reflecting evidence completeness

Produce the finding now.

Output schema

Source: schema.json.

Show schema.json
{

  "$schema": "https://json-schema.org/draft/2020-12/schema",

  "$id": "https://github.com/AI4RA/prompt-library/components/cost-selected-item-check/schema.json",

  "title": "Selected Items of Cost Check \u2014 Finding",

  "description": "Structured single-requirement allowability finding for the selected items of cost check (2 CFR 200.421-200.476). Part of the federal cost-allowability analysis workflow.",

  "version": "0.1.0",

  "type": "object",

  "additionalProperties": false,

  "required": [

    "check_id",

    "check_name",

    "regulation_anchor",

    "status",

    "summary",

    "rationale",

    "evidence",

    "follow_up_actions",

    "confidence"

  ],

  "properties": {

    "check_id": {

      "const": "cost-selected-item",

      "description": "Stable identifier for this check."

    },

    "check_name": {

      "const": "Selected Items of Cost",

      "description": "Human-readable check name."

    },

    "regulation_anchor": {

      "const": "2 CFR 200.421-200.476",

      "description": "Primary regulatory anchor for this check."

    },

    "expense_id": {

      "type": [

        "string",

        "null"

      ],

      "description": "Expense reference carried from the input."

    },

    "status": {

      "type": "string",

      "enum": [

        "pass",

        "issue",

        "not_allowable",

        "needs_info",

        "not_applicable"

      ],

      "description": "Outcome of this check."

    },

    "summary": {

      "type": "string",

      "minLength": 1,

      "description": "One-sentence statement of the outcome, including the applied section."

    },

    "rationale": {

      "type": "string",

      "minLength": 1,

      "description": "Evidence-grounded reasoning behind the status, naming the applied 2 CFR section."

    },

    "evidence": {

      "type": "array",

      "description": "Evidence relied on. May be empty only when status is not_applicable.",

      "items": {

        "type": "object",

        "additionalProperties": false,

        "required": [

          "source_label",

          "detail"

        ],

        "properties": {

          "source_label": {

            "type": "string",

            "minLength": 1,

            "description": "Short source label, e.g. expense:description."

          },

          "detail": {

            "type": "string",

            "minLength": 1,

            "description": "Concise summary of what the source shows."

          }

        }

      }

    },

    "follow_up_actions": {

      "type": "array",

      "description": "Concrete actions needed before the cost is approved or charged. Empty array when none.",

      "items": {

        "type": "string",

        "minLength": 1

      }

    },

    "confidence": {

      "type": "string",

      "enum": [

        "high",

        "medium",

        "low"

      ],

      "description": "Reviewer confidence in this finding."

    }

  }

}

Changelog

Source: CHANGELOG.md.

All notable changes to this component. Versions follow semver: MAJOR for output-contract breaks, MINOR for backward-compatible additions, PATCH for wording or clarity.

[0.1.0] — 2026-05-21

  • Initial experimental release.
  • Single-requirement check that routes an expense to the governing selected item of cost in 2 CFR 200.421-200.476 and applies that section's rule.
  • Emits the shared cost-allowability finding object (status, summary, rationale, evidence, follow_up_actions, confidence) with check_id "cost-selected-item"; the rationale names the applied section.
  • Section rules are applied from the prompt's enumeration of key sections plus model knowledge; a bundled selected-items reference is a planned enhancement.
  • No eval cases yet — status experimental until at least one golden finding is added under evals/cases/.