Project
messenger-analytics
Multi-tenant SaaS that observes a company's sales conversations across Telegram, Instagram and web chat, scores each 0-100 with a language model, and aggregates product-level feedback - not just that a deal was lost, but how many customers wanted a given product and why they walked. The system is strictly read-only: it never replies, never notifies and never marks anything seen. A standalone runner streams Telegram messages through an event stream, Instagram arrives via official platform webhooks and web chat through a server-to-server widget ingest; all three are at-least-once and dedupe on account plus external id. Conversations are segmented by idle gap, scored in two tiers - a fast model in real time, a stronger one in a nightly batch - and surfaced through a dashboard with manager overrides, natural-language ask and async exports.
Read-only by design: never replies, notifies or marks seen
Three ingest paths: a standalone Telegram runner, platform webhooks, and a web widget
At-least-once ingestion deduped on (account, external_id)
Idle-gap conversation segmentation with employee attribution
Two-tier model scoring: a fast model in real time, a stronger one nightly
Product-level feedback aggregation across lost deals
Voice transcription via Kotib STT
Manager score overrides with precedence rules
Natural-language ask and async exports
Multi-tenant JWT carrying tenant claims; Fernet-encrypted fields
Manifest V3 browser extension for employee attribution