skip to content
home / projects / openduck

OpenDuck — Autonomous Sales & Outreach Platform

A secure cloud-hosted agentic outbound stack with approvals, experimentation, auditability, and private model routing.

Cloud agent stack · Governed autonomy · A/B experimentation · Audit + suppression controls · Private model routing case study
PythonFastAPILangGraphPostgreSQLpgvectorRedisReactDockerDigitalOceanTailscale
OpenDuck campaign operations interface
◆ agent operations

OpenDuck — governed learning loop

architecture artifact
01Researchprospects + context
02Variantscampaign experiments
03Executeworkers + scheduler
04Measurereply · conversion · revenue
05Adaptstrategy + allocation
human boundaryApprove campaignaudit · suppression · kill switch
→
↓
←
↖

Repository-backed architecture: the OpenDuck link above exposes the implementation and test history behind this system.

Case context

OpenDuck is a cloud-hosted agentic outbound and sales-automation platform running on a DigitalOcean droplet. The runtime separates a FastAPI control plane, LangGraph orchestration, workers, scheduler, PostgreSQL + pgvector, Redis, and a React operations UI, while model inference can route to private local Ollama over Tailscale or configured hosted providers. The system is built around governed autonomy: campaign launch and sensitive policy changes remain explicit control points while approved campaigns can execute within bounded rules.

01. A real agent operations stack, not one automation script

OpenDuck splits control, orchestration, background execution, scheduling, persistence, caching, and operator experience into separate services. Docker Compose runs the application stack on a DigitalOcean droplet, while GitHub Actions deploys updates and verifies service health.

02. Private model inference without co-locating the whole system

The cloud runtime can reach local Ollama over Tailscale, preserving private GPU-backed inference without exposing the model endpoint publicly or requiring the full application to run on the operator workstation. Hosted model routing can be configured separately when appropriate.

03. Human approval defines the autonomy boundary

OpenDuck distinguishes campaign-level authority from individual actions inside an approved campaign. Campaign launch, major budget changes, and suppression-policy changes remain explicit human control points. Audit logs, a kill switch, suppression lists, unsubscribe enforcement, and rate limits keep autonomous execution observable and bounded.

04. Experimentation and A/B testing are first-class system concepts

Campaigns can carry variants, A/B-testing configuration, performance metrics, and recommendation logic rather than treating each message as an isolated generation. The codebase includes tests for variant seeding, campaign detail contracts, workflow variant selection, A/B safety behavior, revenue attribution, and ICP-segment analytics.

05. Learning loops are grounded in campaign results

The architecture is designed so delivery, engagement, reply, conversion, objection, and variant signals can feed back into later campaign decisions. The point is not an unconstrained self-modifying agent; it is a governed loop where experimentation data changes future strategy inside explicit operational limits.

06. Infrastructure and auditability are part of the agent design

PostgreSQL + pgvector provide durable state and retrieval-ready storage, Redis backs queueing and coordination, the scheduler drives timed work, and structured audit data makes operator decisions and agent actions inspectable. That operational substrate is what turns agent behavior into a system that can be reviewed and controlled.

◆ Outcome

A secure outbound-agent platform with a real control plane, orchestration layer, queueing, persistence, approvals, A/B experimentation, auditability, and private model connectivity — designed to learn from campaign results without erasing human control over the boundaries that matter.