Skip to main content
skill CX Codex

revenue-concentration — Claude Code skill: client concentration risk

Works out each client's share of revenue and the Herfindahl index, so you can see how much of the business rides on a few accounts.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add openaccountant/skills --skill revenue-concentration -a claude-code
Open on GitHub

What revenue-concentration does

The skill takes incoming payments for a period you pick and groups them by client. From there it calculates each client's share of total revenue, the cumulative share, and the Herfindahl-Hirschman Index — the sum of squared shares. The thresholds come straight from antitrust practice: under 1,500 is low concentration, 1,500–2,500 moderate, above 2,500 high. Any single client past 25% gets flagged.

Two ways to run it. With Wilson connected, the skill calls transaction_search, pulls positive amounts and groups them by payee on its own. Without Wilson you export bank transactions to CSV for 12 months, filter to income, add a client column and build a pivot table — the sheet spells out the formulas for share, squared share and running total.

Keep the 2,500 line in mind. Four clients splitting revenue evenly land exactly on 2,500, which still counts as moderate; you need seven or more comparable clients before the index drops into low territory. The skill suggests starting with a 12-month window and revisiting the numbers quarterly. If one client's share keeps climbing, that is your cue to diversify rather than wait.

What it helps with

  • measure each client's share of annual revenue
  • compute the HHI from incoming payments
  • spot a client bringing in over a quarter of revenue
  • show the cumulative share of the top three clients
  • run the same math by hand from a bank export

Example prompts for the agent

  • Calculate revenue concentration by client for the last 12 months
  • What's our HHI, and is any client above 25% of revenue?
  • Group incoming payments by payer and show cumulative shares

How to install revenue-concentration

1Skills CLI (Vercel)

npx skills add openaccountant/skills --skill revenue-concentration -a claude-code

2Manually: put the files in place

~/.claude/skills/revenue-concentration/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/revenue-concentration/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about revenue-concentration

How do I install revenue-concentration in Claude?

Run npx skills add openaccountant/skills --skill revenue-concentration -a claude-code. The skill lands in ~/.claude/skills/revenue-concentration/SKILL.md.

What does revenue-concentration do?

It calculates each client's revenue share, the cumulative share and the Herfindahl-Hirschman Index, then flags dangerous concentration levels.

What does the skill need to run?

With Wilson connected it pulls data through transaction_search. Without Wilson you need a CSV export of bank transactions covering 12 months.

Source text

SKILL.md · MIT
---
name: revenue-concentration
description: >
  Assess client concentration risk using revenue share and Herfindahl index.
---

# Revenue Concentration Risk

## Overview
Measure how dependent your business is on a small number of clients. Calculates each client's revenue share, computes the Herfindahl-Hirschman Index (HHI), and flags dangerous concentration levels.

## Wilson Tools Used
- `transaction_search` — find all revenue transactions and group by client or source to calculate per-client totals

## Workflow
1. Ask for the analysis period (recommend 12 months for accuracy).
2. Use `transaction_search` to find all incoming payments (positive amounts).
3. Group by vendor/payee name to get per-client revenue totals.
4. Calculate each client's revenue share as a percentage of total.
5. Compute the Herfindahl-Hirschman Index: HHI = sum of (each client's market share percentage squared).
6. Generate the report:

```
REVENUE CONCENTRATION — [Period]
═══════════════════════════════════════════════════
Client              Revenue     Share    Cumulative
───────────────────────────────────────────────────
Acme Corp           $48,000     40.0%      40.0%
Beta LLC            $30,000     25.0%      65.0%
Gamma Inc           $18,000     15.0%      80.0%
Delta Co            $12,000     10.0%      90.0%
Other (3 clients)   $12,000     10.0%     100.0%
───────────────────────────────────────────────────
Total Revenue      $120,000    100.0%

Herfindahl Index (HHI):  2,550
Concentration Level:     HIGH
Top Client Dependency:   40.0%

Risk Assessment:
  - Losing Acme Corp would eliminate 40% of revenue
  - Top 2 clients = 65% of revenue
  - Top 3 clients = 80% of revenue
═══════════════════════════════════════════════════
```

7. Interpret HHI:
   - **Under 1,500**: Low concentration (diversified)
   - **1,500-2,500**: Moderate concentration
   - **Over 2,500**: High concentration (risky)
8. Flag any single client above 25% as a key-person risk.
9. Recommend target: no single client above 20%, top 3 clients below 50%.

## Without Wilson
1. Export bank transactions as CSV for the past 12 months.
2. Filter to income only (positive amounts in most bank exports).
3. Add a "Client" column and tag each deposit with the source client.
4. Pivot table: Rows = Client, Values = Sum of Amount. Sort descending.
5. Revenue Share: `=ClientRevenue/TotalRevenue*100`.
6. HHI: In a new column, square each share: `=Share^2`. Then `=SUM(SquaredShares)`.
7. For cumulative share, use `=SUM($B$2:B2)/TotalRevenue*100` (assuming column B is revenue, sorted descending).
8. The U.S. DOJ uses HHI for antitrust analysis with the same thresholds: under 1,500 = unconcentrated, 1,500-2,500 = moderate, over 2,500 = highly concentrated. The same logic applies to your revenue risk.

## Important Notes
- A perfectly equal distribution across 4 clients gives an HHI of 2,500 (still moderate). You need 7+ roughly equal clients to reach "low concentration."
- Revenue concentration is not inherently bad if the top clients are contractually committed (annual contracts, retainers). The risk is losing a major client with no notice.
- Track this quarterly. If a single client's share is growing, actively invest in diversifying your revenue base.
- Consider both revenue concentration and profit concentration. A client generating 40% of revenue but 60% of profit is an even bigger risk.

© openaccountant · MIT · openaccountant/skills

Similar skills

Everything for Finance and business →

From the same set28

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor