← Back to recipes

Compare grant application success rates

fundraisingintermediateproven

The problem

You apply for dozens of grants each year but don't systematically track which types succeed. You're repeating patterns that don't work (small asks to big funders, wrong themes for specific funders) and missing patterns that do work. Each application takes days of effort - you need to focus that effort where it's most likely to pay off.

The solution

Track all grant applications with key attributes (funder, amount, theme, outcome) and analyse which combinations have higher success rates. Identify patterns: which funders say yes to you, which application sizes work best, which themes resonate. Use this to prioritise future applications and improve your hit rate.

What you get

A grant success analysis dashboard showing: (1) Overall success rate and trends over time, (2) Success rates by funder type, amount band, and theme, (3) Your 'sweet spot' applications (combinations that work), (4) Patterns to avoid (combinations that consistently fail), (5) Recommended focus areas for future applications.

Before you start

  • At least 12 months of grant application history (20+ applications for meaningful patterns)
  • Basic tracking of: funder name, amount requested, theme/purpose, outcome (funded/rejected)
  • Willingness to be honest about failures (don't just track wins)
  • Secure storage for your grant tracking spreadsheet - limit access to relevant fundraising staff as this contains sensitive funding information

When to use this

  • You submit 20+ grant applications per year (enough for patterns to emerge)
  • Success rate feels low but you're not sure why
  • Team debates which funders to prioritise - need data to inform the decision
  • You've been applying for 12+ months so have a track record
  • Want to focus fundraising effort where it's most likely to succeed

When not to use this

  • Fewer than 20 applications (sample size too small for patterns)
  • Less than 12 months of track record (trends not yet meaningful)
  • Each application is completely unique (no patterns to find)
  • You already know exactly what works and consistently hit 70%+ success rate
  • Reluctance to track and analyse failures (you need honest data)

Steps

  1. 1

    Set up application tracking system

    Create a spreadsheet (or upgrade existing tracker) with columns: Date submitted, Funder name, Funder type (trust, lottery, corporate, etc.), Amount requested, Theme/programme funded, Outcome (pending/funded/rejected), Amount awarded (if different from request), Notes. Include ALL applications, not just successes.

  2. 2

    Backfill historical data

    Go through records from the last 12-24 months and add past applications. You need both successes and failures for meaningful analysis. If you can't remember rejection reasons, add what you know. Even partial data is better than none.

  3. 3

    Categorise applications consistently

    Create consistent categories: Funder types (e.g., local trust, national trust, lottery, corporate, government). Amount bands (e.g., <£5k, £5-25k, £25-100k, >£100k). Themes (e.g., core costs, specific programme, capital, research). Standardise your language so you can compare like with like.

  4. 4

    Calculate overall success rate and trends

    Simple first cut: what % of applications succeed? How has this changed over time (is fundraising getting easier or harder)? Group by quarter or year. This gives you the baseline. If you're at 10% success, you need a very different strategy than 60%.

  5. 5

    Analyse success rates by key attributes

    Break down success rate by: (1) Funder type - which categories say yes more often? (2) Amount requested - do you win more small or large grants? (3) Theme - which programmes funders prefer to fund? Create pivot tables or charts showing success rate for each category.

  6. 6

    Identify your sweet spot combinations

    Look for winning combinations: e.g., 'Local trusts + £10-25k requests + youth programme = 70% success rate' vs 'National trusts + core costs + any amount = 15% success rate'. These combinations tell you where to focus effort. Flag combinations where you've applied fewer than 5 times (not enough data yet).

  7. 7

    Spot patterns to avoid

    Identify combinations with consistently poor success: e.g., if you've applied to corporate funders 10 times with zero successes, maybe stop (or radically change approach). If requests over £100k never work, focus on smaller asks. These are hypotheses to discuss with team, not absolute rules.

  8. 8

    Create recommendations for team

    Summarise findings: (1) Our current overall success rate is X%, (2) We're strongest at [funder types / amounts / themes], (3) We consistently struggle with [categories], (4) Recommend: focus on [sweet spot], reduce effort on [weak areas], test [hypotheses]. Update quarterly as new data comes in.

Example code

Analyse grant application success patterns

Analyse grant application patterns to identify which funder types, amounts, and themes have highest success rates.

import pandas as pd
import matplotlib.pyplot as plt

# Load application data
df = pd.read_csv('grant_applications.csv')

# Calculate overall success rate
total_apps = len(df[df['outcome'] != 'pending'])
funded = len(df[df['outcome'] == 'funded'])
overall_rate = funded / total_apps * 100

print(f"Overall Success Rate: {overall_rate:.1f}% ({funded}/{total_apps})")

# Success rate by funder type
funder_success = df[df['outcome'] != 'pending'].groupby('funder_type').apply(
    lambda x: (x['outcome'] == 'funded').sum() / len(x) * 100
).sort_values(ascending=False)

print("\nSuccess Rate by Funder Type:")
print(funder_success)

# Success rate by amount band
amount_success = df[df['outcome'] != 'pending'].groupby('amount_band').apply(
    lambda x: (x['outcome'] == 'funded').sum() / len(x) * 100
).sort_values(ascending=False)

print("\nSuccess Rate by Amount Band:")
print(amount_success)

# Success rate by theme
theme_success = df[df['outcome'] != 'pending'].groupby('theme').apply(
    lambda x: (x['outcome'] == 'funded').sum() / len(x) * 100
).sort_values(ascending=False)

print("\nSuccess Rate by Theme:")
print(theme_success)

# Identify sweet spot combinations
combos = df[df['outcome'] != 'pending'].groupby(['funder_type', 'amount_band', 'theme']).agg(
    applications=('outcome', 'count'),
    funded=('outcome', lambda x: (x == 'funded').sum()),
    success_rate=('outcome', lambda x: (x == 'funded').sum() / len(x) * 100)
).reset_index()

# Filter to combinations with at least 5 applications
reliable_combos = combos[combos['applications'] >= 5]
sweet_spots = reliable_combos[reliable_combos['success_rate'] >= 50].sort_values('success_rate', ascending=False)

print("\nSweet Spot Combinations (5+ applications, 50%+ success):")
print(sweet_spots.to_string(index=False))

# Visualise trends over time
df['quarter'] = pd.to_datetime(df['date_submitted']).dt.to_period('Q')
quarterly = df[df['outcome'] != 'pending'].groupby('quarter').apply(
    lambda x: (x['outcome'] == 'funded').sum() / len(x) * 100
)

quarterly.plot(kind='line', marker='o', figsize=(10, 6))
plt.title('Grant Application Success Rate Over Time')
plt.ylabel('Success Rate (%)')
plt.xlabel('Quarter')
plt.axhline(y=overall_rate, color='r', linestyle='--', label=f'Overall Average: {overall_rate:.1f}%')
plt.legend()
plt.tight_layout()
plt.savefig('grant_success_trends.png')

Tools

Google Sheetsservice · free
Visit →
Pythonplatform · free · open source
Visit →
pandaslibrary · free · open source
Visit →

Resources

At a glance

Time to implement
days
Setup cost
free
Ongoing cost
free
Cost trend
stable
Organisation size
small, medium, large
Target audience
fundraising, ceo-trustees, operations-manager

Free tools are sufficient. Time cost: 1-2 days initial setup and historical data entry, 1 hour monthly to update with new applications.