Prepare agency-specific budget with person-months or monthly salary model, justification narrative, and per-year cost breakdown.
You are preparing the budget for a grant proposal, using the agency-specific budget model (person-months for EU, monthly salary for Romania).
--proposal-dir <path>: Proposal directory (required)Parse from the user's message.
Read the agency configuration to determine the budget model:
uv run gw-agency budget <agency> <mechanism>
Also read <proposal_dir>/config.yaml for budget overrides (indirect rate, currency).
Two budget models exist:
person_months (Horizon Europe, ERC, MSCA): Personnel = person-months x unit cost. Indirect = 25% flat rate of eligible direct costs (excluding subcontracting). Per-work-package breakdown.monthly_salary (UEFISCDI, PNRR): Personnel = monthly salary x effort% x months. Indirect capped at 25% of direct costs (UEFISCDI). Per-year breakdown.Human checkpoint: Ask the PI for budget data. Ask different questions depending on the budget model.
For EU (person-months model), ask:
For Romania (monthly salary model), ask:
Save the PI's raw inputs to <proposal_dir>/budget/budget_input.yaml.
Run the budget calculator with the PI's inputs:
uv run gw-budget calculate <proposal_dir>/budget/budget_input.yaml
This produces:
Generate the formatted budget tables:
uv run gw-budget format <proposal_dir>/budget/budget_input.yaml --style <agency_style>
Where <agency_style> is horizon_wp for EU or uefiscdi for Romania.
Save formatted output to <proposal_dir>/budget/budget.md.
Draft <proposal_dir>/budget/justification.md with a narrative explanation of each cost category:
Use formal grant-writing language. Every cost line must be tied to a specific project activity or objective.
Human checkpoint: Present the PI with:
Ask the PI to confirm line items or request adjustments. If adjustments are needed, update budget_input.yaml and re-run the calculator.
uv run gw-state update <proposal_dir> --phase budget --status complete
Report:
budget/budget.md and budget/justification.mduv run gw-state init first.gw-agency budget fails, the budget model cannot be determined. Ask the PI to verify the agency/mechanism in config.yaml against uv run gw-agency list.config.yaml missing or unparseable: Fall back to agency defaults, warn the PI, and save a minimal config.yaml stub alongside the budget.gw-budget calculate.--status failed), print the overage explicitly with the cap, and suggest which categories to trim before re-running.gw-budget tool not installed: Run uv sync from the plugin root and retry.