Skip to main content
skill CX Codex

seasonal-patterns — Claude Code skill: revenue seasonality

This skill finds seasonal swings in revenue and expenses across 12 or more months. Useful when you need to know which months run weak and why.

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

What seasonal-patterns does

The skill takes monthly income and expense totals and builds an index for each month: month revenue divided by average monthly revenue, times 100. Above 100 means a stronger-than-average month, below means weaker. You get a table with the peak, the trough and the seasonal range.

The workflow is step by step. It asks for the analysis window first, then pulls each month through the spending_summary tool, calculates the indices and prints a profile with recommendations. There is a spreadsheet route too: export transactions from your bank as CSV, build a pivot table in Excel or Google Sheets, compute the index with =MonthAvgRevenue/OverallAvg*100, then chart monthly revenue with a trendline.

You need at least 12 months of data for a meaningful read. One year cannot separate seasonality from one-off events, so two or more years sharpen the picture a lot. If the seasonal range comes in under 20 points, seasonality is not your problem — revenue is flat. Expenses deserve the same look: insurance renewals, annual subscriptions and quarterly tax payments create predictable spikes.

What it helps with

  • spot which months historically run weak on revenue
  • compute a seasonal index for every month
  • build cash reserves ahead of slow months
  • time big purchases for strong-revenue months
  • tell a seasonal dip apart from a one-off event

Example prompts for the agent

  • Analyze revenue seasonality over the last 24 months with seasonal-patterns
  • Calculate the monthly seasonal index and show me the peak and trough
  • Do my expenses have a seasonal pattern? Check two years

How to install seasonal-patterns

1Skills CLI (Vercel)

npx skills add openaccountant/skills --skill seasonal-patterns -a claude-code

2Manually: put the files in place

~/.claude/skills/seasonal-patterns/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/seasonal-patterns/

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

Questions about seasonal-patterns

How do I install seasonal-patterns in Claude?

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

What does seasonal-patterns do?

It calculates monthly revenue and expense indices over 12 or more months, finds the peaks and troughs, and reports the seasonal range. From there it suggests when to hold reserves and when to schedule major spending.

How much data does the analysis need?

At least 12 months. A single year cannot separate seasonal patterns from one-time events, so the skill recommends 24 months or more. If the seasonal range is under 20 points, revenue counts as stable.

Source text

SKILL.md · MIT
---
name: seasonal-patterns
description: >
  Detect seasonal revenue and expense patterns across 12+ months of data.
---

# Seasonal Pattern Detection

## Overview
Identify cyclical trends in your revenue and expenses over a 12-month or multi-year window. Reveals which months are historically strong or weak, enabling better cash management, staffing, and marketing timing.

## Wilson Tools Used
- `spending_summary` — pull monthly income and expense totals across 12+ months to build a seasonal profile

## Workflow
1. Ask for the analysis window (minimum 12 months, 24+ months preferred for statistical confidence).
2. Use `spending_summary` for each month in the window to get monthly revenue and expense totals.
3. Calculate the monthly index: Month Index = Month Revenue / Average Monthly Revenue * 100.
   - Index > 100 = above-average month
   - Index < 100 = below-average month
4. Identify peaks and troughs.
5. Generate the seasonal profile:

```
SEASONAL PATTERN ANALYSIS — [Period]
══════════════════════════════════════════════════════════
Month    Avg Revenue   Index   Avg Expenses   Trend
──────────────────────────────────────────────────────────
Jan        $8,200        82      $6,100       Slow start
Feb        $7,800        78      $5,900       ▼ Trough
Mar        $9,500        95      $6,500       Recovering
Apr       $11,200       112      $7,200       ▲ Above avg
May       $12,500       125      $7,800       ▲ Strong
Jun       $13,000       130      $8,200       ▲▲ Peak
Jul       $11,800       118      $7,500       ▲ Above avg
Aug       $10,200       102      $7,000       Average
Sep       $10,500       105      $7,200       Average
Oct       $11,000       110      $7,500       ▲ Above avg
Nov        $9,500        95      $8,500       Expense spike
Dec        $6,800        68      $9,000       ▼▼ Low + high cost
──────────────────────────────────────────────────────────
Annual   $122,000       100     $88,400
Peak Month: June (130)    Trough Month: December (68)
Seasonal Range: 62 points
══════════════════════════════════════════════════════════
```

6. Calculate the seasonal range (peak index - trough index). Over 50 points indicates significant seasonality.
7. Provide actionable recommendations:
   - Build cash reserves during peak months for trough months
   - Time major expenses (equipment, marketing campaigns) for peak-revenue months
   - Consider seasonal pricing or promotions during slow months

## Without Wilson
1. Export 12-24 months of transactions from your bank as CSV.
2. In a spreadsheet, add a `Month` column: `=TEXT(Date,"YYYY-MM")` and a `MonthNum` column: `=MONTH(Date)`.
3. Create a pivot table: Rows = MonthNum, Values = Average of Income, Average of Expenses (use separate columns for multi-year averaging).
4. Overall Average: `=AVERAGE(AllMonthlyRevenues)`.
5. Seasonal Index per month: `=MonthAvgRevenue/OverallAvg*100`.
6. In Google Sheets, create a line chart of monthly revenue with a trendline to visualize the pattern.
7. For statistical detection, use Excel's `=FORECAST.ETS.SEASONALITY(values, timeline)` to auto-detect the seasonal period length.
8. Google Sheets alternative: chart the data and add a polynomial trendline (order 4-6) to see the seasonal curve.

## Important Notes
- You need at least 12 months of data for meaningful seasonal analysis. With only one year, you cannot distinguish seasonal patterns from one-time events. Two or more years dramatically improves confidence.
- Not every business is seasonal. If your seasonal range is under 20 points, your revenue is relatively stable month-to-month.
- Expense seasonality matters too. Insurance renewals, annual software subscriptions, and quarterly tax payments create predictable expense spikes.
- Overlay seasonal patterns onto your cash flow forecast for more accurate projections.

© openaccountant · MIT · openaccountant/skills

Similar skills

All skills for Finance and business →

From the same set31

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