Skip to content

System Architecture

graph TB
    subgraph "Client Layer"
        User[User]
        Mobile[Mobile App - Phase 2]
        Web[Web App - Vercel]
        Console[Admin Console<br/>console.vows.social]
    end

    subgraph "Modal Platform (Python ML)"
        API[FastAPI Microservices]
        Orchestrator[Orchestrator<br/>Thompson Sampling ✓]
        LangGraph[LangGraph<br/>Multi-Agent Coord]
        Embeddings[SigLIP 2 / Jina CLIP<br/>GPU Embeddings]
        TwoTower[Two-Tower Model<br/>PyTorch]
        RLlib[Ray RLlib<br/>Multi-Agent PPO]
        LangSmith[LangSmith<br/>Observability]
    end

    subgraph "Data Layer"
        Qdrant[(Qdrant Vector DB)]
        Supabase[(Supabase PostgreSQL)]
        ModalVolume[(Modal Volumes<br/>Model Checkpoints)]
    end

    subgraph "Discovery Layer"
        Instagram[Instagram Curators]
        DiscoveryAgent[Discovery Agent]
    end

    User --> Mobile
    User --> Web
    User --> Console
    Mobile --> API
    Web --> API
    Console --> API

    API --> Orchestrator
    Orchestrator --> LangGraph
    LangGraph --> DiscoveryAgent

    Orchestrator --> Embeddings
    Embeddings --> TwoTower
    TwoTower --> Qdrant

    RLlib --> LangGraph
    RLlib --> ModalVolume

    LangSmith --> LangGraph
    LangSmith --> RLlib

    Orchestrator --> Supabase

    Instagram --> DiscoveryAgent
    DiscoveryAgent --> Supabase
    DiscoveryAgent --> Qdrant

Component Descriptions

Client Layer

  • User: End users planning their wedding
  • Web App: Next.js web application (Vercel)
  • Admin Console: Manual content curation dashboard (Phase 1a)
  • Mobile App: Flutter mobile application (Phase 2)
  • FastAPI: RESTful API endpoints (async)
  • Orchestrator: Thompson Sampling for feed ranking (KEPT - core algorithm)
  • LangGraph: Multi-agent coordination framework
  • GPU Embeddings: SigLIP 2 / Jina CLIP v2 for multimodal understanding
  • Two-Tower Model: User & content dual-encoder (PyTorch)
  • Ray RLlib: Multi-Agent PPO training (A100 GPU, scheduled)
  • LangSmith: Agent observability and tracing (5K traces/month free)

Data Layer

  • Qdrant: Vector database for embeddings (GPU-generated)
  • Supabase: PostgreSQL for user data and interactions
  • Modal Volumes: Persistent storage for model checkpoints

Discovery Layer

  • Instagram Curators: Regional wedding content accounts
  • Discovery Agent: Content discovery and quality filtering