botserver/templates/sales/marketing.gbai
Rodrigo Rodriguez (Pragmatismo) 7a5e369402 Add comprehensive documentation for GB templates and configuration
modules

Add detailed README documentation for 15+ bot templates including:
- Platform analytics, BI reporting, and web crawler templates
- CRM, contacts, and marketing automation templates
- Legal document processing and office productivity templates
- LLM tools, LLM server, and API client integration templates
- Reminder management and meta-template for creating new templates

Add new Rust configuration modules:
- BM25 config for Tantivy-based sparse
2025-12-03 16:05:50 -03:00
..
marketing.gbdialog ``` Add KB Statistics keywords and infrastructure documentation 2025-11-30 16:25:51 -03:00
README.md Add comprehensive documentation for GB templates and configuration 2025-12-03 16:05:50 -03:00

Marketing Automation Template (marketing.gbai)

A General Bots template for marketing campaign management, content creation, and multi-channel broadcast messaging.

Overview

The Marketing template provides marketing automation capabilities including campaign management, content ideation, image generation, social media posting, and WhatsApp broadcast messaging. It enables marketing teams to create, schedule, and deliver campaigns through conversational AI.

Features

  • Campaign Management - Create and organize marketing campaigns
  • Content Ideation - AI-assisted content idea generation
  • Image Generation - AI-powered marketing visuals
  • Social Media Posting - Direct posting to Instagram and other platforms
  • WhatsApp Broadcasts - Mass messaging with template support
  • Contact Segmentation - Target specific audience segments
  • Template Compliance - META-approved template validation
  • Broadcast Logging - Track delivery and engagement

Package Structure

marketing.gbai/
├── README.md
├── marketing.gbdialog/
│   ├── add-new-idea.bas       # Content ideation tool
│   ├── broadcast.bas          # WhatsApp broadcast messaging
│   ├── get-image.bas          # AI image generation
│   ├── post-to-instagram.bas  # Instagram posting
│   ├── poster.bas             # Marketing poster creation
│   └── campaigns/             # Campaign templates
└── marketing.gbot/
    └── config.csv             # Bot configuration

Scripts

File Description
add-new-idea.bas Generate and save marketing content ideas
broadcast.bas Send WhatsApp broadcasts to contact lists
get-image.bas Generate marketing images with AI
post-to-instagram.bas Post content to Instagram
poster.bas Create marketing posters and visuals

WhatsApp Broadcast

The broadcast.bas script enables mass WhatsApp messaging with template support:

Parameters

Parameter Type Description Example
message STRING Message with variables "Olá {name}, confira nossas novidades!"
template_file FILE Header image for template header.jpg
list_file FILE Contact list with phone numbers contacts.xlsx
filter STRING Optional filter condition "Perfil=VIP"

Usage

PARAM message AS STRING LIKE "Olá {name}, confira nossas novidades!" 
    DESCRIPTION "Message to broadcast, supports {name} and {telefone} variables"
PARAM template_file AS FILE LIKE "header.jpg" 
    DESCRIPTION "Header image file for the template"
PARAM list_file AS FILE LIKE "contacts.xlsx" 
    DESCRIPTION "File with contacts (must have telefone column)"
PARAM filter AS STRING LIKE "Perfil=VIP" 
    DESCRIPTION "Filter condition for contact list" OPTIONAL

DESCRIPTION "Send marketing broadcast message to a filtered contact list via WhatsApp template"

Template Compliance

The system validates messages for META WhatsApp template approval:

report = LLM "Esta mensagem será aprovada pelo WhatsApp META como Template? 
              Responda OK se sim, ou explique o problema: " + message

IF report <> "OK" THEN
    TALK "Atenção: " + report
END IF

Broadcast Execution

IF filter THEN
    list = FIND list_file, filter
ELSE
    list = FIND list_file
END IF

index = 1
sent = 0

DO WHILE index < UBOUND(list)
    row = list[index]
    
    SEND TEMPLATE TO row.telefone, template_file
    
    WAIT 0.1  ' Rate limiting
    
    ' Log delivery
    WITH logEntry
        timestamp = NOW()
        phone = row.telefone
        name = row.name
        status = "sent"
    END WITH
    
    SAVE "broadcast_log.csv", logEntry
    
    sent = sent + 1
    index = index + 1
LOOP

TALK "Broadcast enviado para " + sent + " contatos."

Contact List Format

The contact file should include:

Column Required Description
telefone Yes Phone number with country code
name No Contact name for personalization
email No Email address
Perfil No Segment tag for filtering

Example contacts.xlsx

telefone,name,email,Perfil
+5511999999999,João Silva,joao@email.com,VIP
+5511888888888,Maria Santos,maria@email.com,Regular
+5511777777777,Pedro Costa,pedro@email.com,VIP

Campaign Management

Creating Campaigns

User: Create a new marketing campaign
Bot: What's the campaign name?
User: Black Friday 2024
Bot: What's the campaign objective?
User: Drive sales for electronics category
Bot: What's the target audience?
User: VIP customers who purchased in the last 6 months
Bot: ✅ Campaign created: Black Friday 2024
     Objective: Drive sales for electronics
     Audience: VIP customers (last 6 months)

Campaign Structure

WITH campaign
    id = "CAMP-" + FORMAT(NOW(), "YYYYMMDD") + "-" + FORMAT(RANDOM(1000, 9999))
    name = campaign_name
    objective = objective
    audience = audience_filter
    status = "draft"
    created_at = NOW()
    created_by = GET SESSION "user_email"
END WITH

SAVE "campaigns.csv", campaign

Content Ideation

AI-Powered Ideas

' add-new-idea.bas
PARAM topic AS STRING DESCRIPTION "Topic or product for content ideas"
PARAM platform AS STRING LIKE "instagram" DESCRIPTION "Target platform"
PARAM tone AS STRING LIKE "professional" DESCRIPTION "Content tone" OPTIONAL

DESCRIPTION "Generate marketing content ideas using AI"

SET CONTEXT "You are a creative marketing specialist."

ideas = LLM "Generate 5 creative marketing content ideas for: 
             Topic: " + topic + "
             Platform: " + platform + "
             Tone: " + (tone OR "engaging") + "
             
             Include:
             - Headline
             - Key message
             - Call to action
             - Hashtag suggestions"

TALK ideas

' Save ideas for future reference
WITH idea_record
    id = FORMAT(GUID())
    topic = topic
    platform = platform
    ideas = ideas
    created_at = NOW()
END WITH

SAVE "content_ideas.csv", idea_record

Image Generation

AI Marketing Visuals

' get-image.bas
PARAM prompt AS STRING DESCRIPTION "Description of the image to generate"
PARAM style AS STRING LIKE "photorealistic" DESCRIPTION "Image style" OPTIONAL
PARAM size AS STRING LIKE "1080x1080" DESCRIPTION "Image dimensions" OPTIONAL

DESCRIPTION "Generate marketing images using AI"

full_prompt = prompt
IF style THEN
    full_prompt = full_prompt + ", " + style + " style"
END IF

image = GENERATE IMAGE full_prompt, size OR "1080x1080"

IF image THEN
    SEND FILE image, "Generated image for: " + prompt
    RETURN image
ELSE
    TALK "Failed to generate image. Please try a different prompt."
    RETURN NULL
END IF

Social Media Posting

Instagram Integration

' post-to-instagram.bas
PARAM image AS FILE DESCRIPTION "Image to post"
PARAM caption AS STRING DESCRIPTION "Post caption with hashtags"
PARAM schedule AS STRING DESCRIPTION "Schedule time (optional)" OPTIONAL

DESCRIPTION "Post content to Instagram"

' Validate caption length
IF LEN(caption) > 2200 THEN
    TALK "Caption too long. Maximum 2,200 characters."
    RETURN
END IF

IF schedule THEN
    ' Schedule for later
    SET SCHEDULE schedule, "execute-instagram-post.bas"
    SET BOT MEMORY "scheduled_post_" + FORMAT(GUID()), {
        "image": image,
        "caption": caption,
        "scheduled_for": schedule
    }
    TALK "Post scheduled for: " + schedule
ELSE
    ' Post immediately
    result = POST TO INSTAGRAM image, caption
    
    IF result.success THEN
        TALK "✅ Posted to Instagram successfully!"
        TALK "Post ID: " + result.post_id
    ELSE
        TALK "❌ Failed to post: " + result.error
    END IF
END IF

Poster Creation

Marketing Poster Generator

' poster.bas
PARAM headline AS STRING DESCRIPTION "Main headline text"
PARAM subheadline AS STRING DESCRIPTION "Supporting text" OPTIONAL
PARAM product_image AS FILE DESCRIPTION "Product image" OPTIONAL
PARAM template AS STRING LIKE "sale" DESCRIPTION "Poster template: sale, announcement, event"

DESCRIPTION "Create marketing posters with customizable templates"

' Generate poster using template
poster = GENERATE POSTER template WITH {
    "headline": headline,
    "subheadline": subheadline,
    "image": product_image,
    "brand_color": GET CONFIG "brand_color",
    "logo": GET CONFIG "logo_file"
}

SEND FILE poster, "Marketing poster: " + headline
RETURN poster

Configuration

Configure in marketing.gbot/config.csv:

Parameter Description Example
Brand Color Primary brand color #FF5722
Logo File Company logo path logo.png
Instagram Account Connected IG account @mycompany
WhatsApp Business ID WA Business account 123456789
Default Template Default broadcast template marketing_update
Rate Limit Messages per second 10
Max Broadcast Size Maximum recipients 1000

Audience Segmentation

Filter Examples

Filter Description
Perfil=VIP VIP customers only
Perfil=Regular AND compras>5 Regular customers with 5+ purchases
ultima_compra>2024-01-01 Recent purchasers
cidade=São Paulo Location-based
interesse=electronics Interest-based

Building Segments

' Create reusable segments
WITH segment
    id = "SEG-" + FORMAT(GUID())
    name = "VIP São Paulo"
    filter = "Perfil=VIP AND cidade=São Paulo"
    count = COUNT(FIND "contacts.xlsx", filter)
    created_at = NOW()
END WITH

SAVE "segments.csv", segment

Analytics & Reporting

Broadcast Analytics

' Get broadcast statistics
broadcast_id = "BROADCAST-20240115-1234"
logs = FIND "broadcast_log.csv", "broadcast_id = '" + broadcast_id + "'"

total_sent = COUNT(logs)
delivered = COUNT(FIND logs, "status = 'delivered'")
read = COUNT(FIND logs, "status = 'read'")
clicked = COUNT(FIND logs, "status = 'clicked'")

TALK "📊 Broadcast Report"
TALK "Total Sent: " + total_sent
TALK "Delivered: " + delivered + " (" + (delivered/total_sent*100) + "%)"
TALK "Read: " + read + " (" + (read/total_sent*100) + "%)"
TALK "Clicked: " + clicked + " (" + (clicked/total_sent*100) + "%)"

Example Workflows

Product Launch Campaign

User: Create a product launch broadcast
Bot: What product are you launching?
User: New wireless headphones
Bot: I'll help you create the campaign. Let me generate some content ideas...

     📝 Content Ideas:
     1. "Experience Sound Like Never Before 🎧"
     2. "Your Music. Your Freedom. Wireless."
     3. "Say Goodbye to Tangled Cables"
     
     Which headline do you prefer?

User: 1
Bot: Now let me generate a promotional image...
     [Generates AI image]
     
     Here's your promotional image. Should I create the broadcast?

User: Yes, send to VIP customers
Bot: ✅ Broadcast prepared:
     📱 Recipients: 234 VIP customers
     📝 Message: "Experience Sound Like Never Before 🎧"
     🖼️ Template with header image
     
     Send now or schedule?

User: Send now
Bot: 📤 Broadcasting...
     ✅ Broadcast complete! Sent to 234 contacts.

Best Practices

  1. Template compliance - Always validate templates before broadcast
  2. Segment wisely - Target relevant audiences to improve engagement
  3. Rate limiting - Respect platform rate limits to avoid blocks
  4. Personalization - Use variables for personalized messages
  5. A/B testing - Test different messages with small segments first
  6. Timing - Schedule broadcasts for optimal engagement times
  7. Tracking - Monitor delivery and engagement metrics
  8. Opt-out handling - Honor unsubscribe requests immediately

Troubleshooting

Issue Cause Solution
Template rejected Non-compliant content Review META guidelines
Low delivery rate Invalid phone numbers Clean contact list
Broadcast blocked Rate limit exceeded Reduce sending speed
Images not generating Invalid prompt Simplify prompt text
Instagram post failed Auth expired Reconnect account
  • crm.gbai - Customer relationship management
  • contacts.gbai - Contact list management
  • broadcast.gbai - General message broadcasting
  • analytics.gbai - Marketing analytics

Use Cases

  • Product Launches - Announce new products to customers
  • Promotions - Send special offers and discounts
  • Events - Promote webinars, sales, and events
  • Newsletters - Regular customer communications
  • Re-engagement - Win back inactive customers
  • Social Media - Automated content posting

Compliance Notes

  • Ensure recipients have opted in to receive marketing messages
  • Honor unsubscribe requests within 24 hours
  • Follow META WhatsApp Business policies
  • Comply with GDPR/LGPD data protection requirements
  • Keep records of consent for audit purposes

License

AGPL-3.0 - Part of General Bots Open Source Platform.


Pragmatismo - General Bots