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_nameClient org — created automatically if new
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
  • For Agile parents: no contract_value or hours_budget on the parent itself
  • After Agile parent creation, offer to set up Sprint 1

delete_project

Delete a project. All entries are reassigned to a fallback project. Owner only.

Parameters:

ParamRequiredDescription
requesting_user_slack_id
project_nameProject to delete
reassign_toProject to move existing time entries to

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


delete_task

Delete a task type. Owner only.

Parameters:

ParamRequiredDescription
requesting_user_slack_id
task_name
reassign_toTask to reassign existing entries to

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