What we have shipped and what is next.
The UCan platform is being built in public. This page tracks the live status of every feature layer so the team and partners can see exactly where we stand.
The scale of what has been built
These are counted directly from the codebase, not estimated. Every number below is something a technical reviewer can open and check.
The disciplines behind it
This is not one skill set. Delivering it required product engineering, data security, applied AI and voice, geospatial systems, impact accounting, media production and formal verification — held together by one team, in one codebase.
React 19 with TanStack Start on an edge runtime, typed end-to-end server functions, SSR-safe data loading and query caching. Every screen is built from a shared design system with semantic tokens, so the whole platform re-themes from one file.
51 tables under row-level security with explicit grants, security-definer role functions so no privilege decision ever happens in the browser, a separate user-roles table to prevent escalation, and 49 reviewable migrations. Multiple scanner rounds closed at the policy layer.
A grounded assistant wired onto a full site index plus each member's own snapshot, strict scope guardrails, Azure DeepSeek reasoning, Azure neural text-to-speech on every tutorial, and two live WebRTC talking-avatar agents in a South African voice — with no key ever reaching the client.
One mapping engine across field and boardroom: satellite and street layers, hub radii, drawn farm polygons with area calculation, crop zones, national network directory, geocoded search, device GPS and offline-tolerant camera capture for staff sharing a single phone.
Poverty Stoplight mapped onto Doughnut Economics to produce an auditable Social Foundation Contribution score, privacy suppression below five households, publishable frozen snapshots, CSV and live-formula Excel exports, and a branded A4 PDF board pack generated from live data.
Eleven presenter videos chroma-keyed to transparent alpha WebM with audio repaired and re-encoded, PWA splash artwork for ten device classes, listen-aloud on every tutorial step and mobile-first layouts hardened against horizontal overflow — built for low-literacy, low-bandwidth users.
Every cycle ends with a clean typecheck plus an authenticated browser sweep that opens each route, hydrates live data, screenshots it and asserts status, title and console errors. Findings are fixed inside the same cycle and published at /test-report.
Four public, always-current artefacts: this Build Status board, the Test Report evidence pack, the member and admin Walkthrough, and the Project Review handover — so the client owns the knowledge, not just the code.
Indicative rebuild value
What it would cost to commission this platform from a conventional development house at South African senior-contractor rates, broken down by workstream. Shown as a benchmark of the asset the client now owns outright — not as an invoice.
| Workstream | Benchmark |
|---|---|
| Product & full-stack engineering | R 1.2m – R 1.8m |
| Backend, data model & security hardening | R 450k – R 700k |
| Applied AI, voice & avatar agents | R 350k – R 550k |
| Geospatial & field tooling | R 300k – R 450k |
| Impact & ESG reporting engine | R 250k – R 400k |
| Media, PWA & accessibility | R 150k – R 250k |
| QA, documentation & handover | R 200k – R 300k |
| Total benchmark | R 2.9m – R 4.45m |
Benchmark assumes blended senior rates of R950–R1,400 per hour across engineering, security, AI, geospatial, design, media and QA, and excludes the ongoing hosting, model and map service costs already running on the platform.
Buyback Tool — capture community purchases
Public staff tool at /buyin. Enter PIN 4321 to unlock — no email sign-up needed. Snap produce photos, log vendor, crop, grade, weight and price against the June 2026 price list. GPS and timestamp are captured automatically.
Shipped this cycle
Sign-ups are now impossible to miss. Entering the War Room raises a “Latest notifications” popup listing every member waiting for approval with the date they signed up. The Admin actions tab leads with a full-width “Check for new sign-ups” button that re-polls the database live and carries a waiting-count badge, and the list auto-refreshes every 60 seconds. An admin-only notice card repeats the same count at the top of the War Room and near the bottom of the profile page, with Check now and Review sign-ups actions that deep-link straight into the approvals tab. Approving writes the chosen role server-side through a has_role()-gated function and instantly invalidates every dependent counter across the app.
The owner-side of the platform is now documented as carefully as the member side. Seven admin tutorials — approve a sign-up and set a role, change or revoke roles later, review opportunity applications, update farmer status, generate a PDF/CSV board pack, raise and resolve alerts, and run a multi-stream buyback shift — are written out tap by tap on /walkthrough, each with the exact place it lives, why it matters and the operational tip that saves time. A new “What just shipped” phone gallery sits above them with real screenshots of the latest work.
The buyback tool is no longer agriculture-only. It now captures every livelihood stream a hub trades in — produce, plastics and the waste economy, seedlings, fertiliser and compost, worm castings, black soldier fly larvae, seeds, inputs and other micro-businesses — each with its own categorised price list, searchable and custom items, pending-price capture for unlisted goods and stream-specific reconciliation history.
A live talking-avatar ambassador for investors and partners, running on Azure VoiceLive over WebRTC with the South African en-ZA-LeahNeural voice, a branded split-panel card with the UCan logo and portrait, a full-screen mobile-friendly conversation overlay with captions in a capped panel, transcript accumulation and a WhatsApp handoff to Steve Carver at the end of the conversation. No API key is ever exposed to the browser. She is reachable from the landing page and from /app/ambassador.
The landing page leads with Miriam in front of the rotating livelihood wheel, stationary copy and buttons, and a four-panel auto-rotating module showcase beneath it with preloaded cross-fades. Talk to Miriam works without signing up and greets visitors automatically in the same South African voice. The same wheel became the PWA launch experience: ten generated iPhone/iPad startup images plus a standalone-mode splash overlay that rotates and fades out on launch.
Two more scanner rounds were closed at the database layer rather than papered over in the UI: security-definer functions had their execute grants narrowed, SFC snapshot and hub reads were tightened, public directory lookups moved server-side behind validated RPCs, community posts became readable only within the viewer's own community, reactions only where the post is visible, lesson completions owner-only, and buyback vendor pricing and contact exposure was verified closed.
The War Room has been extended from a live command centre into a true executive control plane. A new Briefing tab generates a 30-day executive narrative from live pulse data — situation summary, KPI grid with velocity, top crops, opportunity funnel, command board and latest activity — and exports it as a branded A4 PDF or CSV board pack. A new Admin actions tab gives owners a searchable member directory with one-click role assignment, a pending-opplications inbox for approve/reject decisions, and a farmer-status panel to update grower notes and standing. Everything is gated by server-side role checks and writes back to the same tables the rest of the platform uses.
The War Room is no longer just a map. A server-side pulse engine aggregates activity across ten backend tables into a Pulse & trends view: 30-day sparklines with 7-day change for plots, buyback deals, buyback value, members and farmers, a real-time activity feed, top crops by value and the opportunity funnel. A new Alerts & decisions board lets admins raise info, warning or critical alerts, acknowledge and resolve them, and log strategic decisions with named owners — all persisted and badged on the tab. The header carries a live status dot with last-updated time, a Live on/off toggle that auto-refreshes every 30 seconds, a manual refresh and one-click Export CSV for an instant board-pack snapshot.
The War Room previously ran a second, separate Mapbox map that could drift from what field teams captured. It now renders the exact same Farm Map component used in the field — Esri satellite and street layers, hub pins with radii, farm polygons, crop zones, farmer badges, national network sites and markets — extended with amber buyback capture points. The duplicate map component was deleted, so there is a single source of mapping truth from field capture to board view.
A version mismatch between the framework's build plugin and its runtime meant server calls could fail to resolve, surfacing as intermittent 500s on data-heavy admin screens. The framework packages were realigned and admin authorisation helpers moved out of the server-function entry files so they compile cleanly. War Room, profile, roles and mapping calls all return healthy responses again.
Opening Me → UCAN AI agent now expands the 'How this section works' briefing automatically, with the presenter video and step-by-step guide visible immediately. The flashing 'Need help' badge was removed so the page opens clean.
A complete, client-facing account of the engagement: scope versus delivered row by row (with everything built beyond the original agreement clearly marked), the platform in five pillars, engineering quality across security, reliability, maintainability and accessibility, the published handover pack, and the forward roadmap. Linked from the top navigation and the footer alongside Build Status, the Test Report and the Platform Walkthrough.
The QR code is now a full profile, not a link. Scanning a member's code resolves a public Passport to Prosperity aggregating journey rung, 4S stage, the six digital scores, learning progress, enterprises, achievements and verified certificates — with sensitive fields never exposed. A separate grower route resolves produce-level traceability from packaging: name, community, province, crops and verified status only. Every scan is written to a passport_scans table and surfaced back to the owner with counts and recent activity, so a card used in a magazine, on a punnet or in a funding pack is measurable. Public lookups run through a narrow security-definer RPC, and unknown identifiers now fail safe with a friendly not-found page instead of a server error.
Every route on the platform, including the new identity and traceability screens, the welcome wizard, magic link and password recovery, was reopened in a real browser on an authenticated admin session, hydrated against live data, screenshotted and checked for status, title and JavaScript runtime errors: 53 of 53 pass. Fourteen end-to-end flows were driven with real clicks and typed input — including the QR passport and grower traceability paths, the DISC personality quiz, the presenter briefings, the grounded UCAN AI agent and mobile layout integrity. One issue was found (invalid QR tokens returning a server error), fixed and re-verified inside the same run. The evidence pack at /test-report is updated with the new screenshots and results.
A picture-based DISC and passion assessment now runs inside UCan Match, scoring dominance, influence, steadiness and conscientiousness alongside interest areas. Results render on a DISC wheel with an introvert/extrovert read, strengths, watch-outs and suggested pathways, and feed directly into role, ladder and opportunity recommendations.
Transparent green-screen presenter videos now introduce the dashboard, Solutions Bank, Poverty Stoplight and the UCAN AI agent inside a consistent aerial-photo hero frame with listen-aloud audio beneath the title, opening automatically where guidance matters most. The AI agent itself was rewired onto a full site index plus the signed-in user's own snapshot — rung, 4S stage, Stoplight results, hub and saved items — with strict scope guardrails so answers stay grounded in UCan knowledge.
Every one of the 48 routes on the platform was opened in a real browser on an authenticated admin session, allowed to hydrate and pull live data, screenshotted and checked for HTTP status, page title and JavaScript runtime errors — 48 of 48 pass, zero failures. Eight end-to-end flows were then driven with real clicks and typed input: Buy In PIN capture, War Room oversight, the ESG/SFC dashboard, section tutorials with audio, the compulsory how-to walkthrough, progressive dashboard gating, the Hub → Farm → Plot mapping flow and role assignment. The full evidence pack — screenshots, results and known conditions — is published at /test-report and linked from the footer alongside Build Status and the Platform Walkthrough.
The Poverty Stoplight data households already capture now rolls up into a single, auditable ESG number aligned to Kate Raworth's Doughnut Economics. The 10 Stoplight areas are mapped onto the Doughnut's 12 social-foundation dimensions, each scored (Green + 0.5 × Yellow) ÷ Total surveyed × 100, with the overall SFC as the average of the twelve. A new /app/esg dashboard shows the Doughnut ring, the dimension table, a scope switcher for platform-wide or per-hub figures, optional ecological-ceiling entries (carbon, water, land restored), a copy-ready invoice line, CSV export and an Excel workbook with live formulas so finance can audit the maths. Admins can publish frozen snapshots for reporting, scopes under five households are suppressed for privacy, and a public methodology note at /esg-methodology explains the Doughnut–Stoplight linkage against GRI, SASB and CSRD.
Roles are no longer just admin/moderator. The app_role enum was expanded into five groups — Platform (admin, moderator, hub manager, field officer), Producers (farmer, agripreneur, cooperative, livestock, aquaponics), Market (off-taker, buyer, spaza owner, trader, logistics), Micro-enterprise (artisan, waste recycler, tailor, baker, mechanic, beautician and more) and Institutional (funder, NGO, government, academic, mentor). Admins assign them from a grouped dropdown in the admin console, and every role carries a description so the right label is picked first time.
Every onboarding step can now be listened to instead of read. A reusable ListenButton streams Azure neural-voice audio from a server function and falls back to the device's own speech engine if the network is poor. Wired into the How UCan Works modal and the per-section tutorial panels, so low-literacy and on-the-move users get the same guidance out loud.
A SectionTutorial panel now sits at the top of every module inside the app, explaining in plain language what the section is for, how a user should work it, and — for admins only — what to manage behind it. Mounted globally in the app shell and driven from the canonical tutorial file, with a Listen button on each.
Mapping was restructured around a proper data path. Admins first set a Hub (a regional geolocation umbrella, shown as a blue pin), then attach farms or any other micro-business from a dropdown tree of every business type the platform offers. Farms register without picking crops up front, then split into zoned plots. Members set their location and tap a hub to join it, linking their profile to that hub.
Inside each green farm polygon, farmers can now draw yellow crop-zone rectangles for what they grow, and every plot carries a circular farmer badge with initials that opens full farmer details on tap. On opening the map, the app asks for location permission and zooms straight to the nearest activity with a 'You are here' marker. Pin-drop no longer snaps the map away mid-capture, and dropping a pin now walks the user directly into the create-hub step.
A search bar across the top of the map accepts place names, street addresses or raw GPS coordinates, plus a 'use my location' shortcut — for both finding existing sites and placing new ones. Zoom and satellite controls moved to the bottom-left to keep the search clear.
Users can no longer jump ahead of their own data. Call-to-action buttons only appear where they apply, the 'Your next step' hero moved to the bottom where it matters, and Match and Opportunities stay locked until the Poverty Stoplight baseline and 4S profiling are complete. The how-it-works explainer card was pulled to the top of the dashboard.
The first-run walkthrough is now compulsory and paced. The skip control was removed, each step holds for five seconds before the next unlocks, and an 'I understand' confirmation is required to advance. On the landing hero only 'How UCan works' shows up front — Get Started appears once the walkthrough is completed.
Six scanner findings closed: score and achievement inserts are now service-role only so points cannot be self-awarded, lesson quiz answer keys are hidden from student-level reads, security-definer functions had public execute revoked, and every affected function got an explicit search_path to prevent schema hijacking.
A complete screenshot walkthrough at /walkthrough, captured from the live app and organised into eight chapters covering every route from the front door to Build Status, with what-it-is and how-to-use notes on each screen.
All SMRT.BIO naming was retired across the product — components, tutorials, marketing copy and the Azure voice agent's script now say UCan Passport to Prosperity.
Previously shipped
A friendly, clickable avatar now sits on the landing-page hero. When a visitor taps 'Meet your UCan guide', it narrates a 60-second introduction to the whole platform using Azure TTS (en-US-AvaNeural), with a pause/resume control and a scrolling transcript card. The speech script is also exported as AVATAR_SPEECH so it can be reused for the client's own AI avatar pipeline.
The 60-second intake was audited swipe-by-swipe and rebuilt. Fits Me / Not For Me are now real tappable buttons (mouse, touch and keyboard ←/→/Backspace all work), drag uses snap-to-origin with responsive thresholds, card heights were reduced so the actions never fall below the fold on mobile, and mid-deck progress is saved to local storage so a dropped connection doesn't lose the run. Results compute instantly client-side — no more dead-end after the last card. An invisible install-prompt backdrop that was silently swallowing taps was also removed.
A multi-segment SVG wheel carrying the UCan Grow logo now spins through a 4.2-second computation sequence before revealing 4S results, so the scoring moment feels earned rather than instant. Wired into /app/match and reused as the visual beat between assessment and recommendations.
The loop now closes after the assessment. A ranking engine scores the 354-card franchise library against the user's stage and dimension scores and returns a personalised deck they can explore and save to their profile. Eight milestone achievements (welcome, stage unlocked, first card pinned, 5 cards, stoplight baseline, first lesson, first opportunity, plot mapped) award points idempotently, fire confetti on unlock, and render as a progress ladder on both dashboard and profile. 24 rotating motivational quotes run through the wheel, results, dashboard and profile.
Under the farm map, hub agripreneurs can now register farmers end-to-end: photo capture, ID and contact details, banking information, a dropdown crop-selection tree and document uploads — all stored under RLS in new farmers and farmer_uploads tables. Every farmer gets a generated QR token so they can be identified at the pack shed, and mapped plots can be linked to a registered farmer.
The farm map defaults to satellite imagery with a Satellite/Map toggle, and fields can be drawn directly on the imagery as polygons or rectangles using Geoman, with hectare area computed from the geometry. Plot deletion was fixed end-to-end: ownership is enforced server-side, table grants were corrected, and the map updates optimistically so a deleted plot disappears immediately instead of lingering.
Selecting a crop now auto-fills the locked price from the June 2026 price list and computes the line total. Prices and totals are recalculated server-side from the price_list table and any client-supplied price is ignored, so a field device cannot alter what a purchase is worth. Grade options are constrained to what exists for the selected crop.
Applying to an opportunity now does more than write a row. Applications surface in a new War Room Applications panel (applicant, community, opportunity, organisation, match %, date) and fire a branded notification email to the admin from the verified notify.u-can.life domain with the applicant's particulars. Saves and skips stay silent by design.
Ladder and franchise cards were being cropped and squashed. A shared CardImage component now renders artwork uncropped over a soft blurred backdrop, and the ladders list and detail pages stack the full-width image above the data. Portrait posters render upright at full height, landscape stays wide, and nine regenerative-farming assets that were encoded sideways were re-processed to the correct orientation.
Typecheck is clean and 20 core routes were driven in a real browser under an authenticated session — marketing, dashboard, ladders, franchises, match, map, opportunities, war room, profile, learn, stoplight, crops, journey and the Buy In tool all render at 200 with no console errors. One nested-link hydration warning on the dashboard priority cards was found and fixed in the same pass.
The Azure VoiceLive agent on the landing page occasionally played two overlapping responses. Stale audio is now hard-stopped on barge-in and at the start of every new response, with duplicate-session guards on both the hero agent and the floating FAB. Both surfaces also received a complete knowledge refresh covering every module shipped to date.
New /app/warroom view built on Mapbox GL satellite imagery, showing where on-the-ground activity is happening in real time. Regional activity lists, a KPI strip and a 60-second auto-refresh give the team a live operational picture across hubs.
354 franchise cards ingested from the client's Drive into Cloud storage with signed URLs, surfaced at /app/franchises with search and filters, and cross-linked into Match and Opportunities. Each card opens a Big Picture detail page with a poster-backed reveal animation.
Two new ecotourism/regenerative modules: /immersions with 5 day-experience itineraries, and /nature-of-nature with an interactive seasonal wheel, the 8-system Healing Garden diagram and scent guides. A "Come stand in it" CTA with a custom golden-hour background now anchors the homepage, and the Flywheel page carries the Flying Pizza "whole pizza" section.
Auth emails now send from the verified custom domain notify.u-can.life with branded React Email templates, replacing the flagged auth.lovable.cloud sender. Google-linked accounts get clear guidance instead of dead ends, profiles self-repair on read, and the header now reflects live session state via onAuthStateChange.
The 4S Journey entry point is now the Solutions Bank across the app shell and journey page. Admins can switch between the User Dashboard and Admin Dashboard from a header chip on either view.
Rebuilt the conversational agent's knowledge from the ground up. The chat model, the Azure VoiceLive hero agent and the floating voice FAB now share one canonical tutorial (src/lib/ucan-tutorial.ts) that walks users through every module — UCan Passport to Prosperity, 4S Journey / HR Tinder, Poverty Stoplight, UCan Match, UCan Learn, Enterprise Ladders, Hub & Off-taker onboarding, and the Buy In staff tool. Prompts were re-scoped so the agent gives concrete, click-by-click guidance instead of generic answers, and speaks in the UCan street-smart voice.
Added a dedicated How-To entry point on the marketing hero (next to Get Started / Explore Ecosystem / HR Tinder / Meet UCan / Talk to UCan). Opens a new HowToDialog modal that steps through the app section-by-section with links straight into each module, so a first-time visitor can self-serve a full product tour without asking the agent.
Parsed the client's new pricelist PDF (Copy_of_Pricelist_-27_June_2026) and fully replaced the price_list table. 225 unique SKUs now live across mushrooms, vegetables, fruits and honey, with pack sizes (e.g. 250g, 5kg, 10kg) mapped to grade + uom so the field capture form auto-prices correctly. Old entries were purged in the same migration to avoid stale prices.
The 4-digit code prompt at /buyin was clipping the placeholder ("4-digit code" showed as "4-digit cod"). Bumped font sizing, added horizontal padding and widened the input so the full label renders cleanly on mobile viewports.
Users with an existing public card were seeing the Public toggle off and handle blank when the Profile page first mounted, because CertificateVault initialised state before profile data arrived. Refactored with useEffect + useRef so local state hydrates only once from the loaded profile, protecting the published handle and visibility from an accidental Save.
Every module, in depth
End-to-end account creation with three login paths and a guided first-run experience. New users are dropped into a 5-step Welcome wizard that captures their Four S stage, picks a starting Enterprise Ladder, and seeds their rung progress before the dashboard renders — so the first screen is already personalised. Recent cycle also fixed the magic-link dead-end and unresponsive social sign-in buttons.
- Email/password registration and login
- Magic-link login (dead-end fixed)
- Google social sign-in (wired end-to-end)
- Welcome wizard (5-step profile + ladder picker)
- Onboarding checklist on dashboard
- Auto-seeded rung progress and Four S badge on first login
Full 50-indicator household assessment adapted from the Fundación Paraguaya methodology. Each indicator scores red / yellow / green, progress persists locally so users can leave and return, and the three highest-risk reds are surfaced as personalised Priority Action cards on the dashboard — each linking into UCan Match, Learn or Opportunities with a [doc-slug] citation back to the source framework.
- 50-indicator self-assessment wizard
- Local-storage progress persistence
- Priority action cards on dashboard
- Full 50-indicator reference grid at /app/stoplight50
- Doc-slug citations linking back to the source framework
Swipe-based 17-card discovery assessment that maps the user across the Four S dimensions — Struggle, Stable, Successful, Significant — and derives a stage badge plus role recommendations. Written into the profile as four_s_stage so downstream modules (Match, Ladders, Priority Actions) can personalise off it. Retake flow lets users re-score without losing history.
- 17-card swipe-based discovery assessment
- Four S dimension scoring engine
- Results screen with role recommendations
- Retake flow (retake button bug fixed) and profile badge
- four_s_stage written back to profile for cross-module personalisation
33 micro-enterprise ladders (spaza, packhouse, mushroom, honey, poultry, tailoring, hairdressing, tuck-shop, spekboom and more) each with a 4-tier rung model. Every rung captures capex, opex, expected margin and next-step conditions, so users can see the exact path from Struggle to Significant with real unit economics. 132 rungs seeded and searchable, cross-referenced against the 10-image ladder audit and the client's zip archive.
- 33 searchable micro-enterprise ladders
- 4-tier rung model (Struggle → Significant)
- Ladder detail pages with unit economics
- Inline PDF previews and card images
- Database seed with 132 rungs
- Cross-referenced against client zip + image audit
35+ crop profiles covering agronomy, seasonality, packhouse handling and target off-takers. Filterable by ladder context so a Starter Farmer sees crops appropriate to their tier, and searchable by name so the Buy In staff tool can reference the correct crop record during field purchasing.
- 35+ crop profiles with agronomy data
- Search and filtering
- Ladder-context filtering (e.g. Starter Farmer → crops)
- Referenced by Buy In tool for canonical crop names
NQF 2–3 aligned learning track focused on Food Safety & Packhouse operations, seeded from the client's Welcome to UCanGrow onboarding letter and the 5 canonical training videos. Server-side quiz grading means correct-answer keys never ship to the client — a security posture we hardened this cycle after the scanner flagged the exposure. Lesson progress persists per user.
- NQF 2–3 aligned Food Safety & Packhouse track
- Lesson viewer with embedded videos
- Quizzes with server-side grading (correct keys never leave the server)
- Persistent lesson progress
Swipe-based opportunity discovery, audited end-to-end this cycle. The ranking engine scores the user's Four S stage, dimension scores, active ladder and Stoplight priorities against live opportunities and returns the six best-fit matches with plain-language reasons. Swipes persist across devices, already-swiped items are filtered out of the deck, impact scores are normalised to a single scale, and applying triggers the War Room feed plus an admin notification email.
- Swipe stack with buttons, drag and keyboard (←/→/Backspace)
- Mid-deck progress saved to local storage
- UCan Compute Wheel results animation
- Ranking engine with top-6 best-fit matches and reasons
- Deduplication of already-swiped opportunities
- 5-step sliding tutorial (MatchTutorial)
- Interactions persisted to backend
- Saved filter and profile-based match scores on Opportunities
- Apply → War Room Applications panel + admin email
- Linked to Opportunities table (no mock data)
The reward and progression layer that keeps users moving after the assessment. A matching engine ranks the 354-card franchise library against stage and dimension scores and returns an interactive deck users can explore and pin to their profile. Eight milestones award points idempotently server-side, trigger confetti on unlock and render as a progress ladder, with rotating motivational quotes threaded through the wheel, results, dashboard and profile.
- franchise-matching engine ranked against 354 cards
- Save/pin pathways to profile (saved_franchise_cards)
- 8 milestone achievements with points and progress bar
- Idempotent server-side awarding (no duplicate points)
- Confetti celebration on unlock
- 24 rotating motivational quotes across key surfaces
Hub-level producer onboarding sitting under the farm map. Agripreneurs register farmers with photo capture, ID and contact details, banking information, a crop-selection tree and supporting document uploads, all under RLS. Each farmer receives a QR token for pack-shed identification. The map itself runs satellite-first with drawable field boundaries and hectare calculation, and plots can be linked to a registered farmer.
- farmers + farmer_uploads tables with RLS and grants
- Camera photo capture and document uploads to private storage
- Banking details, ID and community capture
- Crop-selection dropdown tree
- Generated QR token per farmer
- Satellite-first map with Satellite/Map toggle
- Polygon/rectangle field drawing with hectare area
- Ownership-enforced plot delete with optimistic map update
Opportunity applications are now visible and actionable for the team. Each apply writes the interaction, appears in the War Room Applications panel with the applicant's particulars, and sends a branded React Email notification to the admin from the verified notify.u-can.life sender.
- War Room Applications panel (applicant, community, opportunity, match %, date)
- Branded admin notification email on apply
- Applies only — saves and skips stay silent
- Transactional template registry entry
- Managed unsubscribe handling
Every release cycle now ends with a verification pass rather than a claim. The latest run: clean typecheck across the codebase, plus an automated browser sweep of 20 core routes under a real authenticated session, checking HTTP status, rendered content and console errors on each. Findings from the sweep are fixed in the same cycle — this round closed a nested-link hydration warning on the dashboard priority cards.
- Clean project-wide typecheck
- Automated browser sweep of 20 core routes (authenticated)
- Per-route status, render and console-error assertions
- Hydration warning on dashboard priority cards fixed
- Mobile-viewport checks on the Match swipe flow
Full commercial onboarding wizard modelled on the IGS Basil / Pesto Princess SPEC/100/002 worked example. Off-takers move through Supplier Information Form → Product Information Form → Certificate of Conformance, with inline readiness checks (allergens, micro limits, packaging, accept/reject criteria). A progress timeline shows submission and expiry dates, and the overview dashboard flags expiring certificates before they lapse.
- SIF → PIF → Certificate wizard
- Inline readiness checks (allergens, micro, packaging)
- Progress timeline with dates
- Overview dashboard with expiry tracking
- Contact data locked down under admin-scoped RLS
New-hub site readiness flow built off the TUCC Starter Checklist (country, area, business model, farmer roster, DC linkage, current practices, opportunities). Once captured, the tool auto-generates a Pack Shed fit-out plan sized to the correct tier — Shack, Shed or House — with a room-by-room requirements list and a farmer-progression ladder linked to the 5 canonical off-takers.
- TUCC starter checklist wizard
- Hub profile capture
- Auto-generated Pack Shed fit-out plan
- Shack / Shed / House tiering with off-taker linkage
Public staff-facing tool at /buyin for capturing community purchases in the field. No email sign-up — a 4-digit PIN (4321) unlocks the session and everything else runs on server-side writes via supabaseAdmin, so staff can share a single device on the ground. Every capture is now linked to a hub: the tool reads the device GPS, auto-selects the nearest live hub and offers a distance-sorted, searchable hub picker, while “Buyback here” on any Farm Map hub pin opens the tool pre-set to that hub. Camera opens directly to snap produce, GPS + timestamp are stamped automatically, and the refreshed 225-item June 2026 price list auto-prices each capture. End-shift lock protects the day's takings and the recent-captures list gives instant reconciliation by hub.
- Public /buyin route — no email sign-up required
- 4-digit PIN gate (4321) for staff access
- Hub linking — nearest hub auto-selected from GPS, searchable distance-sorted picker
- Deep link /buyin?hub=<id> from the Farm Map hub popup
- Hub is mandatory on every capture and shown in recent captures
- Camera capture with GPS and timestamp
- June 2026 price list (225 SKUs: mushrooms, veg, fruit, honey)
- Server-side photo upload via supabaseAdmin (base64 pipeline)
- End-shift lock and recent captures list
- Readable PIN input (placeholder-clip fix)
Role-based admin console gated by a security-definer has_role() function, so no client-side privilege checks. Includes the War Room live alerts, the partner network pipeline and a Four S distribution analytics view that shows how the active user base is spread across Struggle → Significant. Admin RLS was hardened this cycle after a has_role permission bug briefly blocked page loads.
- Role-based admin access via has_role() security-definer
- War Room alerts
- Partner network pipeline
- Four S distribution analytics
- has_role() permission bug fixed
12 live marketing routes covering Vision, Model, Stack, Flywheel, Network, Group, Partnership, Manifesto, Four S Journey, Proof gallery, Press/media and the SASSA Social Impact Bond pitch route. Partner EOI form posts to a public API endpoint under /api/public/ with signature-verified handling. Head metadata (title/desc/og/twitter) is set per route with og:image scoped to leaf routes only — shared links now render correct previews.
- Vision, Model, Stack, Flywheel pages
- Network, Group, Partnership, Manifesto
- Proof gallery and press/media page
- SASSA SIB pitch route
- Partner EOI form with public API endpoint
- Per-route og:image + twitter:card (shared-link preview fix)
Two voice surfaces powered by Azure DeepSeek + Azure VoiceLive (no Lovable AI Gateway usage anywhere): the hero HeroVoiceAgent on the marketing landing and the floating VoiceAgentFAB inside the app shell. Both now carry the full UCan tutorial script, so users can literally ask "how do I use UCan Passport to Prosperity?" and get spoken step-by-step guidance. The PWA manifest is UCan-branded, install prompt is wired, and the shell is offline-ready.
- Voice-enabled AI assistant
- Voice live agent FAB
- Offline-ready PWA manifest
- Install prompt
- Full tutorial script wired into both voice surfaces
- Azure DeepSeek + Azure VoiceLive only (no LOVABLE_API_KEY)
New this cycle. A single tutorial source of truth (src/lib/ucan-tutorial.ts) feeds the chat API system prompt, both voice agents and a new HowToDialog modal. The hero section now exposes a "How UCan works" button alongside Get Started / Explore Ecosystem / HR Tinder / Meet UCan / Talk to UCan, so first-time visitors can self-serve a full product walkthrough with deep links into every module.
- src/lib/ucan-tutorial.ts — canonical tutorial schema per module
- HowToDialog modal walkthrough with deep-link CTAs
- "How UCan works" hero button
- Chat system prompt rebuilt on tutorial content
- HeroVoiceAgent + VoiceAgentFAB updated with spoken walkthrough
Full RLS + GRANT sweep across newer tables, with a Security Memory kept up to date so the scanner doesn't re-flag closed findings. Quiz correct-answer keys are now server-side only; scores can't be self-updated; off-taker contact data is admin-scoped; avatars and profiles are no longer readable by all authenticated users. The Buy In tool uses supabaseAdmin only inside verified handler bodies — never leaked to the client bundle.
- RLS/GRANT audit on newer tables
- Quiz answer protection (server-side grading)
- Off-taker contact data policies
- Score self-update restrictions
- Avatar storage privacy
- Profile read scoping
- UCan Passport to Prosperity silent-wipe bug fixed (state hydration hardening)
Portable digital identity for producers, staff and partners. A private certificate vault (ID, licenses, references) sits behind RLS with verification-status pills separating verified from self-declared credentials. Users pick a public_handle and toggle visibility on their public UCan Passport to Prosperity card at /id/<handle> — which now safely hydrates from real profile data (fixed a bug where an accidental Save could wipe an existing card). Six live digital scores feed UCan Match, and a full JSON export makes the identity truly portable.
- Certificate vault (ID, licenses, references) with RLS
- Verification status pills (verified vs self-declared)
- Public UCan Passport to Prosperity card at /id/<handle> with custom handle
- Public/private visibility toggle
- JSON identity export
- 6 live digital scores feeding Match
- State-hydration fix: existing cards no longer wipe on Save
Mapbox GL satellite tracking view at /app/warroom for monitoring on-the-ground activity in real time. Regions are plotted over satellite imagery with activity clusters, a KPI strip summarising live counts, and per-region activity lists. Data refreshes every 60 seconds so the command view stays current during field operations.
- Mapbox GL satellite base map
- Regional activity clustering and lists
- Live KPI strip
- 60-second auto-refresh
354 micro-franchise concept cards ingested from the client's Drive archive into Cloud storage and served through signed URLs. The library at /app/franchises supports search and category filtering, and the same cards are surfaced inside UCan Match and Opportunities so a concept can be discovered mid-swipe. Each card opens a Big Picture detail page with a poster-backed reveal animation while assets load.
- 354 cards ingested into Cloud storage (signed URLs)
- franchise_cards table with search and filters
- Cards surfaced in Match and Opportunities
- Big Picture card detail route with reveal animation
Ecotourism and regenerative-education layer. /immersions presents 5 Cradle day experiences with individual detail routes, while /nature-of-nature carries an interactive seasonal wheel, the 8-system Healing Garden diagram and the scent/plant guides. The Flywheel page gained the Flying Pizza "whole pizza" section, and the homepage now opens onto a "Come stand in it" CTA with a custom golden-hour farm backdrop.
- 5 Cradle immersion day experiences with detail pages
- Interactive seasonal wheel
- 8-system Healing Garden diagram and scent guides
- Flywheel "whole pizza" section
- Homepage "Come stand in it" CTA with generated backdrop
Auth mail now sends from the verified custom domain notify.u-can.life with branded React Email templates for signup, login, magic link, recovery, invite, email change and reauthentication — resolving the Gmail spam-flagging and unclickable-link problem from the default sender. On the app side, Google-linked accounts get explicit guidance instead of dead ends, missing profiles self-repair on first read, and the header reflects live session state through onAuthStateChange plus router invalidation.
- Verified sending domain notify.u-can.life
- Branded auth email templates (7 flows)
- Google-linked account guidance on login and signup
- Create-on-read profile repair
- Live session-aware header (AuthActions)
- Admin ↔ user dashboard toggle; Solutions Bank rename
The platform now speaks the language of the ecosystem it serves. Over 40 role types across five groups — Platform, Producers, Market, Micro-enterprise and Institutional — replace the old admin/moderator-only model. Roles live in a separate user_roles table checked through the has_role() security-definer function, never on the profile, so there is no privilege-escalation surface. Admins assign roles from a grouped dropdown with a plain-language description on each.
- app_role enum expanded to 40+ ecosystem roles
- Five role groups with descriptions (src/lib/member-roles.ts)
- Grouped role selector in the admin console
- Roles held in user_roles, checked via has_role() security-definer
Geographic data now follows a deliberate path. A Hub is the regional umbrella (blue pin) set by an admin; farms and any other micro-business type attach beneath it from a dropdown tree of every model the platform offers; farms split into zoned plots (green polygons) which can carry yellow crop-zone rectangles. Members set their location and tap a hub to join, linking their profile to that hub. Search by name, address or GPS, auto-locate on open, and a guided pin-drop flow that walks straight into the next step.
- map_hubs table with RLS, grants and join-a-hub flow
- Business-type tree for non-farm micro-enterprises
- Blue hub pins, green farm polygons, yellow crop zones, circular member markers
- Farmer badges with initials and full detail popups
- Address / place / GPS search plus auto-locate on open
- Guided pin-drop → create hub or site, no map snap-back
Every section of the app explains itself. A SectionTutorial panel mounted in the app shell gives user-level and admin-level guidance per module, and a reusable ListenButton reads any set of steps aloud using Azure neural voices with a device-speech fallback for weak connections. The How UCan Works walkthrough is now compulsory — no skip, a five-second dwell per step and an explicit 'I understand' before advancing — and the marketing hero only reveals Get Started once it is finished.
- SectionTutorial panel on every app module (user + admin views)
- ListenButton with Azure TTS server function and browser fallback
- Compulsory How-To walkthrough: no skip, dwell timer, confirmation
- Gated hero CTA and dashboard actions unlocked by real progress
A full screenshot tour of the product at /walkthrough — 34 screens captured from the live app, grouped into eight chapters from the front door through the dashboard, matching, libraries, land and operations, community and capital. Each screen carries a short what-it-is explanation and a how-to-use checklist, making it usable as a training aid and a client demo script.
- 34 live screenshots across 8 chapters
- What-it-is and how-to-use notes per screen
- Deep links into each route
- Doubles as onboarding material for hub staff
Roadmap
Social Media Agency (SMA) retainer
We register, verify and manage UCan's Meta Business, WhatsApp, Facebook, Instagram and YouTube presence, run an AI content engine posting daily, and funnel social audiences into the app. See the SMA proposal below.
Switch WhatsApp on
The farmer channel is built: roster, chat assistant, sign-in and buyback-over-chat. Activation needs the four Meta Business credentials above and a decision on who manages the Meta account.
Field-tool polish
Ongoing refinements to Buy In, the farm map capture flow and offline behaviour from live field feedback.
Field Pilots
First township and peri-urban hub pilots with live SASSA cohort.
Match Marketplace
Verified off-taker and buyer matching with escrow milestones.
Learn Certificates
NQF-aligned certificate issuance and employer verification.
Ubuntu Neighbourhoods
Geo-clustered producer groups with shared resources.
To continue — what the developers need from you
The WhatsApp farmer channel is built and waiting: 64 Huntington farmers are imported, the roster and admin screens are live, and the chat assistant, sign-in and buyback-over-chat flows are coded. The one thing it cannot do by itself is talk to Meta. To switch WhatsApp connectivity on for you and all your users, the developers need to connect to your Meta Business account — please get back to us on whether you would like us to handle that Meta account directly, or connect it yourself following our step-by-step guide.
Either way, we need four things from the Meta Business account to switch the WhatsApp feature on:
A permanent System User access token from the Meta Business account with WhatsApp messaging permissions. This is the key the platform uses to send and receive messages.
The ID of the dedicated WhatsApp Business number registered under the Meta account — not a number already running on personal WhatsApp.
Found in the Meta app's basic settings. Used to verify that every incoming message genuinely comes from Meta — no spoofed messages get processed.
Any random phrase of your choosing. It simply proves to Meta that this webhook belongs to us when the subscription is first created.
Send those four values and we will wire them in — the channel then goes live on Meta's free test number for testing, before switching to the dedicated UCan WhatsApp Business number. Note that farmer-initiated conversations are free; only messages we start (invites, broadcasts) carry a small per-message fee from Meta.
SMA — Social Media Agency for UCan
Beyond building the platform, we can run the entire social media and Meta side of UCan as a managed service — the growth engine that feeds the app. We register and manage the business accounts that require Meta approval and verification on your behalf, gain the necessary API keys and connectivity, and develop AI agents that communicate on the front end to drive users into the app from every social channel.
We register, list and manage the business accounts that require Meta approval and verification — Business Manager, the dedicated WhatsApp Business number, Facebook Pages and Instagram — on your behalf, securing the API keys and tokens that power the WhatsApp farmer channel and every social integration.
Custom AI agents write posts, generate images and produce videos from hub activity, buyback data and member wins — fresh, SEO-optimised content published daily across all channels, each linking back to the app.
Front-end AI agents chat with social media audiences, answer questions, qualify leads and drive them straight into the app's sign-up flow — automation-led sales funnelling that turns visibility into registered members.
The Miriam avatar library, hub stories and training content become a publishing pipeline: shorts, full tutorials and playlists that build an owned audience and feed search traffic into the platform.
We operate the farmer channel day to day — broadcasts, hub updates, claim-code support and buyback prompts — so the 64 imported Huntington farmers, and every hub that follows, get a living, responsive service.
This service pairs directly with the WhatsApp activation above: choosing us as your SMA means we handle the Meta Business account, the four credentials, verification and day-to-day operation end to end — one team for the platform, the WhatsApp channel and the social presence that grows it.
Want to shape what is next?
Submit a partner expression of interest, join the community hub, or start the HR Tinder assessment to discover your best-fit path.