sponsor-doc-defaults-udm¶
sponsor-doc-defaults-udm1.0.01.0.0Tags: sponsor requirements defaults udm research-administration proposal-preparation
Audience: pre-award-staff, ingest-pipelines, proposal-checklist-builders
Manifestations in repo: prompt.md · skill/SKILL.md
Given a sponsor organization (and optional division), emit the default set of documents that sponsor typically requires for a standard full proposal — as a structured list with page limits, format specs, required vs. optional flags, per-person indicators, and conditional triggers.
Output contract: see schema.json
Inputs¶
A short block naming the sponsor and (optionally) the division or institute. Either natural language or a sponsor_name: … / sponsor_division: … key-value block works; the prompt keys on the sponsor identity, not the syntax.
The component answers the baseline question: "What does this sponsor require by default for a standard full proposal?" Solicitation-specific modifications (e.g., a program that shortens a page limit or adds a program-specific supplementary document) are the job of the sibling component solicitation-doc-modifications-udm.
Outputs¶
One JSON object with:
sponsor_name— the sponsor as interpreted (may be a canonical normalization of the input)sponsor_division— division or institute when the caller provided one, else nullknowledge_notes— caveats, the policy version the defaults are drawn from (e.g., "NSF PAPPG effective May 2024"), or an explanation when the sponsor is not in the model's knowledge basedocument_requirements— array of document requirement objects; may be empty when the sponsor is unrecognized
Each requirement object carries code, label, description, page_limit, format_spec, is_required, is_per_person, and an optional conditional_on string. See schema.json for the authoritative definition.
Controlled code vocabulary¶
The code field uses an enum shared with sibling prompt-library components so downstream extractors and reviewers can dispatch on it. Current codes:
cover_sheet, cover_letter, project_summary, project_narrative, proposal_narrative, specific_aims, references_cited, biosketch, current_pending, collaborators_and_affiliations, facilities, equipment, budget, budget_justification, data_mgmt, postdoc_mentoring, mentoring_plan, results_prior_support, resource_sharing, authentication_key_resources, leadership_plan, human_subjects, vertebrate_animals, select_agent, inclusion_enrollment_report, letter_support, letter_collaboration, letter_of_intent, other.
Adding a new code is a MINOR change; removing or renaming one is MAJOR.
Unknown sponsors¶
When the sponsor is not one the model has defaults for, emit document_requirements: [] and put the explanation in knowledge_notes. Do not synthesize a generic "federal default" list — downstream routing treats an empty defaults set as a signal to fall back to solicitation-only requirements.
Manifestations¶
prompt.md— canonical, LLM-agnostic promptskill/SKILL.md— Claude Skill form
Schema¶
schema.json is a JSON Schema (draft 2020-12) defining the full output contract.
Relationship to other components¶
| Component | Role |
|---|---|
document-type-classifier-udm |
Upstream: classifies an incoming document into the same code vocabulary |
sponsor-doc-defaults-udm (this) |
Emits the default set of required documents for a sponsor |
solicitation-doc-modifications-udm |
Pairs with this: given a solicitation + these defaults, emits overrides + net-new documents |
proposal-completeness-review-udm |
Consumes the merged defaults + modifications to check a draft proposal |
Evals¶
See evals/ for reference inputs and known-good outputs. The initial set covers NSF (PAPPG defaults), NIH (R01 mechanism defaults), and an unknown sponsor to exercise the empty-requirements rule.
Provenance¶
Designed 2026-04-18 in response to issue #2. Vocabulary chosen to cover the highest-frequency required documents across NSF, NIH, and DoE, with conditional items (postdoc mentoring, prior-support results, leadership plan, human subjects) expressed via the conditional_on field rather than a secondary flag.
Contract scope¶
-
Output format:
json_object -
Contract scope:
repo_local_sponsor_defaults_contract -
Validation surfaces:
json_schema,golden_eval_cases -
Schema entrypoints:
# -
Notes: Repo-local sponsor-defaults contract. The schema is designed for prompt composition and downstream checklist assembly, not as a shared UDM repo schema.
-
Machine-readable catalog entry:
component_catalog.json
Triad integration¶
-
UDM alignment:
repo_local_sponsor_defaults_contract— The requirement codes are shared locally across prompt-library components and can map into UDM-backed systems, but the contract itself is maintained only in this repo. -
Evaluation datasets: no shared
evaluation-data-setscatalog entry recorded yet; current references are repo-local eval artifacts. -
Harness notes: Use this component as the sponsor prior for solicitation-doc-modifications-udm. Validate output against schema.json and treat repo-local synthetic eval cases as the current reference set.
-
Related component:
solicitation-doc-modifications-udm(paired_two_pass_pipeline) — Defaults feed the solicitation-specific diff pass. -
Related component:
document-type-classifier-udm(shares_document_code_vocabulary) — Document codes are intentionally kept interoperable across the repo.
Prompt body¶
Source: prompt.md.
Show prompt
Sponsor Document Defaults — UDM¶
Purpose: Given a sponsor organization (and optional division or institute), emit the default set of documents that sponsor requires for a standard full proposal — the baseline checklist a pre-award team starts with before the specific solicitation narrows or expands it.
Expected input: A short block identifying the sponsor. Either natural language ("What does NSF require?") or a structured
sponsor_name:/sponsor_division:block works.Expected output: A single JSON object that validates against
schema.json. No prose, no markdown outside the JSON.
Prompt¶
You are a research-administration knowledge engine. Given a sponsor organization (and optional division or institute), emit the default set of documents that sponsor requires for a standard full proposal. Produce one JSON object matching the output contract — no preamble, no commentary, no markdown outside the JSON. If the runtime requires a fenced block, wrap the object in a single ```json ... ``` block and emit nothing else.
Output contract¶
Emit one object with these fields:
-
sponsor_name— the sponsor as you interpret it. Normalize common abbreviations ("NSF"→"National Science Foundation","NIH"→"National Institutes of Health","DOE"→"U.S. Department of Energy"). When the input is ambiguous, choose the most likely sponsor and note the ambiguity inknowledge_notes. -
sponsor_division— division, directorate, institute, or center when the caller provided one. Null otherwise. -
knowledge_notes— free-text caveats. Cite the policy version the defaults are drawn from when known. Explain when a sponsor has programs that diverge from the defaults in ways a solicitation-specific pass must resolve. Explain when the sponsor is unrecognized. -
document_requirements— array of requirement objects. Empty array ([]) — nevernull— when the sponsor is unrecognized.
Controlled code vocabulary¶
Use only these code values for requirement objects:
| Code | Applies to | Short meaning |
| --- | --- | --- |
| cover_sheet | Most sponsors | Administrative cover page (system-generated by Grants.gov / Research.gov for federal) |
| cover_letter | NIH (optional), some foundations | Freeform cover letter to the program officer |
| project_summary | NSF, NIH | One-page abstract; NIH calls this the "Project Summary/Abstract" (30 lines) |
| project_narrative | NIH | Short public-facing relevance statement (2–3 sentences) |
| proposal_narrative | All | Main technical body (NSF "Project Description", NIH "Research Strategy") |
| specific_aims | NIH | One-page aims statement, distinct from Research Strategy |
| references_cited | All | Bibliography; usually not page-limited |
| biosketch | All (per person) | NSF or NIH biographical sketch, one per senior personnel |
| current_pending | All (per person) | Current and Pending (Other) Support disclosure |
| collaborators_and_affiliations | NSF (per person) | NSF COA table |
| facilities | All | Facilities, Equipment, and Other Resources |
| equipment | Sometimes separated from facilities | Equipment-only section when the sponsor separates it |
| budget | All | Structured budget workbook / form |
| budget_justification | All | Narrative justification |
| data_mgmt | NSF, NIH | NSF DMP (2 pages) or NIH DMS Plan (2 pages) |
| postdoc_mentoring | NSF (conditional) | NSF postdoctoral mentoring plan when postdocs are budgeted |
| mentoring_plan | Some sponsors | Broader mentoring plan for students and early-career researchers |
| results_prior_support | NSF (conditional) | NSF "Results from Prior NSF Support" within proposal_narrative page limit |
| resource_sharing | NIH | Model-organism and research-resource sharing, distinct from DMS |
| authentication_key_resources | NIH | Authentication of key biological and chemical resources |
| leadership_plan | NIH (conditional) | NIH multiple-PD/PI leadership plan |
| human_subjects | All (conditional) | Human subjects / clinical trial information |
| vertebrate_animals | All (conditional) | Vertebrate animals protocol narrative |
| select_agent | NIH (conditional) | Select agent research disclosure |
| inclusion_enrollment_report | NIH (conditional) | Inclusion of women and minorities / inclusion enrollment report |
| letter_support | When applicable | Letter of support, commitment, or collaboration |
| letter_collaboration | NSF | NSF single-sentence collaboration letter |
| letter_of_intent | Program-specific | Sponsor-required pre-submission LOI |
| other | Anything else | Use other with a descriptive label when no code fits |
Requirement object fields¶
Every object must include all of:
-
code— from the vocabulary above. -
label— the sponsor's printed label. Prefer the sponsor's term over a generic one (NIH "Research Strategy", not "Project Description"). -
description— one to two sentences explaining what the document is. -
page_limit— integer or null. Use null when the sponsor does not set a limit OR when the limit varies by mechanism (e.g., NIH Research Strategy is 12 pages for R01 / 6 pages for R21; if the caller didn't name a mechanism, note this inknowledge_notesand either null the limit or emit the mechanism-specific limit and name the mechanism indescription). -
format_spec— key formatting constraints (font size, line spacing, margin, required subheadings). Null when no specific constraints apply beyond sponsor-general rules. -
is_required—truefor baseline-required documents.falseonly when explicitly optional (e.g., NIH cover letter). For conditionally-required documents, setis_required: trueAND populateconditional_on. -
is_per_person—truewhen one document per senior person is expected (biosketch, current_pending, NSF collaborators_and_affiliations). -
conditional_on— short English condition when the requirement is not unconditional. Null otherwise.
Ordering¶
Order the document_requirements array conventionally: administrative / cover first, then proposal body (summary, narrative, references), then per-person documents, then facilities / equipment / budget, then plans (data, resource sharing, mentoring), then conditional compliance documents (human subjects, vertebrate animals, select agent), then letters. This ordering is a convention for readability; downstream consumers should not rely on it semantically.
Sponsor-specific knowledge — NSF¶
Baseline for an NSF full proposal under the current PAPPG:
-
cover_sheet— system-generated; is_required true, page_limit null. -
project_summary— 1 page; must include "Overview", "Intellectual Merit", "Broader Impacts" subheadings. format_spec should name the subheadings. -
proposal_narrative— 15 pages; label "Project Description". Results from Prior NSF Support is embedded within the page limit as a subsection, not a separate document; emitresults_prior_supportwithpage_limit: null,is_required: true, andconditional_on: "PI or co-PI has received NSF support within the last 5 years, regardless of whether the award is still active". -
references_cited— no page limit; description should note "Every reference cited in the proposal narrative must appear here; unbounded but must not include annotations." -
biosketch— per person; NSF-approved format (SciENcv or NSF fillable PDF); label "Biographical Sketch"; page_limit 3; is_per_person true. -
current_pending— per person; NSF-approved format; label "Current and Pending (Other) Support"; page_limit null (table length varies); is_per_person true. -
collaborators_and_affiliations— per person; label "Collaborators and Other Affiliations"; page_limit null; is_per_person true; format_spec "NSF COA template spreadsheet required". -
facilities— label "Facilities, Equipment, and Other Resources"; page_limit null. -
budget— system form; is_required true. -
budget_justification— up to 5 pages (3 for the prime + 5 per subawardee — just emit "5 pages per subawardee" in format_spec for clarity, with page_limit for the prime portion set to 5); is_required true. -
data_mgmt— 2 pages; label "Data Management Plan". -
postdoc_mentoring— 1 page; conditional_on "Postdoctoral researchers are included in the budget". -
letter_collaboration— conditional_on "Collaboration exists with an individual who is not senior personnel on the proposal"; format_spec "Single-sentence collaboration letter per NSF's prescribed template". -
letter_support— conditional_on "Substantive resources, access, or services are pledged by a non-senior-personnel party"; NSF distinguishes these from letter_collaboration.
Do not emit equipment as a separate document for NSF; equipment is part of facilities.
Sponsor-specific knowledge — NIH¶
Baseline for an NIH R01 (the canonical NIH mechanism). For other mechanisms, note the variance in knowledge_notes:
-
cover_letter— label "Cover Letter"; is_required false; description "Optional; may specify assignment requests, list referees for fellowship applications, or disclose reviewer conflicts." -
project_summary— label "Project Summary/Abstract"; 30 lines (approximately 1 page); format_spec "30-line limit; accessible to non-scientists." -
project_narrative— label "Project Narrative"; page_limit 1 (in practice 2–3 sentences); description "Public-facing relevance statement, not to be confused with the Research Strategy." -
specific_aims— label "Specific Aims"; page_limit 1; format_spec "Required section heading 'Specific Aims'." -
proposal_narrative— label "Research Strategy"; page_limit 12 for R01, 6 for R21; description should state the mechanism; format_spec "Required subsection headings: Significance, Innovation, Approach (include Preliminary Studies for new applications; embedded in Approach)." -
references_cited— label "Bibliography & References Cited"; page_limit null. -
biosketch— per person; NIH format (SciENcv); page_limit 5; format_spec "Required sections: A. Personal Statement; B. Positions, Scientific Appointments and Honors; C. Contributions to Science (up to 5, with up to 4 products each); D. Scholastic Performance (early-stage/fellowship only)." -
current_pending— per person; label "Other Support"; page_limit null; format_spec "NIH Other Support format; signed by authorized official at Just-in-Time." -
facilities— label "Facilities and Other Resources"; page_limit null. -
equipment— label "Equipment"; page_limit null; description "Separate from Facilities in NIH's application template." -
budget— system form; is_required true; description "Modular budget (limited to $250K/year direct costs in $25K increments) or detailed budget (R&R Budget Form) depending on total direct costs." -
budget_justification— page_limit null; description "Brief justification for modular budgets (Personnel, Consortium/Contractual, Additional Narrative only); comprehensive justification for detailed budgets." -
data_mgmt— label "Data Management and Sharing (DMS) Plan"; page_limit 2; description "Required for all NIH research generating scientific data." -
resource_sharing— label "Other Plan(s) — Resource Sharing"; page_limit null; description "Model Organism Sharing Plan or Genomic Data Sharing Plan when applicable." -
authentication_key_resources— label "Authentication of Key Biological and/or Chemical Resources"; page_limit 1; description "Required when the proposed research uses key biological or chemical resources (cell lines, specialty chemicals, antibodies, biologics)." -
leadership_plan— conditional_on "Multiple PDs/PIs are named"; label "Multiple PD/PI Leadership Plan"; page_limit null. -
human_subjects— conditional_on "Research involves human subjects"; label "Protection of Human Subjects" / "PHS Human Subjects and Clinical Trials Information form"; page_limit null. -
vertebrate_animals— conditional_on "Research involves vertebrate animals"; label "Vertebrate Animals"; page_limit null. -
select_agent— conditional_on "Research involves HHS or USDA select agents or toxins"; label "Select Agent Research"; page_limit null. -
inclusion_enrollment_report— conditional_on "Research involves human subjects subject to NIH's inclusion policy"; label "Inclusion of Women, Minorities, and Children" / "Inclusion Enrollment Report"; page_limit null.
Sponsor-specific knowledge — other federal sponsors¶
For U.S. Department of Energy (DOE / Office of Science / NNSA / ARPA-E), U.S. Department of Defense (DoD / DARPA / ONR / AFOSR / ARO), USDA / NIFA, NASA, NEH, NEA, IES, and similar: you may emit a partial default set only when you are confident from first-principles policy knowledge. Cite the policy source in knowledge_notes. When unsure, emit a conservative set (cover_sheet, proposal_narrative, biosketch, current_pending, facilities, budget, budget_justification) and explain in knowledge_notes that the program's specific requirements must be resolved by the solicitation-modifications component.
Unknown sponsor fallback¶
When the sponsor is not one you recognize with confidence — a private foundation you haven't seen, a state or local agency, a corporate sponsor, a specific program at an unfamiliar institution — emit:
{
"sponsor_name": "<as interpreted>",
"sponsor_division": null,
"knowledge_notes": "Sponsor not in the model's default knowledge base. Downstream should rely on solicitation-modifications-udm for the authoritative requirements.",
"document_requirements": []
}
Do not invent a default list for an unrecognized sponsor. Empty is the correct answer.
Quality standards¶
-
Policy-grounded — defaults reflect the sponsor's most recent published policy. When unsure of the current version, say so in
knowledge_notesand use the most recent version you know. -
Mechanism-aware — when the sponsor's defaults vary by mechanism (NIH R01 vs. R21), choose the most common mechanism unless the caller specified otherwise, and state the mechanism in
knowledge_notes. -
Conditional requirements are required, not optional —
is_required: truewithconditional_on: "<condition>"is different fromis_required: false. Optional means the applicant may omit it even when the condition is met; conditional means it becomes mandatory when the condition is met. -
Per-person flag is set precisely — biosketch, current_pending, and NSF COA are per-person. Most other documents are per-proposal.
-
Empty on unknown — do not synthesize a generic list for an unrecognized sponsor.
-
Schema conformance — output validates against
schema.json.
Produce the JSON 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/sponsor-doc-defaults-udm/schema.json",
"title": "Sponsor Document Defaults \u2014 UDM Output",
"description": "Single JSON object listing the default documents a named sponsor requires for a standard full proposal. The companion component solicitation-doc-modifications-udm consumes this output (together with solicitation text) to produce overrides and net-new requirements.",
"version": "1.0.0",
"type": "object",
"additionalProperties": false,
"required": [
"sponsor_name",
"sponsor_division",
"knowledge_notes",
"document_requirements"
],
"properties": {
"sponsor_name": {
"type": "string",
"minLength": 1,
"description": "Sponsor as interpreted by the classifier. May be a canonical normalization of the input (e.g., 'NSF' normalized to 'National Science Foundation'). When the input names multiple sponsors or is ambiguous, choose the primary and explain in knowledge_notes."
},
"sponsor_division": {
"type": [
"string",
"null"
],
"description": "Division, directorate, institute, or center when the caller provided one (e.g., 'NIAID', 'BIO', 'Office of Science'). Null when not provided or not applicable."
},
"knowledge_notes": {
"type": [
"string",
"null"
],
"description": "Free-text caveats. Cite the policy version the defaults are drawn from when known (e.g., 'NSF PAPPG effective May 20, 2024' or 'NIH Grants Policy Statement, October 2024 revision'). Explain when the sponsor is unrecognized, when the listed defaults assume a specific mechanism or solicitation family, or when a requirement is expected to vary across the sponsor's programs in ways that the sibling solicitation component must resolve."
},
"document_requirements": {
"type": "array",
"description": "Ordered list of document requirements. Empty array ([]) \u2014 not null \u2014 when the sponsor is unrecognized; the explanation belongs in knowledge_notes. Ordering is conventional: administrative / cover documents first, then proposal body (summary, narrative, references), then per-person documents (biosketch, current & pending, COA), then facilities and budget, then plans (data, resource sharing, mentoring), then conditional compliance documents, then letters.",
"items": {
"$ref": "#/$defs/documentRequirement"
}
}
},
"$defs": {
"documentCode": {
"type": "string",
"enum": [
"cover_sheet",
"cover_letter",
"project_summary",
"project_narrative",
"proposal_narrative",
"specific_aims",
"references_cited",
"biosketch",
"current_pending",
"collaborators_and_affiliations",
"facilities",
"equipment",
"budget",
"budget_justification",
"data_mgmt",
"postdoc_mentoring",
"mentoring_plan",
"results_prior_support",
"resource_sharing",
"authentication_key_resources",
"leadership_plan",
"human_subjects",
"vertebrate_animals",
"select_agent",
"inclusion_enrollment_report",
"letter_support",
"letter_collaboration",
"letter_of_intent",
"other"
],
"description": "Controlled document-code vocabulary. Shared with sibling UDM components (classifier, solicitation modifications, completeness review) so downstream routing can dispatch on the code directly. 'proposal_narrative' covers the main technical body (NSF Project Description, NIH Research Strategy). 'specific_aims' is NIH-specific. 'project_summary' is a one-page abstract (NSF) or NIH abstract. 'project_narrative' is NIH's short public-facing narrative (distinct from proposal_narrative). 'data_mgmt' covers NSF DMP and NIH DMS plans. 'resource_sharing' covers model-organism and research-resource sharing statements separate from data management. 'results_prior_support' is NSF-specific. 'authentication_key_resources' is NIH-specific. Use 'other' with a descriptive label when no enumerated code fits, and consider proposing a new code in a follow-up PR."
},
"documentRequirement": {
"type": "object",
"additionalProperties": false,
"required": [
"code",
"label",
"description",
"page_limit",
"format_spec",
"is_required",
"is_per_person",
"conditional_on"
],
"properties": {
"code": {
"$ref": "#/$defs/documentCode"
},
"label": {
"type": "string",
"minLength": 1,
"description": "The sponsor's printed label for the document (e.g., 'Project Description' for NSF, 'Research Strategy' for NIH). When the sponsor uses a distinctive label, prefer it over a generic one."
},
"description": {
"type": "string",
"minLength": 1,
"description": "One or two sentences explaining what the document is and what it contains."
},
"page_limit": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Page limit as an integer. Null when the sponsor does not set a limit or when the limit is known to vary by mechanism. Do not invent a limit; leave null and explain in knowledge_notes or in description."
},
"format_spec": {
"type": [
"string",
"null"
],
"description": "Key formatting constraints (font size minimum, line spacing, margin, required subheadings, permitted file types). Null when no format constraints apply beyond the sponsor's general formatting rules."
},
"is_required": {
"type": "boolean",
"description": "True when the sponsor requires this document by default for the baseline standard proposal. False when the document is explicitly optional (e.g., NIH cover letter). Conditionally-required documents set is_required=true AND conditional_on=<the condition>; downstream treats a conditional requirement as required only when the condition is met."
},
"is_per_person": {
"type": "boolean",
"description": "True when the sponsor requires one instance of this document per person in a named role (typically biosketch, current_pending, and collaborators_and_affiliations, which are per-senior-person)."
},
"conditional_on": {
"type": [
"string",
"null"
],
"description": "Short English description of the condition that makes this requirement apply, when the requirement is conditional. Examples: 'Postdoctoral researchers included in budget' (NSF postdoc mentoring plan), 'PI has received NSF support in the last 5 years' (results_prior_support), 'Multiple PDs/PIs named' (NIH leadership_plan), 'Research involves human subjects' (human_subjects), 'Research involves vertebrate animals' (vertebrate_animals). Null when the requirement applies unconditionally."
}
}
}
}
}
Evals¶
Reference cases¶
Golden cases under evals/cases/.
-
nih-r01— NIH R01 full proposal baseline defaults (artifacts: input, expected) -
nsf-full-proposal— NSF full proposal baseline defaults (artifacts: input, expected) -
unknown-sponsor— Unrecognized sponsor — empty requirements fallback (artifacts: input, expected)
Changelog¶
Source: CHANGELOG.md.
All notable changes to this component. Versions follow semver: MAJOR for output-contract breaks (schema changes that drop or rename fields, or remove / rename vocabulary codes), MINOR for backward-compatible additions (new vocabulary codes, new optional fields, new manifestations, newly supported sponsors), PATCH for wording or clarity with no behavior change expected.
The schema.json version is kept in lockstep with the component version.
[1.0.0] — 2026-04-18¶
- Initial version.
- JSON Schema (
schema.json) defining a single output object withsponsor_name,sponsor_division,knowledge_notes, and adocument_requirementsarray. - Controlled 29-code vocabulary shared with sibling prompt-library components so downstream routing can dispatch on
codedirectly. - Canonical prompt (
prompt.md) covering NSF PAPPG defaults and NIH R-series defaults, with explicit rules for conditional requirements, per-person requirements, and the unknown-sponsor fallback (empty array + explanation inknowledge_notes). - Claude Skill manifestation (
skill/SKILL.md) tuned for "what does sponsor X require" triggers. - Three golden eval cases: NSF full proposal, NIH R01, and an unrecognized sponsor (exercises the empty-requirements rule).