Tourist Typology

Tourist typology computes and visualizes a dynamic user clustering of tourists based on image ratings.


On behalf of Prof. Dr. Roman Egger I was hired as a full stack developer to implement his concept of a dynamic user clustering of tourists based on image ratings as a web application.

Tourists are multi-optional customers who show hybrid travel patterns. This poses a huge challenge for marketing, as customer segmentations become difficult. Which typology should someone be assigned to who one time goes on a beach vacation with their kids, the next time goes on an action vacation with friends? Someone who is pampering themselves in a 5-star hotel, the next time going on a camping vacation? This project aims to query the multi-optionality of travelers and categorize tourists into clusters by rating images.

User Rating of Images

User Rating of Images

Based on recognized typologies in the literature, 6 images each were selected into 16 typologies and reduced to 3 representative images by user voting. The 48 images were annotated by 622 people. The vectors of the images (doc2vec) serve as the basis for the user vector. All users are clustered using Louvain algorithm and visualized using t-SNE and UMAP algorithms.

User Cluster Visualization

User Cluster Visualization

Key Data of the Project

  • Start: 07/16/2020
  • Handover: 08/07/2020
  • Status: production

Technical Description

My responsibility included requirements gathering, technical design, development and deployment. Images, initial entity data in CSV and scripts in Python for mathematical calculation of typology were provided.

Technologies Used

  • Backend
    • Python: backend and scripts for data initialization from CSV
    • Flask: web framework to provide a REST API
    • Flask-Migrate: Database Migrations with alembic and SQLAlchemy
    • SQLAlchemy: Object-Relational Mapper
    • Docker: Development (VSCode devcontainer) and Production
    • gunicorn / nginx: WSGI and reverse proxy respectively
  • frontend
    • HTML: Markup
    • CSS / SCSS: Styling
    • JavaScript: Interaction
    • Chart.js: data visualization
  • Google Cloud Platform: Cloud infrastructure
    • Compute Engine: Hosting of the Flask application
    • Cloud SQL: Serverless Database (PostgreSQL)


Data Model

Tourist Typology Data Model

Tourist Typology Data Model