GoRules Version 2 is here - redesigned, now with managed cloud.GoRules Version 2 is here!
Watch the launch videoWatchTax Exemption
Automated system that assesses organizations for 501(c)(3) tax-exempt status based on structure, activities, and financial metrics.
Solution
This tax exemption evaluation system automates the process of determining whether organizations qualify for tax-exempt status under section 501(c)(3) of the tax code. The system analyzes key organizational attributes including type (nonprofit, religious, or educational), annual revenue figures, percentage of public support funding, involvement in political activities, and the proportion of charitable work performed.
For qualifying organizations, the system assigns appropriate classifications such as public charity or private foundation based on their public support percentages. It additionally provides specific filing requirements based on revenue thresholds, indicating whether Form 990-N, 990-EZ, or the full Form 990 must be submitted. Organizations that don't qualify receive clear explanations about disqualification reasons - typically political activity involvement or insufficient charitable focus - along with guidance on restructuring options and potential alternative classifications.
How it works
The decision graph evaluates tax-exempt eligibility through these key steps:
- Data Collection: Gathers essential organization information including type, annual revenue, public support percentage, political activity status, and charitable activities percentage.
- Primary Eligibility Assessment: Evaluates if the organization meets fundamental 501(c)(3) requirements - no political activity and at least 85% charitable work.
- Classification Determination: For eligible organizations, determines specific status (public charity, private foundation) based on public support percentages.
- Requirement Assignment: For exempt organizations, calculates the appropriate annual filing form (990-N, 990-EZ, or 990) based on revenue thresholds.
- Non-exempt Guidance: For organizations that don't qualify, provides clear reasons for disqualification, appeal deadlines, and alternative classification options.
Where teams use it
- Nonprofit organizations seeking tax exemption
- Religious institutions applying for 501(c)(3) status
- Educational institutions evaluating tax status
- Private foundations determining filing requirements
- Organizations needing to restructure to qualify for exemption
- Tax professionals advising nonprofit clients
Inside the decision model
Tax Exemption ships as a JDM decision graph with 5 nodes, 1 decision table and 8 rules. Download it, load it into GoRules, and run it as-is on Zen Engine.
Organization Request
inputFive flat fields describe the organization: organizationType, annualRevenue, publicSupportPercentage, politicalActivity, and charitableActivitiesPercentage. The schema documents each one, and every downstream node reads from this set directly.
Sample requestJSON
{
"organizationType": "nonprofit",
"annualRevenue": 175000,
"publicSupportPercentage": 45.7,
"politicalActivity": false,
"charitableActivitiesPercentage": 92.3
}Tax Exemption Evaluation
tableOne table settles both eligibility and classification under a first hit policy. The top five rows all require politicalActivity to be false and charitableActivitiesPercentage >= 85: 'religious' and 'educational' organizations qualify outright, while 'nonprofit' rows split on publicSupportPercentage into a public charity at >= 33.3, a moderate-support charity at >= 10 and < 33.3, and an 'Exempt - Private Foundation' below 10. Because later rows only run when earlier ones miss, the two disqualification rows (politicalActivity true, charitable share < 85) catch failures, and the empty default row routes anything else to 'Requires Further Review'.
The cut points follow real 501(c)(3) practice. Political campaign activity is an absolute bar for 501(c)(3) organizations, and the 33.3 threshold tracks the IRS one-third public support test that separates public charities from private foundations, with the 10-33.3 band echoing the facts-and-circumstances fallback. The 85 percent charitable-activities floor is a policy simplification of the requirement that an exempt organization be operated primarily for exempt purposes.
| Organization TypeorganizationType | Political ActivitypoliticalActivity | Charitable Activities PercentagecharitableActivitiesPercentage | Public Support PercentagepublicSupportPercentage | Classificationresult.classification | Statusresult.status | Explanationresult.explanation |
|---|---|---|---|---|---|---|
| 'religious' | false | >= 85 | - | '501(c)(3)' | 'Exempt' | 'Religious organization with no political activity and high charitable focus' |
| 'educational' | false | >= 85 | - | '501(c)(3)' | 'Exempt' | 'Educational institution with no political activity and high charitable focus' |
| 'nonprofit' | false | >= 85 | >= 33.3 | '501(c)(3)' | 'Exempt' | 'Public charity with substantial public support' |
| 'nonprofit' | false | >= 85 | >= 10 and < 33.3 | '501(c)(3)' | 'Exempt' | 'Public charity with moderate public support' |
| 'nonprofit' | false | >= 85 | < 10 | '501(c)(3)' | 'Exempt - Private Foundation' | 'Private foundation with limited public support' |
| - | true | - | - | 'Non-exempt' | 'Not Eligible' | 'Disqualified due to political activity' |
+2 more rows in the downloadable template
Requires Additional Classification
switchRouting splits on a single test: result.classification == '501(c)(3)' sends exempt organizations to the filing-requirements branch, while the empty default statement carries everyone else, non-exempt and pending alike, to the guidance branch. Keeping the fork on classification rather than status means the private foundation variant still gets filing requirements, since its classification is also '501(c)(3)'.
Exempt Requirements Non Exempt GuidanceExempt Requirements
expressionFor exempt organizations, this step derives the annual filing obligation with the chained expression annualRevenue < 50000 ? '990-N' : annualRevenue < 200000 ? '990-EZ' : '990', which matches the actual IRS gross-receipts thresholds for the e-Postcard and the short form. It also sets result.publicDisclosureRequired to true, reflecting that exempt organizations must make their annual returns publicly available, and stamps result.effectiveDate.
annualRevenue < 50000 ? '990-N' : annualRevenue < 200000 ? '990-EZ' : '990'true'2025-03-20'Non Exempt Guidance
expressionOrganizations on the non-exempt path get actionable output instead of a bare denial. result.nextSteps distinguishes 'Not Eligible' organizations, which must restructure, from pending ones that should submit documentation for manual review, and result.alternativeOptions suggests 'Consider 501(c)(4) or 501(c)(6) classification' for nonprofits, the real alternatives for organizations with political or business-league activity. A fixed result.appealDeadline gives the response a concrete follow-up date.
result.status == 'Not Eligible' ? 'Organization must restructure to meet eligibility requirements' : 'Submit additional documentation for manual review''2025-05-19'organizationType == 'nonprofit' ? 'Consider 501(c)(4) or 501(c)(6) classification' : ''Other Public Sector templates
View all templatesGovernment Assistance
Streamlined decision system that determines program eligibility based on income thresholds, household size, age factors, and special circumstances.
Public SectorMunicipal Permit Evaluation System
Automated system that evaluates building and event permits based on zoning regulations, safety requirements, and environmental impact factors.
Public SectorImmigration Eligibility Evaluator
Rules-based system automating visa application processing by evaluating documentation completeness, background checks and qualification scoring.
Make this template
your own.
Load Tax Exemption into GoRules, adjust the rules to your policy, and ship it behind your own API.