Skip to main content

System Overview

ChatbotForCse consists of three independent subsystems communicating via REST APIs and a shared MongoDB database.

Layered Architecture

The backend follows a clean 4-layer architecture:

Design Pattern Locations

Strategy Pattern

Files:
  • llm_engine/classifiers/
  • strategies/context_strategies.py

Factory Pattern

Files:
  • llm_engine/classifier.py
  • strategies/context_strategies.py

Singleton Pattern

Files:
  • db/mongo.py
  • clients/ollama_client.py

Chat Request Flow

User Message

User sends “bugün menüde ne var?” via WhatsApp

Message Forwarding

WhatsApp Client forwards to FastAPI backend

Intent Classification

Factory returns HybridClassifier → classifies as “dining”

Context Fetching

Factory returns DiningStrategy → fetches menu from MongoDB

LLM Response

Gemini generates natural language response

Reply

Response sent back to WhatsApp user

Sequence Diagram


Directory Structure

Full Project Structure


Component Diagram