The problem
The William H. Douglas Foundation is a California 501(c)(3) named for a man who went from a ninth-grade education and a cotton farm in Tennessee to retiring as an aerospace engineer at North American Rockwell, having started there as a janitor. The foundation's work is advocacy: keeping students from under-resourced backgrounds close to an adult who knows the path to college, and moving them along it.
When we started, that work ran on files. A scholarship tracker in Excel, copyrighted 2017 and still in daily use, with a hand-built cost-of-attendance calculator for Pell, institutional grants, Stafford and PLUS loans. High school and college graduation schedules tracked A-G credits and GPA per student in spreadsheets. Student profiles lived in PowerPoint decks: test scores, GPA, photo, home address, a parent's phone number. Most of those students are minors.
What the foundation needed
- One system of record: Roadmaps, forms, scholarships, colleges and communication in one place, scoped to the right adult.
- Compliance that does not depend on staff remembering: Minors' data means COPPA, California's SOPIPA, FERPA by contract, and verifiable parental consent. The rules had to live in the database, not a policy binder.
- Room to grow: The foundation wanted partner nonprofits to be able to run their own programs on the platform later, without a rebuild.
- Technology that serves the relationship: The stated design principle: tech amplifies advocacy, it never replaces the advocate.
Where AI fits, and where it deliberately does not
WHD Reach contains no language-model features, and that is a decision rather than an omission. The platform holds sensitive data about minors, and the foundation's product principle is that a human advocate is the product. We used AI heavily in how we built it: the platform was delivered in agent-driven slices with an AGENTS.md contract, automated tests and a CI gate on every push, which is how a 30-module, five-role, multi-tenant platform reached a working pilot in weeks. But no student record is ever sent to a model, and none of the external integrations receive anything but a search term and an API key.
How we built it
A modular monolith with the database as the last line of defense
WHD Reach is a Next.js 16 App Router application on Vercel with Supabase Postgres in a US region. Authorization has three layers. A coarse gate in Next's proxy layer, per-segment role checks that also enforce TOTP multi-factor for staff, and row-level security on every table as the backstop. Every tenant row carries an organization ID. Helper functions in a private schema answer questions like "is this user a guardian of this student" without the policy recursion that usually makes RLS painful.
The consent model
Student owns, parent consents
Append-only evidence
Integrations that fail safe
Every external integration is dormant-safe: with no credentials configured, it becomes a friendly no-op and the app still builds and deploys. That covers the College Scorecard, CareerOneStop, Grants.gov federal grant discovery with one-click CRM import, QuickBooks Online, Stripe for donations and membership, Resend for email and reCAPTCHA on public forms. Background work runs through a Postgres job queue drained by a Vercel Cron endpoint every five minutes, claimed with SKIP LOCKED, and swappable for a hosted queue without touching the code that enqueues jobs.
What each role gets
Timeline
- 15 to 16 June 2026: Scaffold plus the first seven functional slices: auth, tenancy, consent, roadmap, forms, funding, colleges.
- 17 to 27 June 2026: BizDev CRM, grant-fund utilization, analytics, partner-org CRM, engagement back office, email marketing.
- July 2026: The foundation's legacy spreadsheets and profile decks handed over and mapped into the data model.
- August to September 2026: Stripe donations and invoicing, giving receipts, board portal, careers page, housing partnership page, reCAPTCHA, branding. Staff and org admins live in pilot.
Problems worth talking about
Reports that cannot leak
A free tier guaranteed in code
Secrets that cannot reach the browser
Next.js 16 edges
Where it stands
A pilot, reported honestly
Staff and organization admins are live at app.whdfoundation.org. Onboarding of real minors is intentionally gated behind two things we do not control: production email delivery and legal counsel's sign-off on the typed-name e-signature flow for liability and medical consent. We do not publish student counts or outcome numbers for a platform that has not yet enrolled its first cohort. The foundation's mission metrics, enrollment, retention and graduation, are the ones the Outcomes Ledger was built to measure, and they will appear here when there is a baseline.
Technology here amplifies the human advocacy relationship; it never replaces it.
— WHD Reach architecture principle
What This Project Does Well
Technologies Used
Next.js 16 (App Router, React 19, TypeScript, Turbopack), Tailwind CSS v4 with a token-driven WCAG 2.2 AA design system, Supabase Postgres with row-level security (US region), Supabase Auth with TOTP MFA for staff, Vercel, Postgres-backed job queue drained by Vercel Cron, College Scorecard API, CareerOneStop API, Grants.gov, QuickBooks Online, Stripe (donations and membership), Resend, reCAPTCHA v3, Vitest, GitHub Actions
Ready to Build Something Similar?
Let's discuss how we can help transform your business with a custom digital solution.
