agentsclimarketplace

Mass outreach

Skill aAAaqwq/AGI-Super-Team/skills/mass-outreach

14 AI executives powered by legendary minds (Musk/Buffett/Simons/Feynman) — deploy your virtual C-Suite in one git clone.

Install
npx -y skills add aAAaqwq/AGI-Super-Team --skill mass-outreach

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Multi-channel outreach via Telegram/Email/WhatsApp

SKILL.md

4.0 KB, as published. Nobody here has run it

Mass Outreach Skill

Mass message sending via Telegram, Email, WhatsApp with lessons learned from previous mistakes.

Lessons Learned (Mistakes NOT to repeat)

1. Verify data BEFORE sending

Mistake: Asked people to write an intro who had already done so.

  • @oleksii_badika - had written an intro, was asked again
  • @Geddare (Yaroslava Bahriy) - had written an intro, was asked again

Solution:

ALWAYS check via Telegram API who has already posted in the "Introduction" topic
DO NOT rely on old CSV data

2. Verify group membership

Mistake: Marked a person as "IN GROUP" when they were not in the group.

  • @danylchenko - marked as in group, actually was not

Solution:

ALWAYS verify membership via client.get_participants(group)
DO NOT rely on notes in CRM

3. Verify dates

Mistake: Wrong dates in the message (Sunday 9, Monday 10 instead of 8 and 9).

  • @KR0Ler and @alexpazhyn received incorrect dates

Solution:

from datetime import datetime, timedelta

today = datetime.now()
# Find the nearest Sunday
days_until_sunday = (6 - today.weekday()) % 7
if days_until_sunday == 0:
    days_until_sunday = 7
next_sunday = today + timedelta(days=days_until_sunday)
next_monday = next_sunday + timedelta(days=1)

print(f"Sunday: {next_sunday.strftime('%d.%m')}")
print(f"Monday: {next_monday.strftime('%d.%m')}")

4. Check who has already been contacted

Mistake: Did not check sent message history before the campaign.

Solution:

ALWAYS before sending:
1. Get the list of all potential recipients
2. Check outgoing messages for the last N days
3. Exclude those who have already been contacted
4. Show to the user for confirmation

5. Rate Limiting

Rules for Telegram:

  • Minimum 45-60 seconds between messages
  • No more than 30-50 messages per day
  • If FloodWait -- stop and wait

Rules for Email:

  • Batch of 10-20 emails
  • 5-10 second delay between emails
  • No more than 100 per day

Pre-send checklist

[ ] 1. Dates verified (day of week = date)
[ ] 2. Recipient list verified via API
[ ] 3. Checked who has already received messages
[ ] 4. Checked who has written an intro (if relevant)
[ ] 5. Template shown to user and approved
[ ] 6. Rate limits configured
[ ] 7. There is a plan in case of error

Execution template

# 1. Data verification
def verify_recipients(group_name, check_intro=True):
    # Get all group participants
    participants = client.get_participants(group)

    # If needed -- check who has written an intro
    if check_intro:
        intro_messages = client.get_messages(group, limit=2000)
        intro_authors = extract_intro_authors(intro_messages)

    # Check who has already been contacted
    already_sent = check_sent_messages(participants, days=3)

    return {
        'all': participants,
        'with_intro': intro_authors if check_intro else [],
        'already_sent': already_sent,
        'to_send': [p for p in participants if p not in already_sent]
    }

# 2. Sending with rate limiting
def send_with_delay(recipients, message_template, delay=45):
    for i, recipient in enumerate(recipients):
        try:
            message = personalize(message_template, recipient)
            client.send_message(recipient, message)
            print(f"✓ {i+1}/{len(recipients)} - sent")

            if i < len(recipients) - 1:
                time.sleep(delay)

        except FloodWaitError as e:
            print(f"FloodWait: sleeping {e.seconds}s")
            time.sleep(e.seconds)
        except Exception as e:
            print(f"✗ Error: {e}")
            log_error(recipient, e)

After sending

  1. Log in activities.csv
  2. Update statuses in CRM
  3. Commit via change-review
  4. Create a follow-up task

Paths

WhatPath
Telegram sessions$SALES_PATH/telegram/sessions/
CRM contacts$CRM_PATH/contacts/
Activities$CRM_PATH/activities.csv
Communities$CRM_PATH/communities/

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.