Skip to content
MCP ThesaurusMCP Thesaurus

aictrl

CommunityIncomplete39/100Claim

streamable-httpupdated 18d ago

Claude Code skills + a small helper + cron wrappers for the aictrl outreach pipeline: one unified CRM, grade-driven, three daily crons (LinkedIn connect, accept-tracker, email sequence), all approve-before-send except the connects. Shared so the team can run the same playbook.

SourceWebsite

What can you do with aictrl?

aictrl Team Skills β€” Marketing & Sales

Claude Code skills + a small helper + cron wrappers for the aictrl outreach pipeline: one unified CRM, grade-driven, three daily crons (LinkedIn connect, accept-tracker, email sequence), all approve-before-send except the connects. Shared so the team can run the same playbook.

See docs/process-flow.md for the end-to-end flow diagram (renders on GitHub).

The model (read this first)

  • One CRM = the Log tab of the shared sheet. One row per contact β€” Apollo-sourced (auto-synced) and hand-picked alike. Column blocks:
    • A–Q Apollo state (synced by aictrl-crm-refresh; never hand-edit)
    • O Our Grade (A/B/C/D) β€” the dial that steers every cron (set by aictrl-crm-qualify or by hand)
    • R–V LinkedIn outreach Β· W–Z LinkedIn accept-tracker
    • AA–AF OUR email sequence: Email Status Β· Email Step Β· Email Last Sent Β· Email Next Due Β· Email Reply? Β· Why/Hook
  • Grade A = priority. Connect cron does grade-A leads first (then the Apollo backlog); our email cron emails grade-A only, ≀5/day. B/ungraded are left to Apollo's own sequences (~50/day).
  • Never double-email: a row whose Email Status starts skip (already in an Apollo email sequence) is excluded. If an A-grade lead is in an Apollo sequence but not yet emailed, pull them out of Apollo and run ours instead.
  • Approve-before-send: LinkedIn follow-up DMs and all emails are drafted to the operator's Telegram DM for approve/edit/skip. Connects are the only auto step.

What's here

skills/ β†’ drop into ~/.claude/skills/:

Skill What it does
aictrl-crm-refresh Upserts live Apollo state for H1/H2/H3 contacts into the Log (non-destructive).
aictrl-crm-qualify Grades each contact A–D into col O.
aictrl-linkedin-outreach Daily connect batch (interactive form).
aictrl-linkedin-status-tracker Polls accepts β†’ researches β†’ drafts follow-up β†’ approve before send.
email-sequencer General approval-gated cold-email cadence engine.
prospect-research Person β†’ research brief + ICP-fit verdict + outreach angle.
outreach-copy-review Critiques a draft vs the research + intended outcome; flags slop/unverifiable claims.
inbox-triage / reply-audit / bounce-diagnosis Inbox sort / unanswered-reply audit / NDR diagnosis.

scripts/aictrl-sheets.py β†’ ~/.claude/scripts/. The CRM helper: direct Google Sheets API (works in a headless cron, unlike the Sheets MCP). Subcommands: candidates (connect, grade-A first then Apollo), pending/track-update (accepts), due-steps/email-update (email).

crons/ β†’ ~/.claude/scripts/. The three wrappers (aictrl-linkedin-cron.sh 10:00, aictrl-linkedin-tracker-cron.sh 10:15, aictrl-email-sequence-cron.sh 10:30). Each runs claude -p headless with a scoped --allowedTools (NO send tools β€” sends stay behind your approval) and posts results/drafts to your Telegram DM.

project-config/ β†’ <your-aictrl-project>/.claude/. Per-project config the engines read.

Install

  1. cp -r skills/* ~/.claude/skills/
  2. cp scripts/* ~/.claude/scripts/ && chmod +x ~/.claude/scripts/*.sh ~/.claude/scripts/aictrl-sheets.py
  3. cp project-config/* <your-aictrl-project>/.claude/
  4. Add the three cron lines (weekdays) β€” crontab -e:
    0  10 * * 1-5 ~/.claude/scripts/aictrl-linkedin-cron.sh          >> ~/.claude/logs/aictrl-linkedin-cron-wrapper.err 2>&1
    15 10 * * 1-5 ~/.claude/scripts/aictrl-linkedin-tracker-cron.sh  >> ~/.claude/logs/aictrl-linkedin-tracker-wrapper.err 2>&1
    30 10 * * 1-5 ~/.claude/scripts/aictrl-email-sequence-cron.sh    >> ~/.claude/logs/aictrl-email-sequence-wrapper.err 2>&1
    
  5. Restart Claude Code so the skills load.

βš™οΈ ADAPT THESE before first run (the scripts carry Vas's values)

In scripts/aictrl-sheets.py:

  • CREDS path β†’ your own google-workspace-mcp OAuth creds file (must have edit access to the shared sheet β€” ask Vas to share it with your Google account).
  • VAS_USER_ID β†’ your Apollo user_id (from apollo_users_api_profile); this scopes the connect queue to your Apollo tasks.
  • SID (spreadsheet) + the H1/H2/H3 SEQS β†’ keep as-is (shared team CRM + sequences).

In crons/*.sh:

  • All /home/vas/... paths β†’ your home/project paths.
  • CHAT_ID="<YOUR_TELEGRAM_DM_CHAT_ID>" β†’ your Telegram DM chat_id.
  • "Vas Parshin" sender label (connect cron) β†’ your name.
  • The MS365 sender (email cron prompt, <YOUR_SENDING_MAILBOX>) β†’ your aictrl address.

Prereqs (your own accounts): LinkedIn MCP (uvx linkedin-scraper-mcp@latest --login), Apollo MCP, MS365 (@softeria/ms-365-mcp-server), Google Workspace MCP, Firecrawl.

Security

No secrets are committed β€” scripts read ~/.claude/secrets.env (Apollo key), .telegram/.env (Telegram token), and the GWS creds file from your own machine at runtime. The crons deliberately exclude all send tools so nothing is sent without your Telegram approval. Keep this repo private.