Grant Reporting — Post-Award Deliverables Across Funder Formats
Post-award is where money already won has to be kept: funders release the next
tranche only when a compliant progress report lands on time, and they claw back
or flag awards when reports slip or numbers don't reconcile. This skill drafts
those deliverables — progress/annual reports, final reports, milestone and
deliverable tracking, budget-vs-actual narratives, and no-cost-extension (NCE)
and rebudgeting justifications — in the exact shape each major funder demands.
It is the post-award counterpart to the pre-award proposal skills: it never
writes a new proposal or a fresh budget request. It reports against an award
that already exists.
When to Use This Skill
Use this skill when the user needs to:
- Draft an NIH RPPR (Research Performance Progress Report) — Annual, Interim,
or Final — section by section.
- Draft an NSF annual or final project report, or the public-audience
Project Outcomes Report.
- Draft a Horizon Europe / ERC periodic or final report — the technical
narrative (Part B) and the structured-table / financial-statement framing.
- Track milestones and deliverables against a workplan and write the status
narrative.
- Write a budget-vs-actual (variance) narrative explaining over/under-spend
by category.
- Justify a no-cost extension or a rebudgeting / virement request.
- Work out when each report is due from the award start/end dates
(
scripts/report_deadlines.py).
Does NOT Trigger — route these elsewhere
| The request is really about… |
Route to |
| Writing a new proposal / project description for NSF, NIH, DOE, DARPA, NSTC (pre-award) |
alterlab-research-grants |
| A TÜBİTAK proposal (1001, 1002, etc.) — Turkish funder, pre-award |
alterlab-tubitak-proposal |
| Akademik Teşvik annual incentive-points application (ÜAK) |
alterlab-akademik-tesvik |
| A data management plan / KVKK-compliant DMP for the proposal stage |
alterlab-kvkk-dmp |
| A recommendation / reference letter for a student or colleague |
alterlab-recommendation-letters |
| Program / department accreditation assessment & assurance-of-learning reports |
alterlab-accreditation-aol |
| Verifying that the citations in the report actually exist |
alterlab-citation-verifier |
This skill assumes the award is already made. If the user is still competing for
funding, stop and route to the pre-award skill above.
The funder formats (verified)
Each funder fixes the structure; do not invent sections. Deep per-funder detail —
every section, what goes in it, and which sections apply to which report type —
lives in references/funder_formats.md. The
essentials:
NIH — RPPR (submitted in eRA Commons)
Three report types share one section skeleton (A–I):
| § |
Title |
Note |
| A |
Cover Page |
|
| B |
Accomplishments |
goals, what was done, results, dissemination |
| C |
Products |
publications, datasets, software, IP |
| D |
Participants |
personnel + effort; D.1 is the only Section D item required on Interim/Final |
| E |
Impact |
impact on the field, other disciplines, society |
| F |
Changes |
changes/problems; rebudgeting & scope changes surface here |
| G |
Special Reporting Requirements |
|
| H |
Budget |
Annual (non-SNAP) only — not on Interim/Final |
| I |
Outcomes |
required on Interim & Final, public-facing |
Report types: Annual (next budget period), Interim (filed with a competing
renewal — becomes the Final report if the renewal is not funded), Final
(closeout). See the references file before drafting.
NSF — project reports (submitted in Research.gov)
- Annual project report — that year's activities and broader impacts.
- Final project report — refers only to the final funded year (it is not
cumulative).
- Project Outcomes Report (POR) — a public-audience summary of no more than
800 words, separate from the final report.
Horizon Europe / ERC — periodic & final reports (EU Funding & Tenders Portal)
- A Technical Report in two parts: Part A (structured tables, generated by
the Portal from the Continuous Reporting module) and Part B (the narrative,
mirroring the application form and reporting differences/deviations).
- A Financial Report: individual and consolidated Financial Statements
(plus a Certificate on the Financial Statements where the threshold applies).
- A Continuous Reporting module that stays open for the whole project and
feeds Part A automatically.
Deadlines — compute them, don't guess
Reporting deadlines are deterministic functions of the award dates, and missing
one can suspend payments. Use the helper instead of recalling rules from memory:
uv run python skills/faculty-life/alterlab-grant-reporting/scripts/report_deadlines.py \
--funder nih-snap --budget-period-start 2026-09-01 --project-end 2028-08-31
It encodes only the verified rules (sourced in references/funder_formats.md):
- NIH SNAP Annual RPPR ≈ 45 days before the next budget period start;
non-SNAP ≈ 60 days before; Final RPPR within 120 days of the
period-of-performance end.
- NSF annual report 90 days before the budget-period end; final report and
Project Outcomes Report within 120 days after the award end date.
- Horizon Europe / ERC periodic (and final) report within 60 days after
each reporting period ends.
The script prints the computed due dates as a table or JSON; it does no network
I/O and always tells the user to confirm against the funder's own notice of
award, because programs can override these defaults.
How to draft a report
- Identify the funder and report type first — that fixes the template. If the
user hasn't said, ask (NIH vs NSF vs EU; Annual vs Final).
- Pull the deadline with
report_deadlines.py from the award dates and lead
with it, so the user knows the time pressure.
- Gather the inputs the sections need: aims/objectives and milestones,
what was accomplished this period, products (publications, data, software),
personnel and effort, and the budget figures (planned vs actual).
- Draft section by section in the funder's own order and headings. Never
merge or rename funder sections. For each accomplishment, tie it back to a
stated aim or deliverable.
- Write the variance narrative for any budget category off plan: state the
planned vs actual amount, the reason, and the corrective action or the
rebudgeting/NCE request it motivates. Detail and templates:
references/budget_variance.md.
- For an NCE or rebudgeting request, use the justification structure in
references/nce_rebudget.md: unspent-funds
status, the programmatic reason, the revised timeline, and the explicit
confirmation that no new scope or new funds are requested.
- Flag, never fabricate. Where a number, a publication, or an outcome is
missing, mark it
[TODO: confirm] for the user — do not invent figures,
dates, DOIs, or results. If citations are involved, hand the reference list to
alterlab-citation-verifier.
Guardrails
- No invented facts. Budget figures, effort percentages, milestone dates,
publication details, and award numbers come only from the user's materials. Mark
anything missing as a
[TODO] placeholder.
- The user submits, not the skill. This skill drafts text; the user files it
through eRA Commons / Research.gov / the EU Funding & Tenders Portal. The skill
has no portal access and claims none.
- Confirm deadlines against the notice of award. The calculator encodes the
general rules; specific programs and cooperative agreements can override them.
- Reporting period boundaries matter. An NSF final report covers only the
final funded year; an NIH Final RPPR adds Section I Outcomes. Don't carry the
wrong scope across report types.
References
references/funder_formats.md — full NIH RPPR
A–I section guide (with which sections apply to Annual/Interim/Final), NSF
report types, and Horizon Europe / ERC report structure, each with its source.
references/budget_variance.md — budget-vs-actual
narrative template, variance categories, and worked examples.
references/nce_rebudget.md — no-cost-extension and
rebudgeting/virement justification structures and the questions each funder asks.
scripts/report_deadlines.py — stdlib-only report-deadline calculator.
Part of the AlterLab Academic Skills suite.
1---2name: alterlab-grant-reporting3description: Drafts post-award grant deliverables across funder formats — NIH RPPR (Annual/Interim/Final via eRA Commons), NSF annual/final project reports and the public Project Outcomes Report (Research.gov), and Horizon Europe / ERC periodic and final reports (technical Part A/B + financial statements on the EU Funding & Tenders Portal) — plus milestone and deliverable tracking, budget-vs-actual variance narratives, no-cost-extension and rebudgeting justifications, and effort/closeout reporting. Computes report due dates from the award period with scripts/report_deadlines.py. Use when the user needs a grant progress or final report, post-award reporting, an RPPR, a periodic report, a no-cost-extension request, milestone tracking, or a budget-variance narrative. For writing new proposals prefer alterlab-research-grants; for TÜBİTAK proposals prefer alterlab-tubitak-proposal. Part of the AlterLab Academic Skills suite.4license: MIT5---67# Grant Reporting — Post-Award Deliverables Across Funder Formats89Post-award is where money already won has to be *kept*: funders release the next10tranche only when a compliant progress report lands on time, and they claw back11or flag awards when reports slip or numbers don't reconcile. This skill drafts12those deliverables — progress/annual reports, final reports, milestone and13deliverable tracking, budget-vs-actual narratives, and no-cost-extension (NCE)14and rebudgeting justifications — in the exact shape each major funder demands.1516It is the **post-award** counterpart to the pre-award proposal skills: it never17writes a new proposal or a fresh budget request. It reports against an award18that already exists.1920## When to Use This Skill2122Use this skill when the user needs to:2324- Draft an **NIH RPPR** (Research Performance Progress Report) — Annual, Interim,25 or Final — section by section.26- Draft an **NSF annual or final project report**, or the public-audience27 **Project Outcomes Report**.28- Draft a **Horizon Europe / ERC periodic or final report** — the technical29 narrative (Part B) and the structured-table / financial-statement framing.30- Track **milestones and deliverables** against a workplan and write the status31 narrative.32- Write a **budget-vs-actual (variance) narrative** explaining over/under-spend33 by category.34- Justify a **no-cost extension** or a **rebudgeting / virement** request.35- Work out **when** each report is due from the award start/end dates36 (`scripts/report_deadlines.py`).3738### Does NOT Trigger — route these elsewhere3940| The request is really about… | Route to |41|------------------------------|----------|42| Writing a **new** proposal / project description for NSF, NIH, DOE, DARPA, NSTC (pre-award) | `alterlab-research-grants` |43| A **TÜBİTAK** proposal (1001, 1002, etc.) — Turkish funder, pre-award | `alterlab-tubitak-proposal` |44| **Akademik Teşvik** annual incentive-points application (ÜAK) | `alterlab-akademik-tesvik` |45| A **data management plan** / KVKK-compliant DMP for the proposal stage | `alterlab-kvkk-dmp` |46| A **recommendation / reference letter** for a student or colleague | `alterlab-recommendation-letters` |47| Program / department **accreditation** assessment & assurance-of-learning reports | `alterlab-accreditation-aol` |48| Verifying that the **citations** in the report actually exist | `alterlab-citation-verifier` |4950This skill assumes the award is already made. If the user is still competing for51funding, stop and route to the pre-award skill above.5253## The funder formats (verified)5455Each funder fixes the structure; do not invent sections. Deep per-funder detail —56every section, what goes in it, and which sections apply to which report type —57lives in [`references/funder_formats.md`](references/funder_formats.md). The58essentials:5960### NIH — RPPR (submitted in eRA Commons)6162Three report types share one section skeleton (**A–I**):6364| § | Title | Note |65|---|-------|------|66| A | Cover Page | |67| B | Accomplishments | goals, what was done, results, dissemination |68| C | Products | publications, datasets, software, IP |69| D | Participants | personnel + effort; **D.1 is the only Section D item required on Interim/Final** |70| E | Impact | impact on the field, other disciplines, society |71| F | Changes | changes/problems; rebudgeting & scope changes surface here |72| G | Special Reporting Requirements | |73| H | Budget | **Annual (non-SNAP) only** — not on Interim/Final |74| I | Outcomes | **required on Interim & Final**, public-facing |7576Report types: **Annual** (next budget period), **Interim** (filed with a competing77renewal — becomes the Final report if the renewal is not funded), **Final**78(closeout). See the references file before drafting.7980### NSF — project reports (submitted in Research.gov)8182- **Annual project report** — that year's activities and broader impacts.83- **Final project report** — refers only to the final funded year (it is *not*84 cumulative).85- **Project Outcomes Report (POR)** — a public-audience summary of **no more than86 800 words**, separate from the final report.8788### Horizon Europe / ERC — periodic & final reports (EU Funding & Tenders Portal)8990- A **Technical Report** in two parts: **Part A** (structured tables, generated by91 the Portal from the Continuous Reporting module) and **Part B** (the narrative,92 mirroring the application form and reporting differences/deviations).93- A **Financial Report**: individual and consolidated **Financial Statements**94 (plus a Certificate on the Financial Statements where the threshold applies).95- A **Continuous Reporting** module that stays open for the whole project and96 feeds Part A automatically.9798## Deadlines — compute them, don't guess99100Reporting deadlines are deterministic functions of the award dates, and missing101one can suspend payments. Use the helper instead of recalling rules from memory:102103```bash104uv run python skills/faculty-life/alterlab-grant-reporting/scripts/report_deadlines.py \105 --funder nih-snap --budget-period-start 2026-09-01 --project-end 2028-08-31106```107108It encodes only the verified rules (sourced in `references/funder_formats.md`):109110- **NIH SNAP** Annual RPPR ≈ **45 days before** the next budget period start;111 **non-SNAP** ≈ **60 days before**; **Final RPPR** within **120 days** of the112 period-of-performance end.113- **NSF** annual report **90 days before** the budget-period end; final report and114 Project Outcomes Report within **120 days** after the award end date.115- **Horizon Europe / ERC** periodic (and final) report within **60 days** after116 each reporting period ends.117118The script prints the computed due dates as a table or JSON; it does no network119I/O and always tells the user to confirm against the funder's own notice of120award, because programs can override these defaults.121122## How to draft a report1231241. **Identify the funder and report type** first — that fixes the template. If the125 user hasn't said, ask (NIH vs NSF vs EU; Annual vs Final).1262. **Pull the deadline** with `report_deadlines.py` from the award dates and lead127 with it, so the user knows the time pressure.1283. **Gather the inputs** the sections need: aims/objectives and milestones,129 what was accomplished this period, products (publications, data, software),130 personnel and effort, and the budget figures (planned vs actual).1314. **Draft section by section** in the funder's own order and headings. Never132 merge or rename funder sections. For each accomplishment, tie it back to a133 stated aim or deliverable.1345. **Write the variance narrative** for any budget category off plan: state the135 planned vs actual amount, the *reason*, and the corrective action or the136 rebudgeting/NCE request it motivates. Detail and templates:137 [`references/budget_variance.md`](references/budget_variance.md).1386. **For an NCE or rebudgeting request**, use the justification structure in139 [`references/nce_rebudget.md`](references/nce_rebudget.md): unspent-funds140 status, the programmatic reason, the revised timeline, and the explicit141 confirmation that no new scope or new funds are requested.1427. **Flag, never fabricate.** Where a number, a publication, or an outcome is143 missing, mark it `[TODO: confirm]` for the user — do not invent figures,144 dates, DOIs, or results. If citations are involved, hand the reference list to145 `alterlab-citation-verifier`.146147## Guardrails148149- **No invented facts.** Budget figures, effort percentages, milestone dates,150 publication details, and award numbers come only from the user's materials. Mark151 anything missing as a `[TODO]` placeholder.152- **The user submits, not the skill.** This skill drafts text; the user files it153 through eRA Commons / Research.gov / the EU Funding & Tenders Portal. The skill154 has no portal access and claims none.155- **Confirm deadlines against the notice of award.** The calculator encodes the156 general rules; specific programs and cooperative agreements can override them.157- **Reporting period boundaries matter.** An NSF final report covers only the158 final funded year; an NIH Final RPPR adds Section I Outcomes. Don't carry the159 wrong scope across report types.160161## References162163- [`references/funder_formats.md`](references/funder_formats.md) — full NIH RPPR164 A–I section guide (with which sections apply to Annual/Interim/Final), NSF165 report types, and Horizon Europe / ERC report structure, each with its source.166- [`references/budget_variance.md`](references/budget_variance.md) — budget-vs-actual167 narrative template, variance categories, and worked examples.168- [`references/nce_rebudget.md`](references/nce_rebudget.md) — no-cost-extension and169 rebudgeting/virement justification structures and the questions each funder asks.170- `scripts/report_deadlines.py` — stdlib-only report-deadline calculator.171172Part of the AlterLab Academic Skills suite.