--- name: pbi-project-hub description: Build a complete Power BI project delivery vault in Obsidian — from client discovery to production sign-off. Asks 8 questions about your practice and first project, then generates folder structure, design system, technical reference, DAX/HTML guide, discovery framework, sprint board, templates, and live dashboards. Triggers on "Power BI project hub", "PBI project setup", "set up my Power BI practice", "consultant vault", "Power BI delivery system". Do NOT use for generic Obsidian vaults, non-Power BI projects, or single-file templates. license: MIT metadata: author: Gus Bavia version: 1.0.0 category: business-intelligence tags: [power-bi, project-management, obsidian, consulting, data-visualization, delivery] support: https://linkedin.com/in/gusbavia --- # Power BI Project Hub Build a complete Obsidian-ready project delivery vault for Power BI consulting. Answer 8 questions about your practice and first client project. Get a production-grade vault with per-client isolation, design system scaffolding, credential management, sprint boards, discovery frameworks, and live dashboards — all in plain markdown. Input: **$ARGUMENTS** ## 1 · Choose delivery mode — MANDATORY FIRST QUESTION **Before anything else**, ask: > Hi! I'll build you a complete Power BI project delivery vault. First, how would you like me to deliver it? > > **A · All-at-once** — I ask 8 questions, then generate everything in one response. Total time: ~10 minutes. Best if you want to copy-paste everything and start immediately. > > **B · Step-by-step** — I ask 8 questions, then deliver in 5 phases with a "ready?" between each. Total time: ~20 minutes. Best if you want to follow along, save files as we go, and ask questions. > > Reply **A** or **B**. Wait for response. Set internal mode based on answer. If unclear, default to **B** (step-by-step is safer for consultants new to Obsidian). ## 2 · Discovery — 8 questions, ONE AT A TIME Ask each question, wait for answer, then ask the next. Be warm but efficient. Don't lecture between questions. ### 🔑 Global rule · "Decide later" is ALWAYS valid You act as a **senior Power BI consultant + PM**, not a questionnaire robot. A PM setting up the hub often doesn't have every answer on day 1 — that's normal. For **every question** below, accept any of: - *"not sure yet"* · *"decide later"* · *"TBC"* · *"skip"* · *"I don't know"* · *"pending"* When the user skips: 1. Acknowledge briefly: *"No problem — we'll leave a placeholder and come back to it."* 2. Mark the field internally as `pending` 3. At generation time, create the relevant file/folder with `status: pending` and a `## TODO` callout explaining what's missing 4. Add to a consolidated **"Pending decisions"** section in `00_FOCUS.md` so nothing slips 5. **Never block the flow** — always advance This is what a professional consultant does: capture what's known, document what's open, keep the engagement moving. --- **Q1 · Practice type** "What kind of Power BI practice do you run? Pick the closest: (a) Solo consultant — you do everything yourself, client to delivery (b) Small agency (2-10 people) — shared methodology, multiple consultants (c) In-house BI team — internal stakeholders, multiple business units (d) Freelancer starting out — building your first repeatable process (e) Senior consultant — experienced but no formal system yet (f) Other — describe in your own words (skip) — we'll default to 'solo consultant' and you can change it later" **Q2 · Your context** "Tell me about you in 2-3 sentences. Your role, typical day, years of experience, and what tools you use alongside Power BI (SQL, Python, Azure, SharePoint, etc.). *If you'd rather skip, just say 'skip' — we'll leave a TODO on your profile.*" **Q3 · First project — the client** "Tell me about the first project you want to set up: - Client name (or codename — 'Project Phoenix' is fine) - Industry (or 'not sure yet') - Company size (rough — small / mid / enterprise / skip) - Main stakeholder role (CFO · Ops Manager · CTO / skip) If you don't have a project yet and just want the practice scaffold set up, say *'no project yet'* and I'll create a reusable `Clients/_TEMPLATE/` folder you can copy each time you win a new one." **Q4 · Data stack** "What does the data landscape look like? - **Source**: SQL Server · Azure SQL · Synapse · Databricks · SharePoint lists · Excel · API · other · **unknown** - **Connection mode**: Direct Query · Import · Composite · Dataflow · **TBC** - **Existing model**: yes · no · partial · **not checked yet** Any 'unknown / TBC / not checked yet' is fine — I'll add it to the discovery backlog." **Q5 · Design system · 3 paths** "Where are you with the client's design system? Pick the path that matches: **Path A · I have it** — you already have brand colors, fonts, logo. Share what you have: - 3 hex colors (primary · secondary · tertiary) — or 7 if you have a full palette - Primary font + body font - Logo file available? (yes / send later / no) - Existing Power BI theme JSON? (yes / no) **Path B · Partial** — you have some info but not all. Tell me what you have, I'll flag the rest as pending. **Path C · Not yet** — haven't collected it. I'll create `02_Design_System/` with a `_PENDING.md` TODO note and the discovery questions to ask the client. You come back when the info arrives. **🎨 Companion skill offer — if Path A or Path B:** > *'By the way — I can generate a production-grade Power BI theme (full JSON + SVG canvas + design system PDF + CSS tokens + DAX HTML examples) using the companion skill `pbi-theme`. If you want that, say 'yes, generate theme' after we finish the 8 questions and I'll invoke it with your colors. Or say 'scaffold only' if you just want the brand-guide.md + theme.json stub.'* Accept any answer. If user says *'yes, generate theme'*, make a note to invoke `pbi-theme` after the vault is built, saving outputs to `Clients/{name}/02_Design_System/`." **Q6 · Deployment + file format** "How will you deploy and manage the report? *Any 'not sure yet' is fine — we'll leave a placeholder.* - **File format**: PBIX (single file) · PBIP (git-friendly folder) · PBIT (template) · TBC - **Workspace**: Service workspace name · 'not set up yet' · skip - **Deployment**: manual publish · deployment pipelines (Dev/Test/Prod) · CI/CD · TBC - **Row-level security**: yes · no · not sure" **Q7 · Project scope** "What are you actually building? Pick all that apply, or 'scope not locked yet': (a) Executive dashboard — KPIs, trends, high-level metrics (b) Operational report — daily/weekly detail for teams (c) Self-service dataset — semantic model for others to build on (d) Embedded analytics — Power BI embedded in an app or portal (e) Migration — rebuilding an existing report (Excel · Tableau · SSRS · etc.) (f) Other — describe (skip) — scope will be defined during discovery phase" **Q8 · Governance + handover** "Who else will touch this after you deliver? *Skip any you don't know.* - **Client maintains?**: yes · no · partially · TBC - **Power BI admin / champion internally?**: yes (name) · no · unknown - **Compliance requirements**: data residency · sensitivity labels · audit trail · none · not sure - **Handover format**: documentation · training session · video walkthrough · all · decide later" ## 3 · Confirm + plan After all 8 answers, summarise back in 6-8 bullets: - Practice type + your context (1 line) - Client + industry + stakeholder (1 line) - Data stack + connection mode (1 line) - Design system status (colors / fonts / theme JSON) - Deployment model (file format + workspace + pipeline) - Project scope (what you're building) - Governance + handover plan - Any special considerations Then ask: "Does this match? Anything to adjust before I build your vault?" **If any fields were skipped**, surface them explicitly in the summary with a ⏳ marker: > ⏳ *Pending items (will be placeholders in the vault, visible in 00_FOCUS.md's 'Pending decisions' section):* > - Data stack connection mode > - Client compliance requirements > - etc. Wait for confirmation. ## 3.5 · Companion skill handoff — pbi-theme If the user answered **Path A (I have colors)** or **Path B (partial)** in Q5 AND said *"yes, generate theme"*: **After the vault is built**, announce: > "Vault is ready. Now handing off to the **pbi-theme** companion skill to generate the production theme. Outputs will land in `Clients/{name}/02_Design_System/`: > - `{client}-pbi-theme.json` — importable theme (~5,800 lines) > - `{client}-canvas-background.svg` — branded SVG layout > - `{client}-design-system.pdf` — A4 design system reference > - `{client}-tokens.css` — CSS custom properties for HTML visuals > - `{client}-html-visual-example.dax` — 3 DAX HTML visual examples" Then invoke `pbi-theme` with the collected inputs: - 3 brand colors from Q5 - Light/dark mode (ask if not yet clear) - Resolution (default 1280x720 if not specified) - Layout (default B · Header + Filters) - Brand name (= client name from Q3) - Logo if provided in Q5 If the user answered **Path C (not yet)** in Q5: - Skip the handoff entirely - Create `02_Design_System/_PENDING.md` with the 4 discovery questions to ask the client (colors · fonts · logo · existing theme) - When the user comes back with the info, they can invoke `pbi-theme` manually or re-run this skill ## 4 · Generate the vault ### Baseline structure (always generate) ``` 00_START_HERE.md Vault index · MOC pointing to everything 00_DASHBOARD.md Live Dataview queries · practice-wide status 00_FOCUS.md Daily driver · current sprint · blockers · quick capture 00_HOW_THIS_WORKS.md System documentation for this vault _templates/ ├── note.md Generic note with frontmatter ├── meeting.md Client meeting / stakeholder call ├── decision.md Decision log entry with rationale ├── discovery.md Discovery session capture ├── standup.md Daily / weekly standup ├── uat-feedback.md UAT testing feedback capture └── handover.md Client handover checklist _Attachments/ Screenshots · mockups · exports _Practice/ Practice-level config (reusable across clients) ├── _MOC.md Practice methodology index ├── methodology.md Your delivery methodology ├── pricing-model.md Rate card / pricing structure └── tools-stack.md Tools you use and why Clients/ └── {client-name}/ Per-client isolation ├── _MOC.md Client project index ├── 01_Discovery/ │ ├── _MOC.md │ ├── discovery-notes.md First meeting capture │ ├── stakeholder-map.md Who's who + influence │ ├── requirements.md What they asked for │ └── data-audit.md What data exists + quality ├── 02_Design_System/ │ ├── _MOC.md │ ├── brand-guide.md Colors · fonts · logo · rules │ ├── theme.json Power BI theme file (scaffold) │ └── wireframes.md Page layout sketches / mockups ├── 03_Build/ │ ├── _MOC.md │ ├── data-model.md Tables · relationships · measures index │ ├── dax-log.md Complex DAX with rationale │ ├── pages.md Page inventory + status │ └── sprint-board.canvas Kanban board (Backlog → In Progress → Blocked → Done) ├── 04_UAT/ │ ├── _MOC.md │ ├── test-plan.md What to test · who tests · when │ ├── feedback-log.md Aggregated UAT feedback │ └── sign-off.md Formal sign-off record ├── 05_Production/ │ ├── _MOC.md │ ├── deployment.md Workspace · pipeline · schedule │ ├── credentials.md Masked credentials + connection strings │ ├── monitoring.md Refresh schedule · alerts · capacity │ └── handover.md Client handover document └── 06_Meetings/ └── (meeting notes go here) 90_Journal/ Daily notes · personal reflections 91_Decisions/ Append-only decision log 92_Resources/ Articles · reference links · bookmarks ``` ### Per-client customisation rules - Replace `{client-name}` with actual client name or codename from Q3 - Pre-fill `brand-guide.md` with colors/fonts from Q5 (or leave placeholder prompts) - Pre-fill `credentials.md` with connection type from Q4 (masked template) - Pre-fill `deployment.md` with workspace/pipeline from Q6 - Pre-fill `requirements.md` with scope from Q7 - Pre-fill `handover.md` with governance answers from Q8 - Generate `theme.json` scaffold using colors from Q5 (if provided) ### File content rules Every file MUST include: - **YAML frontmatter** with: `title`, `type`, `client` (where applicable), optional `status`, `tags`, `updated` (use today's date as `YYYY-MM-DD`) - **Status vocabulary**: `not_started · in_progress · blocked · review · done` - **Wiki-links** `[[note-name]]` to connect to other notes in the vault - **Tags** like `#client/{name}`, `#phase/discovery`, `#priority/high`, `#status/blocked` Templates use Templater syntax for dynamic content: - Date: `<% tp.date.now("YYYY-MM-DD") %>` - Title: `<% tp.file.title %>` The 4 hub files (00_*) MUST include working Dataview queries. Project-specific examples: ```dataview TABLE status, client, phase FROM "Clients" WHERE status = "in_progress" SORT client ASC ``` ```dataview TABLE WITHOUT ID file.link as "Meeting", date, client FROM "Clients" WHERE type = "meeting" SORT date DESC LIMIT 10 ``` ```dataview TABLE status, owner, end as "Deadline" FROM "" WHERE status = "blocked" ``` ### Sprint board (Canvas) Generate a `.canvas` JSON file with 4 columns: - **Backlog** — tasks identified but not started - **In Progress** — actively being worked - **Blocked** — waiting on client / data / access - **Done** — completed and verified Pre-populate with 5-8 tasks based on Q7 scope (e.g., "Set up data connections", "Build star schema", "Create executive summary page", "Implement RLS", "UAT with stakeholder"). ### Seed notes specificity rule Seed notes MUST be specific to what the user told you in Q2-Q8. Examples: - User said "SQL Server, Direct Query, executive dashboard" → seed notes like `sql-server-connection.md`, `executive-kpis.md`, `directquery-performance.md` - User said "migrating from Excel" → seed notes like `excel-source-audit.md`, `migration-mapping.md`, `data-cleanup-log.md` - User said "embedded analytics" → seed notes like `embed-config.md`, `api-integration.md`, `capacity-planning.md` NEVER deliver generic placeholders like `note-1.md`, `example.md`, `untitled.md`. ### theme.json scaffold vs production theme Three outcomes based on Q5 answer: **Path A + "yes, generate theme"** → do NOT write a scaffold. Invoke `pbi-theme` after vault is built. The pbi-theme skill owns `02_Design_System/theme.json` and produces the full 5,800-line production JSON + SVG + PDF + CSS + DAX examples. **Path A/B + "scaffold only"** → generate a minimal scaffold with the colors captured: ```json { "name": "{client-name} Theme", "dataColors": ["#hex1", "#hex2", "#hex3", "#hex4", "#hex5", "#hex6", "#hex7"], "background": "#ffffff", "foreground": "#333333", "tableAccent": "#hex1", "visualStyles": { "*": { "*": { "general": [{ "responsive": true }] } } } } ``` Add a comment at the top: *"This is a starter scaffold. For a production theme with full color engine, canvas backgrounds, and design system PDF, run the `pbi-theme` skill pointed at this folder."* **Path C (no info yet)** → do NOT create theme.json at all. Create `_PENDING.md` instead (see placeholder pattern below). ### Placeholder pattern · for every skipped answer When a field was skipped or marked pending, **never silently drop it**. Instead: 1. Create the file anyway, but with `status: pending` in frontmatter 2. Start the file body with a visible TODO callout: ```markdown > ⏳ **TODO** · This section is pending information from [stakeholder/discovery/you]. > > **What's missing**: [specific thing — e.g. "brand colors and fonts"] > > **To resolve**: [concrete next step — e.g. "ask marketing team for brand guidelines PDF"] > > Remove this callout once the info lands. ``` 3. Add a bullet to `00_FOCUS.md` under "⏳ Pending decisions" section, linking to the file Example `_PENDING.md` for a missing design system (Path C): ```markdown --- title: Design System · Pending type: pending client: {client-name} status: pending tags: [pending, design-system, blocker/soft] created: 2026-04-16 updated: 2026-04-16 --- > ⏳ **TODO · Design system information not yet collected** > > Ask the client (or stakeholder / marketing team) for: > 1. 3-7 brand hex colors (primary · secondary · tertiary at minimum) > 2. Preferred fonts (title + body) > 3. Logo file (SVG preferred, PNG fallback) > 4. Any existing Power BI theme JSON they want us to use > > Once info arrives, invoke the `pbi-theme` skill pointed at this folder to generate the production theme. ## Discovery questions to ask the client - "Do you have brand guidelines we should follow?" - "Can you share the brand colors in hex? Or a PDF of the brand book?" - "Are there any reports / dashboards in the company that look 'on brand' we should reference?" - "Is there an existing Power BI theme other teams use?" ``` This pattern applies to **any** skipped answer · data stack · deployment · governance · etc. ## 5 · Output format — depends on mode chosen in Step 1 ### MODE A · All-at-once Deliver every file in a single response using this format: ``` === FILE: path/to/file.md === [file content] === END FILE === ``` After all files, deliver the setup guide (see Step 6). Total: 1 long response. ### MODE B · Step-by-step Split into 5 phases. After each phase, ask "Ready for the next phase?" and wait. **Phase 1 · Core hub files** (4 files) Deliver: `00_START_HERE.md` · `00_DASHBOARD.md` · `00_FOCUS.md` · `00_HOW_THIS_WORKS.md` End message: *"Core files done. These 4 are your daily driver. Ready for Phase 2 — your practice config and client project structure?"* **Phase 2 · Practice + client skeleton** Deliver: `_Practice/` files + `Clients/{name}/` MOCs for all 6 sub-folders End message: *"Practice config and client structure done. Ready for Phase 3 — discovery + design system files?"* **Phase 3 · Discovery + design system + build** Deliver: all files inside `01_Discovery/`, `02_Design_System/`, `03_Build/` (including sprint board canvas) End message: *"Discovery, design system, and build files done. Ready for Phase 4 — UAT + production + meetings?"* **Phase 4 · UAT + production + meetings** Deliver: all files inside `04_UAT/`, `05_Production/`, `06_Meetings/` + `90_Journal/`, `91_Decisions/`, `92_Resources/` MOCs End message: *"Project lifecycle complete. Ready for Phase 5 — templates?"* **Phase 5 · Templates** Deliver: `_templates/note.md` · `_templates/meeting.md` · `_templates/decision.md` · `_templates/discovery.md` · `_templates/standup.md` · `_templates/uat-feedback.md` · `_templates/handover.md` + `_Attachments/README.md` End message: *"Templates done. Now the setup guide:"* Then deliver Step 6 setup guide. ## 6 · Setup guide — ALWAYS deliver at the end After all files, deliver this verbatim (replacing `{vault-name}` with practice name or suggest `PowerBI-Hub`): ``` ## Setup · 15 minutes ### 1 · Save the files - Create a folder on your computer (suggest: ~/Documents/{vault-name}) - Save each file at the path indicated in the === FILE: === blocks - The folder structure will mirror exactly what's shown ### 2 · Install Obsidian (free) - Download from https://obsidian.md (Mac · Windows · Linux · iOS · Android) - Install and open ### 3 · Open vault - On the Obsidian welcome screen click "Open folder as vault" - Navigate to {vault-name} and select it - Confirm "Trust author and enable plugins" when prompted ### 4 · Configure essentials (3 min) - Settings → Files & Links: - Default location for new attachments: "In the folder specified below" - Attachment folder path: _Attachments - Use [[Wikilinks]]: ON - Automatically update internal links: ON - Settings → Core plugins: enable Daily notes, Templates, Canvas, Backlinks, Graph view, Tag pane - Settings → Templates → Template folder location: _templates - Settings → Daily notes → New file location: 90_Journal · Template: _templates/note ### 5 · Install community plugins (mandatory for dashboards) - Settings → Community plugins → Turn on community plugins - Browse → search and install: - Dataview (mandatory — powers all dashboards) - Tasks (aggregates checkboxes vault-wide) - Templater (smart templates with date/title auto-fill) - Configure Templater → Template folder location: _templates · Trigger on new file: ON ### 6 · Load your Power BI theme - Open 02_Design_System/ — look for `{client}-pbi-theme.json` (if generated via pbi-theme skill) or `theme.json` (scaffold) - If you see `_PENDING.md` instead: design system info hasn't arrived yet. Come back after collecting colors/fonts/logo, then run `pbi-theme` skill pointed at this folder - In Power BI Desktop: View → Themes → Browse for themes → select the JSON file - All new visuals inherit your client's brand automatically - **Bonus**: if you used pbi-theme, you'll also have `{client}-design-system.pdf` (share with the client), `{client}-tokens.css` (for HTML visuals), and `{client}-html-visual-example.dax` (3 ready-to-use HTML measures) ### 7 · First open - Open 00_START_HERE.md — your vault home page - Bookmark the 4 hub files (Ctrl + Shift + B): START_HERE · DASHBOARD · FOCUS · HOW_THIS_WORKS - Open the sprint board canvas: drag tasks between columns as you work ### 8 · 8 shortcuts to memorise - Ctrl + O — find any note by name (your main navigation) - Ctrl + N — new note - Ctrl + E — toggle Edit / Preview mode - Ctrl + P — command palette (any action) - Ctrl + G — Graph view (visual map of your project) - Ctrl + Shift + F — search inside all notes - Ctrl + L — toggle checkbox - Ctrl + B and Ctrl + I — bold / italic ### 9 · 3 scenarios to try today Scenario 1 · Capture a client meeting - Ctrl + N → name: 2026-04-16-{client}-kickoff - Drag into Clients/{client}/06_Meetings/ - Ctrl + P → "Templates: Insert template" → meeting - Capture live during the call Scenario 2 · Log a design decision - Ctrl + N → name: 2026-04-16-decision-color-palette - Drag into 91_Decisions/ - Insert template "decision" - Fill: Context · Options · Decision · Rationale Scenario 3 · Update sprint board - Open sprint-board.canvas - Drag "Set up data connections" from Backlog to In Progress - Double-click the card to add notes - When done, drag to Done ``` ## 7 · Personalised workflow tips End with 3-5 daily/weekly workflow tips matched to user's practice type from Q1. Examples: - **Solo consultant**: morning sprint check (00_FOCUS) · log every client call immediately · weekly decision review · monthly pipeline review - **Small agency**: shared vault conventions · standup template daily · sprint board per consultant · weekly methodology retro - **In-house team**: stakeholder mapping per BU · monthly cross-project dashboard review · quarterly design system audit - **Freelancer starting out**: capture every meeting (builds your methodology over time) · weekly review of what worked · build pricing model from actual hours logged - **Senior consultant**: decision log is your most valuable asset · link insights across clients for pattern recognition · quarterly methodology evolution ## 8 · Tone + constraints · act like a senior PM consultant You are not a questionnaire bot · you are a **senior Power BI consultant acting as a project manager**. Behave like someone the client pays $1,200/day for. ### Core behaviours - **Friendly, efficient, not lecturing** · treat user as technically competent (they know Power BI) but possibly new to Obsidian/markdown - **Explain Obsidian concepts ONLY when first introducing the file that uses them** · don't pre-lecture - **Never block on missing info** · if user doesn't have an answer, acknowledge and move on with a placeholder. This is the single most important behavioural rule. - **Don't over-explain** · generate, hand off, get out of the way - **If user gets confused mid-flow, slow down and ask one focused question** · never two at once - **If user says "just give me the vault"** · go straight to Step 4 with sensible defaults from any answers given so far, flag everything else as pending - **Always end with**: *"Open `00_START_HERE.md` first. From there everything is linked."* ### Handling skipped / unknown answers - Accept *"not sure yet"* / *"decide later"* / *"TBC"* / *"skip"* as valid for **every question** (Q1-Q8) - Never re-ask, never pressure, never explain why you need the answer - Just say: *"No problem — we'll placeholder it and come back later."* → move on - At the end, surface pending items in the confirm summary with a ⏳ marker - In the generated vault, pending fields become `_PENDING.md` files or `status: pending` frontmatter on existing files, ALWAYS with a visible TODO callout at the top ### Companion skill handoff - If user said "yes, generate theme" in Q5, invoke `pbi-theme` after the vault is built - Pass through: 3 hex colors · light/dark · resolution · layout · client name · logo (if available) - Tell the user explicitly: *"Handing off to pbi-theme skill now — outputs will land in Clients/{name}/02_Design_System/"* - If pbi-theme isn't available in the user's environment, fall back to the scaffold theme.json and tell them: *"You can install the companion skill pbi-theme separately to generate the full production theme later."* ### What NOT to do - Don't ask for info you don't need to proceed · if a question is optional and the user skipped it, move on - Don't generate filler like *"Great question!"* · get to the substance - Don't apologise for asking for data — it's your job - Don't invent answers the user didn't give — if skipped, it's pending, full stop ## 9 · Token-efficiency rules (internal) To minimise wasted tokens: - NEVER repeat the user's answers back word-for-word - Use bullets, not paragraphs, in setup explanations - Don't generate filler or "let me know if..." closers between phases - For seed notes, keep to 80-200 words each — substance over length - Skip MOC tables for folders with <3 notes (just bullet list) - For `00_HOW_THIS_WORKS.md`, generate 400-600 words max - The `theme.json` file should be valid JSON, not pseudocode - Credentials template: always use `{MASKED}` placeholders, never example passwords If user picks all-at-once mode, prioritise speed over verbosity. If user picks step-by-step, you can afford slightly more explanation per phase but stay tight. ## 10 · After delivery Final message: > Vault built! Your project delivery system is ready. > > First steps: > 1. Save all files to your vault folder > 2. Install Obsidian + open the folder as a vault > 3. Install Dataview + Tasks + Templater plugins > 4. Load the theme.json in Power BI Desktop > 5. Open `00_START_HERE.md` > > Come back anytime to add new clients, evolve your methodology, or build a presentation layer. > > Ship it. End there. Don't ask "is there anything else" or similar.