Case — Dash Qualtrics (CX Journey Dashboard + MCP Server)

Type: Freelance (corporate client — Customer Experience area) Role: Full Stack Developer (full authorship; includes an MCP server in TypeScript) Status: In production (Oracle VPS) + portable desktop version Stack: Python, FastAPI, Angular, PostgreSQL/SQLite, Gemini (google-genai), JWT, Docker Compose, Nginx + Let's Encrypt, Oracle Cloud VPS, TypeScript (MCP server), Qualtrics API

Context and problem

The client's CX area collected surveys in Qualtrics, but analysis by customer journey required manual exports and hand-built charts. The native dashboards didn't provide a consolidated journey view nor a quick qualitative read on what the responses were saying.

Solution

Two complementary fronts:

  1. Dash Qualtrics — a web dashboard that syncs responses via the Qualtrics API, consolidates charts by journey and includes an AI analysis tab (Gemini) with a "gauge" and assessment of the questions. JWT login and basic user management.
  2. Qualtrics MCP Server (TypeScript) — an MCP server that exposes the Qualtrics API as tools for AI assistants, used for data-model diagnostics and assisted construction of CX dashboards (analysis documentation versioned in the repo).

Architecture and technical decisions

  • FastAPI + Angular + Postgres in a single Docker Compose (db, backend, frontend with Nginx proxying /api)
  • Incremental sync of responses via the Qualtrics API with a secure token on the backend
  • Automated deployment on an Oracle VPS with one script: updates dynamic DNS (DuckDNS), ships the project, publishes on 80/443 and issues/renews the Let's Encrypt certificate via Certbot
  • Portable desktop version for Windows — a notable product decision: the same backend packaged with an embedded Python + SQLite, requiring no Docker, Node or admin permission — runs even from a USB drive, with auto-update via GitHub Releases (Atualizar.bat). One codebase, two distribution modes (SaaS on the VPS and an offline package)
  • Hot reload in dev with a compose override, without touching the production compose file

Challenges and solutions

  • Client with IT restrictions (no Docker/admin on local machines): solved with the portable SQLite desktop package — total removal of installation friction
  • Infrastructure cost: Oracle VPS Always Free + DuckDNS + Certbot = production HTTPS at zero cost
  • Qualitative analysis at scale: prompt engineering for the AI's per-journey assessment, with a visual gauge for quick executive reading

Results and impact

  • Journey-level view available in real time, with no manual Qualtrics export
  • Automatic AI assessment shortened the survey-reading cycle — in real use (currently running locally/portable) to pull Qualtrics data, track tickets and open the surveys with the metrics that matter
  • Dual distribution (web + portable desktop) covered both the central operation and users with restricted IT
Wesley Correia

Full Stack Engineer focused on automation, applied AI and production systems — from Java/Python backends to Angular/React frontends.

Quick Links

Social

© 2026 Wesley de Carvalho Augusto Correia.All rights reserved.