Compare top suppliers year on year
Ranks suppliers by spending amount and compares them to the prior period. Uses supplier IDs to ensure consistency across both periods.
CFOAP Manager๐ MonthlyBeginnerRead-only
Ask it like this
Who are our 10 largest suppliers this year compared with last year?
When to use it
When you want to know your largest suppliers and which ones are growing or shrinking.
What it produces
Top N suppliers with current period amount, prior period amount, and percentage variance.
How it works
- 1Ranks suppliers by spend over the period
- 2Compares each with the previous period of equal length
- 3Finds the name of suppliers returned without a label
- 4Flags newcomers and sharp changes
- 5Presents the ranking with each supplier's change
What protects you
- This skill only reads: it changes nothing in Spendesk
- It acts with your permissions and your role, never beyond
- The assistant cannot approve or pay
โธTechnical detail85/100 ยท 2 tools
SuppliersSpend analysisspendesk_analyze_spendget_suppliers
# Instructions โ Top suppliers with YoY comparison
## โ ๏ธ Suppliers returned without a name
`spendesk_analyze_spend` groupBy=supplier returns `key` = **supplier name** (when resolved) and `id` = supplier ID. `key` holds the raw ID only when `summary.limitations` reports `unresolved-names`.
The `name` field is not present in the response.
To display names:
1. Collect all IDs from the top-N suppliers
2. Call `get_suppliers(ids=[id1, id2, ...])` in a single call
3. Join names by ID
## โ ๏ธ amountChange on the "Others" row
The "Others" row also includes `previousAmount` and `amountChange`. If "Others" grows sharply, the supplier base is expanding faster than the top suppliers.
## Step 1 โ Top suppliers analysis with comparison
```json
{
"companyId": "...",
"fromDate": "YYYY-MM-DD",
"toDate": "YYYY-MM-DD",
"groupBy": ["supplier"],
"compareWithPreviousPeriod": true,
"limit": 15
}
```
โ The previous period is automatically calculated (same duration, immediately before `fromDate`).
โ `limit: 15` to see more than the default top-10.
## Step 2 โ Interpreting compareWithPreviousPeriod
Each row returns:
- `amount`: spend for the current period
- `share`: relative weight of the row within its breakdown (% of gross activity at that level, always between 0 and 100; not a share of `summary.totalAmount`)
- `previousAmount`: spend for the previous period
- `amountChange`: % change (positive = increase, negative = decrease)
- `amountChange: null` โ previousAmount = 0 (no defined percentage; quote the absolute amounts. null does not prove the supplier is new: the previous period may have netted to zero)
- `amountChange: -100` โ supplier no longer active (amount = 0)
On the summary (`summary.previousPeriod`):
- `period.from/to`: dates of the comparison period
- `totalAmount`: total for the previous period
- `amountChange`: overall % change
## Step 3 โ Resolving supplier names
```json
{ "companyId": "...", "ids": ["id1", "id2", "id3", ...] }
```
Join by ID (only if names are not resolved): `{ ...row, name: suppliers.find(s => s.id === row.id)?.name || row.key }`
## Step 4 โ Identifying anomalies
Alert the user about:
- `amountChange > 500%` โ explosive growth (new contract, data entry error?)
- `amountChange < -50%` โ sharp decline (termination, project ended?)
- `previousAmount = 0` AND `amount > threshold` โ significant new supplier
- "Others" rising sharply โ fragmentation of the supplier base
## Live example (real data, Jul 2025 โ Jun 2026 vs Jul 2024 โ Jun 2025)
Summary:
- Current period: **EUR 16,524,574.27** (7,199 payables)
- Previous period: EUR 17,108,631.54 (5,804 payables)
- **Overall change: -3.4%** (slight decrease)
Notable anomalies:
- Supplier `0qryRtMyYW`: +92,078% (EUR 424 โ EUR 391,345) โ practically new
- Supplier `lt1euqhnunby1f`: +361.5% (EUR 131,938 โ EUR 608,940) โ strong growth
- Supplier `9MCGQweUWi`: -68.3% (EUR 3,001,938 โ EUR 951,166) โ sharp decline
- Supplier `8xs-s358mod4ps`: new (previousAmount=0), EUR 738,607
- "Others": +53.2% (expanding supplier base)
## Example prompt
- "Who are our top 10 suppliers this year vs last year?" โ groupBy=supplier, compareWithPreviousPeriod=true, limit=10 + resolve names
- "Are there any suppliers whose spend has exploded?" โ filter amountChange > 200%
- "Significant new suppliers this year?" โ filter previousAmount=0 AND amount > threshold
How to install this skill
/
- 1Download the file
s05-top-suppliers-comparison.mdusing the button above. - 2Place the file in the
.claude/directory of your project (or~/.claude/for a global install).cp s05-top-suppliers-comparison.md .claude/s05-top-suppliers-comparison.md - 3Use in Claude Code โ the skill is automatically discovered. Describe your need in natural language and Claude will apply the skill instructions.
๐ก Make sure the Spendesk MCP is configured in your
.claude/settings.json with the tools spendesk_analyze_spend, get_suppliers.Similar skills
โ
Top