AI · Customer operations
Concierge
Customer service with context. AI and human teams working together on WhatsApp.

The whole
product.
Concierge is an MVP for AI-powered WhatsApp customer service initially deployed for a residential condominium operation. The pipeline receives incoming messages via Evolution API, deduplicates by message ID, upserts the contact, fetches or creates an active conversation, persists the message, classifies the intent into one of six categories using GPT-4o-mini, generates a context-aware response using the conversation history, and replies via Evolution API. The admin panel built with Next.js 15 and Tailwind 4 surfaces a real-time dashboard (resolved in 30 days, AI-resolution rate, open tickets, today's volume), an SLA triage queue that flags conversations waiting for a human, full conversation history with manual takeover, contact management, team accounts, audit records, multi-instance switching, and direct WhatsApp QR Code connection. It is an installable PWA with real-time notifications. The system uses Supabase (PostgreSQL) for persistence, with a clean separation between repositories, services and routes. The architecture supports multi-tenant operation and is deployed on Railway with zero-downtime deploys.
Solution scope
Intent classification, SLA triage, team accounts, live human takeover and multi-instance operation.
How it works
in practice.
Capabilities connecting the user experience to operational needs.
AI Message Classification
Each incoming message is classified into 6 categories (information, complaint, maintenance, scheduling, request, human handoff) by GPT-4o-mini with conversation context.
Contextual AI Responses
Response generator builds the prompt with conversation history and operation-specific knowledge, producing answers in the brand tone and falling back to a human when uncertain.
Real-Time Admin Dashboard
KPI dashboard with open tickets, in-progress, resolved in 30 days, % resolved by AI, pending count and today's volume — updates without page reload.
Live Conversation Takeover
Admin panel lets the human team read AI conversations live and take over by sending replies directly from the panel.
Anti-Duplication & Anti-Loop
Message ID cache prevents reprocessing and `fromMe` filter prevents bot-to-bot loops — both required to run reliably with Evolution API webhooks.
WhatsApp QR Connection
Dedicated screen pairs a WhatsApp number to the bot via QR Code with live connection status, so the customer can self-onboard.
SLA Triage Queue
A dedicated Atendimentos view surfaces conversations that need a human (e.g. the customer asked for an agent), with a live counter and 'waiting for you' alerts so nothing slips.
Team Accounts & Records
Multi-user team management plus an audit Records view of bot and human actions — built for a real operation with more than one attendant.
Multi-Instance Switching
A single panel manages multiple WhatsApp bot instances (different businesses/numbers), each with its own config, contacts and conversations.
Installable PWA
The panel is an installable Progressive Web App with real-time push notifications, so the operator gets pinged the moment a conversation needs attention.
Behind
the interface.
Pipeline + Repository + Service Layer
Webhook entrypoint feeds an orchestrator pipeline that runs deduplication, contact upsert, conversation lookup, message persistence, AI classification, AI response, and reply dispatch. Repositories isolate database access, services hold business logic, routes expose REST endpoints, and the Next.js admin panel consumes the same API.
Solution components
- WhatsApp (Evolution API)
- Express 5 API + Pipeline Orchestrator
- AI Layer (OpenAI GPT-4o-mini)
- Supabase (PostgreSQL) Repositories
- Next.js 15 Admin Panel