• Home
  • Services
    • Overview
    • Smarter mailings
    • Political monitoring
    • Dashboards & reports
    • Strategic advice
    • Bespoke projects
  • Clients
  • Sample Projects
  • Team
  • Let’s talk
  • Blog
  • Free consultation

Machine Learning for Selecting Letter Recipients

Smarter mailings with machine learning

Write only to the people likely to give — less postage and CO₂, more impact per letter. We design and train a model specific to your organisation that predicts the expected donation revenue for everyone in your database.

Book a free consultation

Your Benefits at a Glance

Save postage or raise revenue

You set the minimum value; each letter must pay off.

Automatic learning

The model refines itself after every mailing.

Transparent, not a black box

Comprehensible rules and visualisations, not guesswork.

Privacy first

Open-source tools on encrypted servers in our office.

Data-driven selection

Decisions from your data, not coarse heuristics.

Climate benefit

Less printing means less paper and less CO₂.

Why Is It Worthwhile?

Fundraising letters remain one of the most effective channels in the non‑profit sector, yet they generate significant postage and printing costs—as well as CO₂ emissions. Our solution: write only to people with a high probability of donating. Many organisations still rely on simple heuristics such as “Anyone who ignored five mailings …”. Such rules are too coarse and often poorly substantiated; they waste potential and drive costs up, and they lack the flexibility an organisation needs to strategically improve the ROI of its fundraising letters.

Our Approach

We design and train an organisation‑specific machine‑learning model that predicts the expected donation revenue for every person in your database, using your historical fundraising data. You then define a threshold (e.g. twice the printing and postage costs) and send letters only to recipients predicted to exceed that value. After each mailing, the model is updated with the new data and continues to learn.

1

Feed the data — donation history, postcode, membership status, payment methods …

2

Train the model — we work with you to decide which model type is the best fit, then train it on your data.

3

Select recipients — set the threshold, export the list, send the mailing.

+6.3%

more surplus for one client’s letter campaign. The model is retrained continuously and now predicts who will donate—and how much—so the organisation mails more precisely and profitably.

Even with just a few tens of thousands of letters sent and several thousand individual donations, a model can already predict the expected donation per person.

Possible Objections

Privacy?

For our mailing selections, we do not use large language models (LLMs) on corporate platforms such as ChatGPT; we rely on open‑source tools that run locally on fully encrypted machines in our office.

Black box?

Transparency is crucial for our clients. That’s why we rely on an explainable model (decision tree) that makes recipient selection understandable for everyone. More‑complex methods can also be explained, but they are less intuitive.

Background: What Is Machine Learning?

Machine learning (ML) builds statistical models that learn from historical data in order to make predictions or decisions for new, unseen data. Unlike large language models (LLMs), which aim to generate plausible text and operate as black boxes, classic machine‑learning methods focus on structured features (e.g. age, donation history, postcode) and are therefore much leaner, more resource‑efficient and easier to control. A key advantage is the explainable nature of many techniques:

  1. Intrinsic explainability – models that are transparent by design, such as decision trees; every branch represents a concrete if‑then rule users can directly follow.
  2. Post‑hoc explainability – more‑complex methods such as random forests or boosting algorithms can also be interpreted with techniques like SHAP values or LIME, but they are less intuitive.

For our client we deliberately chose a decision tree: its clear branches reveal which features (e.g. recent donation frequency, total past contributions, payment method) lead to which selection, thereby increasing transparency for all involved.

How does ML‑based selection work? Unlike simple heuristics, the resulting models can identify complex relationships between variables, improving predictive accuracy. Even data‑sparing organisations usually have enough basic information to train a model: postcode, past mailings, date and amount of previous donations (by payment method), membership status, etc.

Fictional Example – Trees4Teuto

The fictional forest‑conservation NGO Trees4Teuto wants to maximise the total donations from its next letter campaign and opts for an easy‑to‑understand decision tree.

We would build an interface to Trees4Teuto’s database to import past mailing data and potential recipient data into our software package. We do not extract names, addresses, bank details, etc. (Interfaces currently exist for OpenMove and CiviCRM.)

From these data we create a decision tree that might include the following leaves:

Leaf Criterion Expected value per letter
1 Total donations > €200 & mailings since last donation > 5 & last payment via PayPal €1.34
2 Total donations ≤ €200 & mailings since last donation > 5 & last payment via PayPal €0.60
3 Total donations > €200 & mailings since last donation ≤ 5 & last payment via bank transfer €5.67

(This is a simplified example; in reality there are more like two dozen rules.)

Trees4Teuto sets a minimum return of €1.20 per letter and therefore selects everyone from leaves 1 and 3 for the mailing. This cuts postage costs, saves paper and significantly increases the net benefit of the campaign.

German Article

In September 2025 the German Fundraising-Magazin published our approach. (Sorry, German only.)

Among the organisations we work with on this:

Wikimedia Deutschland Digitalcourage

Curious?

Let’s talk. Phone / Signal (and other messengers): +49 177 3068911

  Schedule a video call

  1. DS4C, proudly done with Quarto, R and python