Skip to main content

Class Diagram

Overview

The overview shows the main pieces of VibeCheck. VibeCheckBot (main.py) initializes all components, registers every Slack Bolt command and event handler directly, and launches the background scheduler thread. The StateManager keeps one BotState per workspace, the services layer handles data persistence and AI interactions, and the logging layer records all message activity for analytics and streak tracking.

Core Component

The core component contains the bot's control flow. VibeCheckBot loads configuration, initializes the StateManager, registers all Slack Bolt handlers, and starts the scheduler thread. StateManager holds a thread-safe BotState instance per workspace so each team maintains its own channel, schedule, and feature flags. OAuthServer runs the Flask HTTP server that handles multi-workspace OAuth installs.

Services Component

The services component handles all external data and AI interactions. PromptService reads and caches the CSV prompt catalog. PromptTracker persists per-workspace prompt send and response counts in MongoDB. MongoUserInterests stores user interest tags for the social connector and mentor matching. LLMService calls the Groq API for emoji reactions, replies, and personalized introductions. MentorService manages the full mentor-mentee lifecycle in MongoDB. StreakService derives consecutive daily response streaks from the structured log file.

Slack Command and Event Wiring

VibeCheck registers all command and event handlers directly with the Slack Bolt App instance — there is no adapter layer. Each handler module receives the Slack client, body, ack, and say objects directly from Bolt and calls into the services layer as needed.