ENAF

Golden Thread Foundation

Every parcel. Every face. Every time.

Product Documentation & User Acceptance Testing • v1.0 • April 2026

Product Overview

Golden Thread is a face-verified humanitarian distribution platform for South African NPOs and churches. Staff log in with OTP, then enroll and verify beneficiaries at the handout point. A beneficiary does not need a phone or email address to receive support. Volunteers scan a beneficiary's face, the system confirms their identity via Claude AI vision, checks cooldown eligibility, and logs the parcel handout with GPS, timestamp, and photo proof.

Claude AI Face Matching

Multimodal vision compares a live camera capture against enrolled photos. Works across all ethnicities. 80%+ confidence threshold.

Optional Beneficiary Account

Beneficiaries with access can view a stamp-card style history. People without phones or email can still be enrolled and served through staff-led face verification.

Cooldown Enforcement

Configurable minimum days between collections (default 30). Amber warning if too early. Only Pastor/Admin can override with a logged reason.

6 Role Dashboards

Each role sees different KPIs, actions, and data — all from live PostgreSQL aggregates. No dummy data.

Onboarding Wizard

Staff users choose role and organisation. Beneficiary enrollment captures available details, consent and face record without requiring phone or email.

POPIA Compliant

Consent timestamps, soft delete, encrypted PII fields, right-to-erasure, full audit trail on every action.

Journal Feed

Facebook-style feed with NPO reactions (Pray, Amen, Strength, Blessed), threaded comments, and auto-generated distribution reports.

World Model Insights

Rule-based inference engine flags override rate spikes, beneficiary churn, POPIA gaps, and volunteer streaks.

Owner Demo Workflow

Use this sequence when handing the live system to the owner. The UAT page is a support checklist; the first screen stakeholders should see is the main marketing landing page.

Open Main Site → Open Login → Open Pitch Deck → Open Stakeholder PDF →
1

Open the main landing page

Start at https://gta.cleva-ai.co.za/. Show the enterprise marketing page, role onboarding section, risk controls, and CTA buttons.

2

Login as Pastor

Sign in with your own email: enter it, press Send sign-in code, then type the 6-digit code emailed to you (valid for 10 minutes). The founder account can preview the Pastor view with the Pastor demo link; other testers see the role we assigned to them.

3

Show today's event and roll call

Open the pastor dashboard and event view. Explain who has been served, who is outstanding, and how the close-out gives leadership a trusted record.

4

Open beneficiaries and re-onboarding

Show a beneficiary record, collection history, POPIA consent and the enrollment/re-onboarding path. Explain clearly that phone and email are optional; consent, available details and face photo are enough for collection verification.

5

Show beneficiary face login

Return to /demo-login, choose Sign in with face, scan the enrolled beneficiary and confirm the beneficiary dashboard opens without email or phone login.

6

Scan and hand out parcel

Use Scan & Distribute to demonstrate beneficiary face verification, match result, cooldown check, optional note, and parcel handout logging.

7

Explain exception handling

If no match or cooldown appears, explain that staff can retry, re-onboard, or escalate to pastor/admin override with a reason. The system supports human judgement.

8

Switch roles only if needed

Use the role-specific buttons below (they preview each role for the founder account only). Everyone else signs in with their own email and emailed code and sees the role we assigned. Beneficiaries can sign in with face once enrolled.

Feature List

FeatureStatusHow It Works
OTP Email LoginLiveStaff and demo account users enter email → receive 6-digit PIN → type into auto-advancing boxes → JWT session
Beneficiary Face LoginLiveBeneficiary opens login → Sign in with face → local face descriptor is matched to an enrolled beneficiary → beneficiary session opens
Claude AI Face MatchingLiveCamera capture → POST to server → Claude Sonnet 4.5 compares against enrolled photos → JSON result
Beneficiary EnrollmentLiveDetails where available → face photo → POPIA consent → done. Phone and email are optional. Cross-org dedup check.
Optional Collection Stamp CardLiveWhere a beneficiary has account access, they can see collection history. Service does not depend on a phone or email login.
Cooldown EnforcementLiveConfigurable days (default 30). Amber warning + admin-only override with reason codes
Calendar & EventsLiveMonth/list views, colour-coded by type, inline event creation, close event → auto summary
Live Distribution DashboardLiveReal-time count via Socket.io. Avg confidence, volunteer count, distribution log.
Journal FeedLivePosts, NPO reactions (Lucide icons), threaded comments, post types, visibility controls
World Model InsightsLiveOverride rate, churn, POPIA gaps, efficiency drops, volunteer streaks — all from DB
6 Role DashboardsLiveEach role: different KPIs, actions, permissions. All data from PostgreSQL aggregates.
Onboarding WizardLiveStaff users: choose type → create org → done. Beneficiaries: staff-led enrollment with optional contact details and face capture.
Audit TrailLiveEvery login, enrollment, distribution, override, deletion: user + timestamp + IP + device
Donor PortalDashboard onlyKPIs + donation history. Section 18A PDF generation planned for v1.1.
WhatsApp RemindersPlanned v1.1Twilio integration. 24h and 2h reminders. Inbound bot: NEXT, HISTORY, HELP.
PWA Offline ModePlanned v1.1Service worker + manifest. CacheFirst for models, StaleWhileRevalidate for API.

Roles & Login Credentials

Everyone signs in with their own email address and a 6-digit code that is emailed to them. Ask us to add your email with a role first.

RoleEmailWhat They SeeLogin
Founder Admin Your own email (we assign the role) Owner-only platform oversight, all organisations, all users Open App →
Org Admin Your own email (we assign the role) KPIs + trend chart + leaderboard + activity log Open App →
Pastor Your own email (we assign the role) Today's events, churn alerts, team feed Open App →
Volunteer Your own email (we assign the role) Big "Start Scanning" button + my scan stats Open App →
Donor Your own email (we assign the role) R17,500 donated + history (zero PII) Open App →
Beneficiary Your own email (we assign the role) Optional account-view demo. Real beneficiaries can be served without phone/email login. Face Login →

Founder Admin Founder Admin

Login as Founder Admin →

Sign in with your own email and the 6-digit code we email you.

SA-01: Platform Overview Dashboard Critical
#ActionExpected Result✓
1Login with founder admin emailDashboard loads with "Welcome," followed by your name (or email)
2Inspect 4 KPI cardsOrganisations, Beneficiaries, Distributions and Users. Each count matches what is in the system.
3Look at Organisation Rankings"Hope Community Church" listed with member + beneficiary counts
4Open sidebar → all nav items visibleDashboard, Beneficiaries, Calendar, Scan, Journal all present

Org Admin Org Admin

Login as Org Admin →

Sign in with your own email and the 6-digit code we email you.

OA-01: Dashboard with KPIs, Trend, Leaderboard Critical
#ActionExpected Result✓
1LoginOrg Admin dashboard with 4 KPI cards
2Inspect KPIsBeneficiaries, This Month (the last 30 days), Total Distributed and Team Members. Each count matches the system.
3Scroll to trend chartBar chart showing "Distribution Trend (30 days)". Hover shows counts.
4Volunteer LeaderboardVolunteers are listed by number of hand-outs, highest first
5Recent ActivityEntries for recent actions (sign-ins, enrolments, hand-outs) with names and timestamps. A brand-new system shows "No recent activity" until people use it.
OA-02: Beneficiary CRUD Critical
#ActionExpected Result✓
1Sidebar → BeneficiariesEveryone enrolled is listed (20 per page) with a green consent badge where consent was recorded
2Search "Grace"Results filter in real-time
3Tap a beneficiaryDetail page: profile + PII + collection history
4Tap "Enroll" button4-step wizard: Details → Face → POPIA → Done
5Complete enrollment with cameraNew beneficiary appears in directory with photo
OA-03: Event Lifecycle High
#ActionExpected Result✓
1Sidebar → CalendarMonth grid with colour-coded events
2Create event via "+ Event" buttonForm with title, type, date. Event appears in calendar.
3Tap event → detail page3 stat cards (distributed, confidence, volunteers)
4Close eventConfirmation → "Closed" badge → auto summary in journal

Pastor Pastor

Login as Pastor →

Sign in with your own email and the 6-digit code we email you.

PA-01: Today's Events & Churn Watch Critical
#ActionExpected Result✓
1LoginPastor dashboard with 4 KPIs
2Inspect KPIsToday's Events, Beneficiaries, Month distributions, Churn Alert
3Today's Events sectionA card for each event happening today. If there is none, first create a distribution event for today in the Calendar.
4Tap event → "Start Distributing"Navigates to Scan page
PA-02: Scan → Match → Distribute → Cooldown → Override Critical

This tests the complete distribution flow including cooldown and override.

#ActionExpected Result✓
1Sidebar → Scan & DistributeChoose an open distribution event if asked, then the Scan page shows an "Open Camera" button
2Enroll yourself first (Beneficiaries → Enroll → capture your face)Enrolled with photo saved to database
3Go back to Scan → Open Camera → Capture & VerifyA few seconds of checking, then a GREEN match with your name + confidence
4Tap "Hand Out Parcel""Parcel Handed Out" success. GPS (if allowed) and timestamp logged.
5Tap "Scan Next Person" → scan yourself againAMBER cooldown warning: "Collected 0 days ago"
6Tap "Override (requires reason)"Reason code dropdown appears
7Select "Emergency: family crisis" → submitDistribution logged with override reason. Audit trail created.
PA-03: Journal Feed Medium
#ActionExpected Result✓
1Sidebar → Journal4 seeded posts, pinned distribution report at top
2Post an updateNew post appears at top of feed
3React with "Pray" on a postGold highlight, counter increments
4Show Comments → write a commentComment appears with name + timestamp

Volunteer Volunteer

Login as Volunteer →

Sign in with your own email and the 6-digit code we email you.

VO-01: Simplified Dashboard & Scan Critical
#ActionExpected Result✓
1LoginVolunteer dashboard with 3 KPIs + big gold "Start Scanning" button
2Tap "Start Scanning"Navigates to Scan page
3Complete a scan + distributeFull flow works: camera → match → distribute → success
VO-02: Permission Restrictions High
#ActionExpected Result✓
1Open sidebarDashboard, Beneficiaries, Scan and Journal visible (no Calendar)
2Beneficiaries → tap any personName and available contact details visible. No address or ID number (PII hidden). Phone may be blank for real beneficiaries.
3Check for delete iconNo trash icon — volunteers cannot delete
4Scan → trigger cooldownCooldown warning shown but no override button, with the message "Ask a Pastor or Admin to override this cooldown if needed"

Donor Donor

Login as Donor →

Sign in with your own email and the 6-digit code we email you.

DO-01: Donor Dashboard & Privacy Critical
#ActionExpected Result✓
1LoginDonor dashboard loads
2Inspect the KPI cardsTotal Donated, Lives Impacted, Parcels Delivered and This Month. The total matches the donations recorded for this donor.
3Your Donations section3 donations with org name, date, ZAR amount
4Open sidebarOnly Dashboard — no Beneficiaries, Calendar, Scan, Feed

Beneficiary Beneficiary

Open Beneficiary Face Login →

Real beneficiaries use Sign in with face after enrolment. Staff sign in with their own email and emailed code.

BE-01: Collection Stamp Card Critical
#ActionExpected Result✓
1Open /demo-login and choose Sign in with faceCamera opens and shows beneficiary face sign-in flow
2Scan an enrolled beneficiary faceBeneficiary dashboard loads without email or phone login
3Inspect the stamp cardGold header with name + org. 10-stamp grid. Collected stamps = gold checkmarks.
4Check "Total" badgeShows total parcels received
5Open sidebarOnly Dashboard — minimal UI, nothing else visible

Cross-Cutting Tests

CC-01: Authentication Security
#TestExpected✓
1Visit /api/auth/me with no cookie (incognito)HTTP 401
2Enter wrong PIN at login"Wrong code. Please try again." Inputs clear.
3Paste the 6-digit code from your email into the PIN boxesAll 6 digits fill, auto-submits
4Sign out → refreshRedirected to login. Cookies cleared.
CC-02: Mobile Responsiveness
#TestExpected✓
1Open on phone (375px width)Bottom tab bar with gold Scan button. KPIs in 2-column grid.
2Tap hamburger menuSidebar slides in with backdrop overlay
3Open camera on mobileCamera fills viewport. Scan ring visible. Capture works.
4Beneficiary stamp card on mobileCard stacks properly. Stamps are tappable size (44px+).
CC-03: Brand & Design
#TestExpected✓
1Background colour throughoutDark #0D0D0D base with #1E1E24 surface cards
2Gold accent used sparinglyGold = logo, primary KPI, CTA buttons, active nav. Silver/grey = everything else.
3FontsPlayfair Display = headings. Lato = body.
4No emoji anywhereOnly Lucide icons. Per design spec.
5Touch targetsAll buttons at least 44px × 44px

UAT Sign-Off

By signing below, the tester confirms they have completed the relevant test scenarios and noted any issues.