freddy-sales-agent

Freddy Sales Agent

An autonomous SDR and revenue agent for Freddyville Media Productions — it prospects, qualifies, and drafts; a human sends.

Architecture map

Interactive, pannable version: open the architecture map

What it is

Freddy is a production AI sales agent running on the OpenClaw runtime, in Docker on an Oracle Cloud ARM server. Three weekday cron jobs drive a full SDR motion: morning prospecting, afternoon follow-ups, and an end-of-day pipeline report — all delivered to me over Telegram. It is running today in REVIEW mode: Freddy drafts every email, and nothing goes out until I reply “send” on Telegram.

Why I built it

Freddyville Media is a real video production company, and its bottleneck was never craft — it was consistent outbound. Prospecting, enrichment, CRM hygiene, and follow-up are exactly the kind of structured, repeatable work an agent can own. I wanted an SDR that works every weekday without ever inventing a price, a client, or a fact about my company.

Architecture

The map above is the real system. The flow:

Stage What happens
Entry Three OpenClaw cron jobs (Mon–Fri, America/Chicago), inbound email, and my Telegram commands
Discover Tavily vertical search, plus an OpenStreetMap local-business finder that flags businesses with no website — Freddyville’s ideal prospect
Qualify Firecrawl scrapes the prospect’s site; a structured-reasoning skill scores Strong/Medium/Weak; Weak is dropped
Enrich Hunter.io finds the decision-maker and verifies the email — a lead cannot enter the CRM unverified
CRM ClickUp is the system of record: lead, status, source, and a follow-up task with a date
Outreach Drafts built from cold-outreach frameworks and specific research findings, posted to Telegram as numbered drafts
Approval I reply send, send all, or send 1,3; only approved drafts go out via Composio Gmail

Freddy is one of three agents. A CEO orchestrator agent (Nana) and a studio-side SDR (Jade) run in separate containers; they coordinate over a custom file message bus because Telegram bots cannot see each other’s messages.

Engineering highlights

Stack

Layer Tech
Runtime OpenClaw agent framework, Docker Compose, Oracle Cloud ARM (Ampere)
Models GLM-5.2 (NVIDIA-served); previously Kimi K2.6, local Qwen via llama.cpp
Prospecting Tavily, Firecrawl, Hunter.io, OpenStreetMap (custom Python finder)
CRM ClickUp (system of record)
Email Gmail via Composio, SPF+DKIM verified
Approval / comms Telegram (human-in-the-loop), file message bus (agent-to-agent)
Knowledge 8 grounded kb-*.md files + memory search

Status & roadmap

Running, in REVIEW mode — drafts only, human approval on every send. Next: DMARC hardening and warmup before enabling capped AUTO-SEND, and moving the remaining local-model dependency fully onto hosted inference so cron jobs never depend on a laptop being awake.

About this repo

This is a public architecture showcase of a private production codebase. The agent’s source, persona files, and knowledge base stay private; this repo documents how the system is built.

— Godfred Aidoo · godfredaidoo.com · LinkedIn · more projects