Skip to content

Project Tools


create_project

Create a new project. Owner only.

Writes to: 02. Projects

Parameters:

ParamRequiredDescription
requesting_user_slack_id
project_nameUnique project name
project_type"Retainer" | "T&M" | "Fixed Price" | "Pro Bono" | "Agile" | "Internal" — never defaulted
client_nameCond.Client org — created automatically if new. Omit for Internal projects — VERA assigns the implicit "Internal" client automatically
contract_valueCond.Required for Fixed Price
hours_budgetCond.Required for Retainer (annual hours). Optional for others.
billing_rateHourly rate billed to client
deadlineYYYY-MM-DD
notes
project_categoryDefaults to "client"

Rules:

  • Never assume a default project type — always ask
  • client_name is not required for Internal projects — the Internal client is implicit
  • For Agile parents: no contract_value or hours_budget on the parent itself
  • After Agile parent creation, offer to set up Sprint 1
  • "Create a retainer" means create_project with project_type="Retainer" — this tool creates the parent engagement. The first period child is auto-created by create_project. Use create_retainer_period only when adding a new period to an existing retainer parent (e.g. "create the June period for Acme Retainer").


rename_project

Rename a project and update all references. Owner only.

Updates: 02. Projects, 01. Time Entries

Parameters:

ParamRequiredDescription
requesting_user_slack_id
old_name
new_name

list_projects

List all projects (filtered by role).

Reads from: 02. Projects, 04. Clients, 03. Users

Returns: name, client, type, pm_name, status, deadline (Owner/Manager only)


get_project_info

Full project details. Always call this first when checking project status — it tells you the type, which determines whether to follow up with get_project_status or get_retainer_status.

Reads from: 02. Projects, 04. Clients, 03. Users

Returns: name, client, type, budget_hours, status, pm_name, deadline (Owner/Manager), contract_value (Owner), billing_rate (Owner)


get_project_status

Task-level budget status for non-retainer projects.

Reads from: 01. Time Entries, 06. Project_Tasks, 02. Projects

Returns per task: hours_logged, budget_hours, % used, alert status, committed hours (logged + allocated)

Do not use for retainers — use get_retainer_status instead.


get_project_health

Burn rate health for retainer projects, with envelope-aware forecast.

Reads from: 01. Time Entries, 02. Projects, 07. Budgets

Returns: hours_logged, days_elapsed, pace_per_day, projected_eom_hours, allocated_remaining, forecast_with_allocations, variance, utilisation%, status

Status values: critical_overpace, warning_overpace, on_track, warning_underpace, critical_underpace


get_my_projects

Projects where the requesting user is the PM (or all projects if Owner).

Parameters: requesting_user_slack_id


set_project_budget

Set the project-level hours budget (Tier 1). Owner only.

Updates: 02. Projects col D

Parameters:

ParamRequiredDescription
requesting_user_slack_id
project_name
budget_hoursTotal hours cap

set_project_deadline

Set the project delivery date. Owner only.

Updates: 02. Projects col I

Parameters:

ParamRequiredDescription
requesting_user_slack_id
project_name
deadlineYYYY-MM-DD

list_tasks

All task types with billability flag.

Reads from: 05. Tasks


create_task

Create a new global task type. Owner only.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, task_name, is_billable (true/false)


rename_task

Rename a task type globally. Owner only.

Updates: 05. Tasks

Parameters: requesting_user_slack_id, old_name, new_name


archive_task

Archive a task type so it no longer appears in menus or as a write target. Owner only. Historical time entries are preserved. Use unarchive_task to restore.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, task_name

Hard fails (409) if the task is enabled on any active project — disable it from those projects first.

Returns: task_id, task_name


unarchive_task

Restore an archived task so it appears in menus again. Owner only.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, task_name

Returns: task_id, task_name


get_project_tasks

All enabled tasks for a project, with budget and hours logged.

Reads from: 06. Project_Tasks, 05. Tasks, 01. Time Entries

Returns per task: task_name, is_billable, budget_hours, alert_threshold, hours_logged, % used, budget_summary

budget_summary includes:

  • tasks_without_budget: count of enabled tasks with no budget set
  • over_project_budget: whether task totals exceed the project budget
  • unallocated_hours: project budget minus sum of task budgets

enable_task_for_project

Enable a task on a project with optional budget. Owner or project PM.

Writes to: 06. Project_Tasks

Parameters:

ParamRequiredDescription
requesting_user_slack_id
project_name
task_name
budget_hoursOptional hours budget for this task
alert_thresholdPercent — defaults to 80

disable_task_for_project

Disable a task on a project (deletes the row from 06. Project_Tasks). Owner or project PM.

Parameters: requesting_user_slack_id, project_name, task_name


get_retainer_status

Monthly burn rate for a retainer project. See Retainers for interpretation guide.

Reads from: 01. Time Entries, 02. Projects, 07. Budgets

Parameters: requesting_user_slack_id, project_name

Returns: budget_hours, hours_logged, hours_remaining, days_elapsed, days_remaining, pace_per_day, projected_eom_hours, allocated_remaining, forecast_with_allocations, variance, utilisation_percent, exceed_date, unused_hours, unused_value, status


get_pm_retainer_summary

All retainer projects assigned to a PM, with burn status for each. Manager/Owner.


create_sprint

Create a new sprint under an Agile parent. Owner only.

Writes to: 02. Projects

Parameters:

ParamRequiredDescription
requesting_user_slack_id
parent_project_nameThe Agile parent project
contract_valueMust be asked explicitly — never derived
hours_budgetSprint hours estimate

Sprint number is auto-incremented — do not specify manually.


get_agile_summary

All sprints under an Agile project with revenue recognition.

Reads from: 02. Projects, 01. Time Entries

Returns per sprint: sprint_name, sprint_number, status, contract_value (Owner), hours_budget, hours_logged, recognised_revenue (Owner)


update_sprint_status

Transition a sprint from planned to active. Owner only. No confirmation prompt needed.

Updates: 02. Projects col L

Parameters: requesting_user_slack_id, sprint_id, new_status ("active")

VERA by talktalkmake