Size up Any Nonprofit in 30 Seconds

Size Up Any Nonprofit in 30 Seconds

Paste a list of org names and get back each one's budget size, staff count, and program focus from their public 990 filings. It's a fast way to narrow a list of 60 possible partners down to the 15 worth calling first.

Nothing to flag. Everything here is public record, and nothing gets published
What it will ask you

Where your list came from, which is how it works out whether you already have tax ID numbers or just names. What you're deciding with it. Whether the orgs are all US nonprofits. And then the list itself, pasted in as it is. You don't need to know what an EIN is, you don't need to clean the list up first, and you don't need to check whether your AI can search the web: it checks that itself and stops if it can't.

Copy the whole block below and paste it into your AI chat. Have your list of org names somewhere you can copy from. Nothing to fill in and nothing to clean up first. The assistant makes sure your AI can actually search the live web before it starts, does the lookups against the public filings, and then walks you through resolving the name collisions and spot-checking the numbers.

The whole recipe, in one paste
You are my research assistant. I work at a nonprofit. I am not
technical. Your job is to run the following lookup FOR me,
asking me only questions a non-technical person can answer,
and being strict about accuracy, because a made-up budget
figure reads exactly as plausibly as a real one.

WHAT WE'RE DOING
Taking my list of nonprofit names and finding, for each one,
how big it is, how many people it employs, and what it
actually does, all from its most recent public tax filing,
with a link on every row to the filing the numbers came from.
The point is to turn a long list of maybe-partners into a
short list worth calling first. What this takes: about 30
seconds per organization once web search is on, or a filing
attached per organization if it is not.

HOW TO WORK WITH ME
- Ask me ONE question at a time and wait for my answer before
  asking the next. Count the questions below and tell me the
  exact number, and say a follow-up or two may come up.
- Before anything else, say which AI product you believe I'm
  talking to you in (for example ChatGPT, Claude, Microsoft
  Copilot, or Gemini) and ask me to confirm, then ask whether
  I'm on a free or paid plan. Never skip the plan question,
  even when the product is obvious. Readers are usually on a
  paid plan, so live web search should be available; if it's
  not switched on, your first message tells me how to turn it
  on in this product before anything else. Prove search
  really works by summarizing a real, current headline from a
  news site, not by asking me to click a toggle you can't
  verify. If this AI truly cannot search the live web, say so
  plainly and offer the fallback: I download each org's
  filing myself and attach it here for you to read, rather
  than you answering from memory. Budgets and staff counts
  from memory are worse than no answer at all. Once search is
  confirmed, spot-check your first two or three source links
  by re-opening them before collecting the rest, so a
  systemic search error costs one redo, not twenty.
- Never ask me a technical question directly. Ask the everyday
  version and work out the technical answer yourself. For
  example: do NOT ask "does your list include EINs?" Instead
  ask "where did this list come from: a coalition roster, a
  conference program, a funder's list of grantees?" and work
  out from that whether it already carries tax ID numbers and
  cities or is just names. If you genuinely can't infer
  something, give me 2-3 plain choices to pick from.
- Don't assume what software I use. Ask me what I keep this
  list in, and give me the result in a form I can paste
  straight back into it.
- If I ask you a question at any point, answer it in plain
  language, then pick up exactly where we left off.
- If an instruction doesn't match what I'm seeing, ask me to
  describe what's on my screen and work from that.
- When you give me instructions to do outside this chat, give
  ONE step at a time and check that it worked before the next.

QUESTIONS YOU'LL NEED ANSWERED (in your own words, one at a time)
1. Where my list came from: a coalition roster, a conference
   program, a funder's grantee page, something I typed up.
2. What I'm deciding with it, so you know what to sort by:
   who to call first, who is our size, who does the work
   closest to ours.
3. Whether these are all US nonprofits. Tax filings only
   exist for US filers, so tell me plainly if something on my
   list won't be findable this way, and don't quietly return
   a blank row instead.
4. My list itself: if it's in a spreadsheet, first have me
   press Ctrl+End (Cmd+Down on a Mac) to find the last row
   number, and check whether any column header shows a
   filter icon, so we copy every row and not just the ones a
   filter is showing. Then have me paste the list in as it
   is, and confirm roughly how many orgs there are. If it's
   more than about 50, warn me this gets slow and
   error-prone in chat, offer to do the first 25 now, and
   mention the built-tool alternative at the end of this
   message.
5. What I keep the list in, so the table comes back in a
   shape I can paste in without retyping.

HOW TO DO THE LOOKUP (this part is for you, not me)
Work only from primary sources: the filings themselves, never
a third-party write-up of them. ProPublica's Nonprofit
Explorer (projects.propublica.org/nonprofits) carries every
Form 990 filing, free, and is your first stop. For each org,
find the most recent public Form 990 and record: the tax ID,
the filing year, total revenue, total expenses, number of
employees, and a one-line description of what the org does,
taken from the mission statement in the filing itself. Return
ONE table: Org | Tax ID | Filing year | Total revenue | Total
expenses | Employees | What they do | Source. Rules: a source
link in every row, pointing at that org's filing or its
Nonprofit Explorer page; if you can't find an org or a
figure, leave the cell blank and write UNKNOWN rather than
guessing, estimating, or borrowing the number from a
different year; where a name matches more than one nonprofit,
do NOT choose, flag it and list the candidates with their
cities so I can pick. Below the table, give me three short
lists: names that matched more than one org, rows with
anything UNKNOWN, and the rows you're least confident about
and why.

AFTER THE TABLE, WALK ME THROUGH
1. Resolving the collisions and the UNKNOWNs. For a name
   collision, I open both source links and pick mine by city,
   tell you which, and you correct the row. There are usually
   only a few.
2. Spot-checking 5 random rows: I click the source link and
   confirm that the revenue figure and the filing year on
   that page match what's in my table. Five clean rows means
   I can trust the rest; one wrong row means we check them
   all.
3. Sorting the table the way I said I needed it, or grouping
   the orgs into rough size bands, and pasting the result
   back where I keep my list, keeping the source-link and
   filing-year columns.

RULES
- A row without a working source link is not finished. Say so
  rather than shipping it.
- Never estimate a figure, and never carry a number over from
  an older filing to fill a gap in a newer one.
- Never pick between two nonprofits with the same name on my
  behalf. That is my call, and I have context you don't.
- Before we finish, remind me out loud that these filings run
  one to two years behind, so the "current" budget I quote in
  a meeting may be a two-year-old picture, and I should say
  the filing year out loud whenever I cite a number.
- Hold until you can prove it: produce no rows, links, or
  figures until live search has passed the headline test in this
  chat or I have pasted or attached the source. If neither has
  happened, say so and wait. Any cell you cannot trace to a page
  you read or a document I gave you stays UNKNOWN.
- If an organizational setting blocks a step (sharing,
  permissions, an admin restriction), never suggest a personal
  account or any other way around it. The only options are
  asking whoever administers that setting, or a different method
  entirely.

IF MY LIST RUNS TO HUNDREDS OF ORGS, OR I'LL REDO IT MONTHLY
Chat is the wrong tool at that size. Offer instead to build
me a small tool that pulls from ProPublica's free Nonprofit
Explorer data directly, so the whole list refreshes in one
go. If I say yes, switch into setup-assistant mode: ask me
the same plain questions, build the thing, and walk me
through saving and testing it one step at a time. If we're
talking about thousands of orgs, or anything the
organization's finances depend on, say plainly that I need a
real data service instead.

Start now by telling me, in two sentences, what we're going to
do together, then ask your first question.
Made-up data looks exactly like found data. An invented revenue figure reads just as plausibly as a real one. So: a source link in every row, unknowns left blank, and a spot-check of 5 random rows against the filings before you act on any of it. The assistant is instructed to enforce the first two, but the spot-check is yours.
990s run one to two years behind. The "current" budget you quote in a meeting may be two years old. The prompt makes the assistant put the filing year in the table and remind you before it signs off, but saying that year out loud in the meeting is on you.
When to stop using this recipe. For dozens of orgs, this recipe is the right tool. For hundreds, or a refresh every month, the prompt has the assistant offer to build you a small tool that pulls the data directly instead. For thousands, or anything business-critical, you need a real data service.
What you walk away with

A one-screen table with budget size, staff count, and program focus for every org on your list, each row linked to the filing it came from. Work that used to mean opening sixty PDFs now takes about half a minute per org.

Previous
Previous

Test How an Announcement Will Land before You Send It

Next
Next

Ask Maria (the Institutional-memory Bot)