Live2025

Anonymous Shopper Survey Platform

A multi-tenant SaaS platform for mystery shopping programs — freelance shoppers collect field evidence (photos, videos, questionnaire responses), while admins build campaigns and clients view real-time analytics across all their locations.

Node.jsReactPostgreSQLAWS S3Chart.jsDockerRedisNginx

Category

SaaS Products

Year

2025

Status

Live

The Problem

Large retail and hospitality chains — think McDonald’s, Starbucks, hotel groups — need to know what’s actually happening at their outlets. Are staff following SOPs? Is the store clean? Is the food served correctly? They hire mystery shopping agencies to find out.

These agencies recruit freelance shoppers who visit stores anonymously, evaluate the experience against a checklist, and submit evidence. The problem: most agencies run this on spreadsheets, WhatsApp groups, and email threads. Campaigns are hard to manage. Evidence gets lost. Reports take weeks. Clients can’t see results until someone manually compiles a PowerPoint deck.

What I Built

A full SaaS platform that digitizes the entire mystery shopping workflow end-to-end:

For Admins (the agency):

  • Create and manage campaigns across multiple client brands
  • Build complex, multi-section questionnaires with conditional logic, scoring rubrics, and mandatory photo/video evidence points
  • Assign shoppers to campaigns based on location, availability, and past performance
  • Review and approve/reject submitted surveys before they reach the client
  • Manage the freelance shopper pool — onboarding, ratings, payments tracking

For Shoppers (freelancers in the field):

  • Mobile-first survey interface — fill questionnaires, capture photos and videos on-site
  • GPS-tagged submissions to verify store visit authenticity
  • Upload media evidence directly from camera — compressed and synced even on poor connections
  • View assigned campaigns, deadlines, and payment status

For Clients (the brands):

  • Real-time analytics dashboard — scores by store, region, time period
  • Drill-down from national overview to individual store audit
  • Trend analysis — are stores improving or declining over time?
  • Photo/video evidence gallery tied to specific audit questions
  • Export reports as PDF for internal distribution

Technical Challenges

  • Multi-tenant data isolation — every client’s data is strictly separated. Admins see everything, clients see only their brand, shoppers see only their assignments. Row-level security in PostgreSQL enforces this at the database layer, not just the application layer.

  • Complex questionnaire engine — questionnaires aren’t simple forms. They have sections, conditional branching (show question B only if answer A is “No”), weighted scoring per question, mandatory evidence attachments, and different question types (rating scales, yes/no, multi-select, free text, photo upload, video upload). The schema had to be flexible enough to model all of this without a new deployment per client.

  • Media pipeline at scale — shoppers upload dozens of photos and videos per audit. Media goes directly to S3 via pre-signed URLs (never through the app server), with client-side compression for videos. Thumbnails are generated asynchronously. Each media file is tagged to the specific question and audit for evidence traceability.

  • Offline-capable mobile experience — shoppers are often inside stores with poor connectivity. The survey form works offline, queues media uploads, and syncs when back online. Conflict resolution handles partial uploads gracefully.

  • Analytics engine — clients want to slice data by store, region, time period, question category, and auditor. Pre-aggregated scores in Redis keep dashboard queries fast even with millions of data points. Chart.js powers the interactive visualizations.

  • Campaign scheduling and assignment — campaigns have start/end dates, frequency rules (audit each store monthly), geographic constraints, and shopper eligibility criteria. The assignment algorithm matches available shoppers to open audits based on proximity and track record.

Architecture

The platform follows a standard multi-tier SaaS architecture:

  • Frontend — React SPA with role-based views (admin panel, shopper app, client dashboard). Mobile-responsive with PWA capabilities for the shopper interface.
  • API layer — Node.js REST API with JWT authentication and role-based access control. Separate middleware chains for admin, shopper, and client routes.
  • Database — PostgreSQL with row-level security policies per tenant. Questionnaire definitions stored as structured JSON columns, response data in normalized tables for query performance.
  • Media storage — AWS S3 with pre-signed upload URLs. Async thumbnail generation. CDN delivery for client-facing evidence galleries.
  • Caching & aggregation — Redis for session management, pre-computed analytics scores, and rate limiting.
  • Infrastructure — Docker containers, Nginx reverse proxy, automated deployments.

Results & Impact

  • Live SaaS serving multiple mystery shopping agencies and their enterprise clients
  • Campaigns covering hundreds of retail locations with thousands of completed audits
  • Reduced report turnaround from weeks to real-time — clients see scores as audits are approved
  • Shopper onboarding time cut significantly — mobile-first flow replaces paper-based training
  • Evidence traceability — every score backed by timestamped, GPS-tagged photo/video proof

Stack Deep Dive

  • PostgreSQL with row-level security for multi-tenant data isolation
  • Node.js API with JWT auth and role-based middleware
  • React frontend with role-specific dashboards (admin, shopper, client)
  • AWS S3 for media storage with pre-signed upload URLs
  • Redis for session management and analytics caching
  • Chart.js for interactive analytics visualizations
  • Docker for containerized deployments
  • Nginx as reverse proxy and static asset server

Interested in working together?

Get in Touch