The example is made up. Hillside Literacy Project is a made-up nonprofit that runs after-school reading programs, and every donor, campaign and number is made up. Its board will use the mid-year development report to decide whether to hire a second reading coordinator.
What are the most common donor gift analysis mistakes?
| # | Mistake | Fix |
|---|---|---|
| 1 | Counting pledges as gifts | Mark them "Pledge - not received" and leave them out of totals |
| 2 | Asking for totals before checking the file | Ask for columns, rows, dates and problems first, no insights |
| 3 | Leaving synced duplicates in | Remove the second copy of each |
| 4 | Letting ChatGPT decide what counts | Tell it how to handle each problem |
| 5 | Uploading names and contact details | Remove them; a donor ID is enough |
| 6 | One big total | Split by month and by source |
| 7 | Takeaways with no numbers | Ask for one sentence each, with its number |
| 8 | Not tying totals to deposits | Check with finance before the board meeting |
Which mistakes happen before any totals?
2. Asking for totals before checking the file. A total made from a messy export looks just as confident as a correct one. The lesson's first request asks ChatGPT to say what each column means, how many rows there are, the date range, and any problems like duplicates, blank cells or rows that may not be money actually received, and ends: "Don't give me any insights yet." It explains all seven columns, so you know it understood the file, and reports 1,212 rows from January 2 to June 30, 2026. Then click Problems found.
1. Counting pledges as gifts. The check finds 14 rows with the gift type Pledge, $18,750 in total. A pledge is a promise to give. An $18,750 pledge looks exactly like $18,750 in the bank once it's added up.
3. Leaving synced duplicates in. It also finds five online gifts that appear twice with the same donor, date, transaction ID and amount. The giving platform synced them twice. Left in, $1,240 would count twice. The shared transaction ID is the clue that they are duplicates, not two real gifts.
Who should decide what counts?
4. Letting ChatGPT decide. You decide what counts as a gift, not ChatGPT. Click Paste fix: the five duplicates are sync errors, so remove the second copy of each; the 14 pledges are promises, so change their gift_type to "Pledge - not received" and leave them out of every total until they're paid. Then ask for the cleaned file.
ChatGPT reports 1,207 rows, 1,193 of them gifts received, and gives you hillside-gifts-jan-jun-2026-cleaned.csv. Click it to open the rows next to the chat; the foundation's $10,000 pledge now says "Pledge - not received". Marking instead of deleting keeps the pledges in the file, so you can still show them to the board.
Try it free, step by step
Analyze a Donor Gift Export with ChatGPT: Board-Ready Giving Numbers for a Nonprofit. Upload your donor database’s gift export to ChatGPT, catch gifts that synced twice and pledges that were never received before anything is added up, then get giving by source, a chart and three… You do every step yourself in a practice copy of ChatGPT, it checks your work as you go, and “Do it for me” finishes any step you get stuck on. Free, and nothing touches your real accounts.
Start the free lessonWhat should never go in the upload?
5. Uploading names and contact details. Donor data is personal. Remove names, emails, addresses and card details before you upload anything. A donor ID is enough for this analysis: the lesson only needs the date, the donor ID, the donor type, the campaign, the gift type, the transaction ID and the amount. Use a business ChatGPT plan that doesn't train on your data, and follow your organization's privacy policy and any promises you made to donors. The PII entry covers what counts as personal data.
Which mistakes make the report misleading?
6. One big total. $157,765 received from January to June says little on its own. The lesson asks for gifts received by month, split into one-time gifts, monthly donors, foundations and businesses, with a total row, then January to March against April to June for each source. That shows every source grew in the second quarter, and that March and June are big only because two foundation checks came in. A line chart by month, one line per source, makes it obvious at a glance.
7. Takeaways with no numbers. Ask for three takeaways for the board, one sentence each, with the number that backs each one up. The lesson gets: the Spring Appeal worked (one-time gifts jumped from $8,400 in March to $21,600 in April), monthly donors are the steadiest money (13.0% of everything received), and a third of giving came in two checks (foundations gave $55,000, 34.9% of the total).
8. Not tying totals to deposits. The same request asks for one thing to double-check. ChatGPT's answer: list the 14 pledges separately as "pledged, not received", ask your finance team or bookkeeper whether the June foundation payment is for this year's grant or an early payment of next year's, and check that the totals match the deposits they recorded.
Key takeaways
- Pledges are promises, not money received. Keep them out of totals.
- Check the file before any totals, and ask for no insights yet.
- Remove synced duplicates, and make the calls about what counts yourself.
- Take names and contact details out before you upload.
- Split by source, back every takeaway with a number, and tie totals to deposits.
The ChatGPT donor gift export FAQ answers the how-to questions. The base ChatGPT spreadsheet lesson teaches the same check-first habit on other data.
Frequently asked questions
- Should pledges ever be in the total?
That depends on your organization's policy and how your finance team books them. In the lesson they stay out of every total and are shown separately.
- Can ChatGPT find duplicates by itself?
It found them in the check step, because the lesson asked for duplicates. It still waited for you to say what to do with them.
- Why a line chart?
It shows each source month by month, so the April appeal spike, the two foundation spikes and the slow climb of monthly donors are easy to see.
- Do I need formulas for any of this?
No. ChatGPT usually writes and runs a little Python code to add up the rows, so the totals are worked out from the file itself.

