PlaysbyMoat8
Back to the library
The workflow guideOperations

Create a client project register

Build a reliable register of client engagements, owners, scope, milestones and commercial status. Keep projects distinct from opportunities, invoices and individual tasks.

6 implementation stepsIntermediate

How this works

A client project register is the index of engagements the company is responsible for delivering. It connects the client, agreed scope, delivery owner, milestone dates and commercial context without replacing the task tracker or accounting ledger. A useful first version makes missing ownership and conflicting commitments visible rather than presenting every row as complete.

Treat a client, opportunity, contract, project, workstream and invoice as different objects. One contract may fund several projects, and one project may have several invoices. Use stable IDs and explicit relationships so a duplicated document or changed project title does not create duplicate engagements. AI can extract and reconcile candidate facts; confirmed scope and status remain owned by the delivery and account teams.

Before you start

Project definition

Agree whether a project is a contracted engagement, a separately managed workstream or another unit. Record inclusion criteria for pilots, paused work, retainers and archived engagements.

Status vocabulary

Define delivery states and commercial states separately. For example, delivery can be complete while payment remains outstanding; neither state proves the other.

Owners and source precedence

Name the owner roles for delivery facts, commercial terms and data maintenance. Agree which approved records take precedence when sources disagree.

Destination

Use an existing spreadsheet or database with export capability. If connected tools are unavailable, prepare CSV tables and a Markdown review note without claiming synchronization.

Prepare the inputs

project_records
Required

Rows with existing project ID, client ID, title and source reference

Preserve existing stable IDs; flag duplicate IDs with conflicting client or scope values.

scope_documents
Required

Approved agreement or change record, version and effective date

Distinguish signed scope from sales proposals and unapproved change requests.

delivery_updates
Required

Project ID, milestone, status, status date and owner role

A status requires an as-of date and evidence. A passed due date alone is not proof of completion.

commercial_records
Optional / conditional

Contract ID, amount if authorized, currency, billing model and invoice references

Do not mix currencies or combine contract value, invoiced value and collected cash into one field.

owners
Required

Internal owner IDs or role aliases

Each active project needs a confirmed accountable delivery owner or an explicit missing-owner exception.

snapshot_date
Required

ISO date with freshness expectations

All views show the same snapshot date; identify updates older than the agreed review cadence.

Implementation, step by step

  1. Define the register and its views

    • Write a compact data dictionary covering the project unit, unique identifier, status vocabulary and mandatory fields. Separate planned, active, paused, completed and archived work according to the team's definitions.
    • Choose the initial views: active portfolio, upcoming milestones, missing owners and unresolved scope changes. Keep sensitive commercial fields in a restricted view when the audience differs.

    Checkpoint: The schema and included population are agreed before records are consolidated.

  2. Collect evidence without losing provenance

    • Read authorized project exports, agreements and recent updates. Preserve original source IDs, versions and update dates in a source map.
    • Extract candidate facts into staging rows. Mark missing scope, unapproved proposals and stale status explicitly; do not fill them from plausible-sounding summaries.

    Checkpoint: Every staged engagement has traceable source records and a completeness status.

  3. Resolve entities and duplicates

    • Match exact project and client IDs first, then review ambiguous aliases using contract references and scope. Two projects with the same client and similar titles are not automatically duplicates.
    • Link multiple contracts, amendments or invoices through separate relation tables when necessary. Keep the canonical project ID stable across renames and owner changes.

    Checkpoint: Each included engagement has one canonical project row; uncertain matches remain in a review queue.

  4. Reconcile scope, dates and status

    • Compare the latest approved scope and amendments with delivery notes. Track proposed additions separately until an authorized owner confirms them.
    • Store delivery status and commercial status in different fields. Retain conflicting milestone dates with their sources and ask the owner to resolve material disagreements.

    Checkpoint: The row distinguishes confirmed facts, proposed changes, unknowns and disagreements.

  5. Build useful operating views

    • Create a milestone table keyed to projects, with due date, completion evidence, owner and dependency. Sort actionable exceptions by decision need rather than inventing an unsupported risk score.
    • Prepare filters for active projects, unassigned owners, overdue uncompleted milestones and stale updates. Any totals must use consistent units and currencies, with denominators and exclusions stated.

    Checkpoint: A reviewer can trace each highlighted issue back to the project and original evidence.

  6. Validate the snapshot and update process

    • Reconcile the canonical project count with source exports and explain merges and exclusions. Ask delivery and account owners to confirm only the rows that require their decisions.
    • Save the draft or approved register with a maintenance owner and review cadence. Record changes by stable ID; if asked to sync a destination, use idempotent updates and verify the resulting rows before marking them synchronized.

    Checkpoint: The handoff contains the register, source map, exceptions and an explicit next update owner.

Decisions along the way

An opportunity has no delivery commitment

Keep it outside the active delivery register or label it pre-contract according to agreed policy; do not present it as contracted revenue.

A retainer has many monthly tasks

Keep the engagement as the project and link monthly periods or workstreams separately unless the agreed project definition says otherwise.

The latest meeting note conflicts with a signed amendment

Show the discrepancy and retain the approved contractual scope until the responsible owner confirms a change.

Payment is overdue but delivery is complete

Keep delivery complete and commercial status outstanding. Include the finance follow-up in the relevant view without reopening delivery by inference.

What you will produce

client-project-register.csv

CSV or equivalent workbook table

One row per defined project, with facts and status kept separately.

Include: project_id · client_id · title · scope_summary · delivery_owner · account_owner · delivery_status · commercial_status · status_as_of · source_ref · snapshot_date

project-milestones.csv

CSV

A linked milestone view without duplicating project commercial totals.

Include: milestone_id · project_id · due_date · completion_status · completion_evidence · owner · dependency · snapshot_date

project-review-queue.csv

CSV

Questions requiring a human decision, not guessed final values.

Include: project_id · issue · conflicting_values · source_refs · decision_owner · resolution_status · snapshot_date

register-handoff.md

Markdown

Instructions for keeping the register reliable after its initial creation.

Include: data dictionary · scope · count reconciliation · source map · access notes · maintenance cadence · snapshot_date

source-map.csv

CSV

Local evidence index for source_ref fields. Preserve the original record date separately from the common snapshot date; a missing source date remains unknown.

Include: source_id · source_locator · source_date · source_type · snapshot_date

Check the result

  • Assert unique project IDs and valid client/project references across all linked tables.
  • Reconcile included projects against every source list; account for archived records, duplicates and excluded opportunities.
  • Check every active project for scope evidence, owner and dated status, recording exceptions instead of hiding blanks.
  • Confirm that project value is not repeated in each milestone row or counted once per invoice.
  • Review date conflicts, stale statuses and future milestones marked complete without evidence.
  • Check that all exported views expose only the fields appropriate for their intended audience.
  • Use snapshot_date for the common reporting snapshot and status_as_of for the original status evidence date; do not overwrite one with the other. Verify that every source_ref resolves in the source map.

When something goes wrong

A source export lacks stable IDs

Create local candidate IDs with a source-to-canonical mapping. Review ambiguous matches before updates; do not create records in live systems until identity is resolved.

One engagement appears under several client aliases

Use the confirmed legal or account identifier to link aliases. Preserve separate clients if identity remains uncertain.

Synchronization times out after writing

Query the target by stable ID and compare fields before retrying. Mark unknown results as reconciliation-needed rather than creating another project.

A worked example

SYNTHETIC EXAMPLE · NOT A REPORTED BUSINESS RESULT

Request

Consolidate a client project list for our delivery review.

Inputs

Synthetic records: PR-101 has a signed scope for a reporting dashboard, delivery owner R02, and an unapproved request for an extra data source. Two exports call it Dashboard and Reporting portal but both reference PR-101. PR-102 is completed, with one unpaid invoice. PR-103 has no owner.

Expected result

Create three project rows, not four. Preserve the two names as aliases for PR-101, retain its signed scope and add the extra data source to the change-review queue. Keep PR-102 delivery complete with commercial status outstanding. Flag PR-103 as missing an owner and route that question to the portfolio owner.

Run a small pilot

Start small

Consolidate one delivery team's current projects and one prior review period.

Record the baseline

Record time spent assembling a portfolio update and the number of missing owners, scope conflicts and duplicate engagements.

Agree success criteria

Agree completeness and freshness requirements, then compare preparation effort and reviewer corrections after one update cycle.

Stop or revise

Stop live synchronization if identities are ambiguous, totals double-count engagements or draft scope changes appear as commitments.

Keep the scope clear

  • The register records commitments; it does not authorize new scope, change contract terms or promise delivery dates.
  • Do not publish client identities, confidential project descriptions or commercial values beyond the authorized audience.
  • Local register preparation is allowed within the request. Writes to operational systems or client communications need existing authorization for those destinations.

Check before using

Project and account owners confirm current scope, dates and status before the register becomes a shared source of truth.

Business activities

  • Onboard customers, partners, and members
  • Deliver recurring client work
  • Review business performance

Editorially adapted workflow; not independently tested.

FROM A RECIPE TO YOUR WORKFLOW

Bring the company context together.

This workflow needs reliable inputs before it needs a better prompt. Moat8 Vault brings working information into a readable archive for the AI tools you use.

For this recipe: Project and client records · Agreements and scope documents · Milestone and delivery updates · Approved status definitions

Start with one recurring task, agree which sources to use, and review the first result with your team.

Discuss this workflow

What does your team do?

Choose the recurring work you would like to improve.

A field guide, made for work.

Plays is a curated library of anonymized business workflows. Each recipe explains the inputs, steps, tools, and checks you can adapt to your team. These are editorial guides, not independently tested implementations.

When you share a company website, the guide may read a limited number of public pages on that website. Messages and retrieved page text are sent to our AI provider, NVIDIA, to recommend relevant workflows. Share a general description rather than confidential information.

Saved workflows and selected activities stay in this browser. Your chat history and selected company website are kept in this tab and cleared when you reload or start a new chat. The server does not store conversations. Live source monitoring is not enabled.

If you allow analytics, PostHog receives page views and actions such as workflow saves, skill downloads and link clicks. Random browser and session identifiers connect these actions without identifying you by name. Your choice and browser identifier expire after 90 days; sessions restart after 30 minutes of inactivity or 24 hours. We use local storage, not analytics cookies. Messages, company URLs, search text, full referrers and IP addresses are not sent. There are no person profiles or session recordings. You can decline or withdraw in Analytics settings; Do Not Track and Global Privacy Control keep analytics off.

Read the Plays Privacy Notice ↗