01
Project name
MINDS Alumni Network
MINDS Alumni Network
One-line description
A pan-African, CMS-driven community platform connecting MINDS scholars and alumni across Africa and the diaspora, complete with an AI assistant that answers questions grounded in MINDS' own content.
My role
Timeline
Category
Platforms
Tech stack
02
The MINDS (Mandela Institute for Development Studies) Scholarship Programme has produced a growing network of alumni spread across the African continent and beyond, but they lacked a shared digital home. There was no central place for alumni to discover one another, surface opportunities, celebrate achievements, follow news and events, or engage new prospective scholars. Information about MINDS Africa and the scholarship was scattered across documents and web pages, making it hard for visitors to get quick, reliable answers. The organisation also needed to update all of this content themselves, without depending on a developer for every copy or image change.
03
I designed and built a modern, content-managed marketing and community website that acts as the network's digital hub. Every meaningful piece of content, page copy, images, regions, events, gallery, alumni ventures, modals, and even SEO metadata, is editable by non-technical staff through Sanity Studio. To solve the scattered information problem, I added a Retrieval-Augmented Generation (RAG) chatbot, an Alumni Assistant trained on MINDS' own content (CMS entries, curated knowledge documents/PDFs, and selected pages from minds-africa.org). It gives visitors instant, grounded answers about the programme, regions, events, and how to get involved, instead of forcing them to hunt through pages.
04
Fully CMS-driven site
All pages, imagery, and content blocks are editable in Sanity with sensible code fallbacks.
AI Alumni Assistant (RAG chatbot)
Streaming, source-grounded answers scoped strictly to MINDS topics, with suggested prompts and graceful guardrails.
Interactive Africa scholars map
SVG map of Africa with per-country hover tooltips showing alumni counts, driven by CMS data.
Stripe donations
In-app embedded checkout modal, no full-page redirect.
Newsletter capture
Scroll-triggered subscribe modal timed to the Stories From Our Alumni section.
Alumni ventures & employers
Toggleable, editable showcase of companies alumni founded vs. companies they work at.
Regions, events, gallery, news
Structured, filterable content sections.
SEO & discoverability
Per-page meta/Open Graph/Twitter tags, JSON-LD, sitemap, and robots.txt.
Polished UI
Glassmorphism, theme-aware navigation, and motion-based micro-interactions.
05
Single-page React application (Vite + TypeScript) deployed on Vercel, with headless Sanity CMS as the content backend and serverless/edge functions handling server-side concerns (payments, chat, knowledge ingestion). Content is fetched client-side via GROQ queries with a caching/prefetch layer.
Vercel functions: /api/chat (Edge RAG pipeline with streaming answers), /api/ingest (protected Node function with weekly Vercel Cron for re-indexing), Stripe checkout session endpoint for donations. A local Vite dev plugin proxies /api routes for development parity.
React 18 + TypeScript with React Router. Tailwind CSS v4; Motion for animations. Reusable data hooks wrap Sanity queries; snapshot cache and prefetch keep navigation fast. Custom components include the Africa map wrapper (DOM tooltips over react-africa-map SVG) and the chat widget.
Sanity CMS is the source of truth for all editorial content, with custom schema types and a tailored Studio desk (including a Chatbot knowledge section). Upstash Vector stores embeddings for the chatbot knowledge base; Upstash Redis backs optional rate limiting.
Google Gemini via AI SDK v6 (@ai-sdk/google), gemini-2.5-flash for chat and gemini-embedding-001 for embeddings. Stripe embedded checkout for donations. cheerio + pdf-parse for crawling web pages and extracting PDF text during knowledge ingestion.
Hosted on Vercel (static frontend + Edge/Serverless functions), auto-deployed from GitHub on push to master. Environment-based secrets for Gemini, Upstash, Stripe, and Sanity. Vercel Cron keeps the chatbot index in sync with CMS updates.
06
Grounding the chatbot in MINDS-only knowledge
Built an ingestion pipeline pulling from Sanity, editor-uploaded PDFs/knowledge docs, and selected external pages, chunk, embed, and upsert into Upstash Vector. At query time retrieve relevant chunks and constrain the model with a scoped system prompt; tuned the prompt to strip unwanted in-text citation markers.
Provider migration mid-build
The chatbot originally ran on OpenAI but hit quota limits. Because it was built on the AI SDK's provider-agnostic abstraction, migrated the entire chat + embeddings stack to Google Gemini with minimal changes, keeping embedding dimensions compatible with the existing vector index.
Serverless functions in local dev
Vite doesn't natively serve Vercel's /api routes, so the chatbot 404'd locally. Wrote a custom Vite dev plugin that intercepts /api requests, loads env vars, and executes the actual function handlers, true parity between local and production.
Production-only outage after adding env vars
Live chatbot failed with a generic error even though keys were set in Vercel. Diagnosed that Vercel bakes env vars in at build time, so the running deployment predated the new keys. Triggering a fresh deploy resolved it; verified by hitting the live streaming endpoint directly.
Empowering non-technical editors
Modelled everything in Sanity with fallbacks so staff can safely edit copy, imagery, toggles, and even the chatbot knowledge base without touching code.
07
Shipped a live production platform at alumni.minds-africa.org serving as the MINDS Alumni Network's central hub. Delivered a working, source-grounded AI assistant that streams answers about MINDS in real time. Handed the organisation full content autonomy, virtually every element is CMS-editable, with a self-updating chatbot knowledge base via scheduled re-indexing. Made the site search-discoverable with complete SEO metadata, sitemap, and structured data.
08
09
I design and ship production-ready systems at the intersection of cloud infrastructure, full-stack engineering, and human-centred product thinking.
Send email · kuzagbechristopher@gmail.com