Quickstart dashboard pack — Salesforce dbt project pilot
Problem
Pilot the quickstart dashboard process on the Salesforce quickstart dbt repo: checkout, dft init, run the product-research skill, map native Salesforce dashboards and question types to YAML boards, define entity/detail navigation links, and record process gaps for the program task.
Context
- Depends on quickstart-dashboards-program-setup (completed 2026-03-22) and dashboard-linking-v1 (completed 2026-03-22); both prerequisites satisfied.
- Salesforce Sales Cloud is the target product. The
dbt_salesforcepackage (github.com/fivetran/dbt_salesforce) models lead-to-opportunity lifecycle, owner/manager performance, daily activity aggregates, and a single-row sales snapshot. - Salesforce users expect pipeline inspection, stage distribution, rep leaderboards, and account drill-down — native Analytics / CRM reports are the mental model.
- Quickstart models do not expose: forecast/quota, opportunity stage history, campaign multi-touch attribution, or per-owner activity breakdown. These are documented as gaps rather than faked.
dft initis not yet implemented (separate task in dashboard-factory workstream), so workspace setup is manual. Research artifacts live inai_notes/quickstart-dashboards/salesforce/; draft YAML lives alongside as reference designs.
Possible Solutions
- Research-heavy then thin YAML: Chosen — completed the full
.codex/skills/quickstart-product-dashboard-research/SKILL.mdchecklist (sections A–E), then implemented 3 boards with cross-board links. - YAML-first: rejected — the research-first approach surfaced 6 model gaps and informed the account-centric (vs opportunity-centric) drill path before writing any YAML.
Plan
- Clone the Salesforce quickstart repo into the program workspace;
dft init. - Run the quickstart-product-dashboard-research skill; write
ai_notes/quickstart-dashboards/salesforce/research.md(or path chosen in program setup). - Produce board outline + link matrix; identify one overview → entity detail path (e.g. account- or opportunity-centric).
- Implement initial YAML pack;
dft serveagainst documented sample data. - Retro: list friction (skill gaps, workspace, missing
dftflags); open PRs or spawn tasks; update program task Observed process issues.
Deliverables checklist
- [x] Research notes (vendor surfaces, questions, model mapping, gaps)
- [x] Board outline + link matrix
- [x] Initial YAML committed (draft in
ai_notes/quickstart-dashboards/salesforce/faces/) - [x] Retro notes + skill/spec edits proposed
Implementation Progress
Research phase (2026-03-22)
Completed the full quickstart-product-dashboard-research skill checklist. All artifacts in ai_notes/quickstart-dashboards/salesforce/:
| Artifact | File | Status |
|---|---|---|
| Charter | charter.md |
Done — Sales Cloud scope, 3-board minimum, personas defined |
| Sources bibliography | sources.md |
Done — 8 entries across P0/P1/P2 tiers |
| Example index | examples/index.md |
Done — 8 native Salesforce surfaces mapped to boards/gaps |
| Question bank | questions.md |
Done — 20 questions across 4 personas, 4 episodes |
| Research narrative | research.md |
Done — synthesis with board topology and model mapping |
| Link matrix | link-matrix.md |
Done — 7 links across 3 boards |
| Gaps | gaps.md |
Done — 6 gaps identified (2 wontfix, 2 v2, 1 model, 1 connector) |
Key decisions
- Account-centric drill path over opportunity-centric — accounts are the natural grouping entity in Sales Cloud, and
salesforce__account_enhancedhas good column coverage. - Lead section on overview rather than separate board — lead model is slim; conversion rate KPI + source breakdown is sufficient for v1.
- Activity board deferred (GAP-003) —
salesforce__daily_activityaggregates by date not owner; per-rep activity requires custom query. - Draft YAML in ai_notes —
dft initnot yet available, so YAML lives inai_notes/quickstart-dashboards/salesforce/faces/as reference designs. Will move to quickstart checkout when workspace tooling is ready.
YAML pack (2026-03-22)
Three boards implemented in ai_notes/quickstart-dashboards/salesforce/faces/salesforce/:
overview.yml— 4 KPIs (open pipeline, win rate, total leads, avg deal size), stage distribution bar, pipeline created trend, won trend, lead source breakdown, top accounts table. Links to pipeline board.pipeline.yml— Owner leaderboard table, stage-by-owner stacked bar, pipeline created by rep trend, deals closing in 30 days table. Links back to overview and to account detail.accounts/detail.yml— Account selector variable, 5 KPIs (open deals, pipeline, avg deal, won deals, won revenue), account info table, opportunities table, contacts table. Links back to overview and pipeline.
All boards use ref("model_name")-style references to dbt_salesforce enriched models and filter("var") for variable binding, consistent with Dataface YAML conventions.
Process gaps observed (retro)
dft initnot available — had to manually plan directory structure; blocks quickstart checkout workflow.- No dry-validate mode — cannot validate YAML against schema without actual data connection.
- Question bank → board coverage requires maintaining a separate coverage matrix in
examples/index.md; would be cleaner as a column inquestions.md. - Activity model grain mismatch —
salesforce__daily_activityis date-grain, not owner-grain, limiting rep activity dashboards without custom SQL.
QA Exploration
Smoke-test rendered boards via dft serve (and fix breakages). Full Playwright N/A unless validating Cloud embedding of these packs.
- [x] QA exploration: N/A — YAML is draft/reference; cannot smoke-test without quickstart repo clone +
dft serve. Structural review of YAML against Dataface conventions completed manually.
Review Feedback
- [ ] Review cleared