This project provides free, open-source analytics tools specifically designed for nonprofits to replace expensive software subscriptions with purpose-built, accessible solutions. Our goal is to democratize data analytics for resource-constrained organizations doing important work.
nonprofit-analytics-tools/
├── index.html # Minimal static landing page (NO JavaScript)
├── donor-retention-calculator/ # Live tool for donor analysis
│ └── app.R # Shiny application
├── board-packet-generator/ # Live tool for board materials
│ └── app.R # Shiny application
├── grant-research-assistant/ # Live tool for foundation research
│ └── app.R # Shiny application
└── capital-campaign-forecaster/ # Live tool for campaign planning
└── app.R # Shiny application (with Monte Carlo simulation)
- Framework: R/Shiny for interactive web applications
- Deployment: Shinyapps.io (cloud hosting, NOT shinylive)
- Landing Page: GitHub Pages with minimal static HTML (zero JavaScript)
- Visualizations: Plotly (interactive charts)
- Data Tables: DT package (sortable, filterable tables)
- Mapping: Leaflet (NOT MapLibre due to shinyapps.io compatibility)
- CI/CD: GitHub Actions for automated deployment
- Cloud Hosted: All tools run on shinyapps.io infrastructure
- Zero Cost: Free hosting, no infrastructure expenses for users
- Data Privacy: Stateless apps, no data persistence
- Mobile Responsive: Works on all devices
- Public Access: No Auth0, all tools publicly accessible
- NEVER use shinylive - causes browser crashes (100+ MB WebAssembly files)
- Landing page MUST be minimal - inline CSS, zero JavaScript, no external dependencies
- GitHub Pages serves ONLY index.html - no app files, no large assets
- If landing page becomes unstable, revert to ultra-minimal HTML immediately
- Directory Structure: Create a new subdirectory for each tool
- Shiny App: Build the tool as a standard R/Shiny application
- Deploy to Shinyapps.io: Use GitHub Actions workflow, NOT shinylive
- Landing Page: Add tool card to index.html with link to shinyapps.io URL
- Update Workflows: Add app name to deploy-shinyapps.yml options and paths
- Color Palette:
- Primary gradient:
#F9B397,#D68A93,#AD92B1,#B07891 - Background: White with subtle transparency effects
- Text: Dark gray (
#333) for readability
- Primary gradient:
- UI Components:
- Card-based layouts with rounded corners
- Inset footers with 16px border-radius
- Gradient backgrounds for CTAs
- Inter font family (via Google Fonts CDN in apps only)
- Consistent spacing and padding
- Dual Data Support: Include sample datasets AND user upload capability
- Insights Focus: Provide interpretations, not just visualizations
- Benchmarking: Include industry standards where applicable
- Export Options: Allow users to download results/reports
- Help Documentation: In-app guidance for non-technical users
- Professional Footer: Include CTA linking back to dalyanalytics.com/contact
# Install required R packages
R -e "install.packages(c('shiny', 'plotly', 'DT', 'tidyverse', 'leaflet', 'rsconnect'))"
# Test Shiny app locally
cd donor-retention-calculator/
R -e "shiny::runApp('app.R')"# Manual deployment via GitHub Actions
gh workflow run deploy-shinyapps.yml -f app_name=donor-retention-calculator
# Automatic deployment on push to main (if app files changed)
git add capital-campaign-forecaster/app.R
git commit -m "Update Capital Campaign Forecaster"
git push origin main# Check package versions
packageVersion("shiny")
packageVersion("plotly")
packageVersion("leaflet")
# Update packages
update.packages(ask = FALSE)- Donor Metrics: Retention rate, lifetime value, acquisition cost, churn prediction
- Grant Metrics: Success rate, time-to-decision, funder diversity, pipeline value
- Fundraising Metrics: Campaign ROI, channel performance, goal attainment, donor pyramids
- Program Metrics: Cost per outcome, beneficiary reach, impact measurements
- Capital Campaign Metrics: Multi-year projections, retention vs acquisition ROI, confidence intervals
- Data Silos: Help consolidate insights from multiple systems
- Manual Processes: Automate repetitive analysis tasks
- Limited Budgets: Provide enterprise-level insights at zero cost
- Staff Capacity: Make tools intuitive for non-technical users
- Board Reporting: Generate presentation-ready visualizations
- Campaign Planning: Modernize forecasting with Monte Carlo simulation
- Multi-year retention tracking
- Cohort analysis
- Industry benchmarks
- Donor segmentation
- URL: https://dalyanalytics.shinyapps.io/donor-retention-calculator/
- Automated report generation
- Financial summaries and visualizations
- Impact metrics
- Executive dashboards
- URL: https://dalyanalytics.shinyapps.io/board-packet-generator/
- Interactive map of 70+ New England foundations
- Filterable by state, asset size, grantmaking
- IRS 990 data integration
- ProPublica links for recipient research
- Uses tidygeocoder for address geocoding
- URL: https://dalyanalytics.shinyapps.io/grant-research-assistant/
- Monte Carlo simulation with 1,000 scenarios (base R only, no special packages)
- Multi-year capital campaign projections (3-5 years)
- ROI probability analysis with risk classification
- Confidence intervals (10th/50th/90th percentiles)
- 4 scenario tabs: Baseline, Retention Improvement, Acquisition Focus, Combined Strategy
- Animated sliders for what-if analysis
- Strategic recommendations based on simulation outcomes
- URL: https://dalyanalytics.shinyapps.io/capital-campaign-forecaster/
- Volunteer Analytics: Hours tracking, retention, skill mapping, impact measurement
- Program Impact Dashboard: Outcome tracking, beneficiary demographics, cost-effectiveness
- Event ROI Calculator: Ticket sales, sponsorships, expenses, multi-year trends
- Email Campaign Analyzer: Open rates, conversion, segmentation effectiveness
- Grant Pipeline Manager: Application stages, probability scoring, deadline management
- Major Donor Prospecting: Wealth screening alternatives, engagement scoring
- Budget vs Actual Tracker: Variance analysis, forecasting, department breakdowns
- Peer Benchmarking Tool: Compare against similar organizations
- Event Vendor Tracker: Airtable Omni handles this natively - no technical differentiator
- Deploys Shiny apps to shinyapps.io
- Triggers on: push to main (when app directories change) OR manual workflow_dispatch
- Apps: donor-retention-calculator, board-packet-generator, grant-research-assistant, capital-campaign-forecaster
- Uses secrets: SHINYAPPS_ACCOUNT, SHINYAPPS_TOKEN, SHINYAPPS_SECRET
- Deploys ONLY index.html and assets/ to GitHub Pages
- Triggers on: push to main (when index.html or assets/ changes) OR manual workflow_dispatch
- NEVER deploys app files - those are on shinyapps.io
- DO NOT USE - old shinylive deployment that caused browser crashes
- Kept disabled as historical reference
- Create feature branch:
git checkout -b tool/[tool-name] - Develop in isolated subdirectory
- Include README with tool-specific documentation
- Add comprehensive sample data
- Update index.html with tool card
- Update deploy-shinyapps.yml with new app name
- Submit PR with screenshots
- Focus on user experience over features
- Maintain backward compatibility
- Add tests for critical functions
- Document any new dependencies
- Update CLAUDE.md if architecture changes
When building tools, align naming with nonprofit sector language:
- ✅ "Capital Campaign Forecaster" (industry standard term)
- ❌ "Donor Retention Forecaster" (too narrow)
- ✅ "Campaign planning" and "stewardship" (how prospects talk)
- ❌ "Donor churn prediction" (too technical)
- Emphasize modernizing existing processes (campaign planning, board reporting)
- Highlight Monte Carlo simulation as differentiator from static spreadsheets
- Focus on multi-year strategic planning not just tactical metrics
- Position for major nonprofits (capital campaigns = larger organizations)
- Donor Retention: AFP Fundraising Effectiveness Project benchmarks
- Grant Success: Foundation Center statistics
- Program Evaluation: Logic Model frameworks
- Capital Campaigns: Industry standards for feasibility studies
- Shiny Documentation
- Shinyapps.io Documentation
- Plotly R Documentation
- Leaflet for R
- GitHub Pages Setup
Project Maintainer: Daly Analytics
- Website: https://www.dalyanalytics.com
- Email: hello@dalyanalytics.com (updated from jasmine@)
- GitHub Issues: Report bugs or request features
MIT License - Free for all nonprofit use
New Tool Built: Program Impact Dashboard with Causal Impact Analysis
Created a comprehensive program impact assessment tool for Connecticut nonprofits with:
- Live Census Data Integration: tidycensus package fetching ACS 5-year estimates
- Causal Impact Analysis: Bayesian structural time-series modeling (CausalImpact package)
- Interactive Visualizations: Plotly charts with counterfactual predictions and 95% credible intervals
- Connecticut Focus: Leaflet mapping with geocoded towns, service-focused (no poverty targeting)
- 5 Sample Programs: Literacy, workforce training, diabetes prevention, arts enrichment, mindfulness/yoga
Packages Added:
tidycensus- US Census Bureau API integrationtidygeocoder- OpenStreetMap geocoding for town coordinatesCausalImpact- Bayesian causal inference (requires R >= 4.5.0)zoo- Time series data formatting for CausalImpactbsts- Bayesian structural time-series (dependency of CausalImpact)
Key Features:
-
Value Boxes with Semantic Coloring:
- Info (blue): Participants served
- Success (green): Completion rate
- Primary (purple): Outcome improvement (main metric)
- Warning (amber): Cost per participant
-
Census API Integration:
- API key stored in
.Renvironfile:c76c7fb917b33c30509c75b5ece3adf73fec364c - Fallback to sample data if API fails
- Fetches population and median household income for 15 largest CT towns
- Geocodes addresses via OSM for Leaflet mapping
- API key stored in
-
CausalImpact Analysis:
- Compares observed outcomes vs counterfactual prediction
- Uses state averages as control group
- Displays absolute effect, relative effect, p-values
- 95% credible intervals with shaded confidence bands
- Interpretation text explaining statistical significance
-
Service-Focused Design:
- Removed poverty rate metrics (trauma-informed approach)
- Emphasizes program reach percentage
- Focus on service coverage, not demographic targeting
program-impact-dashboard/app.R- Main Shiny application (1,000+ lines)program-impact-dashboard/.Renviron- Census API key (gitignored)program-impact-dashboard/.Renviron.example- Template with setup instructionsprogram-impact-dashboard/README.md- Comprehensive documentation
Required: Upgrade to R >= 4.5.0 for bsts package (CausalImpact dependency)
Quality Control Analysis Completed:
- Risk Level: LOW-MEDIUM
- Existing Apps: All 4 apps use compatible packages, no breaking changes expected
- Main Concern: Shinyapps.io may not yet support R 4.5.2 (needs verification)
- Migration Plan: Staged deployment starting with lowest risk apps
- Testing Priority:
- program-impact-dashboard (must work with R 4.5.2)
- grant-research-assistant (external API dependency)
- donor-retention-calculator (standard packages)
- capital-campaign-forecaster (Monte Carlo simulation)
- board-packet-generator (base64 encoding)
Package Dependency Matrix:
- All apps use stable tidyverse/Shiny ecosystem packages
- No deprecated functions or legacy base R patterns
- bslib Bootstrap 5 already in use across apps
- Only program-impact-dashboard requires R >= 4.5.0
Next Steps Before Deployment:
- Verify shinyapps.io supports R 4.5.2 at https://docs.posit.co/shinyapps.io/guide/appendix/
- Update
.github/workflows/deploy-shinyapps.ymlline 35:r-version: '4.5.2' - Test locally with R 4.5.2 before deploying
- Add program-impact-dashboard to GitHub Actions workflow options
Census API Key Management:
- Local:
.Renvironfile in app directory (gitignored) - Shinyapps.io: Add as environment variable in app settings
- GitHub Actions: Add as repository secret
CENSUS_API_KEY
- Help Icon Tooltips: Purple circles with hover tooltips explaining data sources
- Service-Focused Metrics: Removed exploitative poverty metrics, focused on reach
- Statistical Rigor: Added Bayesian modeling for grant/board reporting credibility
- Fallback Data Strategy: Apps work without Census API key using sample data
- Semantic Color Coding: Value boxes use meaningful colors (info/success/warning)
- R Version: Need R 4.5.2 locally and on shinyapps.io
- Census API: Need to add key as environment variable (not committed to git)
- System Dependencies: May need liblapack-dev, libblas-dev, gfortran for bsts compilation
- Issue: GitHub Pages landing page was crashing Chrome browsers when scrolling to tools section
- Root Cause: Old shinylive WebAssembly files (100+ MB) still cached by GitHub Pages CDN
- Solution: Complete rewrite to ultra-minimal HTML
- Zero JavaScript
- Inline CSS only (no external stylesheets)
- System fonts only (no CDN dependencies)
- Aggressive cache-busting headers
- ~650 lines reduced to ~190 lines
- Result: Stable, crash-proof landing page
- Renamed "Donor Retention Forecaster" → "Capital Campaign Forecaster"
- Reason: Better alignment with prospect language around campaign planning and capital campaigns
- Updates: Directory, app title, README, index.html, GitHub Actions workflow
- NEVER use shinylive for public deployment - causes catastrophic browser crashes
- Landing pages must be minimal - any JavaScript/dependencies create risk
- GitHub Pages CDN caching is aggressive - can take hours to propagate changes
- Use incognito mode for testing - bypasses local cache
- Monte Carlo in base R only - no special packages needed (rnorm, quantile, apply)
This document helps AI assistants understand the project context, technical requirements, nonprofit sector needs, and recent architectural decisions to contribute effectively to the tool suite.