The 33% Rule: Lost Half My Revenue in 90 Days—How Do You Track Client Concentration Risk?

I need to share a hard lesson I learned this year—maybe it’ll help someone avoid the same mistake.

What Happened

I run a small bookkeeping practice serving 12 clients. My two largest clients each paid $2,500/month, totaling $5,000 out of my $10,000 monthly revenue. That’s 50% from just two clients. They’d been with me for 2+ years, payments were always on time, and honestly, I felt pretty secure.

Then within 90 days:

  • Client A (a SaaS startup) ran out of funding and shut down operations. They gave me 30 days notice.
  • Client B was acquired by a larger company that brought in their own in-house bookkeeping team. They gave me 60 days notice.

Suddenly my revenue dropped from $10,000/month to $5,000/month. I couldn’t cover my expenses—rent, software subscriptions, healthcare, basic living costs. I panicked and scrambled to find new clients, but quality clients take 3-6 months to close, not 3 weeks.

The Lesson I Learned Too Late

I should have been monitoring revenue concentration risk all along. When 1-2 clients provide 33%+ of your revenue, losing them threatens your survival. I knew this intellectually, but I never tracked it systematically.

My Question for This Community

How do you track client concentration risk in Beancount?

Specifically, I’m trying to figure out:

  1. Revenue tracking by client: How do you tag/categorize income by individual client so you can see the breakdown?

  2. Percentage calculations: What queries do you run to calculate “Client X = Y% of total revenue”?

  3. Alert thresholds: At what concentration level do you start worrying? 25%? 33%? 50%?

  4. Survival metrics: How do you calculate “If my top client leaves tomorrow, how many months can I survive on savings?”

  5. Scenario modeling: Can Beancount help model worst-case scenarios like “What if my top 2 clients leave simultaneously?”

What I’m Building Now

I’m rebuilding my practice with a rule: No single client can exceed 20% of revenue. If a client wants to grow beyond that, I’ll either need to grow my total client base first, or I’ll refer the extra work to a colleague.

I wish I’d been tracking this from day one. The warning signs were there—I just didn’t have a dashboard to see them.

Has anyone else experienced revenue concentration risk? How do you monitor it in your Beancount workflow?

Looking forward to learning from this community’s experience.

Bob, I’m really sorry to hear about this—losing 50% of your revenue in such a short window is incredibly stressful. But I’m glad you’re sharing this story, because revenue concentration risk is something every small business owner and professional service provider should be monitoring, yet most don’t until it’s too late.

Industry Benchmarks for Concentration Risk

From a CPA perspective, here are the thresholds I use with my clients:

  • Yellow Flag (Moderate Risk): Any single client represents >25% of total revenue
  • Red Flag (High Risk): Any single client represents >33% of total revenue
  • Critical Risk: Top 2-3 clients represent >50% of total revenue (exactly your situation)

These aren’t arbitrary numbers. They come from business valuation and lending standards. When buyers evaluate businesses for acquisition, high client concentration typically results in valuation discounts of 10-30% because it represents existential risk.

Your 50% concentration from just two clients would have been flagged immediately in any due diligence process.

Tracking Concentration in Beancount

Here’s how I implement this for my clients using Beancount:

1. Tag Revenue by Client

Use metadata tags on your income transactions:

2026-01-15 * "Monthly bookkeeping services - ClientA"
  Income:Services:Bookkeeping  -2500.00 USD @client:ClientA
  Assets:Checking               2500.00 USD

2026-01-20 * "Monthly bookkeeping services - ClientB"  
  Income:Services:Bookkeeping  -2500.00 USD @client:ClientB
  Assets:Checking               2500.00 USD

2. Query Revenue Distribution

You can use Beancount Query Language (BQL) to calculate concentration:

SELECT 
  #client AS client,
  SUM(position) AS revenue,
  SUM(position) / (SELECT SUM(position) FROM root(account, 'Income:Services')) * 100 AS pct_of_total
WHERE 
  account ~ 'Income:Services'
  AND year = 2026
GROUP BY client
ORDER BY revenue DESC

This shows you each client’s revenue and their percentage of total.

3. Calculate Survival Metrics

The key question: “If my top client leaves tomorrow, how long can I survive?”

-- Calculate monthly burn rate
SELECT 
  YEAR(date) AS year,
  MONTH(date) AS month,
  SUM(position) AS expenses
WHERE account ~ 'Expenses'
GROUP BY year, month
ORDER BY year DESC, month DESC
LIMIT 6

-- Compare to cash reserves
SELECT SUM(position) AS cash_reserves
WHERE account ~ 'Assets:Checking|Assets:Savings'

Survival runway = Cash reserves ÷ Average monthly expenses

If you have $15k in savings and $5k/month expenses, you have 3 months runway. With your top client representing $2,500/month, losing them drops you to break-even immediately—zero buffer.

My Recommendation: Build 6-12 Month Reserve

Given your experience, here’s what I’d advise:

  1. Immediate action: Track concentration monthly. Set up a simple Fava dashboard showing your top 5 clients as % of revenue.

  2. Set hard limits: Your 20% rule is smart. I recommend:

    • No single client >20% (your rule)
    • Top 3 clients combined <50%
    • Top 5 clients combined <70%
  3. Build cash reserves: Aim for 6-12 months of operating expenses in savings. This buys you time when concentration risk materializes.

  4. Scenario planning: Every quarter, model: “What if my top 2 clients leave next month?” Can you survive? For how long?

The Silver Lining

Bob, you survived this. Many businesses don’t. Now you have experiential wisdom that most bookkeepers won’t gain until they face the same crisis. Use this knowledge to build a more resilient practice.

And frankly, your vulnerability in sharing this will help others avoid the same trap. Thank you for posting.


Resources that shaped my thinking on this:

Bob, this hits close to home. I haven’t experienced client concentration as a bookkeeper, but I’ve definitely faced revenue source concentration in my personal finances—and the portfolio diversification principles apply directly to your situation.

Portfolio Theory for Service Providers

In investing, we talk about “not putting all your eggs in one basket.” The same logic applies to client revenue:

  • Strategy A (High Concentration): 3 clients × $3,333/month = $10,000 total revenue

    • Each client = 33% of revenue
    • Losing 1 client = -33% revenue shock
    • Management overhead: LOW (only 3 relationships)
  • Strategy B (High Diversification): 10 clients × $1,000/month = $10,000 total revenue

    • Each client = 10% of revenue
    • Losing 1 client = -10% revenue shock (manageable)
    • Management overhead: HIGHER (10 relationships)

The Tradeoff: Efficiency vs. Stability

Here’s the honest truth: fewer large clients is more efficient from a time management perspective. But it’s also riskier from a financial stability perspective.

I went through this exact tradeoff in my consulting work:

My Experience (2023-2025)

I had 4 mega-clients paying $5k-10k/month each:

  • Total revenue: ~$32k/month
  • Top 2 clients: 60% of revenue (same concentration problem you faced)
  • Pros: Deep relationships, high hourly effective rate, less context-switching
  • Cons: Constant anxiety, loss aversion (couldn’t risk losing a big client), felt trapped

My Shift (2025-2026)

I intentionally diversified to 12 mid-size clients averaging $2.5k/month:

  • Total revenue: ~$30k/month (slightly lower)
  • Top 2 clients: 25% of revenue (within safe zone)
  • Pros: Sleep better at night, losing 1 client isn’t catastrophic, can negotiate harder
  • Cons: More meetings, more communication overhead, slightly lower margins

What I Learned: Stability > Optimization

The FIRE community obsesses over optimizing every dollar, but there’s something more valuable than optimization: reducing stress and anxiety.

When I had 60% revenue concentration, I was terrified of disappointing my top 2 clients. I’d work weekends, respond to emails within 10 minutes, accept scope creep without pushback—all because I couldn’t afford to lose them.

After diversifying, I became a better service provider because I wasn’t operating from fear. If a client became unreasonable, I could respectfully decline or walk away. That power shift improved my mental health dramatically.

My Beancount Tracking

Here’s how I monitor my client portfolio (similar to Alice’s approach, but with a FIRE mindset):

2026-01-15 * "Consulting - ClientA" @client:ClientA @tier:premium
  Income:Consulting  -2500.00 USD
  Assets:Checking     2500.00 USD

2026-01-20 * "Consulting - ClientB" @client:ClientB @tier:standard  
  Income:Consulting  -1800.00 USD
  Assets:Checking     1800.00 USD

I tag by client AND by tier (premium vs. standard pricing), which helps me see:

  1. Revenue concentration by client
  2. Revenue mix by service tier
  3. Whether I’m drifting back toward high-concentration

My Recommendation: Intentional Portfolio Design

Bob, your 20% rule is excellent. But I’d also add:

  1. Set a floor AND a ceiling: No client <5% (too small, not worth overhead) and no client >20% (too risky)

  2. Build a client pipeline BEFORE you need it: Always have 2-3 prospects in conversation, even when you’re at capacity. When a big client leaves, you have warm leads ready.

  3. Use pricing as a natural cap: When a client approaches 20% of revenue, raise their rates 20-30%. Either they accept (revenue grows, percentage stays same) or they decline extra work (percentage naturally caps).

  4. Track “portfolio stress score”: I created a simple metric: (Top Client % + Top 2 Clients % + Top 3 Clients %) / 3. If this average >25%, I’m in the danger zone.

The Bottom Line

You asked: “Many small clients vs. few large clients—what’s better?”

My answer: Many mid-size clients beats few large clients for stress reduction and business resilience.

Yes, it’s more work to manage relationships. But the peace of mind knowing that no single client departure can destroy your business? That’s worth the overhead.

Hang in there, Bob. You’re building something more resilient now.


Related reading:

Bob, first off—huge respect for sharing this so openly. Most people hide their business struggles until it’s too late. You’re doing the community a real service by being vulnerable here.

I haven’t experienced client concentration in bookkeeping, but I had a similar scare with rental income concentration a few years back. One of my rental properties represented 40% of my passive income. When the landlord sold the property and the new owner decided to self-manage (ending my contract), I suddenly lost 40% of my rental income overnight.

It was terrifying. Just like you, I thought “this relationship is solid, been going for years, nothing to worry about.” And then boom—gone in 60 days.

The Dashboard I Wish I’d Built 3 Years Ago

After that experience, I built a concentration monitoring system in Beancount. Here’s what I track:

1. Revenue Distribution (Pie Chart in Fava)

I create a custom Fava chart showing revenue by source. Visually seeing “Client A = giant slice, Client B = giant slice, everyone else = tiny slivers” makes the risk immediately obvious.

2026-01-15 * "Bookkeeping services" @source:ClientA
  Income:Services  -2500.00 USD
  Assets:Checking   2500.00 USD

2026-01-20 * "Bookkeeping services" @source:ClientB
  Income:Services  -2500.00 USD
  Assets:Checking   2500.00 USD

In Fava, go to Income Statement → Filter by @source → View as pie chart.

When one slice dominates the pie, you know you have a problem.

2. Monthly Trend Analysis

I don’t just look at current concentration—I track whether it’s getting worse or better over time.

SELECT 
  YEAR(date) AS year,
  MONTH(date) AS month,
  #source AS client,
  SUM(position) AS revenue
WHERE account ~ 'Income:Services'
GROUP BY year, month, client
ORDER BY year DESC, month DESC, revenue DESC

This shows me: “Am I diversifying over time (good) or concentrating more (bad)?”

3. Survival Runway Calculator

Alice mentioned this, but here’s my specific query:

-- Average monthly expenses (last 6 months)
SELECT AVG(monthly_expenses) AS avg_monthly_burn
FROM (
  SELECT 
    YEAR(date) AS year,
    MONTH(date) AS month,
    SUM(position) AS monthly_expenses
  WHERE account ~ 'Expenses'
  GROUP BY year, month
  ORDER BY year DESC, month DESC
  LIMIT 6
)

-- Current cash reserves
SELECT SUM(position) AS cash_on_hand
WHERE account ~ 'Assets:Checking|Assets:Savings'

-- Survival runway = cash / monthly_burn

My rule: If runway drops below 6 months, I’m in yellow alert. Below 3 months = red alert.

4. Automated Alerts (Quarterly Review)

Every quarter, I run a “concentration health check” using these thresholds:

Top 1 client > 25% = ⚠️  Moderate risk  
Top 1 client > 33% = 🚨 High risk  
Top 2 clients > 50% = 🔴 Critical risk (your situation, Bob)  
Top 3 clients > 70% = ⛔ Existential risk

I literally put these as quarterly calendar reminders. Takes 15 minutes to run the queries and see where I stand.

Here’s the BQL Query You Asked For

Bob, you specifically asked for a working query. Here you go:

-- Revenue concentration by client (YTD 2026)
SELECT 
  #client AS client_name,
  SUM(COST(position)) AS total_revenue,
  SUM(COST(position)) / (
    SELECT SUM(COST(position)) 
    FROM root(account, 'Income:Services')
    WHERE year = 2026
  ) * 100 AS pct_of_total_revenue
WHERE 
  account ~ 'Income:Services'
  AND year = 2026
GROUP BY client_name
ORDER BY total_revenue DESC

Run this monthly. Export to CSV. Track trends in a spreadsheet if you want historical comparison.

What I’d Tell My Past Self (And Now I’m Telling You)

  1. Review quarterly, not annually. Concentration can creep up quickly. Quarterly reviews catch problems before they become crises.

  2. Build the dashboard BEFORE you need it. When you’re in crisis mode (like you are now), you don’t have mental bandwidth to build monitoring systems. Do it when things are calm.

  3. Celebrate progress, not just perfection. If you go from 50% concentration to 35%, that’s improvement! Don’t beat yourself up for not being at 20% yet.

  4. This lesson is your competitive advantage now. Most bookkeepers haven’t learned this yet. You have. Use it to build a more resilient practice than 90% of your competitors.

Want My Dashboard Template?

I’ve built a simple Fava custom dashboard for concentration monitoring. If you’re interested, I can share the config. It’s nothing fancy—just queries + charts—but it gives you the visual feedback you need to stay aware.

Bob, you learned the hard lesson. Now you’ll never ignore this again. And honestly? That’s worth something. Most people don’t learn until it destroys their business completely. You survived and you’re building back stronger.

Keep us posted on your progress. We’re rooting for you.


Related reading:

This thread has been incredibly valuable—thank you Bob for starting it, and Fred and Mike for the excellent tactical advice.

I want to add one more strategic layer: prevention vs. recovery. Monitoring concentration is essential, but ideally we want to prevent dangerous concentration from happening in the first place.

Building an Anti-Concentration Strategy Proactively

Here are the policies I recommend clients implement BEFORE they face a crisis:

1. Set Hard Client Size Caps

Policy: “No single client can exceed 20% of total revenue.”

This isn’t just a monitoring threshold—it’s an operating rule. When a client approaches 20%, you have three options:

  • Option A: Grow your total client base so the percentage naturally decreases
  • Option B: Raise that client’s rates (revenue stays flat or grows, but you’re compensated for the concentration risk)
  • Option C: Decline additional work from that client and refer overflow to a trusted colleague

I know this feels counterintuitive—turning down revenue when a great client wants to give you more work. But that “great client” becomes your vulnerability the moment they represent >20% of revenue.

2. Build Pipeline Constantly, Not Just When Desperate

Bob, you mentioned “scrambling to find new clients” after losing your big two. That’s the worst time to be selling—you’re stressed, desperate, and potential clients can sense it.

Better approach: Always have 2-3 prospects in conversation, even when you’re at capacity.

  • Attend 1 networking event per quarter
  • Ask current clients for 1 referral per quarter
  • Keep your website updated with case studies
  • Publish 1 thought leadership piece per quarter (like this forum post!)

The goal isn’t to close these prospects immediately. The goal is to have warm relationships so when you do have capacity (either planned growth or unexpected loss), you have people to call.

3. Use Long-Term Contracts Strategically

If you must have a high-concentration client (e.g., 25-30% of revenue), at minimum secure them with:

  • 12-month contracts with 90-day termination notice
  • Advance payment or retainer structure (so they can’t just stop paying immediately)
  • Scope-of-work clarity (prevents scope creep that makes you even more dependent)

This won’t prevent client loss, but it gives you 90 days of runway to find replacement revenue instead of 30 days.

4. Diversify Service Offerings, Not Just Clients

Another form of diversification: offer multiple service tiers.

  • Tier 1: Basic bookkeeping ($1,000/month)
  • Tier 2: Bookkeeping + tax planning ($2,000/month)
  • Tier 3: CFO advisory services ($3,500/month)

If you only offer one service, you’re competing purely on price. If you offer multiple tiers, you can upsell existing clients rather than constantly hunting for new ones.

Plus, clients who buy premium services tend to be stickier (higher switching costs, deeper relationship).

For Bob Specifically: Your Recovery Strategy

You’re in recovery mode now. Here’s my recommended 6-month action plan:

Month 1-2 (Immediate):

  • Set up Beancount concentration monitoring (use Mike’s queries!)
  • Build cash reserve: Save 100% of any new revenue until you have 3 months expenses saved

Month 3-4 (Stabilize):

  • Close 2-3 new clients at $800-1,200/month (replace lost revenue)
  • Ensure no single client >20% going forward

Month 5-6 (Strengthen):

  • Build 6-month cash reserve
  • Document your “client concentration policy” so future-you doesn’t forget this lesson
  • Consider service tier diversification (add advisory offering?)

The Deeper Lesson: Long-Term Resilience > Short-Term Efficiency

Fred made this point beautifully: fewer large clients is more efficient, but many mid-size clients is more resilient.

In business, we often optimize for efficiency (maximizing revenue per hour worked). But there’s another dimension: resilience (ability to survive shocks without catastrophic failure).

The most successful long-term businesses balance both:

  • Efficient enough to be profitable
  • Resilient enough to survive client loss, market downturns, personal emergencies

Bob, you learned this lesson the hard way. But now you have wisdom most bookkeepers won’t gain until they face the same crisis—if they even survive it.

Use this knowledge to build a practice that’s both profitable AND resilient. You’ve got this.


Further reading on business resilience: