Cloud cost tracking
What you’ll build: a daily spend dashboard — today’s total with a trend, plus a breakdown by service — fed by a job that reads your cloud billing API. Catch cost spikes before the invoice does.
pulsedeck.app / dashboards / cost
SCREENSHOT
Finished cost dashboard: a total-spend metric, a 30-day spend chart, and a by-service table.
Drop an image into public/shots/ and pass src.
What you’ll need
Section titled “What you’ll need”- PulseDeck running (Quickstart).
- A registered source and its
pd_…API key. - Access to your cost data (AWS Cost Explorer, GCP Billing, a provider export).
1. Plan the structure
Section titled “1. Plan the structure”- Category:
cost - Stream:
daily(or one stream per cloud account/project)
2. Send the report
Section titled “2. Send the report”A daily job posts a metric for total spend, a chart for the trend, and a table breaking spend down by service. Add an alert when spend crosses a threshold you set.
curl -X POST http://localhost:3001/api/v1/reports \ -H "Authorization: Bearer pd_xxxxx" \ -H "Idempotency-Key: cost-2026-06-23" \ -H "Content-Type: application/json" \ -d @cost.json{ "version": "1.0", "source": { "id": "src_…" }, "category": { "slug": "cost" }, "stream": { "slug": "daily" }, "report": { "title": "Cloud spend — 2026-06-23", "summary": "Spend up 18% — compute spike.", "severity": "warning", "occurred_at": "2026-06-23T05:00:00Z", "tags": ["cost"] }, "blocks": [ { "id": "total", "type": "metric", "key": "spend", "label": "Spend (today)", "value": 412.5, "unit": "USD", "format": "currency", "precision": 2, "trend": "up", "sentiment": "negative", "delta": 63, "comparison_label": "vs yesterday" }, { "id": "trend", "type": "chart", "variant": "area", "title": "Daily spend", "labels": ["Mon", "Tue", "Wed", "Thu", "Fri"], "unit": "USD", "series": [{ "name": "Spend", "data": [340, 355, 360, 349, 412] }] }, { "id": "by-service", "type": "table", "title": "By service", "columns": [ { "key": "service", "label": "Service", "type": "string" }, { "key": "cost", "label": "Cost", "type": "number", "unit": "USD" } ], "rows": [ { "service": "Compute", "cost": 268.0 }, { "service": "Storage", "cost": 96.5 }, { "service": "Egress", "cost": 48.0 } ] }, { "id": "spike", "type": "alert", "title": "Spend above daily budget", "severity": "warning", "message": "Compute is 18% over the $350/day budget." } ]}3. Build the dashboard
Section titled “3. Build the dashboard”- A metric widget for total spend.
- A chart widget for the 30-day trend.
- An alert_feed on the
costcategory for budget breaches.
{ "version": 1, "widgets": [ { "id": "t", "type": "metric", "span": "third", "row": 0, "config": { "streamId": "str_daily", "metricKey": "spend", "label": "Spend (today)" } }, { "id": "tr", "type": "chart", "span": "half", "row": 0, "config": { "streamId": "str_daily", "metricKey": "spend", "variant": "area", "range": "30d" } }, { "id": "al", "type": "alert_feed", "span": "full", "row": 1, "config": { "categoryId": "cat_cost", "limit": 10 } } ]} pulsedeck.app / dashboards / cost / edit
SCREENSHOT
Builder with a spend metric, a trend chart, and a budget-alert feed.
Drop an image into public/shots/ and pass src.
Make it your own
Section titled “Make it your own”- Per account/project — one stream each under
cost; compare them side by side. - Per client (agencies) — bill-back reporting: each client’s cloud spend in their own workspace.
- Threshold alerts — only emit the alert block when spend crosses budget, so the feed stays signal.