The investigation documents how program officers were handed spreadsheets of flagged terms and told to grep grant titles and abstracts for matches, with hits routed to termination. The reporting emphasizes that there was no central rubric — just a proliferation of overlapping keyword lists across agencies — and that the keyword didn't need to be central to the science to trigger cancellation.
Frames the mechanism as the oldest anti-pattern in moderation tooling: substring matching applied to a domain that requires semantic understanding. Argues every engineer who has ever written a regex-based content filter knows why this approach was destined to fail at scale.
Documents concrete examples of collateral damage: a cervical cancer screening study flagged for mentioning 'women,' a rural broadband study flagged for 'underserved,' and a tuberculosis vaccine trial flagged because its cohort included 'Hispanic.' Estimates $3+ billion in terminated or frozen funding across NIH cancer, cardiovascular, and infectious-disease portfolios, plus NSF materials science and STEM education programs.
By submitting the investigation to Hacker News where it reached 221 points, signaled that the technical audience should treat this as a significant story about the real-world consequences of naive filtering. The submission framing focuses on the sheer scale of billions in canceled research funding.
A Higher Ed Dive investigation, picked up on Hacker News with 221 points, laid out the machinery behind the mass cancellation of federal research grants across NIH, NSF, and other agencies in 2025. The mechanism wasn't scientific review — it was a set of keyword lists. Program officers were handed spreadsheets of flagged terms and told to comb grant titles, abstracts, and specific aims for matches. Anything that hit was routed for termination review, and in practice, most hits led to termination.
The lists themselves read like a stack overflow of every culture-war grievance of the past decade. Reporting has documented flagged terms including *diversity*, *equity*, *inclusion*, *DEI*, *underserved*, *marginalized*, *systemic*, *trauma*, *bias*, *gender*, *transgender*, *nonbinary*, *women*, *minority*, *Black*, *Hispanic*, *LGBTQ*, *climate change*, *climate justice*, *environmental justice*, *misinformation*, *disinformation*, *hate speech*, and *vulnerable populations*. Several lists surfaced from different agencies with overlapping but non-identical vocabularies — there was no central rubric, just a proliferation of grep patterns.
The result: an estimated $3+ billion in research funding terminated or frozen, spanning NIH's cancer, cardiovascular, and infectious-disease portfolios; NSF's materials science and STEM education programs; and Department of Education research grants. A cervical cancer screening study got flagged because it mentioned *women*. A rural broadband study got flagged for *underserved*. A tuberculosis vaccine trial got flagged because its cohort description included *Hispanic*. The keyword didn't have to be central to the science; it just had to appear.
Every engineer who has ever written a regex-based content filter knows exactly what happened here, and exactly why it was going to fail. This is the oldest anti-pattern in moderation tooling: substring matching applied to a domain that requires semantic understanding. We've watched the same movie with profanity filters that ban the word *Scunthorpe*, with copyright bots that flag birdsong as pirated music, with security scanners that trip on the word *password* inside `password_reset_token`. The difference is that when Cloudflare's WAF false-positives your blog post, you file a ticket. When NIH's keyword filter false-positives your R01, a graduate student loses their stipend and a five-year longitudinal study loses its cohort.
What makes this particularly grim from a systems perspective is the absence of any feedback loop. In a normal moderation stack, false positives generate appeals, appeals generate labeled data, and labeled data retrains the classifier. The federal keyword system has none of that. Grant terminations were issued by form letter. Appeals processes were either nonexistent or routed to the same officials who executed the terminations. There is no confusion matrix. There is no precision-recall curve. There is a list of words and a list of dead grants.
The editorial framing in most coverage has focused on the ideological content of the lists — and yes, the lists are ideologically motivated. But the deeper story for practitioners is what happens when you deploy a lexical classifier against natural language written by domain experts who have their own vocabulary. Scientists don't write the way policy staffers read. A cardiologist studying racial disparities in statin response uses the word *Black* because that's the epidemiological variable. A climate scientist studying ocean acidification uses *climate change* because that's the physical phenomenon. The keyword filter can't distinguish between advocacy and description, and nobody bothered to try.
The community reaction on Hacker News was, predictably, a mix of horror and grim recognition. Multiple comments pointed out that this is functionally equivalent to running `grep -l` against a corpus of scientific literature and deleting the matches. Others noted that scientists have already begun self-censoring — rewriting grant applications to avoid trigger words, substituting *health disparities* with *health outcomes variation*, *underserved* with *rural*, *climate change* with *environmental variability*. This is the exact linguistic laundering pattern you see in any authoritarian information environment, and it has the same effect on research quality: it makes the work harder to find, harder to cite, and harder to build on.
If you work anywhere near federal funding — university labs, national labs, DARPA-adjacent startups, SBIR/STTR recipients, open-source projects that take NSF POSE or CISE grants — your prose is now part of your compliance surface. Treat your grant applications and public-facing project descriptions the way you'd treat code that has to pass a hostile linter with no documentation. Some concrete implications:
Audit your existing federal-facing text. Run your own grep against your grant portfolio, project READMEs, and NSF/NIH biosketches for the terms known to be on the current lists. Not because you should change your science, but because you need to know your exposure before someone else does. Several universities have already stood up internal review tools for this; if yours hasn't, you're relying on individual PIs to do it manually at 11pm before a submission deadline.
Version-control your proposals. If you rewrite a proposal to remove flagged terms, keep the original. When the political weather changes — and it will, in one direction or another — you'll want the diff. This is also useful for internal governance: institutions need to be able to demonstrate what they changed and why, or they lose the ability to push back when the next list drops.
Assume any AI-generated grant text is contaminated. LLMs trained on scientific literature will happily produce prose full of the exact terms currently being flagged, because those terms are the standard vocabulary of the last twenty years of biomedical and social-science research. If you're using Claude or GPT to draft Specific Aims, you now need a second pass with a keyword-aware review — either a human or a smaller model tuned on the flagged lists. This is a genuinely new prompt-engineering problem, and nobody has good tooling for it yet.
The grants that were cancelled are mostly gone — the money has been clawed back, the postdocs have left the field, the cell lines are in liquid nitrogen and will not be revived. What remains is the precedent that lexical filtering is an acceptable way to make funding decisions about scientific work. That precedent will outlast the specific lists, and it will be reached for again by whichever administration wants to prune whichever research agenda next. The right long-term response isn't linguistic camouflage — it's building the institutional and legal machinery to require that funding decisions actually engage with the science. Until then, every grant writer in America is running a spell-checker against a blocklist they can't see.
Top 10 dev stories every morning at 8am UTC. AI-curated. Retro terminal HTML email.