internal.thinkdigital.travel/advisory/reports
Advisory · 03

Reports and dashboards.

How to produce client-facing engagement reports and live dashboards at milestone moments. The Milestone Update workflow chains dttt-advisory-credits for credit logging and balance confirmation into dttt-engagement-pdf for the closure PDF, with the live dashboard kept in sync throughout.

08
Workflow steps
02
Skills chained
02
Deliverables
Live
Dashboard state
Deliverable 01 · live
Client dashboard.
A live HTML page hosted on Memberstack-gated infrastructure, showing the member's current Advisory Credits Used, Remaining and percentage spent. Engagement-by-engagement breakdown. Refreshed at every Milestone Update so the client always sees the current state.
Deliverable 02 · per engagement
Engagement report PDF.
A PDF report card produced at engagement closure or major milestone. Covers what was delivered, how, the credit cost and the AI transparency record. Produced by dttt-engagement-pdf, called from dttt-advisory-credits Step 8.

A Milestone Update is the trigger event — a piece of advisory work has reached a point where credits need to be logged, the balance needs to be refreshed for the client, and (often) a PDF needs producing. The workflow is owned by dttt-advisory-credits end-to-end; dttt-engagement-pdf is called in Step 8.

01Trigger

The user requests a Milestone Update.

Phrases that should trigger this workflow: "milestone update for [client]", "log the work and update the dashboard", "close out [job reference]", "produce the engagement report". Each implies the full chain, not just credit logging.
User says
02Identify

Identify the work and propose bands.

Source transcripts, document metadata, calendar entries and any explicit instructions. Map discrete units of work to Work Blocks. For each, propose a band based on who did the work. Don't write to Airtable yet — propose only.
dttt-advisory-credits Step 2
03Hours

Calculate hours.

Apply the two-hour gap rule (a gap longer than two hours splits a working session). Account for review time and meeting time from all colleagues, not just the primary contributor. Hours go in 0.25-hour increments. Ask before finalising if hours are ambiguous.
dttt-advisory-credits Step 3
04Approve

Present for approval.

Show the user the proposed Work Blocks (band, hours, summary, credit cost). Iterate if needed. Don't proceed without explicit approval. This is the propose-then-approve guard — credits are commercially material, so the attribution is legible before it's written.
05Log

Write to Airtable.

Create Work Blocks linked to the engagement. Credits Used auto-calculates from Hours × Band Credits/hr. The Advisory Ledger's Credits Used Rollup updates automatically; so does the Member's Credits Used.
dttt-advisory-credits Step 5
06Confirm

Confirm balance at Member level.

Read back the updated Credits Used, Credits Remaining, percentage used, and Equivalent Hours at Band C. The user (and the dashboard) now see the impact of the logged work on the annual pool.
dttt-advisory-credits Step 6
07Dashboard

Update the client dashboard.

The dashboard reads directly from Airtable, so credit changes propagate automatically. What needs manual updating is the engagement narrative — Work Summary, Methodology & Approach, AI transparency fields — so the dashboard reflects what was just delivered, not only the credit numbers.
dttt-advisory-credits Step 7
08PDF

Produce the engagement report PDF.

Where the milestone is an engagement closure, generate the PDF report card. dttt-advisory-credits calls dttt-engagement-pdf, which encodes the layout rules to prevent page-break and KeepTogether failures. The PDF is shared as the closure deliverable for the engagement.
dttt-advisory-credits Step 8 → dttt-engagement-pdf
Why this order matters Credits must be logged before the dashboard is updated, because the dashboard reads from Airtable. The PDF must be generated after credits are confirmed, because the PDF includes the final credit cost figure. The workflow order is the order in which the underlying data settles.

The client dashboard surfaces the member's live state across two pools, then breaks down engagement by engagement. It's the source of truth the client uses to see how their year is going.

Top of page · pool status

Body · engagement list

Each engagement (Advisory Ledger record) gets its own block:

Visual style

The dashboard uses the dttt-page-design system rather than the advisory design system. It's an operational view, not a client-facing artefact in the proposal sense — clarity and density take priority over reading rhythm.

The PDF is a single-engagement record. It travels separately from the dashboard and is sent to the client at closure.

Pages

Layout discipline

The PDF skill encodes the layout discipline learned the hard way. Page breaks land between logical units (never inside a Work Block). KeepTogether is set on every multi-line construct. The skill is opinionated about this because past PDFs broke at the wrong points.

Linked skills dttt-advisory-credits owns the workflow end-to-end. It calls dttt-engagement-pdf at Step 8 for closure PDFs. The dashboard uses dttt-page-design. See the skills catalogue for each.

Phrases that should kick off the full Milestone Update workflow:

Phrases that should kick off only the credit-logging part (no PDF):