04 / FEATURED CASE STUDY · FALL 2026

NCCA Outreach Management Platform

Replacing fragmented spreadsheets with a secure, production-ready outreach and reporting system.

ReactTypeScriptPostgreSQLSupabaseRow-Level SecurityPythonClaude Code
Conceptual architecture: React and TypeScript in the browser, Vercel-hosted frontend, Supabase Auth and APIs, PostgreSQL row-level security and audit functions, and separate data migration and testing workflows.
Conceptual architecture · No internal configurations or client dataGeneral technology boundaries only. This diagram is not a reconstruction of the nonprofit's deployment.↔ Swipe to inspect the full diagram

01 / REAL-WORLD PROBLEM

The challenge

For the National Council on Civil Advocacy (NCCA), outreach reporting lived across three Excel workbooks. One activity could span multiple rows, categories weren't always consistent, and summary formulas sometimes disagreed with the underlying entries. Staff needed reliable national and regional reporting without losing control over who could edit each region's records.

I was the sole developer responsible for turning those workflows into a working application, from requirements and architecture to deployment and follow-up changes.

02 / THE PLATFORM

What I built

  • National and regional dashboards with consistent definitions for activity counts, contacts, and reporting metrics.
  • Outreach activity and contact workflows, including links between one activity and multiple contacts.
  • Hill Day planning, fundraising target tracking, report exports, and administrative review tools.
  • An interactive import workflow that flags ambiguous fields and suspected duplicates instead of silently guessing.
3Legacy workbooks replaced
6Regions supported
10+Staff users (reported)
279Passing unit tests in the reviewed report

03 / APPLICATION SECURITY

Access control beyond the UI

I chose to enforce authorization within PostgreSQL using Supabase Row-Level Security. The system applies region-scoped write permissions at the data layer and uses controlled database functions for privileged changes. Linked records inherit their parent record's permission checks.

To validate the boundaries, the project includes a database authorization test suite that exercises cross-region operations and privilege-change attempts instead of relying only on whether buttons appear in the interface.

Synthetic conceptual flow showing a regional user request, database RLS checks, permitted data operations and an audit trail; disallowed operations rejected.
Conceptual authorization model. Simplified behavior only; no production policies, user identities, or operational information.

04 / DATA ENGINEERING

Migration without guessing

I directed a Python-based migration process that reconstructed multi-row activities and normalized inconsistent spreadsheet values. Loads were repeatable, likely duplicates were flagged for human review, and a reconciliation report compared imported totals with the source workbooks rather than forcing numbers to match.

The migration documented 383 activities, 800 contacts and 320 Hill Day meetings. Those are aggregate counts only; the portfolio contains no organization records.

Conceptual five-stage migration flow: legacy spreadsheets, Python transformation, human review, repeatable database load and reconciled reporting.
Conceptual migration flow. All steps and labels are generic; no client records or real screenshots.

05 / QUALITY & OPERATIONS

Built, tested, deployed

The frontend uses React and TypeScript, while Supabase provides PostgreSQL, authentication and managed APIs. I managed staging and production releases and reviewed changes against automated checks before deployment.

  • 279 passing unit tests reported across forms, imports, permissions and data handling.
  • 40+ database authorization checks covering permission boundaries and reporting correctness.
  • Playwright browser tests for important workflows and responsive layouts.

Testing figures reflect the October 2026 repository review; they are not claims of exhaustive security verification.

06 / IMPACT & OWNERSHIP

Engineering with real users

The platform replaced the nonprofit's spreadsheet-based workflow and is deployed for organizational use. More than ten staff members use it, based on the organization's reported adoption. Subsequent updates responded to feedback from regional users.

My role: I gathered requirements, made architecture and security decisions, directed implementation, reviewed changes, led testing and data migration, and managed deployment. I used Claude Code as an AI coding agent within a structured workflow of specifications, reviews and verification checks—not as a substitute for technical responsibility.

Sharing & confidentiality

This case study contains aggregate figures and conceptual diagrams only. No nonprofit records, private source code, credentials, production URLs or internal screenshots are disclosed.

KEEP EXPLORING

More work worth a look.

Browse all projects ↗