# Companion-video guide — Build an operations dashboard

**Manuscript:** [Turn five project records into a dashboard you can act on](../appmint-build-an-operations-dashboard.md).

This is a recording guide for a future presenter/editor, not an existing video. The supplied media are original captures from the application walkthrough. Do not substitute unrelated project clips or generate a simulated interface.

## The result to demonstrate

Open on the saved dashboard: one assigned overdue project, one Unassigned, and a total of two. Then show the detail query identifying Ahmed studio and Bennett kitchen. The learner's question is “Who needs to make a decision?” rather than “How many chart types exist?”

End with **Tutorial Confirm lighting plan** appearing in **My Tasks** after a reload. The dashboard leads to an action with an owner and a definition of done.

Record five short chapters rather than a long unbroken interface tour:

1. A collection that fits your work: identity, schema, preview and save.
2. Five useful records: validation, linked owner, dates and deliberate exceptions.
3. Count, reconcile and save: query, chart, detail and dashboard.
4. Turn an overdue decision into a task: private Workspace and self-assignment.
5. Recovery and troubleshooting: versioned Trash restore and the import-validation defect.

The main video can be 18–25 minutes with pauses; recovery/import can be a separate 5–8 minute appendix. These are editorial targets, not captured runtimes.

## Fixture continuity

Use a presenter-owned training organization. The captured account's owner is Jordan Morgan; when recapturing with another account, select that real account and narrate “your user.” Do not invent Ade or Maya Ito as existing staff.

Keep these project names and values consistent:

| Project | Budget | Stage | Decision date | Owner |
| --- | ---: | --- | --- | --- |
| Tutorial Bennett kitchen | 18000 | Concept | 2026-09-10 | Presenter |
| Tutorial Reyes loft | 42000 | Detail | 2026-09-25 | Presenter |
| Tutorial Ahmed studio | 12000 | Brief | 2026-09-08 | Empty |
| Tutorial Park terrace | Empty | Complete | 2026-08-30 | Presenter |
| Tutorial Okonkwo bathroom | 9000 | Build | 2026-09-30 | Presenter |

The fixed cutoff is **2026-09-18**, even if you record later. Explain the historical exercise date onscreen. If changing the dates for a current-looking example, change both downloadable pipelines and all five records together and recalculate the expected answer before filming.

Client is empty because this training organization had no customers. Do not overlay a customer name on those captures. An additional CRM-based version can select real training customers, but needs new footage.

## Shot list and narration

Paths in this table are inside `course-content/assets/appmint-dashboard/`.

| Scene | Actual still | Recording action and voiceover |
| --- | --- | --- |
| Result first | `26-dashboard-reopened.png` | Show the table and chart together. “Two decisions need attention. One already has an owner; one does not.” Leave the actual warning visible if the defect remains. |
| Find the builder | `01-empty-collection-builder.png` | Open Database → New Collection. Point out the main tabs, canvas and right panel. Explain collection versus record in one sentence. |
| Stable identity | `12-collection-settings.png` | Enter Name and Title separately. Turn on versioning/workflow. Explain identifier versus display title. Pause after changing a value. |
| Schema recovery | Downloaded schema | Paste the complete schema into JSON Schema. Record the paste and switch to Form Preview. Do not use the exploratory broken-field captures as a finished form. |
| Link to users | `11-owner-lookup.png` | Open Owner and show actual results. Explain that selection stores an ID. |
| Form rejection | `16-title-validation.png` | Attempt Save with title empty. Read “Missing required fields: title,” then fill Project. Never edit a toast into the video. |
| First project | `17-first-project-values.png` | Enter Bennett's values slowly enough to follow. Click an Owner result and a Stage option. Save. |
| The whole dataset | `18-five-projects.png` | Establish all five rows. Hold on empty owner and Complete stage. Ask which two should count. |
| Query workspace | `19-new-query.png` | Set the title and collection. Paste the downloaded pipeline; show Run. |
| Numbers to bars | `25-explicit-bar-chart.png` | Choose Bar explicitly, map `_id` and `count`, save. Show counts before explaining chart colors. |
| Reconciliation | `27-two-matching-projects.png` | Run the detail query. Read the two project names and dates. Show that Complete is excluded by the same filter. |
| Assemble | `22-new-dashboard.png` | Drag the saved query from the right panel into the empty dashboard. Keep pointer visible during the full drag. |
| Save twice | `24-save-dashboard-dialog.png` | Show dashboard Save opening the metadata form, then submit that form. Cutting between these actions would hide a necessary step. |
| Reopen | `26-dashboard-reopened.png` | Item picker → Home → Refresh → saved dashboard → Viewing. Record the whole persistence check. |
| Private space | `40-private-workspace-form.png` | Name the space, describe its purpose and show Private checked. Do not send invites in this recording. |
| Actionable task | `41-actionable-task.png` | Read the definition of done. Assign to the presenter, then Create task. |
| Finish | `42-task-after-reload.png` | Reload and open My Tasks. End with the saved To do task. |
| Recovery appendix | `30-trash-restoration-view.png`, `32-five-projects-after-restore.png` | Explain the dedicated Trash route and versioning prerequisite. Restore only the disposable fixture. Prove it returned to Data Explorer. |
| Import appendix | `35-import-preview.png`, `37-validate-only.png`, `38-validation-report.png` | Show the blank title, Validate only, and actual report. Clearly say that the report failed to flag the bad row and no records were written. |

## Capture requirements

The later chart and Workspace stills use a 1440 × 1050 browser viewport; early investigative captures use 1440 × 900. For video, choose a consistent 16:9 canvas and record at sufficient resolution to zoom into field labels. Reframe the real browser recording; do not stretch the screenshots to fill the frame.

Use gentle close-ups for the Name/Title distinction, Stage selection, query cutoff, X/Y mapping, Validate only checkbox and Restore action. Include a full-screen establishing shot before a close-up so viewers know where the control is.

The existing stills contain the real training email and user ID. Those are tutorial fixtures, not credentials. Keep passwords, session tokens and API keys out of new recordings. Use another presenter-owned account if you need different branding or names.

Before recording any deletion, check **Enable Versioning** and use only a disposable tutorial project with no related business work. Do not imply that restoring a base record also restores its deleted tasks, schedules or complete version history.

The service-agreement banner visible in early exploratory stills is unrelated to this lesson. It was dismissed for the later hero capture without accepting an agreement. Close unrelated panels through normal UI controls for a clean new recording; do not remove errors relevant to the demonstrated action.

## Corrections the video must preserve

- A new collection starts with `{}` on this build. A working drag-and-drop canvas needs an object with `properties`.
- “Single Selection” defaults to yes/no; the stage uses the supplied string choice-list schema.
- Lookup Properties can be unavailable while the actual lookup form works.
- Collection search matched the title **Design Projects**, not `cf_project`.
- The chart shows user IDs unless the query resolves them. Do not relabel an ID with an unverified employee name.
- The dashboard card renders a table and chart together. Its legacy warning may still appear below them.
- The dashboard Save opens a second save form; do not omit submission.
- Home may need Refresh to show newly saved items.
- Sidebar Trash and `/app/trash` exposed different interfaces. The dedicated application performed the tested restore.
- CSV validation produced 3 skipped/0 failed despite a missing required title. “Skipped” in this dry run is not a successful migration, and “0 failed” did not establish valid data.
- No second-user access test, external invitation, workflow execution, record-history restore or live batch import was completed in this capture set.

## Optional supporting graphics

Use the manuscript's Collection → Records → Queries → Dashboard → Workspace distinction as a simple five-box graphic. Keep it clearly separate from screenshots: it explains relationships and does not depict application UI.

For the counting exercise, animate five named project cards. Exclude Park terrace because it is Complete, and exclude Reyes/Okonkwo because their dates are later than the cutoff. Keep Bennett and Ahmed. Put Ahmed beneath an **Unassigned** label. These values must exactly match the live records.

## Acceptance checks before publishing a companion video

Watch the edited sequence once without narration and verify that every action can be located from the picture. Watch it again with narration and check that “saved,” “restored” and “assigned” each have an actual result shot.

Re-run both queries and verify the total still equals the detail-row count. Open the dashboard through Home, and find the task through My Tasks. Recheck the current build's import validation before recording the appendix; if fixed, capture the corrected report and update the manuscript instead of repeating the old defect as current behavior.

Capture timestamps, route, captions and visible text for the existing stills are in [evidence.json](../assets/appmint-dashboard/evidence.json). No MP4 or completed voiceover is claimed by this guide.
