Modernization proposal · November 2026 · compact plan

Revamping the corn & soy member platform with Claude Code

A review of today's public site and member touchpoints, a target architecture for membership, renewals, notifications, yield & harvest contests and publications, and a phased plan that works around the contest season.

3.5 moCore platform live (membership, renewals, notifications, journals)
7 moFull cutover incl. contest module & legacy retirement
4 releasesAfter a 2-week discovery and 4-week foundation
May 2027First contest season fully on the new platform

1. Review of the current experience

Based on a walkthrough of ncga.com and its public contest pages. The internal membership application itself was not accessible for this review, so findings about it are listed as items to confirm in Discovery.

🧭

Fragmented member journey

Members jump between several systems: the marketing site, an "Inside NCGA" link that opens an external file-sharing login, the Action Center on a separate advocacy-platform subdomain, and the photo contest on its own domain. No single sign-on or member dashboard ties them together.

🔄

No visible self-service renewal

The site offers "Join NCGA" and "Membership Perks" pages, but there is no member portal for renewals, payment history, or profile updates. The contest FAQ tells growers to phone or email the office to get a membership number before they can enter.

🌾

Contest workflow is heavy

The Yield Contest runs entry, harvest forms, supervisor verification, rechecks, seed-company vouchers and state/national results. Harvest forms are keyed by membership number, and results are published as separate reports and interactive views each year.

Detailed findings

AreaObservationImpactSeverity
PlatformPublic site runs on Webflow, managed through an agency CMS layer, with assets on a CloudFront CDN.Good for marketing pages; not a fit for transactional member data, so the member app sits elsewhere on an older stack.Medium
IdentitySeparate logins for the member area, contest entry, advocacy tools and photo contest.Password fatigue, duplicate records, support calls.High
MembershipNo renewal, auto-renew, receipt history or profile self-service visible to members.Renewals depend on staff and mailings; lapsed members are hard to win back.High
ContestsEntry fees change by window (early / final / harvest), vouchers from many seed brands, recheck thresholds, one state + one national award per membership.Complex rules likely hard-coded in the legacy app; each season needs developer changes.High
NavigationHeader, footer and body repeat the same links; several "Learn More" / "Sign Up" links share text but go to different places.Crowded pages, weaker screen-reader experience.Medium
Content freshnessSome homepage blocks (e.g. trade updates) are a year older than surrounding news.Erodes trust; no content-expiry workflow.Low
EventsNo events calendar; only an external link to Commodity Classic.Missed engagement and registration revenue.Medium
Data & reportingContest results published as yearly PDFs/reports; no member-facing history.Growers cannot see their own multi-year performance; staff compile reports manually.Medium
To confirm in Discovery: the legacy app's language and framework, database engine and size, payment processor, how state-affiliate memberships are synced, and how soybean members are handled alongside corn members.

2. What the new platform covers

One member account, one data model, and a set of modules that share it. Each module is a bounded area in the codebase so teams can work on them in parallel.

🪪

Membership & renewals

  • Join, renew, upgrade, lapse and reinstate
  • Auto-renew with saved payment method
  • Corn, soy and state-affiliate membership types
  • Household / farm-operation accounts
  • Receipts, tax letters, digital member card
🔔

Notifications

  • Email, SMS and in-app, driven by events
  • Renewal reminders at 60/30/7 days and grace period
  • Contest deadline and harvest-form reminders
  • Member-controlled preferences and quiet hours
  • Delivery tracking and bounce handling
🌽

Yield contest & harvest

  • Entry with fee windows and seed-company vouchers
  • Mobile-first harvest form, works offline in the field
  • Supervisor assignment and digital sign-off
  • Automatic recheck flags above threshold
  • Rules engine: one state + one national award per membership
🏆

Competitions

  • Photo contest, challenges, scholarships on one engine
  • Configurable forms, judging rounds and scoring
  • Public galleries and winner pages
  • No new domain per contest
📚

Journals & publications

  • Policy Book, annual report, research, newsletters
  • Member-only and public content tiers
  • Issue archive with full-text search
  • Editorial workflow with scheduled expiry
📊

Admin, staff & reporting

  • Staff console with role-based access
  • State-affiliate portals scoped to their members
  • Dashboards: retention, revenue, contest entries
  • Audit log on every change to member data

3. Recommended technology stack

TypeScript end to end, so one team can work across front end and back end, and Claude Code works in a single, well-typed codebase. The site already uses CloudFront, so AWS is the natural home; Azure equivalents (App Service, Azure SQL for PostgreSQL, Entra External ID) work just as well if that is the organization's standard.

Member & staff appsWeb, mobile, PWA
Next.js (React, TypeScript)Tailwind CSS + shared design systemPWA offline harvest formsReact Native / Expo optional phase 2 appWCAG 2.2 AA target
ContentMarketing & journals
Keep Webflow for marketing pages short termHeadless CMS (Sanity, Strapi or Contentful) for journalsAlgolia / OpenSearch for search
APIs & servicesBusiness logic
NestJS (Node.js, TypeScript) or .NET 8 if team prefersREST + OpenAPI contractsRules engine for contest fees & eligibilityBullMQ / SQS job queues
DataSystem of record
PostgreSQL (Amazon RDS / Aurora)Prisma ORM & migrationsRedis cache & sessionsS3 for documents & photosWarehouse (Redshift / BigQuery) for analytics
Identity & paymentsSecurity-critical
Auth0 / Cognito / Entra External ID SSO + MFAStripe subscriptions, auto-renew, ACHPCI scope kept off our servers
MessagingNotifications
Amazon SES / SendGrid emailTwilio SMSWeb pushReact Email templates
Platform & DevOpsRun & observe
AWS ECS Fargate containersTerraform infrastructure as codeGitHub Actions CI/CDOpenTelemetry + CloudWatch / DatadogSentry errorsPlaywright + Vitest tests

Target architecture

CHANNELS Member portalNext.js web + PWA Harvest appOffline-first, mobile Staff & affiliate consoleRole-scoped admin Public siteWebflow + headless CMS API gateway · auth DOMAIN SERVICES Membershipjoin · renew · types Billingdues · fees · vouchers Yield contestentry · harvest · rechecks Competitionsforms · judging · galleries Notificationsrules · templates · prefs Publicationsjournals · access tiers Reporting & auditdashboards · exports · audit log DATA PostgreSQLsystem of record Queue + Redisjobs · cache S3 storagedocs · photos INTEGRATIONS Identity (SSO, MFA) Stripe payments Email · SMS · push State affiliates (API / SFTP) Advocacy platform · CRM Analytics warehousenightly sync for BI Each domain service owns its tables in one PostgreSQL cluster (separate schemas) — a modular monolith first, split into separate services only where load demands it.

4. How Claude Code accelerates the revamp

Claude Code works directly in the repository and terminal: it reads the legacy code, writes and runs tests, and proposes changes that engineers review. The biggest gains are in the parts of a modernization that are usually slow and manual.

Understand the legacy app

Map modules, database tables, stored procedures and hidden business rules (fee windows, eligibility, award limits) into written specs.

Lock behaviour with tests

Generate characterization tests against the old system so the new one is proven to calculate fees, eligibility and results the same way.

Build the new modules

Scaffold services, APIs, UI screens and migrations from the agreed specs, following conventions in a shared CLAUDE.md.

Migrate the data

Write and dry-run extract-transform-load scripts, de-duplicate members, and produce reconciliation reports for every run.

Review & harden

Second-pass reviews for security, accessibility and performance; fix findings and keep docs current on every pull request.

Where it saves the most time

  • Reverse-engineering undocumented legacy code into readable specs
  • Test coverage on code that has none today
  • Repetitive build work: CRUD screens, forms, API endpoints, email templates
  • Data mapping between old and new schemas
  • Accessibility fixes across many pages at once
  • Documentation that stays in step with the code

Guardrails we put in place

  • Every change goes through a pull request reviewed by an engineer
  • Production member data never leaves the secure environment; Claude Code works on masked copies
  • Repository-level CLAUDE.md sets architecture, naming and security rules
  • Permission settings limit which commands it can run
  • CI must pass (tests, lint, type checks, security scan) before merge
Planning assumption: the compact timeline assumes roughly 30% less engineering effort than a traditional rewrite, plus the team's existing knowledge of the application. The Discovery pilot measures the real gain; if it falls short, R2 is the release to move, so the contest go-live date stays protected.

5. Benefits of revamping

What changes for members, staff and the organization.

Today

  • Several logins across separate systems
  • Phone or email to get a membership number
  • Renewals driven by staff follow-up
  • Contest rule changes need developer time each season
  • Harvest forms need connectivity and re-keying
  • Results published as yearly reports
  • Older stack: harder to hire for, patch and secure

After the revamp

  • One account with SSO across every member tool
  • Join online and enter a contest in one sitting
  • Auto-renew plus timed reminders and easy reinstatement
  • Staff configure fee windows, vouchers and deadlines themselves
  • Offline harvest form, synced when back in coverage
  • Members see their own multi-year contest history
  • Modern, supported stack with automated tests and deploys
👩‍🌾

Members

Faster joining and renewal, mobile-friendly contest entry, control over which messages they get and how.

🧑‍💼

Staff

Fewer manual renewals and data fixes, self-service configuration, one place to see a member's full history.

🔐

Security

MFA, role-based access, audit trails, card data handled by the payment provider, regular automated patching.

📈

Organization

Better retention through auto-renew, live dashboards on membership and contest revenue, lower long-run maintenance cost.

6. Timeline

The team that built the current application is doing the revamp, so Discovery takes 2 weeks and phases overlap. Four releases take the whole programme from mid-November 2026 to mid-June 2027. The contest module goes live in April, before the 2027 entry window opens on May 1, so no season is switched mid-way.

Phase
Nov '26
Dec
Jan '27
Feb
Mar
Apr
May
Jun
Contest calendarno change mid-season
🏆 Dec 15
2027 entries open May 1 · new platform
0 · Discoveryspecs, data map, pilot
2 wks
1 · Foundationcloud, CI/CD, identity, design system
4 wks
R1 · Membership & renewals+ data migration, payments
6 wks · live Feb 1
R2 · Notifications, journals, events
5 wks · live Feb 26
R3 · Yield contest & competitionsbuild, replay 2026 data, go-live
8 wks build + 2 wks replay · live Apr 15
R4 · Legacy retirement
Retire by Jun 15
Hypercare
2 weeks after each release, then steady-state support
Nov 27, 2026Discovery sign-off: specs, data map, pilot results
Feb 1, 2027 · R1Member portal live: join, renew, auto-renew
Feb 26, 2027 · R2Notifications, journals and events live
Apr 15, 2027 · R3Contest entry, harvest forms and competitions live
Jun 15, 2027 · R4Legacy system retired after a stable entry window

Phase details

Phase 0 · Discovery Nov 16 – 27, 2026 · 2 weeks
  • The team already knows the application, so Discovery confirms rather than investigates
  • Claude Code generates up-to-date specs and a data map from the existing code and database for the team to sign off
  • Pilot: rebuild online renewal end to end to prove the stack and measure the speed-up
  • Deliverables: confirmed stack, migration map, release backlog, key screen designs
Phase 1 · Foundation Nov 30 – Dec 24, 2026 · 4 weeks
  • AWS environments with Terraform; CI/CD, tests, monitoring and security scans
  • Identity provider with single sign-on and two-factor sign-in; shared design system
  • Characterization tests on the legacy fee, eligibility and award logic
R1 · Membership & renewals Dec 14, 2026 – Feb 1, 2027 · 6 weeks
  • Member profiles, corn / soy / state-affiliate types, household accounts
  • Stripe subscriptions, auto-renew, receipts; staff membership console
  • Two migration rehearsals, then final migration over the go-live weekend
R2 · Notifications, journals, events Jan 18 – Feb 26, 2027 · 5 weeks
  • Email, SMS and in-app notifications with member preferences
  • Headless CMS for journals and publications with member-only access
  • Events calendar with registration and payment
R3 · Yield contest & competitions Feb 1 – Apr 15, 2027 · 10 weeks
  • Rules engine for fee windows, vouchers, classes, recheck thresholds and award limits
  • Offline-capable harvest form with supervisor sign-off (shipped now, used from mid-August)
  • Generic engine for the photo contest, challenges and scholarships
  • Replay the full 2026 season through the new system and confirm results match the announced winners
R4 · Legacy retirement May 1 – Jun 15, 2027
  • Legacy kept read-only on standby while the 2027 entry window runs
  • Archive legacy data, decommission servers, hand over runbooks and training

7. Team and risks

Suggested team

RoleCount
Product owner (NCGA)1
Delivery / project manager1
Solution architect1
Full-stack engineers (with Claude Code)5
QA / test automation engineer1
UX / UI designer1 (heaviest Nov – Feb)
DevOps / cloud engineer0.5
Data migration specialist0.5 (Nov – Feb, Apr)

Key risks and mitigations

RiskMitigation
Hidden business rules in legacy codeTeam's own knowledge plus characterization tests before rebuilding anything
Disrupting the contest seasonContest goes live before entries open; full 2026 season replayed first; legacy on standby until June
Compressed scheduleScope frozen per release, feature flags, overlapping phases run by separate pairs of engineers
Duplicate or dirty member recordsDe-duplication rules agreed in Discovery; repeated migration rehearsals
State-affiliate integrationsInventory every feed early; keep file formats stable during transition
Member adoptionGuided first login, phone support at launch, staged email rollout
AI-generated code qualityMandatory review, CI gates, security and accessibility scans

8. Next steps

1 · Set up access

Connect Claude Code to the legacy repository and a masked database copy before kickoff, so specs can be generated on day one.

2 · Pilot inside Discovery

Rebuild online renewal end to end during the 2 discovery weeks. This proves the stack and measures the real Claude Code speed-up.

3 · Start Nov 16

Kick off Discovery on November 16, 2026, and lock release scope and team on November 27 based on the pilot results.

Open questions for NCGA: current member and contest-entry volumes · peak renewal months · current payment provider · how soybean members are managed today · which state affiliates exchange data and how · any compliance needs beyond PCI (e.g. data retention for contest records).