# Rebuild this dashboard with **your own data** — Cowork prompt

Open Claude (desktop, Cowork mode) and paste the prompt below into a new conversation.
Drop your CSV exports as attachments (or point Claude at a folder).
Claude will produce a personalised `Portfolio-Overview.html` that opens in any browser.

---

## How to use this file

1. Open the Claude desktop app in **Cowork mode** (the one with file access).
2. Click the **paperclip / attach** icon and drop these files in the chat:
   - Your `campaigns.csv` (Google Ads export, last 30–90 days)
   - *(Optional)* `accounts.json` or any list of accounts you manage
   - *(Optional)* `Portfolio-Overview-Dashboard.html` from this zip — Claude uses it as the visual template
3. Copy the **entire prompt below** (everything between the two `===` lines).
4. Paste it into the Claude chat and press send.
5. When Claude finishes, it saves a new HTML file to your selected folder. Open it in any browser.

---

## ============================== COPY FROM HERE ==============================

You are my PPC portfolio analyst. I'm giving you a Google Ads CSV export (and maybe an `accounts.json`) from my agency. Build me a **single self-contained HTML dashboard** in the exact visual style of the attached `Portfolio-Overview-Dashboard.html` template — same layout, same dark theme, same sections — but populated with my real data.

### Step 1 — Read the data
- Parse every CSV/JSON I attached.
- If a column is missing, infer it (e.g. compute pacing = MTD spend ÷ (monthly budget × day-of-month ÷ days-in-month) × 100).
- Group rows by account name. Sum spend, conversions; compute CPA = spend ÷ conversions.
- Compute the 7-day / 14-day / 30-day windows whenever the data has dates.

### Step 2 — Classify each account
For every account, assign:

- **Health state** — one of: `healthy`, `watch`, `ramp`, `alert`
  - `alert` if pacing < 50% or > 200%
  - `watch` if pacing in 70–84% or 116–145%, OR CPA over target by ≥30%
  - `ramp` if account has < 45 days of data OR < 20 conversions over 30d
  - `healthy` otherwise
- **tCPA action** — one of: `RISK`, `DIAGNOSE`, `RAISE`, `LOWER`, `MIGRATE`, `HOLD`
  - `RISK` — CPA ≥ 2× target, or huge spend with no conversions
  - `DIAGNOSE` — performance dropped > 25% week-over-week
  - `RAISE` — CPA at/under target AND lost impression share due to rank > 30%
  - `LOWER` — CPA above target by 15–30% with stable volume
  - `MIGRATE` — currently on Manual CPC / Max Clicks / eCPC and has ≥ 30 conversions in 30d
  - `HOLD` — none of the above; keep as is

### Step 3 — Generate the Daily Briefcase
Pick the **top 3 movers** (biggest absolute pacing or CPA change week-over-week).
Pick **up to 3 hidden risks** (tracking gaps, wasted spend on cost/cheap/price queries, disapproved ads, huge mobile/desktop deltas, conversion lag).
Pick **up to 3 opportunities** (accounts under pacing with room to scale, CPA under target with rank loss, untapped match types, low-hanging RSAs).

### Step 4 — Write the weekly action list
4–6 specific, named actions. Each line names the account and the lever ("Raise tCPA on Summit Pro Roofing by 15% Monday."). No generic advice.

### Step 5 — Render the HTML
Use the attached `Portfolio-Overview-Dashboard.html` as the **visual template**:
- Same CSS variables, same panel layout, same donut + bar charts.
- Replace the embedded `__PORTFOLIO_JSON__` and `__ACCOUNTS_JSON__` blocks with **my data**.
- Replace the agency name, MCC ID, totalAccounts, specialists at the top.
- Keep the file **self-contained** (no external scripts, no CDN, no fonts). The whole dashboard must work when double-clicked offline.

### Step 6 — Save it
Save the new file to my selected folder as:
`Portfolio-Overview-<agency-slug>-<YYYY-MM-DD>.html`

Then give me a `computer://` link to open it.

### Output rules
- Don't print the HTML in chat — write it to the file and link it.
- If a chart would be empty (no data), hide that section gracefully.
- Round money to whole dollars in the table; keep two decimals in CPA.
- If my CSV uses a different currency (CAD, BRL, EUR), detect it from the column and use the matching symbol.
- **Never invent accounts** that aren't in my data. If I only attached 3 accounts, the table shows 3 rows.
- If you're unsure about a classification, default to `HOLD` / `healthy` and flag it in the chat after saving.

### What I want you to ask me before starting
1. What's the **monthly budget** for each account? (If not in the CSV, ask once and remember.)
2. What's my **target CPA** for each vertical or account? (If not given, infer from the median CPA of healthy accounts and flag it.)
3. **What date is today?** (So pacing math is correct.)

Now ingest the attached files and confirm what you found before you start writing the HTML.

## ============================== STOP COPYING HERE ==============================

---

## Pro tips

- **Re-run weekly.** Drop your fresh CSV in the same chat next Monday and say *"refresh"* — Claude reuses the answers you gave the first time.
- **Different agencies / different brands.** Run this prompt in a separate Cowork folder for each brand. Each folder = one self-contained dashboard.
- **Connect Google Ads directly.** If you connect a Google Ads MCP or Supermetrics connector in Cowork, change *"the attached CSV"* to *"my Google Ads account, last 30 days"* — Claude pulls it live.
- **Customize the look.** Tell Claude *"use these brand colors: #XXXXXX accent, #YYYYYY background"* — it rewrites the CSS variables at the top of the HTML.

## What you'll need

- Google Ads CSV export from any view that includes: Account, Cost, Conversions, Cost/conv., Impressions, Clicks.
- Optionally: monthly budgets, target CPA per account, currency, vertical tags.

That's it. No API setup, no spreadsheets, no engineering.
