U4 · Core
DockPlus Atendimento — multichannel customer service agent
A customer service agent for WhatsApp, Telegram and email. A LangGraph graph classifies intent and routes to the right node: RAG answers, scheduling, feedback or handoff to a human. There's also a version for US real estate agents.
private
Engineering decisions
- LangGraph graph with state persisted in Postgres: audio is transcribed (Whisper), the orchestrator detects intent and language, and replies can go out as voice (ElevenLabs or fal.ai).
- WhatsApp through Meta's official Cloud API, with HMAC-signed webhooks and the 24-hour window rule enforced: outside it, only approved templates go out.
- Durable webhook intake: messages land in a Postgres queue under an advisory lock, and ambiguous outcomes are parked for review instead of retried, so a message is never sent twice.
- One company per deployment, enforced at startup: the database and Redis are bound to the instance ID, and JWTs from another instance are rejected. A CI check proves two stacks can't see each other.
- Next.js admin panel with deny-by-default RBAC (admin, operator, viewer), TOTP MFA and session revocation; the JWT lives in an httpOnly cookie behind a server-side proxy.
- Real estate version: tools to search listings by lead preferences, send property photos over WhatsApp, and book visits with reminders.
Results
- CI on every push: backend tests against a real pgvector Postgres, frontend build and tests, dependency audits (pip-audit, npm audit) and Docker image builds.
Stack
PythonFastAPILangGraphPostgreSQLpgvectorRedisNext.js 15OpenAIAnthropic ClaudeLangfuse
What it shows
Service businesses that get a lot of repetitive messages and want an agent to answer, book appointments, and hand off to a person only when needed.
More projects
U1
LedgerJobMulti-tenant SaaS for US construction contractors covering leads, quotes, projects, invoices and scheduling. Owners run the business by chatting with an AI agent, and the same tools are exposed through an MCP server.
liveU2Cape Cod PermitsMassachusetts building permits are scattered across six municipal systems with no shared API. This pipeline pulls them into one PostgreSQL database that people and AI agents query through a web dashboard and an MCP server.
privateU3Achado de LeilãoA single search across official Brazilian auctions (federal bank Caixa, other banks, tax authority, DMVs, labor courts, city halls and auctioneers). Live since Sept 28, 2026, with a Python collector, a Next.js site and an MCP server.
live