7 Tools 3 Layers Built in‑house
EROS
AGENCY SYSTEMS
A growing set of tools I've been cooking up for the agency.
Data Layer
📡
CB Stream Poller
Records every live stream event in real time
📊
OF Data Poller
Syncs creator analytics every 2–45 min
AI Advisors
🤖
Creator Advisors
Per-creator AI agent on Telegram
🎯
Ops Advisor
Cross-creator intelligence & strategy
🧠
Content Advisor
Scripts and content plans
Automation
📅
Scheduling Pipeline
End-to-end content scheduling automation
💰
Invoice Agent
Auto-generates and delivers invoices
Python OpenClaw Claude PostgreSQL Telegram OF REST API CB Events API
Infrastructure
All of This Runs on One Mac Mini
M4 Pro  ·  14-core CPU / 20-core GPU  ·  48GB RAM  ·  1TB SSD  ·  Gigabit Ethernet

Every system on this page: pollers, all 4 OpenClaw gateways, 13 agents, PostgreSQL, Docker sandboxes, and cron briefings. All on a single Mac Mini. No cloud servers, no multi-machine setup.

LLM inference happens on provider servers (Anthropic, OpenAI, Google). The Mac Mini orchestrates it all: polling APIs, storing data, routing Telegram messages, managing 4 OpenClaw gateways across prod, main, creators, and personal.

🖥
1 Mac Mini
M4 Pro
🌐
4 Gateways
13 agents total
🔌
3 AI Providers
Anthropic · OpenAI · Google
OpenClaw Gateways
prod/ :19789 Sonnet 4.6 · Opus (strategy)
Run Director · Strategy Planner · Caption Writer · Policy Research
main/ :18789 GPT-5.4 · Gemini 3.1 · Sonnet 4.6
Command · Learning Analyst · Nick Advisor · Invoice
creators/ :20789 Sonnet 4.6 · Opus (admin)
Grace Bennett · Maya Hill · ItsKassieLee · EROS Admin
personal/ :17789 Opus 4.6 primary
ATMAN, personal assistant, full coding + browser enabled
AI Providers & Auth
🧠
Anthropic -- Sonnet 4.6 & Opus 4.6
Primary provider across all 4 gateways. API key + Extra Usage bundles only.
API Key
OpenAI Codex -- GPT-5.4 & GPT-5.4 Mini
Command router (main/) + subagent model (prod/ & main/). OAuth auth.
OAuth
Google Gemini -- Gemini 3.1 Pro Preview
Learning Analyst only (main/). OAuth via kyle@erosops.com.
OAuth
📡 Pollers + PostgreSQL
~500MB RAM
🌐 4 OpenClaw Gateways + 13 Agents
~1GB RAM
💤 Idle most of the day
spikes at briefing time

April 2026 billing change: Anthropic subscription OAuth (Claude Max plan) is no longer supported by OpenClaw. All Anthropic model calls go through API keys and Extra Usage bundles. OpenAI Codex and Google remain OAuth.

Scaling plan: All 3 AI providers handle current agent load easily. To scale beyond ~8 creator agents, add more Anthropic Extra Usage bundles -- no architecture changes needed.

1
Stream Data Collection
📡 Chaturbate Stream Poller

What It Does

A Python CLI that connects to the Chaturbate Events API and records everything that happens during a creator's live stream in real time: tips, chat, follows, media purchases, viewer flow, room topics. All stored in PostgreSQL with 31 pre-built analytics queries.

12
Event Types
31
Analytics Queries
18
Export Tables

How It Works

1
Poller runs continuously

Longpoll connection to eventsapi.chaturbate.com. When a creator goes live, a broadcastStart event arrives and recording begins automatically.

automatic
2
Events stream in real time

Tips, chat, follows, media purchases, viewer enter/leave, room topic changes. 12 event types captured per-minute by the in-memory ActiveSessionAccumulator.

automatic
3
Stream ends, data gets crunched

broadcastStop triggers session close: total tokens, unique tippers, warmup time, tokens-per-minute, peak engagement. 31 analytics functions compute insights across Revenue, Audience, Broadcast, and Strategy.

automatic
4
Export to creator advisors

cb-poller export generates per-creator SQLite databases. 18 tables, all usernames SHA-256 hashed, bind-mounted read-only into each creator's Docker sandbox.

See It In Action

Here's the stream tracker running live during Grace's first tracked stream:

CB poller terminal output capturing live stream events in real time
Live Poller Output
Real-time event capture from Grace's first tracked stream

The export command packaging stream data for each girl's advisor

CB poller export command packaging stream data for advisor delivery
Terminal Export Screenshot
cb-poller export packaging stream data for each girl's advisor

10,771 data points captured from a single 4-hour stream

Event Types

tip chatMessage privateMessage broadcastStart broadcastStop follow unfollow fanclubJoin mediaPurchase userEnter userLeave roomSubjectChange

Key Commands

cb-poller
$ cb-poller start # begin polling (blocks until Ctrl+C)
$ cb-poller add-creator NAME # add creator + encrypted API token
$ cb-poller status # show polling state for all creators
$ cb-poller export -o DIR # generate per-creator SQLite databases
$ cb-poller analytics revenue # run revenue analysis queries
$ cb-poller context-pack # generate coaching context packs
🛡️
All usernames SHA-256 hashed before export. Raw chat messages, tip messages, and private messages never leave PostgreSQL. Creator-facing SQLite files contain only aggregated analytics.
2
OF Data Collection
📊 OnlyFans Data Poller

What It Does

A TypeScript CLI that automatically pulls each creator's OnlyFans analytics (earnings, subscribers, tips, messages, posts, and more) and stores them in a local SQLite database. Creator credentials are encrypted so they're never stored in plain text, and one bad account never blocks another.

10
Data Categories
491
Tests Passing
14
Analytics Tables

How It Works

Layer 1 · Vault

Encrypts credentials

Every creator's login is encrypted at rest. Cross-creator credential mixing is prevented at the key level.

Layer 2 · Signing Engine

Signs every request

Computes the auth signature OnlyFans requires on each API call. Self-validates after every rules update.

Layer 3 · Poller

Runs the schedule

Polls each data category on its own interval. Rate limits auto-scale as more accounts are added.

If one creator hits 5 errors → paused 15 min → quiet retry. One bad account never blocks the rest.

What Gets Collected

Ten data categories, each refreshed on its own schedule.

Fast · 2–5 min
📩 DM Conversations 2m
👤 Creator Snapshots 5m
💰 Earnings 5m
💎 Tips 5m
Regular · 10–20 min
💬 Message Stats 10m
📢 Campaigns 20m
📸 Posts 20m
Slow · 45 min–2 hr
👥 Subscribers 45m
⚠️ Disputes 2h
🏦 Payouts 2h

Project Status

Design → Poller Core ✓ CLI Commands Normalizer · Integration
In Progress

Phase 6: CLI Commands  9 of 15 built

How Data Flows

📡 CB Poller 📊 OF Poller
🔒
Per-Creator SQLite Databases
(read-only)
👩 Creator Agents 🎯 Ops Advisor

Both pollers export to isolated SQLite databases. Creator agents see only their own data. The ops advisor sees everything.

3
Per-Creator Intelligence
👩 Creator Advisors

What They Are

Each EROS creator gets her own dedicated OpenClaw agent on Telegram: a personal data advisor that sees only her data, answers questions about her business, and delivers daily briefings. Powered by Claude Sonnet 4.6, sandboxed in Docker with read-only data mounts.

24/7
Always Available
100%
Private to Her
Daily
Morning Briefings
Instant
Data-Backed Answers

The First Three

Three creator agents built to prove the architecture. Once validated, new agents deploy instantly. Same protections, same capabilities, zero rebuild.

Grace Bennett Active

Dual OF pages (FREE + PAID) + CB stream data. The first fully operational creator agent.

grace_bennett.db cb_grace_bennett.db
Maya Hill Active

Single FREE page, OF data only. Fully operational. CB stream polling activates as soon as her API token is added to the config.

mayahill.db
Kassie Lee Active

Dual pages, OF data only. Fully operational. CB stream polling activates as soon as her API token is added to the config.

itskassielee.db

What Creators Can Ask

Example: Grace's Advisor
what should I make this week?
Grace's Advisor
shower POV and lingerie have Grace's highest repurchase rate on OF and consistently pull the biggest tips on stream. lead with shower content this week. it's her most reliable revenue trigger across both platforms.
I have a video call with Marcus tomorrow, what should I know?
Grace's Advisor
Marcus is one of Grace's top CB tippers this month: 55,000 tokens, mostly during lingerie streams. he's bought two customs on OF, both shower-themed. he responds well when she acknowledges him by name on stream. high-value fan, worth the extra attention on the call.
how was last night's stream?
Grace's Advisor
good stream. 13,000 tokens from 51 tippers, 15% above Grace's monthly avg. DreamCatcher99 came back after 11 days quiet and dropped 3,200 during the lingerie set. sloppy dildo BJ goals drove most of the action last night. the content before and after it was quiet by comparison. when a goal is running that's working, stay in it longer.
who are my top CB fans right now?
Grace's Advisor
Grace's top 3 this month: Marcus (55,000 tokens), Tyler (38,200 tokens, heavy tipper during lingerie sets), and DreamCatcher99 (21,500 tokens, consistent every stream). all three are also on her OF. DreamCatcher99 has been quiet lately though, hasn't tipped in 11 days.

* Example conversation with sample data, actual responses are generated from real creator analytics

Automatic Briefings

Each creator's advisor checks in automatically. No action needed.

🔔
Daily Recap Mon-Sat 9 AM ET

Every morning, the advisor texts each creator the highlights -- what sold, what's trending, and anything that needs attention.

📋
Weekly Deep Dive Monday 10 AM ET

Monday morning deep dive -- how the creator's week compared to last week, their best-performing content, and a few ideas for the week ahead.

Data Isolation by Design

Each advisor can only see that creator's data, nobody else's

Only the creator can message their own advisor

Built-in rules that can't be overridden

Other creators' data -- earnings, fans, strategies

Agency business -- pricing, margins, revenue

Internal operations -- tools, playbooks, staffing

If she asks about another creator, agency costs, or how we run things, the advisor simply redirects to her own numbers.

4
Portfolio Intelligence
🎯 EROS Ops Advisor

What It Does

The big-picture agent. Sees every creator's data side by side so you can compare performance, spot anomalies, and push winning strategies across the board. Every authorized team member gets identical access -- same model, same tools, same data. Message @eros_ops_bot on Telegram and ask it anything.

How It Differs

Creator Agent
Sonnet 4.6
1 creator only
No web access
Talks to creator
sqlite3 only
Ops Agent
Opus 4.6
ALL creators via ATTACH
web_search + web_fetch
Any authorized user
sqlite3 + web

The Ops Advisor in Action

Just text @eros_ops_bot on Telegram. Here's what it looks like:

Stream Performance
how did Grace do on CB this week?
EROS Ops
Grace streamed 4 sessions this week. 18,400 tokens total, up 15% from last week.

Best session: Thursday 10 PM (5,232 tokens, 36 unique tippers).
Weakest: Monday (3,100 tokens, slow warmup at 28 min).

Two of her top tippers haven't shown up in 10 days, worth watching.
Pre-Stream Coaching
Grace is streaming tonight, anything we should tell her?
EROS Ops
Thursday 8-11 PM is her strongest slot. Last 3 sessions averaged 4,800 tokens.

Two top tippers haven't been back in 10 days, if they show up engage early.

Her warmup has been slow (avg 22 min). Suggest an engagement hook in the first 10.

* Example conversations with sample data, actual responses are generated from real stream analytics

Scheduled Briefings

Daily Ops Pulse 8:30 AM ET

Stream performance recap, per-creator highlights, anything flagged overnight

📋
Weekly Portfolio Review Monday 8 AM ET

Full week-over-week stream breakdown, cross-creator insights, action items

⚠️
Smart Alerts anytime

Fan drift warnings, hot streak detection, revenue dips -- flagged before we'd notice

Data Access

Loads all creator DBs read-only into one session for side-by-side queries.

sqlite3
sqlite3 :memory: "
  ATTACH '/data/maya.db' AS maya;
  ATTACH '/data/kassie.db' AS kassie;
  ATTACH '/data/grace.db' AS grace;
  ATTACH '/data/cb_grace.db' AS cb_grace;
  -- cross-creator query here
"
5
Content ETL Manager
🦞 Nick 2.0 Content Advisor

How It Works

Nick 2.0 is split into two parts: the OpenClaw agent (structured reasoning, strict JSON output) and the ETL service (side-effects like sending iMessages and storing data). The agent never touches files or sends messages directly.

1
Onboard

ETL service creates an upload link/album and sends it to the creator via iMessage. Nick 2.0 may refine the onboarding message copy.

automatic
2
Ingest

New files detected, matched to the correct creator, and logged. Team gets an instant alert on new uploads.

automatic
3
Organize

Assets grouped into vault sets by shoot/set. Named sequentially: 073#-Set-White-Lingerie

ai-powered
4
Flyers

Two types per batch: vault info cards (chatter reference) + promo GIF specs (mass message marketing materials)

ai-powered
5
OnlyFans Handoff

Structured manifest with vault set folder paths, upload notes for Infloww, and compliance flags (human review required, no undocumented APIs)

automatic
6
Growth Advising

Weekly: Nick 2.0 analyzes performance data, chatter feedback, and trends to suggest 2-4 content types. ETL service sends the reminder to the creator via iMessage.

Steps 3-5 share a single batch_id for referential integrity. All output is strict JSON consumed by the ETL service -- no Markdown, no extra text.

See It In Action

Every vault set gets a name that chatters, uploaders, and Nick 2.0 all understand instantly:

072#-Set-White-Lingerie

72nd set from this creator, photos & videos, white lingerie theme

070#-Script-Grey-Outfit

Chatter conversation script, grey outfit content

073#-Set-Shower-POV

Shower point-of-view, photos & video clips

📋

Format: {N}#-{Type}-{Descriptor}. Numbers are sequential per creator (from next_set_number in the API). Types are Set (photos/videos) or Script (chatter conversations). Descriptor = outfit color, theme, or setting (hyphenated).

What Nick 2.0 Produces

For Chatters 1 per vault set
Vault Info Cards
Everything a chatter needs to sell a set -- content summary, asset counts, price floor, and a direct link to the matching chatter script.
073#-Set-White-Lingerie READY
White Lingerie
📷 34 pics 🎬 3 vids
Pics PPV
$35+
Vids PPV
$55+
📝
Chatter Script
072#-Script-White-Lingerie
For Mass Messages 1 per campaign
Promo GIF Specs
Complete creative brief for each mass message campaign -- background photo ref, headline, offer, and CTA. Handed off to the GIF pipeline ready to render.
Valentine's Flash Sale PPV flyer — 80% off, 15 vids, only $12

Who Gets What

👩‍🎤
Each Creator
Personal upload link via iMessage, organized vault sets, volume feedback, weekly growth reminders
Upload link Vault sets Volume feedback Growth reminders
🎯
EROS Ops
Vault info cards for chatters, promo GIF specs for mass messages, handoff manifests, upload alerts
Info cards Promo specs OF handoffs Upload alerts
🛡️

Each creator only sees her own uploads. Only EROS Ops sees everything.

Creator Communication

Nick 2.0 generates messages that the ETL service sends via iMessage. Communication style: warm, simple, no jargon -- written for creators with very low tech literacy. Never condescending.

Weekly Growth Reminder (via iMessage)
Nick 2.0 → iMessage
Hey girl! 💕

Your shower content is doing really well right now, would love to see more of that vibe this week if you're feeling it!

Based on what's been working:
• shower POV videos
• lingerie photo sets
• short selfie clips

If you can get 30+ pics and a few clips we can build a full vault set. Upload everything here:
[upload link]
Onboarding (via iMessage)
Nick 2.0 → iMessage
Hey! Welcome to EROS 🎉

I set up a personal upload link just for you. Whenever you have new photos or videos, just:

1. Open this link
2. Upload your files
3. That's it!

We handle everything from there: organizing, naming, packaging. If you ever need help, just text back!

[upload link]

* Nick 2.0 generates the message copy. The ETL service delivers it via iMessage. Nick 2.0 never sends messages directly or asks for passwords/2FA.

Automated Pipeline Steps

📦
Upload Detected automatic

New files auto-ingested, matched to the correct creator, logged in system. Team gets an instant alert.

🗂️
Vault Sets Named ai-powered

Assets grouped by shoot/set, named with sequential vault convention. Thin sets flagged with filler suggestions.

🎨
Flyers Generated ai-powered

Vault info cards (content type in ALL CAPS, pricing, script cross-refs) + promo GIF specs (headline, CTA, duration, creator photo ref)

📋
OF Handoff Packaged automatic

Structured manifest with package name (e.g., Grace_2026-04-01_drop01), vault set folder paths, upload notes, and compliance flags

💬
Weekly Growth Reminder weekly

Nick 2.0 pulls performance data, chatter feedback, and trends via reminder-context endpoint. Generates 2-4 content focus areas + iMessage-ready reminder. ETL service sends it. No revenue numbers, no guarantees.

Content Volume Targets

~30
photos per set
~12
videos per set

Filler content matters. Same-style photos keep chatter scripts flowing and posts scheduling without burning premium pieces. Nick 2.0 flags thin sets and suggests creators add more.

Safety & Compliance

🔒 Locked down: no file access, no browser, no shell. Nick 2.0 can only talk to our local ETL service and nothing else.
🛡️ Never asks for passwords or 2FA codes
🚫 Never calls undocumented or private OnlyFans endpoints
Human review required before any OnlyFans upload
📋 All outputs are preview-safe -- no explicit sexual language in any output
6
Scheduling Pipeline
📅 EROS Scheduling Pipeline

What It Does

Takes each creator's vault, past performance, and fan engagement patterns and builds a full week of content: wall posts, mass messages, PPV drops, and timed drip sequences. Every caption is written in the creator's real voice, pricing is set from actual conversion data, and nothing goes live until the operator signs off.

40-70
Slots/Week
per creator
5
Pipeline Stages
6
OpenClaw Agents
36K+
Messages Analyzed

The 5-Stage Pipeline

1
STRATEGY AI Agent
Opus 4.6 analyzes performance data, generates 7-day personality plan with optimal send types
Strategy Planner (eros_strategy_planner)
2
PLANNING Automatic
Kernel allocates 40-70 slots per creator with timing, channels, formats, drip windows
3
GENERATING AI Agent
Caption writer produces conversion-optimized copy with voice authenticity + retry repair
Caption Writer (eros_caption_writer)
4
VALIDATING Hybrid
Quality gates + compliance tiers + policy research for ambiguous cases
Policy Research (eros_policy_research, escalations only)
5
EXPORTING Automatic
schedule.csv + needs_review.csv + pricing manifest + KPI dashboard

OpenClaw Agent Architecture

Production Control Plane
Run Director eros_run_director Sonnet 4.6
Stage-gate decisions: PROCEED, RETRY, ESCALATE, FAIL
Strategy Planner eros_strategy_planner Opus 4.6
7-day personality + volume budget assembly
Caption Writer eros_caption_writer Sonnet 4.6
LLM caption generation with multi-pass repair
Policy Research eros_policy_research Sonnet 4.6
Compliance research with adversarial challenger
Operator Gateway
Command eros_command GPT-5.4
Primary operator interface via Telegram/Discord
Learning Analyst eros_learning_analyst Gemini 3.1
Cross-run analysis, pattern learning, provider promotion

Quality Gates

🔒
Copy Gate
Uniqueness check vs 30-day history (weighted similarity)
🎭
Voice Conformity
Tone fit, authenticity scoring per creator profile
🧩
Structural Diversity
Prevent repetitive HOOK|BODY|CTA patterns
⚖️
Compliance Tiers
Flags anything from "banned outright" through "needs review" down to "fine to send"

Automation Levels

Fully Automatic
  • Strategy generation
  • Slot planning
  • Caption generation
  • Pricing computation
  • Drip coordination
👤 Operator Gates
  • Quality gate failures
  • Compliance escalations
  • needs_review.csv
  • Provider promotions
  • Learning memos

Mission Control

mission_control
$ eros mc board # Run status
$ eros mc pending # Actions queue
$ eros mc health # Agent health
$ eros mc costs RUN # Token usage
$ eros mc digest # Operator brief

What Makes It Smart

3
Fan Tiers Classified
Death Spiral
Detection
Built-in
Voice &
Pricing
Per-Creator
1
Operator Sign-off Required

Architecture

Input Layer
OF Performance
CB Stream Data
Vault Inventory
Fan Behavior
Processing Layer
Kernel
Python / SQLite
Slot Allocation Pricing Timing Drip Windows
Intelligence Layer
OpenClaw Control Plane
run_director strategy_planner caption_writer policy_research
Output Layer
schedule.csv
needs_review.csv
Pricing Manifest
KPI Dashboard
🔐
Template-only. No automated posting.
All processing runs locally. No external network dependencies in runtime flow. Control plane uses local loopback only.
7
Invoice Agent
💰 EROS Invoice Agent

What It Does

Transforms raw creator earnings from OnlyFans and Chaturbate into professional PDF invoices, delivers them via Telegram, confirms payments, and chases open balances with automated reminders.

2
Platforms
Creators
3
Systems
19
CLI Commands

The Pipeline

1
INGEST Automatic
Discover & parse CSVs from inbox/ - Infloww (OF) and JB's Daily Sales (CB)
2
MATCH Automatic
Link accounts to creator registry, consolidate multi-account creators, check idempotency
3
COMPUTE Automatic
Calculate totals - OF: 50% agency split, CB: sum Model Owes - Decimal precision
4
OUTPUT Automatic
Generate PDFs, persist to SQLite with audit trail, archive source CSVs
5
DELIVER AI Agent
Validate 5-point checklist, send PDF + summary via Telegram DM, log to delivery_log
6
COLLECT AI Agent
Process payment claims from creators, send tiered reminders, escalate at 21+ days

Key Features

🔀
Multi-Platform
OnlyFans (Infloww) + Chaturbate in one run
🎯
Decimal Precision
Zero floating-point errors, ROUND_HALF_UP
🔒
Idempotent
No duplicate invoices for same (creator, period)
👀
Dry-Run Mode
Preview invoices without writing PDFs or DB
📋
Audit Trail
Complete mutation history with timestamps
📴
Fully Offline
No API calls, no network dependency
🛡️
Zero Misdelivery
5-point validation before every Telegram send
Tiered Reminders
4-tier escalation from gentle nudge to EROS Admin alert
👤
Creator Isolation
Each creator sees only their own invoices

CLI Commands

eros-invoice
# Generate invoices for billing period
$ eros-invoice generate \
--period-start 2026-03-01 \
--period-end 2026-03-15
# Check invoice status
$ eros-invoice status
# List sent invoices
$ eros-invoice list --status sent
# Confirm payment received
$ eros-invoice confirm \
EROS-INV-20260315-MAYA-HILL \
--method venmo
eros-notify
# Deliver invoices for billing period
$ eros-notify deliver \
--period-start 2026-03-01 \
--period-end 2026-03-15 --dry-run
# Record creator payment claim
$ eros-notify note-payment \
--invoice-id EROS-INV-20260315-MAYA-HILL \
--method venmo \
--creator-telegram-id 123456789 \
--message "Sent payment via Venmo"
# Scan for overdue invoices
$ eros-notify scan-open
# System health check
$ eros-notify health-check

Invoice Lifecycle

DRAFT
Pipeline eros-invoice generate
Invoice created from CSV
SENT
AI Agent
5-point validation passes, PDF sent via Telegram DM
OVERDUE
Tier 1-3 automated reminders via Telegram
ESCALATED
Tier 4: EROS admins notified directly
NOTED
AI Agent
Creator claims payment in Telegram DM
PAID
EROS Admin manual step
Admin verifies payment received, then runs eros-invoice confirm to close the invoice.

Notification System

Before Every Delivery
5 checks
1
Creator is active in registry
2
Creator has started the bot
3
PDF file exists and is readable
4
Invoice not already delivered
5
Valid Telegram ID
All 5 must pass, any failure blocks delivery
When a Creator Claims Payment
💬
Creator messages bot
Sends claim via Telegram
🔍
Agent matches invoice
Finds open invoice, logs to notes
🔔
Status → NOTED
EROS Admin alerted to verify
Overdue Reminder Escalation
3+
days overdue
Gentle nudge sent to creator
Tier 1
7+
days overdue
Friendly follow-up sent to creator
Tier 2
14+
days overdue
Firm but kind reminder sent to creator
Tier 3
21+
days overdue
Escalate to EROS Admin only, no more creator messages
Tier 4
Only SENT invoices trigger reminders, NOTED invoices are excluded

The AI Agent

Agent
eros-invoice
Model
claude-sonnet-4-6
Bot
@ErosInvoiceBot
Platform
Telegram DMs
Available Tools
exec read write message cron memory
Cron Schedules
Daily 10:00 AM MT Reminder scan
Every 6 hours Delivery retry check
Monday 9:00 AM MT Weekly summary to EROS Admin
Key Constraints
Agent NEVER marks invoices as PAID
Creator isolation enforced per Telegram ID
No corporate jargon, messages sound human

Architecture

Generation Layer
Reads sales CSVs, computes splits, renders PDF invoices
Shared SQLite DB + PDFs
Notification Layer
Delivers invoices via Telegram, logs who got what
JSON CLI Output
AI Agent Layer (OpenClaw)
Chats with creators, chases payments, escalates to EROS Admin
@ErosInvoiceBot

Shared Data Layer

Both systems share one invoice database. The AI agent only flips an invoice's status in two cases: draft → sent (when it goes out) and sent → noted (when a creator says they paid). EROS Admin is the only one who marks anything as PAID.

EROS
Built for the EROS OPS team
OpenClaw Claude Opus 4.6 Python TypeScript SQLite PostgreSQL