Skip to content

ffr-management-extraction-udm

Slugffr-management-extraction-udm
Version0.1.0
Statusexperimental
Last fully evaluatednone
Eval stateno validated eval cases
Categoryextraction
Domainresearch-administration
Manifestationsprompt
Created2026-04-30
Updated2026-04-30

Tags: 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 metadataaward_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 labels
  • compliance_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_consequences block.
  • Harness notes: canonical manifestation is prompt.md. Validation surface is schema.json. The companion top-level workflows/ffr-management-extraction Vandalizer 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_number and pi_name follow 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.platform carries the five-value enum.
  • Step 2 (Consolidation Prompt) — assembles the extraction fragment into the schema-conformant object, normalizes the platform enum, and ensures preparation_timeline is 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-sets catalog 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 or null.

  • pi_name — principal investigator full name. String or null.

  • 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 or null.

  • cash_transaction_reporting — string description or null.

  • submission_system — object covering the platform and access:

  • platform — one of "Payment Management System", "ASAP", "ACH", "Grants.gov", "Other", or null.

  • access_requirements — string or null.

  • era_commons_integration — string or null (set when the award is NIH/HHS).

  • submission_authorization — string describing roles / responsibilities, or null.

  • 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 or null.

  • account_restrictions — string or null.

  • impact_on_future_funding — string or null.

  • required_documentation — string or null.

  • 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

  1. Quote dollar amounts and day-counts verbatim. "90 days", not "three months". "$500,000", not "$0.5M".

  2. Preserve sponsor terminology. If the document says Payment Management System (PMS), set platform: "Payment Management System" and put the abbreviation in the access_requirements text only when needed for clarity.

  3. Do not synthesize a preparation_timeline from 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.

  4. 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"].

  5. The cash_transaction_reporting field is for the SF-272 / cash transaction language only; do not duplicate generic FFR cadence here.

  6. 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-extraction v2 Vandalizer workflow in ui-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_number and pi_name fields added on top of the source workflow's seven Extraction fields so a single FFR extraction resolves cleanly to UDM Award + Personnel entities.
  • submission_system.platform enum matches the source workflow's Submission_System Enum_Values (Payment Management System, ASAP, ACH, Grants.gov, Other).
  • Source-workflow requiredness preserved: submission_schedule.annual_ffr_due and submission_schedule.final_ffr_due are required non-null strings (matching the source workflow's Is_Required: true); when the document does not state a value, use "Not specified in the document".
  • UDM column binding preserved: required_financial_data mirrors the source Expenditure_Categories field's UDM AwardBudget reference.
  • preparation_timeline realized as an array of {milestone, days_before_period_end, action, owner} objects (rather than the source Table field) so the per-row owner is attached to the right milestone rather than implied.
  • No eval cases yet — status experimental until at least one golden extraction is added under evals/cases/.