Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Not another chatbot: we built an open-source agent harness for customer service

Description and use

Ecbot is an open‑source agent harness for customer service that addresses platform retry issues, message bursts, stale replies, multi‑channel identity, and escalation to humans.

Problem

Customer service bots often lack robust handling of platform retries, burst messaging, stale replies, multi‑channel identity, and escalation, leading to lost messages, duplicated work, stale responses, fragmented customer data, and uncontrolled handoffs.

Outcome

Ecbot reduces message loss, eliminates duplicate processing, ensures timely and relevant replies, unifies customer identity across channels, and provides clear escalation paths, all without vendor lock‑in.

Workflow

  • 1. Receive webhook and write message to BullMQ job before acknowledging. 2. Deduplicate using Redis SET NX on platform:externalMessageId. 3. Debounce bursts: collapse messages arriving within 3 s. 4. Increment generation lease counter for each inbound message. 5. Generate reply with LLM; abort if lease counter changes. 6. Route reply through originating contact point. 7. Escalate to operator if handoff keyword, low confidence, guardrail flag, or trigger tag detected. 8. Operator replies from shared inbox; bot resumes after resolution.

Evidence

Ecbot writes every incoming message to a durable BullMQ job (Redis with AOF on) before it acknowledges the webhook.

Source

Ecbot collapses messages that arrive inside a 3‑second window into one debounce burst and replies once, to all of them, while the platform shows a typing indicator.

Source

For that case each conversation has a generation lease: a counter in Redis. Every inbound message increments it.

Source

Ecbot separates the Customer from the ContactPoint (one platform identity, unique on (workspace, platform, externalSenderId)).

Source

Ecbot's escalation fires when the customer asks for a human, the agent's confidence drops below a threshold, an input guardrail flags the message, or a customer tag triggers handoff.

Source

  • Record date: 2026-10-02T08:55:44.740Z