ffr-management-extraction-udm¶
ffr-management-extraction-udm0.1.0noneTags: ffr sf-425 post-award financial-reporting federal-financial-report compliance udm structured-extraction json
Audience: sponsored-programs-staff, post-award-teams, ingest-pipelines
Manifestations in repo: prompt.md
Extracts Federal Financial Report (FFR / SF-425) requirements and post-award financial reporting obligations from a federal award notice or agreement into a structured JSON object organized around the five buckets a sponsored-programs analyst uses when preparing FFR submissions: submission schedule, submission system and procedures, required financial data, compliance consequences, and preparation timeline.
Output contract: schema.json
Contract scope: repo-local, UDM-aligned
Inputs¶
Full text of a federal award notice / agreement / terms-and-conditions document — pasted text, attached PDF/DOCX, or URL.
Outputs¶
A single JSON object with:
- Scalar award metadata —
award_number,pi_name - Five structured buckets:
submission_schedule—{annual_ffr_due, final_ffr_due, interim_reporting, cash_transaction_reporting}submission_system—{platform, access_requirements, era_commons_integration, submission_authorization}required_financial_data— flat list of required reporting category labelscompliance_consequences—{late_submission_penalties, account_restrictions, impact_on_future_funding, required_documentation}preparation_timeline— array of{milestone, days_before_period_end, action, owner}
See schema.json for the authoritative definition and prompt.md for the encoding rules (verbatim day-counts, sponsor-platform terminology, and the rule that preparation_timeline is populated only when the document itself describes a countdown).
Contract scope¶
Repo-local, UDM-aligned. The scalar fields resolve to UDM Award and Personnel entities; required_financial_data and preparation_timeline support downstream AwardBudget and Terms ingest. The five structured buckets do not duplicate any shared UDM schema — they are repo-local to this component and mirror the deliverable produced by the ffr-management-extraction Vandalizer workflow in the ui-insight/ProcessMapping process-mapping corpus.
Triad integration¶
- Evaluation datasets: none yet — planned: an authorized, de-identified federal award notice with a strict PMS submission schedule and explicit late-submission penalty language to exercise the full
compliance_consequencesblock. - Harness notes: canonical manifestation is
prompt.md. Validation surface isschema.json. The companion top-levelworkflows/ffr-management-extractionVandalizer workflow at v0.1.0 implements the contract as a single Extraction task plus a Consolidation Prompt; record both single-call and post-consolidation signals when both are available. - Shared UDM relationship: aligned, not owning.
award_numberandpi_namefollow naming conventions in AI4RA-UDM but this component does not redefine UDM tables.
Runtime topology — the Vandalizer workflow¶
The canonical runtime for this component is the ffr-management-extraction workflow shipped at the top level of this repo. The single source of truth is workflows/ffr-management-extraction/manifest.yaml; the companion .vandalizer.json envelope is generated by scripts/build_vandalizer_workflows.py and committed alongside. The runtime mirrors the source ui-insight/ProcessMapping/workflows/ffr-management-extraction/ workflow:
- Step 1 (Extraction) — one Extraction task with an embedded SearchSet whose item titles mirror this component's schema field names.
submission_system.platformcarries the five-value enum. - Step 2 (Consolidation Prompt) — assembles the extraction fragment into the schema-conformant object, normalizes the platform enum, and ensures
preparation_timelineis empty when the document does not describe a countdown.
Regenerate the workflow JSON whenever this component bumps MINOR or MAJOR (or whenever the workflow manifest changes); CI fails if the committed .vandalizer.json drifts from a fresh build.
Manifestations¶
prompt.md— canonical, LLM-agnostic prompt
Evals¶
See evals/ for reference inputs and known-good outputs. Initial cases pending: a federal award notice with explicit PMS submission schedule and late-submission penalty language; an NIH/HHS award exercising eRA Commons integration; an award with non-default 120-day annual FFR cadence.
Provenance¶
Authored 2026-04-30 against the ffr-management-extraction (Workflow_ID: WF-FFR-MANAGEMENT-EXTRACTION) process-mapping workflow in ui-insight/ProcessMapping at commit b7176b0c913833a205efdb5e4ba00c17ff88af0f, which was built from walkthrough transcripts of post-award sponsored-programs staff working through FFR / SF-425 submissions. Created to make that workflow a harness-evaluatable, versioned artifact rather than a runtime-embedded configuration.
Contract scope¶
-
Output format:
json_object -
Contract scope:
shared_udm_semantics_repo_local_schema -
Validation surfaces:
json_schema -
Schema entrypoints:
# -
Notes: Repo-local FFR (SF-425) post-award financial-reporting contract. Five structured buckets (submission_schedule, submission_system, required_financial_data, compliance_consequences, preparation_timeline) plus award-identifying scalars that resolve cleanly to UDM Award and Personnel.
-
Machine-readable catalog entry:
component_catalog.json
Triad integration¶
-
UDM alignment:
shared_udm_semantics_repo_local_schema— Scalar award_number and pi_name resolve to UDM Award.Federal_Award_ID and Personnel.Full_Name; required_financial_data labels feed UDM AwardBudget reporting categories; preparation_timeline supports UDM Terms ingest. The five-bucket shape itself is repo-local. -
Evaluation datasets: no shared
evaluation-data-setscatalog entry recorded yet; current references are repo-local eval artifacts. -
Harness notes: Validate JSON outputs against schema.json. Canonical single-call invocation surface is prompt.md. The companion top-level workflows/ffr-management-extraction Vandalizer workflow at v0.1.0 implements the same contract as a single Extraction task plus a Consolidation Prompt that collapses flat searchset items into the nested submission_schedule, submission_system, and compliance_consequences objects; campaign authors should record both single-call and post-consolidation signals when both are available.
-
Related component:
award-compliance-extraction-udm(drilldown_of) — award-compliance-extraction-udm.financial_management.ffr_requirements is a one-line summary; this component drills into the full FFR submission schedule, system, and preparation timeline.
Prompt body¶
Source: prompt.md.
Show prompt
FFR Management Extraction — UDM JSON¶
Purpose: Extract Federal Financial Report (FFR / SF-425) requirements and post-award financial reporting obligations from a federal award notice or agreement into a single structured JSON object that downstream tooling can use to drive an FFR preparation and submission calendar.
Expected input: Full text of a federal award notice / agreement / terms-and-conditions document.
Expected output: A single JSON object that validates against
schema.json. No prose, no markdown outside the JSON.
When to use this contract¶
This is the post-award financial-reporting cut of an award document. It produces five buckets a sponsored-programs analyst uses when scheduling FFR submissions: the submission schedule, the submission system and procedures, the required financial data categories, the compliance and consequences language, and a preparation timeline countdown. UDM-aligned scalar fields (award_number, pi_name) resolve cleanly to UDM Award and Personnel entities; the expenditure_categories list and preparation_timeline table support downstream AwardBudget and Terms ingest.
This component does not cover the broader post-award compliance framework (high-risk conditions, prior approvals, audit thresholds) — that lives in award-compliance-extraction-udm. It does not cover effort certification — that lives in effort-reporting-extraction-udm.
Prompt¶
You are extracting Federal Financial Report (FFR / SF-425) requirements and post-award financial reporting obligations from a federal award notice or agreement.
Be 100% accurate. Quote the document for any threshold, deadline, or system name; never paraphrase a number, deadline, or required system. When the document does not specify a value, set the field to null or — for arrays/tables — return an empty array. Do not invent values.
Search the entire document for content in or near sections titled Financial Reporting Requirements, SF-425, Federal Financial Report, Payment Management System, Reporting Schedule, or Financial Monitoring. Keywords to follow: FFR, SF-425, financial report, PMS, expenditure, deadline, submit, days, budget period, project end, liquidation, drawdown.
Return a single JSON object that validates against schema.json with these top-level keys:
-
award_number— federal award identification number (FAIN). String ornull. -
pi_name— principal investigator full name. String ornull. -
submission_schedule— object covering annual / final / interim cadence: -
annual_ffr_due— string (e.g.,"90 days after each budget period end"). Required. When the document does not state it, use"Not specified in the document"(do not use null). -
final_ffr_due— string (e.g.,"120 days after project end"). Required. When the document does not state it, use"Not specified in the document". -
interim_reporting— string description ornull. -
cash_transaction_reporting— string description ornull. -
submission_system— object covering the platform and access: -
platform— one of"Payment Management System","ASAP","ACH","Grants.gov","Other", ornull. -
access_requirements— string ornull. -
era_commons_integration— string ornull(set when the award is NIH/HHS). -
submission_authorization— string describing roles / responsibilities, ornull. -
required_financial_data— array of strings naming each required category exactly as the document states it (e.g.,"Personnel","Fringe benefits","Equipment","Subawards","Cost share","Program income"). Empty array if not specified. -
compliance_consequences— object covering enforcement language: -
late_submission_penalties— string ornull. -
account_restrictions— string ornull. -
impact_on_future_funding— string ornull. -
required_documentation— string ornull. -
preparation_timeline— array of{milestone, days_before_period_end, action, owner}objects describing the countdown the document implies. Empty array when the document does not specify timing.
Encoding rules¶
-
Quote dollar amounts and day-counts verbatim.
"90 days", not"three months"."$500,000", not"$0.5M". -
Preserve sponsor terminology. If the document says Payment Management System (PMS), set
platform: "Payment Management System"and put the abbreviation in theaccess_requirementstext only when needed for clarity. -
Do not synthesize a
preparation_timelinefrom generic best practices. Only populate this array when the document itself describes a countdown (e.g., "30 days prior to period end the recipient shall begin reconciliation"). Empty array otherwise. -
Required financial data is a flat list of category labels, not a paragraph. If the document says "expenditures must be reported by salary, fringe, equipment, travel, and indirect costs", emit
["Salary", "Fringe", "Equipment", "Travel", "Indirect costs"]. -
The
cash_transaction_reportingfield is for the SF-272 / cash transaction language only; do not duplicate generic FFR cadence here. -
Do not output any text outside the single JSON object.
Output¶
A single JSON object. No surrounding markdown.
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/ffr-management-extraction-udm/schema.json",
"title": "FFR Management Extraction \u2014 UDM Output",
"description": "JSON contract for Federal Financial Report (FFR / SF-425) requirements and post-award financial reporting obligations distilled from a federal award notice or agreement. Produces five structured buckets (submission schedule, submission system, required financial data, compliance consequences, preparation timeline) plus award-identifying scalars that resolve to UDM Award and Personnel entities.",
"version": "0.1.0",
"type": "object",
"additionalProperties": false,
"required": [
"submission_schedule",
"submission_system",
"required_financial_data",
"compliance_consequences",
"preparation_timeline"
],
"properties": {
"award_number": {
"type": [
"string",
"null"
],
"description": "Federal Award Identification Number (FAIN) as printed on the award. Resolves downstream to UDM Award.Federal_Award_ID."
},
"pi_name": {
"type": [
"string",
"null"
],
"description": "Principal Investigator full name as printed on the award. Resolves downstream to UDM Personnel.Full_Name."
},
"submission_schedule": {
"type": "object",
"additionalProperties": false,
"required": [
"annual_ffr_due",
"final_ffr_due"
],
"properties": {
"annual_ffr_due": {
"type": "string",
"minLength": 1,
"description": "Annual FFR due window expressed as the document states it (e.g., '90 days after each budget period end', '120 days after period end'). Quote day-counts verbatim. Required by source workflow; if the document does not state it, use 'Not specified in the document'."
},
"final_ffr_due": {
"type": "string",
"minLength": 1,
"description": "Final FFR deadline expressed as the document states it (e.g., '120 days after project end'). Required by source workflow; if the document does not state it, use 'Not specified in the document'."
},
"interim_reporting": {
"type": [
"string",
"null"
],
"description": "Interim financial reporting requirements when the award imposes them. Null when not specified."
},
"cash_transaction_reporting": {
"type": [
"string",
"null"
],
"description": "SF-272 / cash transaction reporting requirements. Null when not specified."
}
}
},
"submission_system": {
"type": "object",
"additionalProperties": false,
"required": [
"platform"
],
"properties": {
"platform": {
"type": [
"string",
"null"
],
"enum": [
"Payment Management System",
"ASAP",
"ACH",
"Grants.gov",
"Other",
null
],
"description": "Primary submission system. Use the document's exact platform name; pick 'Other' only when the document names a platform that is none of the listed enum values."
},
"access_requirements": {
"type": [
"string",
"null"
],
"description": "Account, role, or registration prerequisites for accessing the platform."
},
"era_commons_integration": {
"type": [
"string",
"null"
],
"description": "eRA Commons integration details. Populate when the award is NIH or HHS; otherwise null."
},
"submission_authorization": {
"type": [
"string",
"null"
],
"description": "Roles and responsibilities for who may submit (e.g., 'AOR-only', 'PI with SO countersignature')."
}
}
},
"required_financial_data": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Flat list of required reporting category labels exactly as named in the document (e.g., 'Personnel', 'Fringe', 'Equipment', 'Subawards', 'Cost share', 'Program income'). Resolves downstream to UDM AwardBudget reporting categories."
},
"compliance_consequences": {
"type": "object",
"additionalProperties": false,
"properties": {
"late_submission_penalties": {
"type": [
"string",
"null"
],
"description": "Document language describing penalties for late FFR submission."
},
"account_restrictions": {
"type": [
"string",
"null"
],
"description": "Document language describing payment-system or drawdown restrictions tied to non-compliance."
},
"impact_on_future_funding": {
"type": [
"string",
"null"
],
"description": "Document language describing impact on future awards or competing renewals."
},
"required_documentation": {
"type": [
"string",
"null"
],
"description": "Document language describing supporting documentation or backup the recipient must retain."
}
}
},
"preparation_timeline": {
"type": "array",
"description": "Countdown of preparation milestones derived from the document's own pre-submission timing language. Empty when the document does not describe a countdown.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"milestone",
"action"
],
"properties": {
"milestone": {
"type": "string",
"minLength": 1,
"description": "Short label for the milestone (e.g., 'T-30 days', 'Period end', 'T+30 days')."
},
"days_before_period_end": {
"type": [
"integer",
"null"
],
"description": "Days before budget-period or project end. Negative numbers are allowed for after-end milestones; null when the document is qualitative."
},
"action": {
"type": "string",
"minLength": 1,
"description": "What must be done at this milestone, quoted or paraphrased close to the document."
},
"owner": {
"type": [
"string",
"null"
],
"description": "Responsible role (e.g., 'PI', 'Department admin', 'Sponsored Programs Office'). Null when not specified."
}
}
}
}
}
}
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-04-30¶
- Initial experimental release.
- Schema derived from the
ffr-management-extractionv2 Vandalizer workflow inui-insight/ProcessMapping(single Extraction task + Formatting task; 7 source fields). - Five structured buckets (
submission_schedule,submission_system,required_financial_data,compliance_consequences,preparation_timeline) match the Five Output Sections produced by the canonical extraction prompt (FFR Submission Schedule, Submission System & Procedures, Required Financial Data, Compliance & Consequences, Preparation Timeline). - Scalar
award_numberandpi_namefields added on top of the source workflow's seven Extraction fields so a single FFR extraction resolves cleanly to UDMAward+Personnelentities. submission_system.platformenum matches the source workflow'sSubmission_SystemEnum_Values (Payment Management System,ASAP,ACH,Grants.gov,Other).- Source-workflow requiredness preserved:
submission_schedule.annual_ffr_dueandsubmission_schedule.final_ffr_dueare required non-null strings (matching the source workflow'sIs_Required: true); when the document does not state a value, use"Not specified in the document". - UDM column binding preserved:
required_financial_datamirrors the sourceExpenditure_Categoriesfield's UDM AwardBudget reference. preparation_timelinerealized as an array of{milestone, days_before_period_end, action, owner}objects (rather than the sourceTablefield) so the per-row owner is attached to the right milestone rather than implied.- No eval cases yet — status
experimentaluntil at least one golden extraction is added underevals/cases/.