Claude Prompt Library

30 Claude Prompts That Build Agency Dashboards

30 copy-paste prompts

Describe the agency you run and Claude returns a working dashboard as one self-contained HTML file with sample clients, hours, and fees you can click in the chat. Prompts for clients, utilization, pipeline, delivery, retainer health, and profit. Not "give me a chart."

In short: This page contains 30 copy-paste ready prompts, organized into 6 categories with a description and pro tip for each. The first 5 prompts are free instantly, no signup needed. Hand-curated and tested by the AI Academy team.

Louis Corneloup
By Louis Corneloup ยท Founder, Techpresso
Last updated ยทHand-curated & tested by the AI Academy team

Clients

5 prompts

Client Book Overview

1/30

โœจ What it does

Claude builds a client book overview for [AGENCY NAME] with active retainers, project mix, and a concentration callout as a working screen you can click in the chat. Click a client row, then swap the sample numbers for your live book.

You are an agency operations analyst who builds client-book dashboards a managing partner can run on Monday. <context> I need a client book overview as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample clients so it opens as a working screen I can click in the chat. </context> <inputs> - Agency name: [AGENCY NAME] - Period: [E.G. THIS MONTH] - Fee types: [E.G. RETAINER, PROJECT, MEDIA] - Account owners: [3-6 NAMES] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a header for [AGENCY NAME] and the period; KPI cards (active clients, monthly fees, retainer share, largest-client share); a stacked bar of fees by type; a donut of fees by owner; a sortable client table (name, type, monthly fee, owner, status, last invoice); and a concentration callout if any client is over an editable percent of fees. Keep clients in labeled JS constants and compute every total and share from that array. Clicking a type chip or owner chip filters the table. </task> <constraints> - One self-contained HTML file; only one charting library from a CDN. - All data lives in clearly labeled JS constants near the top so I can swap in my own. - Currency formatted consistently. Over-concentration rows flagged. Responsive grid, accessible contrast, no lorem ipsum. - Do not invent CRM logins or live billing APIs. Sample data only, with a note on where an invoice export would go. </constraints> <format> Return the full HTML file, then list which constants to replace and how largest-client share is calculated. </format>

๐Ÿ’ก

Pro tip: Name the real account owners and fee types (retainer, project, media). A blended book hides the one client that is carrying the month.

Client Profitability Scorecard

2/30

โœจ What it does

Claude builds a client profitability scorecard for [CLIENT LIST] with revenue, delivery cost, and margin by account as a working screen you can click in the chat. Sort the thinnest margin, then drop your real hours and fees over the sample numbers.

You are an agency finance partner who builds client profitability scorecards a weekly review can trust. <context> I need a client profitability dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample accounts so it opens as a working screen I can click in the chat. </context> <inputs> - Clients to score: [CLIENT LIST] - Period: [E.G. LAST 90 DAYS] - Cost basis: [E.G. HOURS TIMES INTERNAL RATE PLUS CONTRACTORS] - Margin target: [E.G. 45%] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a KPI row (fees, delivery cost, blended margin, clients below target); a horizontal bar of margin % by client from [CLIENT LIST]; a scatter of fees versus margin; a sortable table (fees, hours, delivery cost, margin $, margin %, versus target); and a below-target watchlist. Compute delivery cost and margin from labeled fee, hour, rate, and contractor constants. Clicking a client highlights the bar and the table row. Show the margin formula on the page. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Margin is computed, not hardcoded. Guard divide-by-zero on zero fees. - Below-target rows flagged red with a text label. Sortable table. Accessible contrast. - Do not invent tax or partner-split advice. Score only. </constraints> <format> Return the full HTML file, then write the margin formula and which arrays to replace with an invoice and time export. </format>

๐Ÿ’ก

Pro tip: Use fully loaded delivery cost (people time plus contractors), not salary only. Cheap-looking clients often hide the contractor line.

Client Concentration Risk

3/30

โœจ What it does

Claude builds a client concentration board for [REVENUE MIX] with share of billings and a too-big-to-lose flag as a working screen you can click in the chat. Open the largest account, then replace the sample numbers with this quarter's invoices.

You are an agency operator who builds concentration boards that show when one client owns the payroll. <context> I need a client concentration dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample billings so it opens as a working screen I can click in the chat. </context> <inputs> - Revenue mix to seed: [REVENUE MIX] - Period: [E.G. THIS QUARTER] - Concentration flag: [E.G. ANY CLIENT OVER 25%] - Top-N to highlight: [E.G. TOP 3] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a KPI row (clients, top-1 share, top-3 share, clients over the flag); a Pareto bar of fees by client from [REVENUE MIX]; a cumulative-share line; a table with rank, fees, share, and a too-big-to-lose badge; and a callout that names what percent of fees walk if the largest client churns. Compute shares from the fees array. Clicking a bar filters the table to that client and shows trailing months if you include a monthly breakdown constant. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Shares recompute from fees. Show the flag rule on the page. - Flagged rows visually loud with a text badge, not color alone. - Do not invent a replacement-pipeline plan. Numbers only. </constraints> <format> Return the full HTML file, then explain share math and which fee array to replace. </format>

๐Ÿ’ก

Pro tip: Set the flag at the share that would force a layoff if they left, not at a generic 20 percent. The board should scare the right account.

Client Health Watchlist

4/30

โœจ What it does

Claude builds a client health watchlist for [HEALTH SIGNALS] with unused hours, late invoices, and renewal risk as a working screen you can click in the chat. Open an at-risk row, then swap the sample numbers for your account notes.

You are an agency account-operations analyst who builds client health watchlists, not vanity NPS walls. <context> I need a client health dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample accounts so it opens as a working screen I can click in the chat. </context> <inputs> - Signals and weights: [HEALTH SIGNALS] - Score bands: [E.G. HEALTHY 70+, WATCH 50-69, RISK BELOW 50] - Period: [E.G. THIS MONTH] - Number of accounts: [E.G. 16] - Owners: [NAMES] </inputs> <task> Build the dashboard with: a KPI row (healthy, watch, risk, risk fees); a stacked bar of band by owner; a sortable table (client, fees, each raw signal, computed score, band, owner); a risk watchlist sorted worst first; and a formula callout that shows the weights from [HEALTH SIGNALS]. Generate raw signals in labeled JS arrays and compute the score from editable weights. Clicking a band chip filters the table. Band badges use a text label plus color. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Score is computed from the weighted formula, not hardcoded on each row. - Accessible contrast. Responsive layout. Data constants at the top with comments. - Do not invent CSAT surveys I did not list as a signal. </constraints> <format> Return the full HTML file, then explain the formula and which signal array to replace. </format>

๐Ÿ’ก

Pro tip: Weight the one signal that actually predicts a cancel in your shop (unused hours, unpaid invoices, or a quiet Slack). Equal weights hide the account that is about to leave.

Scope Creep Tracker

5/30

โœจ What it does

Claude builds a scope-creep tracker for [PROJECT NAME] with out-of-scope hours, change requests, and a fee-at-risk note as a working screen you can click in the chat. Click a creep row, then swap the sample numbers for your time entries.

You are an agency project analyst who builds scope-creep boards that turn extra hours into a conversation before they become a write-off. <context> I need a scope-creep tracker as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample time and change requests so it opens as a working screen I can click in the chat. </context> <inputs> - Project to lead with: [PROJECT NAME] - Other open projects: [LIST OR INVENT 5] - Sold hours and fee: [NUMBERS] - Tag set: [IN SCOPE, GRAY AREA, OUT OF SCOPE] - Change-request statuses: [DRAFT, SENT, APPROVED, REJECTED] </inputs> <task> Build the dashboard with: a project selector defaulting to [PROJECT NAME]; KPI cards (sold hours, used hours, out-of-scope hours, unpriced CR hours, fee at risk using an editable internal rate); a stacked bar of hours by tag; a CR table (id, hours, fee impact, status); a time table of out-of-scope rows; and a callout of whether approved CRs cover the creep. Compute fee at risk from unpriced out-of-scope hours times the rate. Selecting a project updates every widget. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Time and CRs in labeled JS constants at the top. - Unpriced creep flagged. Show the rate and the fee-at-risk formula. - Do not invent legal SOW language. Hours and status only. </constraints> <format> Return the full HTML file, then write the fee-at-risk math and which arrays to replace with a time and CR export. </format>

๐Ÿ’ก

Pro tip: Tag time as in-scope, gray-area, or out-of-scope the way your PM already argues it. A single dump of hours cannot show creep.

Utilization

5 prompts

Billable Utilization Board

6/30

โœจ What it does

Claude builds a billable utilization board for [TEAM ROSTER] with target percent, billable hours, and a bench list as a working screen you can click in the chat. Check the lowest person, then replace the sample numbers with this week's timesheets.

You are an agency resourcing analyst who builds utilization boards that are fair to people and honest to the book. <context> I need a billable utilization dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample hours so it opens as a working screen I can click in the chat. </context> <inputs> - People: [TEAM ROSTER] - Period: [E.G. THIS WEEK OR LAST 4 WEEKS] - Utilization target: [E.G. 75%] - Available hours rule: [E.G. 40 MINUS PTO MINUS HOLIDAY] - Hour types: [BILLABLE, INTERNAL, SALES, PTO] </inputs> <task> Build the dashboard with: a KPI row (team utilization, people below target, people over 95%, bench hours); a horizontal bar of utilization by person from [TEAM ROSTER] with a target line; a stacked bar of hour types; a table (available, billable, internal, sales, PTO, utilization); and a bench list of anyone under an editable low band. Utilization = billable / available. Available comes from the rule, not from a hardcoded 40. Person chips filter the type split. Show the formula on the page. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Hours in labeled JS constants at the top. Rates and percents computed. - Below-target amber, overload red, with text labels. Accessible contrast. - No hero or slacker labels. Numbers only. </constraints> <format> Return the full HTML file, then write the utilization and available-hours rules and which array to replace with a time export. </format>

๐Ÿ’ก

Pro tip: Count only hours people will actually sit at a desk. PTO, holidays, and recurring internal meetings are the usual lie in a utilization board.

Role Utilization Mix

7/30

โœจ What it does

Claude builds a role utilization mix for [ROLE LIST] with billable, internal, and sales hours as a working screen you can click in the chat. Toggle a role chip, then drop your real hour splits over the sample numbers.

You are an agency resourcing analyst who builds role-mix utilization dashboards a department lead can staff from. <context> I need a role utilization mix dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample hours so it opens as a working screen I can click in the chat. </context> <inputs> - Roles: [ROLE LIST] - People per role: [COUNTS OR NAMES] - Target by role: [E.G. DESIGN 80%, ACCOUNT 60%, PRODUCER 70%] - Period: [E.G. LAST 4 WEEKS] - Hour types: [BILLABLE, INTERNAL, SALES, BENCH] </inputs> <task> Build the dashboard with: role chips from [ROLE LIST]; KPI cards for the selected role (headcount, utilization versus that role's target, billable hours, bench hours); a grouped bar of utilization by role versus target; a stacked hour-type mix by role; a people table filtered to the selected role; and a callout of the role furthest from target. Compute role utilization as sum(billable) / sum(available) for people in that role. Chips update cards, table, and callout without a reload. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - People and hours in labeled JS constants. Targets editable. - Off-target roles flagged. Accessible contrast. Responsive layout. - Do not invent hiring plans. Show the gap only. </constraints> <format> Return the full HTML file, then explain role-roll-up math and which constants to replace. </format>

๐Ÿ’ก

Pro tip: Keep designers, producers, and account people on separate chips. A blended creative number hides the producer who is drowning.

Bench Versus Overload Heatmap

8/30

โœจ What it does

Claude builds a bench versus overload heatmap for [UTILIZATION BAND] with people, weeks, and hot cells as a working screen you can click in the chat. Hover a hot cell, then swap the sample numbers for booked hours.

You are an agency resourcing planner who builds utilization heatmaps a studio lead can read in ten seconds. <context> I need a bench versus overload heatmap as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample bookings so it opens as a working screen I can click in the chat. </context> <inputs> - Utilization band: [UTILIZATION BAND] - People: [NAMES] - Weeks to show: [E.G. LAST 8] - Booked versus available hours: [HOW I MEASURE] - Work types: [E.G. CLIENT, INTERNAL, SALES] </inputs> <task> Build the dashboard with: KPI cards (team utilization, people over the band, people under the band, weeks with a team gap); a person-by-week heatmap colored by utilization versus [UTILIZATION BAND]; a click-through that shows that cell's work-type split; a team trend line; and a table of people with average, min, max. Utilization = booked / available. Cells are buttons, not just color, and show the percent label. A work-type toggle recalculates if I exclude internal time. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Booking rows in labeled JS constants at the top. - Color plus a percent label so the heatmap is not color-only. Accessible contrast. - No ranking language. Numbers only. </constraints> <format> Return the full HTML file, then explain utilization math and which array to replace with a booked-hours export. </format>

๐Ÿ’ก

Pro tip: Set a band (for example 70 to 85 percent), not a single hero number. Both idle and crushed weeks should light up.

Timesheet Completeness Board

9/30

โœจ What it does

Claude builds a timesheet completeness board for [TIMESHEET WEEK] with missing entries, late submitters, and a lock status as a working screen you can click in the chat. Open a missing row, then replace the sample numbers with your time tool export.

You are an agency operations coordinator who builds timesheet completeness boards so Friday lock does not become Monday fiction. <context> I need a timesheet completeness dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample timesheets so it opens as a working screen I can click in the chat. </context> <inputs> - Week ending: [TIMESHEET WEEK] - People expected to submit: [NAMES] - Expected hours: [E.G. 40 OR PER PERSON] - Lock time: [E.G. FRIDAY 17:00 LOCAL] - Statuses: [MISSING, DRAFT, SUBMITTED, LOCKED, LATE] </inputs> <task> Build the dashboard with: a header for [TIMESHEET WEEK]; KPI cards (expected people, submitted, missing, late, hours still blank); a status bar; a people table (name, hours entered, expected, status, submitted-at, hours by client); a missing-and-late watchlist; and a client-hours rollup for submitted rows only. Compute status from submitted-at versus lock time and from hours entered versus expected. A status chip filters the table. Search by name works. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Timesheet rows in labeled JS constants at the top. - Missing and late rows flagged. Timezone labeled as a constant. - Do not invent a live time-tracking socket. Sample plus a note for an export. </constraints> <format> Return the full HTML file, then explain status rules and which array to replace. </format>

๐Ÿ’ก

Pro tip: Age from the week-ending lock, not from last login. A person who opened the tool still has a blank Friday.

Capacity Versus Booked Hours

10/30

โœจ What it does

Claude builds a capacity versus booked board for [HORIZON WEEKS] with available hours, sold hours, and a gap week as a working screen you can click in the chat. Check the overbooked week, then swap the sample numbers for your staffing plan.

You are an agency resourcing planner who builds capacity-versus-booked boards that show the week you will break before it happens. <context> I need a capacity versus booked dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample hours so it opens as a working screen I can click in the chat. </context> <inputs> - Horizon: [HORIZON WEEKS] - People and weekly available hours: [ROSTER] - Sold work by week: [HOURS OR "INVENT PLAUSIBLE"] - Soft-hold / likely work by week: [HOURS] - Overbook rule: [E.G. SOLD OVER 100% OF AVAILABLE] </inputs> <task> Build the dashboard with: a KPI row (available hours this week, sold, soft-hold, first week over the rule); a grouped bar of available versus sold versus sold-plus-soft by week across [HORIZON WEEKS]; a people table for the selected week (available, sold, remaining, overbook flag); a gap callout that lists what to slip or hire; and week chips that filter the people table. Compute remaining as available minus sold. Soft-hold is shown but does not count as sold unless I toggle it on. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Roster, sold, and soft-hold in labeled JS constants. - Over 100% red, 80-100% amber. Accessible contrast. - Do not invent a hiring plan. Show the gap number and the week it hits. </constraints> <format> Return the full HTML file, then write remaining and overbook rules and which constants to replace. </format>

๐Ÿ’ก

Pro tip: Book sold work and likely-to-close work as two layers. Treating every proposal as sold will fake a full bench.

Pipeline

5 prompts

Agency Pipeline Coverage

11/30

โœจ What it does

Claude builds an agency pipeline coverage board for [SALES PERIOD] with proposals, weighted value, and a gap to target as a working screen you can click in the chat. Click the thinnest stage, then drop your real open deals over the sample numbers.

You are a revenue-operations analyst who builds pipeline coverage dashboards for agency leads. <context> I need an agency pipeline coverage dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample proposals so it opens as a working screen I can click in the chat. </context> <inputs> - Period and fee target: [SALES PERIOD] - Stages in order: [E.G. LEAD, DISCOVERY, PROPOSAL, NEGOTIATION, VERBAL] - Target coverage multiple: [E.G. 2.5X] - Deal types: [RETAINER, PROJECT] - Owners: [3-6 NAMES] </inputs> <task> Build the dashboard with: a header for [SALES PERIOD] and the target; KPI cards (open fees, weighted fees, coverage versus target, gap); a bar of fees by stage with a target line; a coverage-multiple callout; a table of owners with open, weighted, and coverage; and a type split (retainer versus project). Generate plausible proposals in labeled JS arrays and compute weighting from editable stage probabilities. Type chips filter the table. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Coverage and weighted totals recompute from the proposals array. - Below-target coverage flagged. Currency consistent. Responsive and accessible. - Data constants grouped at the top with comments. </constraints> <format> Return the full HTML file, then explain the coverage math and where to paste a real proposal export. </format>

๐Ÿ’ก

Pro tip: Give Claude your real stage names and the coverage multiple you expect. A 3x software rule will lie about a pitch-heavy agency book.

Proposal Win Rate Board

12/30

โœจ What it does

Claude builds a proposal win-rate board for [PROPOSAL SET] with sent, won, lost, and cycle days as a working screen you can click in the chat. Filter a lost reason, then swap the sample numbers for last quarter's pitches.

You are an agency new-business analyst who builds proposal win-rate dashboards. <context> I need a proposal win-rate dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample pitches so it opens as a working screen I can click in the chat. </context> <inputs> - Proposals to seed: [PROPOSAL SET] - Period: [E.G. LAST TWO QUARTERS] - Outcomes: [WON, LOST, NO DECISION, OPEN] - Loss reasons: [E.G. PRICE, FIT, INCUMBENT, TIMING] - Size bands: [E.G. UNDER 25K, 25-75K, 75K+] </inputs> <task> Build the dashboard with: a KPI row (sent, win rate on closed, won fees, median cycle days); a monthly win-rate line; a bar of win rate by size band; a loss-reason bar; a table of closed proposals (client, value, outcome, reason, days, owner); and a click on a reason that filters the table. Win rate = won / (won + lost). No-decision is shown separately and does not sit in the denominator unless I toggle it on. Cycle days from sent date to close date. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Rates and days computed from the proposals array. Small-n cells marked below an editable count. - Reason click filters. Currency consistent. Accessible contrast. - Do not invent competitor names I did not give. </constraints> <format> Return the full HTML file, then explain the win-rate rule and which array to replace. </format>

๐Ÿ’ก

Pro tip: Count sent proposals, not every coffee chat. Inflating the denominator makes a healthy win rate look like a crisis.

Lead Source Mix

13/30

โœจ What it does

Claude builds a lead source mix for [LEAD CHANNELS] with inquiries, meetings, and close rate as a working screen you can click in the chat. Click a source bar, then replace the sample numbers with your CRM counts.

You are an agency new-business analyst who ranks lead sources by meetings and won fees, not by inquiry volume. <context> I need a lead source mix dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample inquiries so it opens as a working screen I can click in the chat. </context> <inputs> - Channels: [LEAD CHANNELS] - Period: [E.G. LAST 90 DAYS] - Stages: [INQUIRY, MEETING, PROPOSAL, WON] - Spend per paid channel if any: [AMOUNTS OR NONE] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a KPI row (inquiries, meeting rate, proposal rate, close rate, cost per won if spend exists); a stacked bar of stage counts by each item in [LEAD CHANNELS]; a table with inquiries, meetings, proposals, wins, rates, won fees, and cost per win; and a callout of the highest-volume low-close source versus the best won-fee source. Compute every rate from the stage counts. Clicking a channel highlights the bar and filters a sample inquiry list. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Rates computed from constants. If spend is NONE, show cost as n/a, not zero theater. - Sortable table. Accessible contrast. Responsive layout. - Do not invent ad platforms I did not list. </constraints> <format> Return the full HTML file, then explain the rate formulas and how to paste a CRM source export. </format>

๐Ÿ’ก

Pro tip: Rank sources by won fees, not by form fills. A chatty referral channel can still be the cheapest close.

Stale Opportunity Aging

14/30

โœจ What it does

Claude builds a stale opportunity aging board for [STALE DAY RULE] with day buckets and a chase list as a working screen you can click in the chat. Open the oldest proposal, then swap the sample numbers for your open pipeline.

You are an agency pipeline analyst who builds aging boards that tell a partner which pitch to chase first. <context> I need a stale opportunity aging dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample open deals so it opens as a working screen I can click in the chat. </context> <inputs> - Stale-after days by stage: [STALE DAY RULE] - Aging buckets: [E.G. 0-7, 8-14, 15-30, 30+ DAYS] - Stages: [LIST IN ORDER] - Period: [E.G. THIS QUARTER] - Number of open deals: [E.G. 22] </inputs> <task> Build the dashboard with: a KPI row (open deals, fees past stale, median days in stage, deals past proposed start); a stacked bar of count and fees by aging bucket; a stage-by-aging heatmap; a sortable chase list (name, owner, stage, days in stage, value, next step); and a filter for stale only. Compute days-in-stage and stale flags from last-stage-change dates and [STALE DAY RULE] in labeled JS arrays. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Stale flags computed from the per-stage day rules, not hardcoded. - Past-stale rows flagged. Currency consistent. Responsive and accessible. - Data constants at the top with comments. </constraints> <format> Return the full HTML file, then explain the stale-day rules and how to load last-stage-change dates. </format>

๐Ÿ’ก

Pro tip: Set stale days per stage. A proposal sitting 14 days is a different problem than a first intro sitting 14 days.

New Versus Existing Pipeline

15/30

โœจ What it does

Claude builds a new versus existing client pipeline for [PIPELINE SPLIT] with type mix and target contribution as a working screen you can click in the chat. Toggle new-logo, then drop your real deal types over the sample numbers.

You are an agency new-business analyst who builds new-logo versus existing-client pipeline dashboards. <context> I need a new versus existing pipeline dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample deals so it opens as a working screen I can click in the chat. </context> <inputs> - Type split and any target: [PIPELINE SPLIT] - Types: [E.G. NEW LOGO, EXPANSION, RENEWAL] - Period: [E.G. THIS QUARTER] - Stages: [LIST IN ORDER] - Fee target if you have one: [AMOUNT OR NONE] </inputs> <task> Build the dashboard with: a KPI row (new pipeline, existing pipeline, mix %, type versus [PIPELINE SPLIT] target); a stacked bar of fees by stage split by type; a donut of open fees by type; a line of created pipeline by type over the period; and a table of the largest deals in each type. Generate sample deals with a type field in labeled JS arrays and compute the mix from that field. Type chips filter the table and highlight the stack. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Mix percentages recompute from the deals array. - Type colors stay consistent across every chart. Currency consistent. - Responsive and accessible. Data constants at the top. </constraints> <format> Return the full HTML file, then explain how the mix is computed and how to map your CRM type field onto the array. </format>

๐Ÿ’ก

Pro tip: Tag each deal the way your CRM does (new, expansion, renewal). Mixed tags make the mix chart lie about next quarter's retainers.

These prompts give you the what. Tutorials give you the why.

Learn when to use extended thinking, how to build Claude Projects, and workflows that compound. 300+ tutorials and growing.

Try AI Academy Free

Delivery

5 prompts

On-Time Delivery Board

16/30

โœจ What it does

Claude builds an on-time delivery board for [DELIVERY TEAM] with due dates, slip days, and a late watchlist as a working screen you can click in the chat. Click a late milestone, then swap the sample numbers for live project dates.

You are an agency delivery lead who builds on-time boards a stand-up can run without opening five project tools. <context> I need an on-time delivery dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample milestones so it opens as a working screen I can click in the chat. </context> <inputs> - Team or studio: [DELIVERY TEAM] - Date range: [E.G. THIS MONTH] - Promise metric: [ON-TIME MILESTONE / ON-TIME LAUNCH] - Target rate: [E.G. 90%] - Statuses: [NOT STARTED, IN PROGRESS, IN REVIEW, DONE, LATE] </inputs> <task> Build the dashboard with: a header for [DELIVERY TEAM]; KPI cards (milestones due, on-time rate versus [TARGET RATE], average slip days, late now); a line of weekly on-time rate versus target; a bar of late count by client; a late watchlist (project, milestone, promised date, days late, owner, next action); and a full milestone table. Compute on-time and slip from promised-date versus done-date, or versus a now constant if still open. Client chips filter the tables. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Milestones in labeled JS constants at the top. - Late rows flagged red. Filters must hide rows. Accessible contrast. - Do not invent live PM tool sockets. Sample plus a note for an export. </constraints> <format> Return the full HTML file, then explain on-time and slip math and which array to replace. </format>

๐Ÿ’ก

Pro tip: Use the date the client was promised, not the internal stretch date. A board that only tracks the stretch will look green while the client is angry.

Project Status Kanban

17/30

โœจ What it does

Claude builds a project status kanban for [STATUS LANES] with owners, due dates, and blocked cards as a working screen you can click in the chat. Click a blocked card, then replace the sample numbers with your project list.

You are an agency producer who builds project kanban boards a studio can scan on a TV. <context> I need a project status kanban as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample projects so it opens as a working screen I can click in the chat. </context> <inputs> - Lanes in order: [STATUS LANES] - Projects: [E.G. 16 SAMPLE PROJECTS] - Fields per card: [CLIENT, NAME, OWNER, DUE, FEE, BLOCKER] - WIP limit per lane if any: [NUMBER OR NONE] - Clients: [LIST] </inputs> <task> Build the dashboard with: a header and KPI cards (open projects, blocked, due this week, lanes over WIP); a kanban of cards across [STATUS LANES] with due date and owner; a click on a card that opens a detail drawer (fee, blocker text, days to due); a client filter; and a table view toggle that lists the same projects. Compute days to due from a now constant. Blocked cards are visually loud. Lane counts update from the project array. Filters must actually hide cards. </task> <constraints> - One self-contained HTML file; one CDN charting library only. Charts can be small (due-this-week bar). - Projects in labeled JS constants at the top. - Do not implement drag-and-drop persistence. Click for detail is enough. - Accessible contrast, keyboard-focusable cards, no lorem ipsum. </constraints> <format> Return the full HTML file, then explain days-to-due math and which array to replace with a project export. </format>

๐Ÿ’ก

Pro tip: Keep a real Blocked lane. Parking blockers inside In progress is how late work disappears from Monday.

Milestone Slippage Board

18/30

โœจ What it does

Claude builds a milestone slippage board for [MILESTONE SET] with original dates, current dates, and days pushed as a working screen you can click in the chat. Sort the worst slip, then swap the sample numbers for your plan versus actual.

You are an agency delivery analyst who builds milestone slippage dashboards. <context> I need a milestone slippage dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample milestones that have an original and a current date so it opens as a working screen I can click in the chat. </context> <inputs> - Milestones to seed: [MILESTONE SET] - Slip rule: [E.G. PUSHED 7+ DAYS PAST ORIGINAL] - Period: [E.G. THIS QUARTER] - Owners: [NAMES] - Clients: [LIST] </inputs> <task> Build the dashboard with: a KPI row (milestones slipped, average days pushed, pulled-in count, fees sitting on slipped work); a bar of slipped count by week; a grouped bar of original-week versus current-week due volume; a sortable table (project, milestone, original, current, days pushed, owner, client); and an owner rollup. Generate sample rows with both dates in labeled JS arrays and compute days pushed from those dates. A slip-only filter hides clean rows. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Slip flags and day counts computed from the two dates, not hardcoded. - Pulled-in rows shown separately from pushed rows. - Responsive and accessible. Data at the top with comments. </constraints> <format> Return the full HTML file, then explain the slip rule and how to import original versus current dates. </format>

๐Ÿ’ก

Pro tip: Include two dates per milestone, original and current. One date cannot show slippage, only a calendar.

Change Request Queue

19/30

โœจ What it does

Claude builds a change-request queue for [CHANGE TYPES] with hours, fee impact, and approval status as a working screen you can click in the chat. Open an unpriced change, then drop your real CR log over the sample numbers.

You are an agency producer who builds change-request queues that keep unpriced work from hiding in Slack. <context> I need a change-request queue dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample CRs so it opens as a working screen I can click in the chat. </context> <inputs> - Types: [CHANGE TYPES] - Statuses: [DRAFT, SENT, APPROVED, REJECTED, WORKING, BILLED] - Age start: [FIRST ASK] - Owners: [NAMES] - Internal rate for unpriced hours: [AMOUNT] </inputs> <task> Build the dashboard with: type chips from [CHANGE TYPES]; KPI cards (open, unpriced hours, approved fees, rejected hours, median age); a stacked bar of open CRs by client and type; an aging table; an unpriced watchlist (hours times the internal rate as fee at risk); and a searchable CR table. Age from first-ask timestamp, never from last client reply. Status and type filters must work. Selecting a client filters every widget. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - CRs in labeled JS constants at the top. - Unpriced and waiting-on-client rows visually distinct. Search works. - Fee-at-risk is arithmetic from my rate, labeled estimate, not an invoice. </constraints> <format> Return the full HTML file, then explain the age rule and which array to replace with a CR export. </format>

๐Ÿ’ก

Pro tip: Age from first ask, not from the last client reply. Clients will reset the clock if the board lets them.

Revision Cycle Board

20/30

โœจ What it does

Claude builds a revision cycle board for [DELIVERABLE TYPE] with rounds used, rounds left, and a stuck list as a working screen you can click in the chat. Click a stuck asset, then swap the sample numbers for this month's reviews.

You are an agency studio analyst who builds revision-cycle boards that show when feedback is burning the fee. <context> I need a revision cycle dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample deliverables so it opens as a working screen I can click in the chat. </context> <inputs> - Deliverable type to lead with: [DELIVERABLE TYPE] - Other types: [E.G. AD, LANDING PAGE, DECK, FILM CUT] - Sold rounds default: [E.G. 2] - Stuck rule: [E.G. IN REVIEW 5+ DAYS OR ROUNDS USED AT CAP] - Period: [E.G. THIS MONTH] </inputs> <task> Build the dashboard with: a type filter defaulting to [DELIVERABLE TYPE]; KPI cards (open deliverables, average rounds used, over-cap count, stuck count); a bar of rounds used versus sold rounds; a cycle-time chart (brief to first proof, first proof to approve); a stuck list; and a table (asset, client, type, rounds used, rounds sold, days in review, owner, status). Compute over-cap as rounds used greater than rounds sold. Stuck from the rule. Clicking a row opens a round log from a nested sample array. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Deliverables and round logs in labeled JS constants. - Over-cap and stuck flagged. Show the sold-rounds default as an editable constant. - Do not invent legal revision-clause language. </constraints> <format> Return the full HTML file, then explain over-cap and stuck rules and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Cap the sold rounds on the page. A board that only counts rounds used cannot tell you the job is already out of scope.

Retainers

5 prompts

Retainer Hours Burn

21/30

โœจ What it does

Claude builds a retainer hours burn board for [RETAINER CLIENT] with hours sold, hours used, and runway as a working screen you can click in the chat. Check the fastest burn, then replace the sample numbers with this month's time.

You are an agency account-operations analyst who builds retainer burn boards an AM can share without opening the time tool. <context> I need a retainer hours burn dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample retainers so it opens as a working screen I can click in the chat. </context> <inputs> - Client to lead with: [RETAINER CLIENT] - Other retainers: [LIST OR INVENT 8] - Period: [E.G. THIS MONTH] - Hours sold this period per client: [NUMBERS OR INVENT] - Alert: [E.G. 80% USED OR UNDER 5 DAYS OF RUNWAY] </inputs> <task> Build the dashboard with: a client selector defaulting to [RETAINER CLIENT]; KPI cards (hours sold, hours used, remaining, percent used, days of runway); a burn line of cumulative hours versus a straight sold-hours line; a team table of who used the hours; a retainer list with percent used and alert flags; and a remaining-hours bar. Runway = remaining / average daily burn on days that have time. Zero burn shows as no runway estimate, not infinity theater. Selecting a client updates every widget. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Retainers and time rows in labeled JS constants at the top. - Alert rows flagged. Show the runway formula on the page. - Do not invent auto-rollover unless I add a rule later. </constraints> <format> Return the full HTML file, then write burn and runway formulas and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Burn against this period's sold hours, not against a lifetime bucket. Lifetime totals hide a client who will explode in week three.

Retainer Scope Guard

22/30

โœจ What it does

Claude builds a retainer scope guard for [SCOPE LIST] with in-scope, overflow, and a stop-the-work flag as a working screen you can click in the chat. Open an overflow row, then swap the sample numbers for your SOW lines.

You are an agency account-operations analyst who builds retainer scope guards that sit next to the SOW, not in a separate myth. <context> I need a retainer scope-guard dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample SOW lines and time so it opens as a working screen I can click in the chat. </context> <inputs> - In-scope lines: [SCOPE LIST] - Client and monthly hours: [NAME AND HOURS] - Overflow rule: [E.G. TIME TAGGED OUT OF SCOPE, OR A LINE OVER ITS HOUR CAP] - Period: [E.G. THIS MONTH] - Owners: [NAMES] </inputs> <task> Build the dashboard with: a header for the client; KPI cards (sold hours, in-scope used, overflow hours, lines over cap); a bar of hours by each line in [SCOPE LIST] versus that line's cap if given; an overflow table (date, person, hours, why it is overflow, billed or not); a stop-the-work flag when overflow crosses an editable threshold; and a note field per line I can edit later. Compute overflow from the rule. Clicking a scope line filters the overflow table. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - SOW lines and time in labeled JS constants at the top. - Show the overflow rule on the page. Accessible contrast. - Do not invent legal stop-work language. Flag only. </constraints> <format> Return the full HTML file, then explain the overflow rule and which arrays to replace with SOW lines and time. </format>

๐Ÿ’ก

Pro tip: Paste the SOW bullets you actually sold. A pretty activity list that does not match the SOW will not survive the first invoice fight.

Retainer Renewal Watchlist

23/30

โœจ What it does

Claude builds a retainer renewal watchlist for [RENEWAL WINDOW] with end dates, unused hours, and health flags as a working screen you can click in the chat. Open the next renewal, then drop your real contract dates over the sample numbers.

You are an agency account-operations analyst who builds retainer renewal watchlists. <context> I need a retainer renewal dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample retainers so it opens as a working screen I can click in the chat. </context> <inputs> - Renewal window: [RENEWAL WINDOW] - Risk rule: [E.G. HEALTH BELOW 60 OR UNUSED HOURS OVER 40% OR OPEN UNPAID INVOICE] - Fields: [CLIENT, MONTHLY FEE, END DATE, OWNER, HEALTH, UNUSED HOURS] - Number of retainers: [E.G. 14] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a KPI row (retainers in window, at-risk fees, healthy fees, days to next risk renewal); a bar of fees by month in the window stacked by healthy versus at-risk; a watchlist of at-risk renewals sorted by date; a full-window table; and a countdown of the next 5 dates. Generate sample retainers in labeled JS arrays and compute at-risk from the rule. Clicking a month filters the table. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - At-risk flags and fee totals computed from the rule, not hardcoded. - Dates formatted consistently. At-risk rows flagged. Responsive and accessible. - Data constants at the top with comments. </constraints> <format> Return the full HTML file, then explain the risk rule and how to paste a contract export with end dates and fees. </format>

๐Ÿ’ก

Pro tip: Filter to renewals inside your real save window. A 12-month list is a report. A 90-day list is a Monday meeting.

Unused Hours and Rollover

24/30

โœจ What it does

Claude builds an unused-hours and rollover board for [ROLLOVER RULE] with leftover hours, expiry, and a use-or-lose list as a working screen you can click in the chat. Sort by hours left, then swap the sample numbers for your retainer export.

You are an agency operations analyst who builds unused-hours boards that force a use, send, or expire decision. <context> I need an unused-hours and rollover dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample retainers so it opens as a working screen I can click in the chat. </context> <inputs> - Rollover rule: [ROLLOVER RULE] - Period just closed plus current: [E.G. LAST MONTH AND THIS MONTH] - Expiry window: [E.G. 30 DAYS AFTER PERIOD END] - Clients: [LIST OR INVENT 10] - Currency if you price leftover hours: [OR HOURS ONLY] </inputs> <task> Build the dashboard with: a KPI row (unused hours, hours expiring in 14 days, hours already expired, estimated fee if you price leftovers); a bar of leftover hours by client; an expiry timeline; a use-or-lose table (client, leftover, expiry date, rule applied, suggested action from simple rules: schedule work, send a summary, expire); and a filter for expiring soon. Apply [ROLLOVER RULE] in JS from constants. Show the rule on the page. Clicking a client shows the period math. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Retainer period rows in labeled JS constants at the top. - Sort default: leftover hours descending. Accessible contrast. - Suggested actions are rules I can edit, not legal advice. No tax or write-off claims. </constraints> <format> Return the full HTML file, then list the leftover and expiry formulas and which array to replace. </format>

๐Ÿ’ก

Pro tip: Write the real rollover rule (expire, cap, or bank 30 days). A board that assumes unused hours vanish will pick a fight with the contract.

Retainer Versus Project Mix

25/30

โœจ What it does

Claude builds a retainer versus project mix for [REVENUE SPLIT] with recurring share, project share, and a stability note as a working screen you can click in the chat. Toggle a month, then replace the sample numbers with your invoice mix.

You are an agency finance partner who builds retainer-versus-project mix dashboards a partner meeting can argue from. <context> I need a retainer versus project mix dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample invoices so it opens as a working screen I can click in the chat. </context> <inputs> - Target mix: [REVENUE SPLIT] - Months to show: [E.G. LAST 12] - Types: [RETAINER, PROJECT, MEDIA, OTHER] - Currency: [E.G. USD] - Target retainer share: [E.G. 60%] </inputs> <task> Build the dashboard with: a KPI row (retainer fees, project fees, retainer share versus [REVENUE SPLIT], months under target); a stacked monthly bar by type; a retainer-share line with the target; a month selector that updates a client table for that month; and a stability note that flags any month the retainer share moves more than an editable percent. Compute shares from monthly invoice constants. Clicking a month filters the table and the KPI row. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Invoices in labeled JS constants at the top. Shares computed. - Type colors consistent. Currency consistent. Accessible contrast. - Do not invent a cash forecast. Mix only. </constraints> <format> Return the full HTML file, then explain share math and which monthly array to replace. </format>

๐Ÿ’ก

Pro tip: Count recognized fees in the month, not signed SOWs. Signed project work that has not started will fake a stable mix.

Most people use 10% of Claude. Tutorials unlock the rest.

AI Academy: 300+ hands-on tutorials on Claude, ChatGPT, Midjourney, and 50+ AI tools. New tutorials added every week.

Start Your Free Trial

Profit

5 prompts

Agency Gross Margin Board

26/30

โœจ What it does

Claude builds an agency gross margin board for [MARGIN TARGET] with revenue, delivery cost, and jobs below target as a working screen you can click in the chat. Open a thin job, then swap the sample numbers for closed invoices and time.

You are an agency finance partner who builds gross-margin boards a weekly production meeting can use. <context> I need an agency gross margin dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample jobs so it opens as a working screen I can click in the chat. </context> <inputs> - Margin target: [MARGIN TARGET] - Period: [E.G. LAST 90 DAYS] - Jobs or clients: [LIST OR INVENT 18] - Delivery cost basis: [HOURS TIMES RATE PLUS CONTRACTORS] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a KPI row (fees, delivery cost, blended margin, jobs below [MARGIN TARGET]); a horizontal bar of margin by job; a monthly blended-margin line; a sortable table (fees, hours, delivery cost, margin $, margin %, versus target); and a below-target watchlist. Gross margin = (fees minus delivery cost) / fees. Show the formula. Clicking a job highlights the bar and the row. Guard zero fees. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Jobs in labeled JS constants at the top. Margins computed. - Below-target flagged with color and a text label. Accessible contrast. - Do not allocate overhead on this board unless I add a pool later. </constraints> <format> Return the full HTML file, then write the margin formula and which arrays to replace with invoices and time. </format>

๐Ÿ’ก

Pro tip: Separate delivery cost from studio overhead. Mixing rent into the job margin makes every small project look like a loser.

Effective Hourly Rate

27/30

โœจ What it does

Claude builds an effective hourly rate board for [RATE CARD] with billed rate, realized rate, and write-down gaps as a working screen you can click in the chat. Sort the worst gap, then drop your real invoices over the sample numbers.

You are an agency finance analyst who builds effective-rate dashboards that show the gap between the rate card and what you actually keep. <context> I need an effective hourly rate dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample jobs so it opens as a working screen I can click in the chat. </context> <inputs> - Rate card by role: [RATE CARD] - Period: [E.G. LAST QUARTER] - Jobs: [LIST OR INVENT 16] - Write-down types: [E.G. GOODWILL, SCOPE, QUALITY, ADMIN] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a KPI row (blended billed rate, blended realized rate, gap, hours written down); a grouped bar of billed versus realized by job; a role table that compares [RATE CARD] to realized rate on hours of that role; a write-down reason bar; and a sortable job table (hours, billed fees, write-downs, realized rate, gap). Realized rate = (billed fees minus write-downs) / all hours. Billed rate = billed fees / billed hours if you split them, else label the choice. Clicking a job filters the reason split. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Jobs, hours, and write-downs in labeled JS constants. - Show both formulas on the page. Guard divide-by-zero. - Currency consistent. Accessible contrast. Responsive layout. </constraints> <format> Return the full HTML file, then explain billed versus realized and which arrays to replace. </format>

๐Ÿ’ก

Pro tip: Realized rate is fees collected divided by all hours on the job, including unpaid extras. Billed rate alone hides the write-down.

Overhead Versus Delivery Cost

28/30

โœจ What it does

Claude builds an overhead versus delivery cost board for [OVERHEAD POOLS] with allocation and contribution as a working screen you can click in the chat. Click a cost pool, then swap the sample numbers for last month's books.

You are an agency FP and A partner who builds overhead-versus-delivery dashboards that still add back to the books. <context> I need an overhead versus delivery cost dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample costs so it opens as a working screen I can click in the chat. </context> <inputs> - Overhead pools: [OVERHEAD POOLS] - Delivery cost total: [AMOUNT OR INVENT] - Allocation method: [E.G. DELIVERY HOURS, REVENUE, EVEN] - Period: [E.G. LAST MONTH] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a KPI row (fees, delivery cost, overhead, contribution after overhead); a stacked bar of delivery versus each pool in [OVERHEAD POOLS]; a client or job table with direct delivery cost, allocated overhead, and contribution; a company-total row the rows must add back to; and a method note. Put allocation weights in an editable constant and compute every allocated dollar from that rule. Clicking a pool highlights its share and filters a pool-detail list. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Totals must reconcile to the company total; flag any rounding gap. - Dropdown or chip for allocation method can stay fixed to the method I gave if a live toggle is heavy; say which you picked. - Currency consistent. Accessible contrast. Responsive layout. </constraints> <format> Return the full HTML file, then explain the allocation rule so I can change weights and paste real cost files. </format>

๐Ÿ’ก

Pro tip: Name the real pools (rent, software, founders' draw, sales time). A single overhead blob cannot tell you what to cut.

Monthly Profit Waterfall

29/30

โœจ What it does

Claude builds a monthly profit waterfall for [PROFIT MONTH] from revenue down to net as a working screen you can click in the chat. Click the tallest leak, then replace the sample numbers with this month's P and L.

You are an agency finance analyst who builds monthly profit waterfalls a partner can poke at. <context> I need a monthly profit waterfall as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample data so it opens as a working screen I can click in the chat. </context> <inputs> - Month to open on: [PROFIT MONTH] - Revenue lines: [E.G. RETAINER, PROJECT, MEDIA] - Cost lines in walk order: [E.G. DELIVERY, CONTRACTORS, WRITE-OFFS, OVERHEAD, SALES] - Comparison: [PRIOR MONTH] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: a month selector defaulting to [PROFIT MONTH]; a KPI row (revenue, gross profit, operating profit, net, biggest leak as $ and % of revenue); a waterfall that starts at revenue, subtracts each cost line, and lands on net; a prior-month comparison table; a ranked leak table; and a callout that names the single largest step down. Compute every step from labeled constants. The month selector rebuilds the waterfall without a reload. Steps must reconcile. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Waterfall start minus steps equals the landing number. - Biggest leak is computed, not hardcoded; flag it with a label. - Currency consistent. Accessible contrast. Responsive layout. </constraints> <format> Return the full HTML file, then say which leak the sample points to first and how to paste this month's books. </format>

๐Ÿ’ก

Pro tip: Put cost lines in the order your close already uses. A walk that skips write-offs hides the leak you came to find.

Write-Off and Discount Watch

30/30

โœจ What it does

Claude builds a write-off and discount watch for [WRITE-OFF TYPES] with dollars given away and a repeat-client flag as a working screen you can click in the chat. Open the largest write-off, then swap the sample numbers for your credit notes.

You are an agency finance analyst who builds write-off and discount watches that show what you gave away and who keeps asking. <context> I need a write-off and discount dashboard as one self-contained HTML file with inline CSS, vanilla JS, and a CDN chart library, seeded with realistic sample credits so it opens as a working screen I can click in the chat. </context> <inputs> - Types: [WRITE-OFF TYPES] - Period: [E.G. LAST 90 DAYS] - Repeat rule: [E.G. 2+ WRITE-OFFS IN 90 DAYS] - Jobs or invoices: [LIST OR INVENT 20] - Currency: [E.G. USD] </inputs> <task> Build the dashboard with: type chips from [WRITE-OFF TYPES]; KPI cards (write-off dollars, discount dollars, share of fees, clients hitting the repeat rule); a bar of dollars by type; a monthly giveaway line; a client table (fees, write-offs, discounts, giveaway %, repeat flag); and a watchlist of the largest rows. Compute share as giveaway / fees. Clicking a type filters the table. Repeat flag from the rule, computed in JS, not hardcoded. </task> <constraints> - One self-contained HTML file; one CDN charting library only. - Credits and invoices in labeled JS constants at the top. - Repeat clients flagged with a text badge. Sortable table. Accessible contrast. - Do not invent tax, credit-note legal language, or collection advice. </constraints> <format> Return the full HTML file, then explain giveaway-share and repeat rules and which arrays to replace with credit notes. </format>

๐Ÿ’ก

Pro tip: Split goodwill, scope, quality, and prompt-pay discounts. One write-off bucket makes the same client look generous instead of sloppy.

Free tool

Prompt Optimizer

Turn a rough idea into a structured, professional AI prompt.

Try it free โ†’

Frequently Asked Questions

Yes. Each prompt asks Claude to return one self-contained HTML file with inline CSS, vanilla JS, and a charting library from a CDN, pre-seeded with realistic sample clients, hours, and fees. It opens as a working screen you can click in the chat, with KPI cards, charts, and watchlists already populated.
Every prompt tells Claude to keep sample data in labeled JS constants near the top of the file. Click through the sample first so you know which control matters, then replace those arrays with a time, retainer, or invoice export. Utilization, burn, coverage, and margin recompute from the same constants.
The dashboards hub is a generic KPI wall. Ops is queues and warehouses. Sales is CRM pipeline and quota. Finance is P and L, cash, and board packs. This page is only agency work: client books, utilization, proposals, delivery slip, retainer health, and job profit. Use those pages when the screen is not a studio.
The sample numbers are invented so the screen renders. The formulas are real and written on the page or in the closing note: billable utilization, coverage multiples, on-time rate, retainer runway, gross margin, realized rate, write-off share. Read that note, then swap the constants. If a rate or target is missing, the prompt tells Claude to mark [VERIFY] instead of guessing.
Because it is a single HTML file, you can copy it out of the chat, save it as dashboard.html, and open it in any browser or drop it on a static host. For a live studio screen, follow Claude's closing note on swapping the sample arrays for a CSV or a fetch. Keep client names and fees out of a public host.

Prompts are the starting line. Tutorials are the finish.

A growing library of 300+ hands-on tutorials on ChatGPT, Claude, Midjourney, and 50+ AI tools. New tutorials added every week.

7-day free trial. Cancel anytime.