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.
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
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.
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.
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.
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.
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.
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 tableOne 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
CSVA 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
CSVQuestions 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
MarkdownInstructions 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
CSVLocal 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
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