← Back to Case Studies
Automation & Full-Stack Development

Multi-Tenant Survey Platform: Structured Data Collection Across Many Organisational Units

Built a Flask and Azure platform for running the same structured questionnaire across many organisational units at once — role-based access, scheduled review rounds, section-level progress tracking, AI-generated summaries, and secure document management.

Multi-tenant

Isolated data per unit

RBAC

Role-based access control

Review rounds

Time-boxed approval cycles

AI

Generated response summaries

The Challenge

Running a periodic structured assessment across a large number of separate organisational units breaks down quickly without a system behind it:

  • Questionnaires distributed as spreadsheets came back in inconsistent formats, requiring weeks of manual reconciliation
  • Nobody could see completion state — who had finished, who was partway, who had not started
  • Different participant types needed genuinely different access: respondents, reviewers, and administrators
  • Submissions needed a formal review stage before being treated as final, and that cycle had to repeat
  • Written summaries of each unit's responses were produced by hand, inconsistently, by whoever had time
  • Supporting documents needed secure, permission-scoped storage rather than email attachments

The Solution

I designed and built a modular survey platform on Azure, structured so a single deployment can serve many tenants and more than one assessment type:

Multi-Tenant Data Model

Cosmos DB partitioned by tenant, so each unit's data is isolated and per-tenant queries stay within a single partition as the platform scales.

Role-Based Access Control

Full RBAC with an admin portal — administrators, reviewers, and respondents each get tailored interfaces and permissions scoped to their tenant.

Configurable Questionnaires

Section-based questionnaire definitions, allowing multiple assessment types to run from one deployment without forking the codebase.

Progress Tracking & Review Rounds

Section-level completion state rolls up into an administrator view, and review rounds are modelled as first-class entities with their own windows so cycles can repeat.

AI-Generated Summaries

OpenAI integration turns structured answers and free-text comments into readable per-unit summary documents, removing the manual synthesis step.

Azure Cloud Infrastructure

Cosmos DB for flexible document storage, Blob Storage with time-limited signed links for uploads, and App Service deployment via GitHub Actions CI/CD.

Results

The platform replaced a spreadsheet-and-email process with a single auditable system:

One system

Unified platform replaces fragmented per-unit spreadsheet workflows

Live visibility

Section-level progress tracking removes the need to chase participants for status

Automated summaries

AI-generated per-unit summaries cut the manual report-writing step

CI/CD deployed

GitHub Actions pipeline makes releases repeatable rather than hand-run

Technology Stack

Backend

  • • Flask
  • • Python
  • • REST API

Database & Storage

  • • Azure Cosmos DB
  • • Azure Blob Storage

AI

  • • OpenAI GPT

Infrastructure

  • • Azure App Service
  • • GitHub Actions
  • • CI/CD

Need something similar?

I build custom platforms, automation systems, and data solutions. Let's discuss your project.