Walmart Competition
Chatbot Demo
An end-to-end competition management platform — from customer entry via a WhatsApp-style chatbot to AI-assisted auditor review and prize fulfilment.
Customer chatbot
A WhatsApp-style competition entry flow. Customers submit selfies and receipts for three competition types.
Open chatbotAdmin login
Secure login page for auditors. Protected by server-side proxy and an httpOnly session cookie.
Go to loginAuditor dashboard
Review entries, run AI receipt checks, approve or reject submissions, and copy outcome messages.
Open dashboardDemo health check
Verify environment variables, Supabase connectivity, and storage bucket readiness before presenting.
Check statusCapabilities
What this demo shows
WhatsApp-style customer journey
Conversation flow with step-by-step prompts, timeouts, and a clean mobile-first UI.
Receipt and selfie upload
Browser uploads go directly to Supabase Storage buckets.
Supabase-backed entries
Every session, message, and submission is persisted in a relational database.
AI-assisted receipt review
OpenAI GPT-4.1-mini extracts retailer, total, date, and flags suspicious receipts.
Instant prize reveal
Server-side 50/50 draw with atomic prize reservation — no double-awards possible.
Auditor approval workflow
Approve or reject entries, generate outcome messages, and copy them for delivery.
Staff leaderboard
Ranks approved Staff Sales Challenge entries by extracted receipt total across time ranges.
WhatsApp-ready architecture
Conversation history is stored channel-agnostically, ready to plug into the Meta Cloud API.
Walkthrough
Suggested presentation order
- 1Start here at /presentation
- 2Open the chatbot at / and submit a Lucky Basket Rewards entry
- 3Sign in at /login using the admin credentials
- 4Open the dashboard — find the new entry
- 5Run the AI receipt check
- 6Approve or reject the entry
- 7Copy the generated outcome message
- 8Open the conversation viewer for the entry
- 9Show the Staff Sales Challenge leaderboard
- 10Finish at /demo to confirm system health
Run supabase/demo-reset.sql before presenting to start with a clean data set.