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

★ Workflows — the flows you actually run — start here

  1. Workflow 1 · I have a rough spreadsheet
  2. Workflow 2 · I have a clean spreadsheet
  3. Workflow 3 · I need to add a task to a live board
  4. Workflow 4 · A developer logged a delay in Jira
  5. Workflow 5 · Something changed on my side of the plan
  6. Workflow 6 · I ran a smoke test and want to wipe it
  7. Workflow 7 · I'm prepping for a weekly customer status meeting
  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

Workflows — the flows you actually run

The other sections are the reference. This one is the map: each workflow is a real situation you land in, what you do, and exactly what changes in Monday and in Jira as a result. If you only read one part of this guide, read this one.

Every workflow assumes you're signed into the console. Throughout, one rule everything rests on: after a board is built, the board is the source of truth, and only you change it.

Workflow 1 · “I have a rough spreadsheet”

You're picking up a new customer and all you have is a loose plan — an old Monday export, a sales handoff, a half-filled sheet. The columns are wrong, the durations are guesses, nothing is in our format.

What you do

  1. Under Prepare a rough sheet, upload your loose .xlsx and click Prepare.
  2. Download the normalized template and open the punch-list beside it.
  3. Work the punch-list. Prepare fills what it's confident about (Task IDs, durations from dates, owner roles from the roster, blocks, a dependency spine) and flags the rest — fix the flagged cells with the drop-downs.
  4. Set the two things Prepare can't guess: the Assignee email for any dev task that should land on a specific person (e.g. sholom@ficx.com), and the External Owner for any task a client-side person owns.
  5. When the punch-list is clear, go to Build a new board (Workflow 2).

In Monday / In Jira: nothing yet. Prepare only converts a file — it creates nothing in either system. You end holding a clean, valid sheet, exactly where Workflow 2 starts. You never hand-format a messy plan: Prepare does the mechanical 80%, you confirm the 20% that needs judgment.

Workflow 2 · “I have a clean spreadsheet”

You have a filled, valid sheet — from Prepare or the blank template. Time to stand the project up.

What you do

  1. In Build a new board, choose the filled .xlsx.
  2. Pick the kickoff date (a weekend nudges to the next business day).
  3. Type the customer name — it becomes the Jira component that walls off this customer's tickets, and the board name. Keep it exact; you'll reuse it.
  4. Review & build, check the echoed summary, then Confirm & build. Wait a couple of minutes with the tab open for the Open in Monday link.

In Monday. A new board, named for the customer. Every task sits in its block (B1–B7), dependencies are drawn as real links, and the whole timeline is computed: each task gets a start, end, Slack (days), and a Critical Path flag, with the critical path highlighted on the Gantt. You authored no dates.

In Jira. For every Tool of Record = Jira task, a ticket in the shared CCL project tagged with this customer's component, carrying the task's name, description, and schedule dates (Start + Due), and assigned to the person from the Assignee column (or the default owner if blank). The clickable Jira key is written back onto each row. Monday-tool tasks get no ticket.

Workflow 3 · “I need to add a task to a live board”

The board is running and a task was missed, or scope grew. You need to add it without breaking the schedule.

What you do

  1. Select the board, click + Add a task.
  2. Fill the form — name, block, owner role, side, tool of record, scope, duration, and pick predecessors from the Depends On list. Set the Assignee from the live person-picker for a dev task, and an External Owner if a client-side person owns it.
  3. Submit. It validates everything first (vocab, dependencies, no cycles, milestone rules) and refuses with a clear message before writing anything.

In Monday. The task drops into its block with a fresh, never-reused Task ID, and the schedule recomputes across the board: the new task and anything downstream move, untouched branches stay, and go-live shifts only if the task lands on the critical path (if it has slack, go-live holds).

In Jira. If it's a Jira task, one ticket is created (assigned, componented, dates + key written back). Existing tickets are untouched except their dates, which update to the recomputed schedule. Nothing is duplicated. Use the form, not a hand-edit — it can't produce a malformed task.

Workflow 4 · “A developer logged a delay in Jira”

A dev moves their ticket's Due date out, fills the Delay Reason, and leaves a comment. Their work will land late. You decide what that means for the plan.

What you do

  1. Select the board, click Review & apply sync.
  2. Read the per-ticket review: the date diff, delay reason, comment, status, and the projected go-live shift if you approve it — all computed without touching the board.
  3. Decide per ticket. Approve what you accept; hold anything you want to call the developer about first.
  4. Click Apply approved & recompute.

In Monday. Nothing moves until you approve — a developer's Jira date is a proposal, not a fact, which is what keeps you the sole editor and the board coherent. On apply, each approved ticket's delay is absorbed into that task's duration, the delay reason and comment land on the board, and the schedule recomputes once. A delay inside the task's slack does not move go-live; one on the critical path pushes it out. A held ticket changes nothing.

In Jira. After the recompute, the updated dates are pushed back to the approved tickets so both systems stay in step; their status, delay reason, and comments now mirror onto the board. Held tickets are left alone.

The first Review & apply sync on a board surfaces every ticket (their Jira status isn't on the board yet), not only a delayed one — approve them to pull that status across. After that, only genuine new changes appear.

Workflow 5 · “Something changed on my side of the plan”

Not a dev delay — a change you own. A task will take longer, a dependency was wrong, or the customer added a step.

What you do

  1. Make the change on the board: edit a Duration, fix a Depends On, or add a task via + Add a task.
  2. Select the board, click Re-run.

In Monday. Re-run reads the board back, re-validates, and recomputes the full schedule. Only what changed moves; untouched branches keep their dates; the critical path, go-live, and slack update. On an unchanged board Re-run does nothing, so it's always safe.

In Jira. Any new Jira task gets a ticket (assigned, componented, key written back); existing tickets aren't duplicated, and their schedule dates update to the recomputed timeline. Re-run never re-edits a ticket's content beyond its dates. This is the everyday loop: change the board, Re-run, both systems catch up.

Workflow 6 · “I ran a smoke test and want to wipe it”

You built a demo or test board to try something, and now it's polluting Jira with throwaway tickets. You want it gone from everywhere.

What you do

  1. Select the test board, click Delete customer data….
  2. Read the warning, then type the exact board name to arm the red Permanently delete button, and confirm.

In Monday. The board is deleted.

In Jira. Every ticket for that customer's component in CCL is deleted, then the component itself. Order is tickets → component → board, so a mid-way failure leaves the board for a retry. Deleting a board directly in Monday would orphan its Jira tickets; this action purges both at once. Use it after every showcase to keep production Jira clean.

Workflow 7 · “I'm prepping for a weekly customer status meeting”

The regular check-in, and you need to show where the implementation stands and what's at risk.

This one is read-only and lives in Monday, not the console. Open the board and switch to the Gantt / Timeline view. The highlighted critical path is your talking track — those are the tasks that move go-live if they slip; tasks with slack have breathing room; the go-live milestone anchors the conversation. Because every dev delay (Workflow 4) and your own change (Workflow 5) is already reflected, the date you show is current, not a stale estimate. Group by Side to separate what Callvu owns from what the customer owes, and the External Owner field tells you exactly who to chase on client-side dependencies — the most common cause of slips. No console action needed; the value is that everything the console keeps in sync is now a live picture you can present without assembling anything by hand.

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. Or use the guided Add a task form below, which is the recommended path.

Add a task guided

Click + Add a task to add one task to the selected board through a validated form — the safe way to change the board. It auto-assigns the next Task ID (never reused) and validates exactly like the sheet — controlled vocab, dependency resolution, cycle detection, the milestone zero-duration rule — and fails loudly before writing anything. Depends On is a picker of the board's existing tasks; Assignee is a live person-picker of assignable Jira users (the ticket lands on that person); External Owner captures a client-side owner (name + optional email) for display. On submit it writes the row, recomputes the schedule, and — if Tool of Record = Jira — creates the ticket with the chosen assignee. Hand-editing the board and running Re-run still works; the form is the guided, guaranteed-valid path.

Delete customer data danger

Click Delete customer data… to permanently remove a test or retired customer from both systems: the Monday board and every Jira ticket plus the component in project CCL. It is type-to-confirm — you must type the exact board name to arm the red Permanently delete button — behind a warning that this cannot be undone. Order is Jira tickets → component → Monday board, so a mid-way failure leaves the board for a retry. Use it to keep production Jira clean after showcases.

Review & apply sync approve Jira changes

Click Review & apply sync to see what developers changed in Jira — a proposed new finish date (from the ticket's Due date), delay reason, comment, and status — before any of it touches the board. For each changed ticket you get a diff and the projected go-live shift if you approve it. Nothing is written until you approve. You approve or hold each ticket; a held ticket stays exactly as it was. When you click Apply approved & recompute, the console applies the approved tickets and runs one schedule recompute — this is how a developer's slip finally moves the go-live. See section 8 for the model.

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).
Guided add-taskAdd one task to a board through a validated form — auto Task ID, live Depends On and Assignee pickers, same checks as the sheet, then recompute + ticket creation.
Review & apply syncApprove each developer's Jira change (date, delay reason, comment, status) before it touches the board; the projected go-live shift is shown per ticket.
Delete customer dataType-to-confirm purge of a customer from both systems — the Monday board and the Jira tickets + component. For clearing test/showcase runs.
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 datesMondayMonday → JiraOn Build / Re-run, and after a Sync approval — the recomputed dates are pushed to each ticket's Start / Due.
Schedule (a developer's new date)Monday, via approvalJira → MondayOnly when you approve the ticket in Review & apply sync. This is the one sanctioned path for a Jira date to change the Monday schedule.
Dev Status / Delay Reason / Comments (from Jira)JiraJira → MondayApplied together with the ticket's approval — status, the Delay Reason field, and the last 5 comments (newest first, author + date).

Review then apply — the approval gate

Schedule is Monday-owned, so a developer's Jira date is a proposal, not a fact, until you approve it. Review & apply sync reads every ticket for the board, and for each one that changed it shows the diff and the projected go-live shift if approved — computed without writing anything.

How a date becomes a schedule change: the delay is the business-day gap between Monday's current finish and the developer's proposed Jira Due date; approving adds that to the task's Duration, then the recompute propagates it. A delay that fits inside a task's slack does not move go-live; a delay on the critical path does.

The three Dev columns are read-only from Jira. If you edit them by hand in Monday, the next approved 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 pushes T4's Jira Due date out by 3 business days, fills the Delay Reason field, and adds a comment. You click Review & apply sync: T4 shows the date diff and "if approved: go-live 3 business days later", plus the delay reason and comment. You approve T4 (or hold it to call the dev first). On approve, T4's Duration absorbs the 3 days, the schedule recomputes, the go-live moves, and the new dates are pushed back to Jira. A held ticket changes nothing. Re-running the review with no further Jira changes shows nothing to approve.

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