Autonomous AI SEO + Sales Agent System built on OpenClaw
Project description
⚡ KiessClaw
Autonomous AI SDR + SEO agent OS. Import leads, score them, enroll them, stop when they reply. Zero manual steps.
pip install kiessclaw
kiessclaw import csv leads.csv --icp-min 60 --auto-enroll
That imports your leads, scores them with ICP rules, and enrolls the qualified ones in a multi-step outreach sequence. Replies stop the sequence. Automatically.
What is KIESSCLAW?
KIESSCLAW is an all-in-one CLI for generating agent/pipeline/workflow scaffolds and prompt packs.
It ships with opinionated use cases and strict templates so teams can go from idea to runnable project structure in minutes.
Built by Erwin Kiess-Alfonso as part of the KLYTICS open-source ecosystem.
Why this exists
- Apollo is expensive and closed. This is free and forkable.
- Most outreach tools are GUIs. This is a CLI designed for scripts, pipes, and CI/CD.
- AI personalization should be configurable, not locked to one vendor.
Non-goals
- Not a replacement for your CRM.
- Not a no-code tool.
- Not production-ready for regulated industries without review.
The Agent Team
| Agent | Codename | Role | Model |
|---|---|---|---|
| KiessProspector | KPRO |
Lead import, enrichment, ICP scoring | gpt-4o |
| KiessSequencer | KSEQ |
Sequence orchestration, scheduling, safety | gpt-4o-mini |
| KiessPen | KPEN |
Personalization, first lines, templates | gpt-4o |
| KiessInbox | KINB |
Reply classification, qualification, DNC | gpt-4o |
| KiessMetrics | KMET |
Analytics, deliverability, reporting | gpt-4o-mini |
| KiessCrawler | KRAWL |
Technical SEO crawl, score, and issues | gpt-4o |
| KiessAnalyst | KANA |
Keyword + SERP + competitor gap analysis | gpt-4o |
| KiessWriter | KWRI |
SEO briefs + metadata generation | gpt-4o-mini |
| KiessScout | KSCO |
Backlink prospecting + link gap targeting | gpt-4o-mini |
| KiessReporter | KREP |
Weekly SEO reporting | gpt-4o-mini |
All agents share one workspace brain — a markdown-based memory system where context persists, logs are written, and data is stored.
Features
- Use Case Registry — 6 built-in workflows (
outreach_sdr,seo_audit_to_leads,github_oss_launch, etc.) - Prompt Factory — Render deterministic
system,task,guardrails, andchecklistprompts - Prompt Linting — Detect unresolved placeholders, vague instructions, and missing success criteria
- Code Scaffolding — Generate agent/skill/workflow/test/docs skeletons safely
- No-Overwrite Safety — Files are never replaced unless
--forceis explicitly passed - Doctor Command — Config/workspace/dependency diagnostics with quick fixes
- Existing SDR + SEO Engine — Operational agents and API still available for runtime workflows
Quick Start
Prerequisites
- Python 3.10+
- An OpenAI API key (or Anthropic/Ollama)
Install
pip install kiessclaw
pip install kiessclaw[all] # includes anthropic + slack
# Or install from source
git clone https://github.com/monykiss/kiessclaw.git
cd kiessclaw
pip install -e .
# Copy and configure environment
cp .env.example .env
nano .env # Add your API keys
# Initialize workspace
python scripts/init_workspace.py
# Check status
python -m kiessclaw status
Docker
docker-compose up
# API live at http://localhost:8000
# Docs at http://localhost:8000/docs
Quick Start (Generator Wedge)
# 1) List built-in use cases
kiessclaw usecase list
# 2) Generate a full SDR prompt pack
kiessclaw prompt pack outreach_sdr --json-input examples/outreach_sdr.json --out prompts.json --deterministic
# 3) Scaffold a runnable use case folder
kiessclaw scaffold usecase outreach_sdr --json-input examples/outreach_sdr.json --outdir ./generated --force
# 4) Run workflow simulation
kiessclaw workflow run outreach_sdr --json-input examples/outreach_sdr.json --dry-run
# 5) Check providers
kiessclaw providers list
kiessclaw providers health
# 6) Test Slack integration (optional)
kiessclaw integrations slack test
# 7) Add a scheduled workflow run (optional)
kiessclaw schedule add --usecase outreach_sdr --cron "0 9 * * 1-5" --json-input examples/outreach_sdr.json --dry-run
# 8) Run health diagnostics
kiessclaw doctor
Slack Notifications
Set SLACK_WEBHOOK_URL in .env, then:
kiessclaw integrations slack test
Scheduled Runs
kiessclaw schedule add \
--usecase outreach_sdr \
--cron "0 9 * * 1-5" \
--json-input examples/outreach_sdr.json \
--dry-run
kiessclaw schedule list
kiessclaw schedule run <job_id>
kiessclaw schedule remove <job_id>
Project Structure
kiessclaw/
├── kiessclaw/
│ ├── core/ # Agent runtime, memory engine, LLM router
│ ├── agents/ # Individual agent implementations
│ ├── skills/ # Modular skill modules
│ ├── models/ # Data models (Contact, Sequence, etc.)
│ ├── usecases/ # Use case schemas and registry
│ ├── prompting/ # Prompt factory + linting
│ ├── codegen/ # Safe scaffold generator + templates
│ ├── seo/ # SEO agents + crawl skills
│ ├── pipeline.py # Autonomous SEO -> SDR routing
│ ├── interfaces/ # CLI and Slack interfaces
│ └── utils/ # Helpers and utilities
├── config/
│ ├── config.yaml # Global settings & model assignments
│ └── agents/ # Per-agent directive files (AgentMD)
├── workspace/
│ ├── data/ # JSON data storage
│ ├── memory/ # Persistent agent memory
│ ├── reports/ # Generated reports
│ └── logs/ # Activity logs
├── docs/ # Documentation
├── ROADMAP.md # Release roadmap milestones
└── scripts/ # Setup and utility scripts
CLI Commands
| Command | Description |
|---|---|
kiessclaw status |
Show agent status and data summary |
kiessclaw usecase list |
List built-in generator use cases |
kiessclaw usecase show <id> |
Show one use case schema |
kiessclaw prompt render <id> --template ... --json-input ... |
Render one prompt template |
kiessclaw prompt pack <id> --json-input ... --out ... |
Render all prompt templates into one pack |
kiessclaw scaffold usecase <id> --json-input ... --outdir ... |
Generate use case scaffold files |
kiessclaw scaffold agent <Name> --outdir ... |
Generate standalone agent scaffold + test |
kiessclaw scaffold workflow <Name> --outdir ... |
Generate standalone workflow scaffold + test |
kiessclaw scaffold skill <Name> --outdir ... |
Generate standalone skill scaffold + test |
kiessclaw scaffold tests <Kind> --outdir ... |
Generate standalone test stub |
kiessclaw workflow run <id> --json-input ... --dry-run |
Execute a use case workflow end-to-end |
kiessclaw integrations slack test |
Send a Slack test notification if configured |
kiessclaw schedule add --usecase ... --cron ... --json-input ... |
Persist a scheduled workflow job |
kiessclaw schedule list |
List scheduled jobs |
kiessclaw schedule run <job_id> |
Execute one scheduled job immediately |
kiessclaw schedule remove <job_id> |
Remove one scheduled job |
kiessclaw providers list |
Show registered providers and active provider by kind |
kiessclaw providers health |
Run active provider health checks |
kiessclaw doctor |
Check config/workspace/dependencies and show quick fixes |
kiessclaw import --file X |
Import contacts from CSV |
kiessclaw contact add ... |
Add one contact directly from CLI |
kiessclaw sequence create --name X |
Create a new sequence |
kiessclaw sequence add-step --id X ... |
Add sequence step content |
kiessclaw enroll <contact> <sequence> |
Enroll a contact into a sequence |
kiessclaw run --dry-run |
Simulate send + inbox cycle with no state mutation |
kiessclaw run |
Execute one operational cycle |
kiessclaw inbox process |
Process unclassified replies |
kiessclaw reply --contact-id X --text "..." |
Simulate inbound reply |
kiessclaw analytics |
Show pipeline + deliverability summary |
kiessclaw pipeline |
Show prospect pipeline |
kiessclaw report |
Generate weekly report |
kiessclaw analyze |
AI-powered performance analysis |
kiessclaw audit --url URL --auto-enroll |
Run SEO audit and optionally route low-score domains |
kiessclaw serve --port 8000 |
Start FastAPI service layer |
kiessclaw chat |
Interactive agent chat |
Configuration
Edit config/config.yaml:
llm:
provider: openai # openai | anthropic | ollama
default_model: gpt-4o
api_key: ${OPENAI_API_KEY}
agents:
KPRO:
model: gpt-4o
settings:
min_icp_score: 60
KSEQ:
model: gpt-4o-mini
settings:
max_daily_sends: 200
sending_window_start: "08:00"
sending_window_end: "18:00"
email:
provider: smtp
smtp:
host: ${SMTP_HOST}
port: 587
username: ${SMTP_USERNAME}
password: ${SMTP_PASSWORD}
safety:
max_sends_per_day: 500
bounce_rate_threshold: 0.05
Built-in Skills
| Skill | Description |
|---|---|
prospect |
CSV import, email validation, ICP scoring |
sequence |
Sequence CRUD, enrollment, scheduling |
email |
SMTP sending, tracking, deliverability |
personalization |
Template rendering, first-line generation |
inbox |
Reply classification, DNC management |
analytics |
Funnel metrics, reports, analysis |
crawl |
Technical crawl, metadata, broken links, robots/sitemap checks |
Documentation
- Quick Start Guide
- Use Cases
- Architecture Overview
- Product Specification
- Roadmap
- Release Roadmap
- Changelog
API Endpoints
GET /healthGET /versionGET /usecasesGET /usecases/{id}POST /providers/healthPOST /prompt/renderPOST /scaffold/usecasePOST /workflow/runGET /schedulePOST /scheduleDELETE /schedule/{job_id}POST /schedule/{job_id}/runPOST /auditPOST /contactsGET /contactsPOST /sequences/{id}/enrollGET /pipelinePOST /replyGET /inboxGET /analyticsGET /sequencesPOST /sequencesPOST /waitlistGET /waitlist/count
Contributing
Contributions are welcome! KIESSCLAW is designed to grow through community extensions.
See CONTRIBUTING.md for guidelines.
License
MIT License — see LICENSE for details.
Author
Erwin Kiess-Alfonso Founder & CEO, KLYTICS · Data & AI Performance Consultancy San Juan, Puerto Rico
KIESSCLAW is part of the KLYTICS open-source ecosystem.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kiessclaw-1.6.0.tar.gz.
File metadata
- Download URL: kiessclaw-1.6.0.tar.gz
- Upload date:
- Size: 117.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d21af2d602c4a290ca66ebe03e6dbf8cf8b9dd00bf08d975c1ea72f2d016e117
|
|
| MD5 |
31cd3297281cbb8e62f6432b21f6394e
|
|
| BLAKE2b-256 |
a075356456e3fd3c4f6966070e4fe5631668db422a66c4275ca245da987c2f4d
|
File details
Details for the file kiessclaw-1.6.0-py3-none-any.whl.
File metadata
- Download URL: kiessclaw-1.6.0-py3-none-any.whl
- Upload date:
- Size: 122.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4938921d8066414b4dee417afbc295b74f666d1b51cebdfb067778ffa652b3b
|
|
| MD5 |
007f7ba1e0e8288e3c2093e6a9b0c1fd
|
|
| BLAKE2b-256 |
7f238ce3b6708ddd941a4df33a2c2b80a877aec6bb3fb30229b2c1ecd434c642
|