Academic team project for an external client · 2025

Event chatbot for XPO Group

A retrieval-based event assistant that turns exhibitor and event-site content into answers, registration flows, and usable analytics.

My role
Backend, retrieval, ingestion, integration, and deployment work
Stack
.NET, C#, Azure OpenAI, Cosmos DB, Next.js, Python, Scrapy
Context
Team project for Kortrijk Xpo Group

Answer event questions from changing source material

Visitors needed quick answers about exhibitors, stands, and event details across multiple event websites. The system had to collect that content, make it semantically searchable, generate grounded answers, and remain configurable for different events.

Connect ingestion, retrieval, chat, and analytics

IngestionPython and ScrapyCollect and clean event-site content
Retrieval API.NET and Azure OpenAICreate embeddings and perform semantic search
StorageCosmos DBKeep event documents, profiles, sessions, and analytics
ExperienceChat widget and Next.js dashboardServe visitors and expose operational insights

Build the path from source website to deployed answer

  • Worked on the Python scraping and cleaning pipeline for several event websites.
  • Built and refined .NET endpoints for embeddings, semantic search, chat, authentication, registration, and analytics.
  • Integrated Azure OpenAI and Cosmos DB, including retry behavior for rate-limited bulk uploads.
  • Added event-specific prompts, multilingual stand-number handling, input sanitization, rate limiting, and configurable frontend behavior.
  • Contributed production deployment configuration, logging improvements, CORS configuration, and the analytics dashboard flow.

One system, several event identities

The final application supported multiple event datasets and bot configurations through the same retrieval service. Event content could be scraped, embedded, queried through the chatbot, and followed through registration and analytics data without maintaining a separate backend for every event.