How sissoko90/uniconnect-ai works
UniConnect AI ingests a group’s chat, call recordings, and shared documents into a searchable history, then answers members with citations or refuses when evidence is missing. Members interact through a WhatsApp worker or the API; the worker decides when group replies are appropriate, while the API routes requests to retrieval and answer features. The README documents hybrid retrieval and Claude-grounded answers. Sampled source confirms live ingestion, voice handling, and worker/API calls; several other feature links reflect README capabilities and their exact enclosing source paths, not inspected call sites.
Main entry points: main.py FastAPI surface · schema.sql PostgreSQL and pgvector · answer.py Hybrid retrieval · index.js WhatsApp worker
Components 26
Member interaction
- WhatsApp worker
adapters/whatsapp/index.js - API client
adapters/whatsapp/api.js - FastAPI surface
core/main.py
History ingestion
- Export parser
ingestion/parse_whatsapp.py - Live message ingestion
core/ingest.py - Call transcription
ingestion/transcribe.py - Document ingestion
ingestion/document.py - Document embedding
ingestion/embed.py
Answers and retrieval
- Hybrid retrieval
core/answer.py - Query embeddings
core/embeddings.py - Intent routing
core/intent.py
Group features
- Personal catch-up
core/catchup.py - Daily recap
core/recap.py - Image questions
core/vision.py - Voice notes
core/voice.py - Polls
core/poll.py - Mention alerts
core/alerts.py - People lookup
core/identity.py - Document rendering
core/documents.py
Persistence and identity
- PostgreSQL and pgvector
db/schema.sql - Worker authentication
core/auth.py
Other components
- Group members
- Claude
- Voyage embeddings
- Groq transcription
Connections 35
- Group members → WhatsApp: message
- WhatsApp → WhatsApp worker: deliver chats
- WhatsApp worker → API client: request API
- API client → FastAPI surface: HTTP calls
- FastAPI surface → Worker authentication: authorize worker
- FastAPI surface → Hybrid retrieval: answer query
- FastAPI surface → Intent routing: route intent
- Hybrid retrieval → Query embeddings: embed query
- Query embeddings → Voyage embeddings: request vector
- Hybrid retrieval → PostgreSQL and pgvector: hybrid search
- Hybrid retrieval → Claude: ground answer
- FastAPI surface → Personal catch-up: request briefing
- FastAPI surface → Daily recap: request digest
- FastAPI surface → Image questions: handle image
- FastAPI surface → Voice notes: store voice note
- FastAPI surface → Polls: poll actions
- FastAPI surface → Mention alerts: alert actions
- FastAPI surface → People lookup: resolve people
- FastAPI surface → Document rendering: render document
- Export parser → PostgreSQL and pgvector: load messages
- API client → Live message ingestion: post messages
- Live message ingestion → PostgreSQL and pgvector: store messages
- Call transcription → Groq transcription: transcribe audio
- Call transcription → PostgreSQL and pgvector: store transcript
- Document ingestion → PostgreSQL and pgvector: store chunks
- Document embedding → PostgreSQL and pgvector: write vectors
- Group members → FastAPI surface: ask questions
- WhatsApp worker → Group members: send reply
- Personal catch-up → PostgreSQL and pgvector: read history
- Daily recap → PostgreSQL and pgvector: read history
- Voice notes → PostgreSQL and pgvector: store transcript
- People lookup → PostgreSQL and pgvector: lookup names
- Mention alerts → PostgreSQL and pgvector: read mentions
- Polls → PostgreSQL and pgvector: store votes
- Document rendering → PostgreSQL and pgvector: read document