Projects module

The Projects module is the work-tracking surface — projects, sprints, tasks, time entries, and team allocation. Like every module in CCD-Suite, project entities are first-class knowledge graph nodes that show up alongside CRM, Content, and Finance in the agent's context.

Entities

EntityWhat it represents
ProjectA unit of work. Has status, owner, start/end dates, budget, linked CRM deal (optional).
SprintA bounded iteration inside a project. Has goal, capacity points, start/end, status (planning / active / completed).
TaskA work item. Belongs to a project; optionally assigned to a sprint, owner, story points.
SubtaskSmaller task inside a parent. Same shape, parent_task_id pointer.
Time entryHours logged against a task or project. User + duration + optional billable flag.

All five entity types are stored as graph nodes with dedicated backing tables; the trigger layer mirrors writes into the knowledge graph so semantic search treats them uniformly with non-project entities.

The board view

The default project page is a kanban board keyed on task status (To do · In progress · Review · Done). Cards show:

  • Assignee avatar — who's on it.
  • Story points chip — for sprint capacity tracking.
  • Stuck indicator — small chip if the task hasn't moved in 7+ days during an active sprint.
  • Linked deal/contact — when the task was generated from a CRM event, the source citation is on the card.

Drag to advance. Click for detail with the activity feed + subtask list.

Sprint lifecycle

Sprints have three states with lifecycle events that webhook subscribers can react to:

TransitionEvent emitted
planning → activeprojects.sprint.started
active → completedprojects.sprint.completed

The emission is gated by a compare-and-set on the prior status so two concurrent transitions can't both fire the same event — useful when the same sprint is being driven by both a user and an automation.

Cross-module insights

  • Projects × CRM: every deal can pin a project so the delivery-side timeline lives next to the sale.
  • Projects × Finance: time entries flagged billable roll up into invoice line items; the "Time → invoice" surface in Finance consumes them.
  • Projects × HR: workload-per-person card cross-references assignee + currently-active sprint tasks against contracted hours from HR.
  • Projects × Today: stuck-task and overdue-deliverable cards surface to the user without needing to open the board.

Time tracking

Two ways to log time:

  1. Timer — start/stop on a task card; persists across reloads.
  2. Bulk entry — week view at /projects/[id]/time for filling timesheets at end-of-week.

Time entries can be flagged billable=true with an optional hourly rate; the Finance module's invoice generator surfaces them as draft line items when the contact has an open project.

Importing data

CSV import on Settings → Import or the bulk REST endpoint at the bulk import endpoint at POST /v1/import on api-gateway. Supported source formats: Asana, Jira CSV export, Trello board JSON. Per-source mappings are documented in the migration playbooks.

Permissions

Project membership is per-project: owner, manager, member, viewer. Set on Settings → Project → Members. Without an explicit membership row, a user sees the project only if their tenant role already grants module-wide access (admin/owner/project_manager).

Self-host single-tenant installs default every member to manager — see Security model.

Read next

  • CRM module — the deal that often spawns a project.
  • Finance module — where billable time becomes invoice line items.