System architecture

Last updated: April 11, 2026

Three channels, one orchestrator

Board Game Librarian runs on 20 background services. All three user-facing channels — Telegram bot, web chat, and partner widget — route through a single orchestrator service. That is where the Q&A logic lives.

Loading diagram...

The orchestrator is the critical path. If it goes down, all three channels stop answering questions. Everything else can be degraded without a total outage.

The 20 services

Critical (must run)

ServiceRole
Rules orchestratorQ&A pipeline, AI synthesis
Telegram botTelegram webhook handler
Web frontendNext.js: chat, admin, marketing
Game library APIGame catalog, user management
Embedding serviceVector generation

Supporting (degraded without)

ServiceRole
PDF servicePDF extraction (Apache Tika)
Community scraperCommunity forum scraping
Game data cacheGame data cache
Game data syncNightly metadata sync
Corpus analyzerQuery expansion, intent detection

Publisher sync (scheduled)

ServiceSchedule
Esoteric Order of Gamers syncDaily 03:30
GMT Games syncDaily 03:31
Stonemaier Games syncDaily 03:32
Tabletopia syncDaily + weekly
Ludus Magnus Studio syncWeekly Sun 01:00

Technology stack

LayerTechnology
DatabasePostgreSQL con ricerca vettoriale
AI synthesisOpenRouter → GPT-4o / Claude
Embeddingsjina-v2-small-en (Python)
Web frameworkNext.js (App Router)
Backend APIsExpress (Node.js)
CacheRedis
ObservabilityJaeger + Phoenix + OpenTelemetry