Callvu Implementation Console — User Guide ← Back to console

User Guide

The CCL Implementation Console turns a filled task spreadsheet into a fully structured Monday board — typed columns, linked dependencies, a business-day schedule with critical path — and opens the Jira tickets that belong in Jira. It then keeps a defined set of Jira fields flowing back into Monday on demand. This guide covers every use case, every feature, how it works under the hood, the gotchas, and a full worked example.

Guiding principle: humans govern, deterministic systems execute. You fill the sheet and click the buttons; the console does the mechanical work exactly the same way every time. There is no AI in the run path — nothing is guessed.
Contents
  1. Getting started
  2. The task sheet (data contract)
  3. Prepare a rough sheet (optional)
  4. Use case: create a new board (Build)
  5. Use case: manage an existing board (Re-run & Sync)
  6. All features
  7. How it works under the hood
  8. How syncing works (both directions)
  9. A full worked example
  10. Gotchas
  11. Troubleshooting errors

1 · Getting started

Open the console and enter the access secret. That is the only credential you need — you do not need a Monday, Jira, or Vercel account. The secret unlocks the console; everything the console does uses shared service accounts behind the scenes.

The console has two jobs, shown as two cards:

Before your first build, grab the blank sheet:

Download the blank task template ↓

The template has two tabs: Tasks (where you work) and Legend (the allowed values, for reference). The console only reads Tasks.

The finite-value columns — Group (Block), Type, Side, Tool of Record, Scope, and Status — have built-in Excel drop-downs: just pick a value and Excel blocks anything else. Owner Role is free text so you can pick more than one role (comma-separated) — its cell note lists the allowed values.

Starting from an existing plan? Don't fill the template by hand — use Prepare a rough sheet to convert a loose sheet (a Monday export, an old project plan) into a template-formatted copy plus a fix-list. See section 3.

2 · The task sheet (data contract)

Parsing is header-based: columns are matched by name, so order does not matter and extra columns are ignored. Every row is one task and must have a Task ID. There are no section-header rows.

The sheet has 13 required columns:

ColumnRequired?What it is
Group (Block)yesWhich block the task belongs to (routes it into a Monday group). Use the code or the block title.
NameyesThe task name. Becomes the Monday item name and the Jira ticket Summary.
DescriptionnoFree text. Becomes the Jira Description.
Task IDyesThe join key. Unique, never reused, never renumbered. Ties the sheet, Monday item, dependencies, and Jira ticket together.
Typeyesgate, sign off, or task. gate and sign off are milestones (Duration must be 0).
Owner RolenoWho owns it. One or more roles, comma-separated.
SidenoCallvu, customer, or joint.
Tool of RecordnoMonday or Jira (Monday is the default). Jira triggers ticket creation — see Choosing Tool of Record.
Scopenoonce, per use case, or variable.
Depends OnnoComma-separated Task IDs this task depends on. Drives the dependency links and schedule.
Statusnonot started or done (blank = not started).
Durationyes*Business days. Milestones are 0. The only schedule input from the sheet.
NotesnoFree text, carried onto the board.

*Duration may be blank for a milestone (treated as 0); for real tasks give a whole number of business days.

There are no Start Date or Due Date columns. You never author dates — the console computes the whole timeline from the kickoff date + durations + dependencies.

Allowed values (controlled vocabularies)

These columns only accept exact values. Anything else fails loudly at upload.

ColumnAllowed values
Typegate, sign off, task
SideCallvu, customer, joint
Tool of RecordMonday, Jira
Scopeonce, per use case, variable
Statusnot started, done
Owner RoleAE, Callvu Dev, Callvu-Exec, Customer-Business, Customer-Compliance, Customer-CX/Ops, Customer-Exec, Customer-PM, Customer-Tech, Implementation Lead, Post-Sales SE, Owner per upstream block
Owner Role delimiter rule: separate multiple roles with a comma only. A slash is a literal character inside a label — Customer-CX/Ops is one role. So Customer-CX/Ops, Customer-Tech is two roles. Old slash shorthand like Compliance/Business/Tech is not accepted.

Group (Block) values

Use the code (recommended) or the exact block title — both resolve to the same block. Casing and punctuation are forgiving.

CodeBlock title
B1Block 1 · Implementation Scoping
B2Block 2 · Technical & Compliance
B3Block 3 · Provisioning & Foundations
B4Block 4 · Integration & Wiring
B5aBlock 5a · Workflow Build
B5bBlock 5b · UI Build
B6Block 6 · Validation
B6.5Block 6.5 · Remediation
B7Block 7 · UAT & Go Live
Merged block labels are rejected. A value spanning two blocks (e.g. 5a&5b or 6 & 6.5) cannot resolve to one group and fails loudly. Pick the specific code for each task.

Choosing Tool of Record — Monday or Jira

On the implementation sheet, Tool of Record has exactly two values: Monday or Jira. It records where the truth of the task lives — not who works on it — and it is the deterministic switch that decides whether the console opens a Jira ticket.

Apply one question to every task: is this task cut as a dev ticket — engineering work a developer picks up and completes in the dev workflow?

AnswerTool of RecordMeaning & what the console does
YesJiraThe authoritative record is a Jira ticket the developer owns. Triggers automatic ticket creation in the CCL project under the customer's component; Sync later pulls that ticket's dev status / delay reason / comments back onto the board.
NoMonday defaultImplementation project work — scoping, compliance, provisioning, config, validation, gates, sign-offs, UAT, go-live. Its truth is the Monday project plan; the board row is the record. No ticket.

Monday is the default. Everything is Monday unless it is dev-ticketed — no task is left unclassified.

Examples: “Build the payment micro-app workflow” → Jira (a dev builds it). “Confirm compliance sign-off on data handling” → Monday (a project gate, not a dev ticket). “Kickoff scoping call” → Monday. “Provision the customer tenant” → Monday, unless the dev team specifically tracks it as a Jira ticket — then Jira.

Tool of Record is where the truth lives — not who does the work. A task owned by Callvu Dev can still be Tool of Record = Monday if it is tracked as project work rather than cut as a ticket. Owner Role says who; Tool of Record says where. Only Tool of Record = Jira creates a ticket.
What about PPR? PPR is the cross-engagement status lens for seeing where things stand across all customers — it reads from Monday and Jira and is not the record for any task on the implementation sheet. So it is not a Tool of Record value, and the sheet rejects it. (PPR is a later, separate read-only integration.)

3 · Prepare a rough sheet (optional)

Already have a project plan — a Monday export, an old spreadsheet, a loosely-filled sheet? Prepare converts it into a template-formatted copy, best-effort, and hands you a checklist of what to fix by hand. It only converts a file — nothing is created in Monday or Jira.

  1. On the console, under Prepare a rough sheet, choose your .xlsx and click Prepare.
  2. You get a Download normalized template button and a punch-list of what to confirm or fill.
  3. Open the downloaded sheet, fix the flagged items (using the drop-downs), then use Build below.

What it fills for you, best-effort:

ColumnHow it's inferred
Task IDAuto-assigned T1, T2, … — permanent join keys, so confirm them.
DurationComputed in business days from the source Start / End dates.
StatusDone → done; anything else → not started.
Owner RoleMatched from the Callvu team roster (e.g. Daniel Kaplan → Implementation Lead, named devs → Callvu Dev). The original person is kept in Notes.
SideDeduced from Owner Role — Callvu-side roles → Callvu, Customer-* → customer, a mix → joint.
Group (Block)Inferred from the section title and task wording; go-live tasks (UAT, Go Live, cutover) are forced to B7.
TypeZero-length items → gate; sign-off / authorization names → sign off; else task.
Tool of RecordMonday by default; build / integration / dev tasks → Jira.
Scopeper use case / once / variable, from task wording and block.
Depends OnA block-level spine is scaffolded — each task waits on the previous block — so you get a real critical path to refine, not everything at kickoff.
Canonical matching. If a task closely matches a canonical Callvu process task, Prepare copies that task's block, owner, scope and type straight from the process spec — so a sheet that reuses standard task names comes back nearly complete.
Out of scope is dropped. The plan stops at Go Live, so any post-launch task is removed from the output (and noted in the punch-list), not carried onto the board.

Prepare is advisory: it fills what it's confident about and flags the rest. Work through the punch-list, confirm the flagged items, and you're ready to Build.

4 · Use case: create a new board (Build)

Use Build once per customer, at the start, to turn the filled sheet into a live board.

  1. In Build a new board, choose your filled .xlsx.
  2. Pick the Kickoff date — the project start. (A weekend date is nudged to the next business day.)
  3. Type the Customer name. This becomes the Jira component that isolates this customer's tickets, and the board's name.
  4. Click Review & build, confirm the echoed summary, then Confirm & build.
  5. Wait — a full board takes a few minutes. Keep the tab open. You get an Open in Monday link and a summary.

Behind that one click, in order, the console:

  1. Validates the whole sheet and reports every problem at once (nothing is created if validation fails).
  2. Clones the template board (so every column already has the correct type) and names it after the customer.
  3. Drops each task into its block group.
  4. Links dependencies as native Monday links.
  5. Computes the business-day schedule and writes each task's timeline, slack, and critical-path flag.
  6. Creates a Jira ticket for every Tool of Record = Jira task, and writes the clickable Jira key back onto each row.
After Build, the board is the source of truth — not the sheet. Make further changes on the board and use Re-run. Re-uploading the sheet always creates a brand-new board.

5 · Use case: manage an existing board

Pick a board in the Board dropdown (it lists every customer board in the workspace). Then:

Re-run recompute

Click Re-run after you add or edit tasks on the board — no re-upload. Re-run reads the board back, re-validates it, and runs the same pipeline as Build:

Re-run is safe to click any time. On an unchanged board it does nothing — zero new links, zero schedule changes, zero new tickets. Each step only writes what actually changed.

To add a task on the board: add an item in the right block group, fill its Task ID, Type, Duration, Tool of Record, and put predecessor Task IDs in the Depends On text column. Then Re-run.

Sync from Jira pull updates

Click Sync to pull the latest Jira dev fields onto the board for every item that has a Jira key. It is manual, on-demand, and safe to run repeatedly. See section 7 for exactly what it copies.

6 · All features

FeatureWhat you get
Typed boardEvery column has the right Monday type (dropdowns, statuses, numbers, timeline, link) — no import-as-text mess.
Block groupsTasks land in the correct block (B1–B7), ordered top-to-bottom.
Native dependenciesDepends On becomes real Monday dependency links, which unlock Gantt and critical path.
Business-day scheduleEvery task gets a start/end on the Timeline, computed from kickoff + durations + dependencies. Weekends are skipped.
Critical path & slackEach task shows Slack (days) and a Critical Path flag. The zero-slack chain is the critical path.
MilestonesGates and sign-offs are zero-duration points that land on the convergence date and never pad the schedule.
Jira ticketsOne ticket per Tool of Record = Jira task, in the shared CCL project, tagged with the customer's component.
Clickable Jira keyThe Jira Key column is a link — one click opens the ticket.
Jira dev fieldsSync brings Dev Status, Dev Delay Reason, and Dev Comments back onto the board.
Board pickerManage any customer board from the dropdown (the template is hidden).
Idempotent everywhereRe-run and Sync only write real changes; running them again does nothing.
Crash-safe ticket creationEach Jira key is written back the instant its ticket is created — a run that dies part-way, re-run, creates exactly the missing tickets.
Loud validationBad input is caught before anything is created, and every error is listed at once.

7 · How it works under the hood

Board structure

Every board is a clone of one template, so column types are guaranteed. Beyond the sheet fields, the console maintains: Timeline (start/end bar), Dependencies (native links), Slack (days), Critical Path, Jira Key (link), and the three Jira-owned fields. Blocks are Monday groups, not tasks.

Scheduling (business-day Critical Path Method)

The scheduler runs a full CPM in business days (weekends excluded, mid-task as well as at the ends):

The schedule is a conservative calendar baseline, not a commitment. Holidays are not modelled (only weekends).

Jira model

8 · How syncing works (both directions)

To avoid an endless loop, every synced field has exactly one owning system and one direction. Task ID is the join key on both sides.

FieldOwned byDirectionWhen
Name, Description, schedule (timeline)MondayMonday → JiraOn create only (Build / Re-run). Existing tickets are not updated.
Dev Status (from Jira)JiraJira → MondayOn Sync — the ticket's live status.
Dev Delay Reason (from Jira)JiraJira → MondayOn Sync — the ticket's Delay Reason field.
Dev Comments (from Jira)JiraJira → MondayOn Sync — the last 5 comments, newest first, each with author and date.

Sync is a full sweep and stateless: it looks at every board item with a Jira key, reads those three fields, and writes them to Monday — no "changed since" tracking to drift. It only writes fields that actually changed, so a Sync with no Jira changes reports zero writes. It is manual on purpose (a delay note does not need second-by-second freshness, and there are no silent background failures).

The three Dev columns are read-only from Jira. If you edit them by hand in Monday, the next Sync overwrites them with Jira's values. Manage those in Jira.

9 · A full worked example

Say you fill the Tasks tab like this for customer Acme Bank:

GroupNameTask IDTypeOwner RoleTool of RecordDepends OnDuration
B1Kickoff & scope sign-offT1sign offImplementation Lead, Customer-PMMonday0
B2Security & compliance reviewT2taskCustomer-ComplianceMondayT15
B3Provision environmentT3taskCallvu DevJiraT13
B5aBuild call flowT4taskCallvu DevJiraT2, T38
B7Go-liveT5gateImplementation LeadMondayT40

You upload it with a Monday kickoff and customer name Acme Bank. After Build:

Later, on the board, you add a UI task: a new item in B5b, Task ID T6, Type task, Tool of Record = Jira, Depends On T4, Duration 2. You click Re-run:

Then a developer moves T3's Jira ticket to In Progress, fills the Delay Reason field, and adds a comment. You click Sync: T3's row now shows Dev Status In Progress, the delay reason, and the recent comments. Running Sync again with no further Jira changes writes nothing.

10 · Gotchas

11 · Troubleshooting errors

Errors are shown in full, in a red box, and nothing is created when validation fails — fix everything listed and try again.

Message contains…CauseFix
Incorrect access secretWrong console secretRe-enter the correct access secret.
Missing required headerA column is missing/renamed in the sheetStart from the blank template; keep the 13 header names.
duplicate Task IDTwo rows share a Task IDMake every Task ID unique.
unresolved Depends On referenceA Depends On points to a Task ID that doesn't existFix the reference or add the missing task.
cycle detectedDependencies loop back on themselvesBreak the loop.
unknown Owner Role / Type / Side / …A value isn't in the allowed listUse an exact allowed value; commas between Owner Roles.
unresolved Group / spanning two blocksAn unknown or merged block labelUse one specific code (B1 … B7).
milestone must have Duration 0A gate/sign-off has a non-zero durationSet its Duration to 0.
pre-flight failed — required field…A required Jira field isn't mappedA Jira admin adds a default/mapping, then Re-run. (No tickets were created.)
board has no stored kickoffRe-run on a board not built by the consoleBuild the board through the console first.

Something not covered here? Note the exact error text and what you were doing, and reach out to the implementation team.

← Back to the console