Skip to main content
A marketing team might use TeamCopilot for campaign preparation, content operations, and reporting.

Example setup

  • A skill for brand voice and messaging rules
  • A skill for launch checklist and campaign review standards
  • A workflow that pulls campaign metrics and generates a weekly report

Example requests

  • “Draft a launch email using our brand voice.”
  • “Review this landing page copy using our messaging guidelines.”
  • “Run the weekly marketing-report workflow for the last 7 days.”

Why this works

The skills help the AI write and review content the way the marketing team expects. The workflow handles the repeatable reporting work.

Example SKILL.md

Below is an example marketing skill for reviewing campaign copy against a team’s brand voice.
---
name: marketing-brand-voice
description: Review and improve marketing copy so it matches our brand voice, audience, and campaign positioning.
---

# Marketing Brand Voice

Use this skill when the user wants help drafting, reviewing, or refining marketing copy.

## When to use

Use this skill for:

- email campaigns
- landing page copy
- launch messaging
- ad copy
- product announcements

Do not use this skill for legal review, pricing approval, or final publishing decisions.

## Brand voice rules

- Write in a clear, confident, direct tone.
- Avoid buzzwords and vague claims.
- Prefer concrete value over hype.
- Keep language simple and easy to scan.
- Focus on customer outcomes, not internal features alone.

## Review checklist

When reviewing copy:

1. Identify the intended audience.
2. Check whether the main message is clear in the first few lines.
3. Remove fluff, repetition, and generic phrases.
4. Rewrite lines that sound off-brand or too technical.
5. Make sure the call to action is specific.

## Output format

When the user asks for review:

1. Summarize what is working.
2. List the biggest issues.
3. Provide an improved version.
4. Explain major edits briefly.

## Constraints

- Do not invent customer results or metrics.
- Do not make legal, compliance, or pricing claims unless the user explicitly provides them.
- If brand guidance conflicts with the user's request, point out the conflict clearly.

Example workflow run.py

Below is an example workflow that reads weekly marketing metrics from a CSV file and prints a simple report.
import argparse
import csv
from datetime import datetime, timedelta
from pathlib import Path


def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("--csv_path", required=True, help="Path to campaign metrics CSV file")
    parser.add_argument("--days", type=int, default=7, help="How many recent days to include")
    return parser.parse_args()


def load_rows(csv_path: Path):
    with csv_path.open("r", encoding="utf-8") as handle:
        reader = csv.DictReader(handle)
        return list(reader)


def main():
    args = parse_args()
    csv_path = Path(args.csv_path)

    if not csv_path.exists():
        raise SystemExit(f"Metrics file not found: {csv_path}")

    rows = load_rows(csv_path)
    cutoff = datetime.utcnow().date() - timedelta(days=args.days)

    filtered = []
    for row in rows:
        row_date = datetime.strptime(row["date"], "%Y-%m-%d").date()
        if row_date >= cutoff:
            filtered.append(row)

    if not filtered:
        print("No campaign data found for the selected date range.")
        return

    total_impressions = sum(int(row.get("impressions", 0) or 0) for row in filtered)
    total_clicks = sum(int(row.get("clicks", 0) or 0) for row in filtered)
    total_signups = sum(int(row.get("signups", 0) or 0) for row in filtered)
    total_spend = sum(float(row.get("spend", 0) or 0) for row in filtered)

    ctr = (total_clicks / total_impressions * 100) if total_impressions else 0.0
    signup_rate = (total_signups / total_clicks * 100) if total_clicks else 0.0
    cost_per_signup = (total_spend / total_signups) if total_signups else 0.0

    print("Weekly Marketing Report")
    print("=======================")
    print(f"Date range: last {args.days} days")
    print(f"Campaign rows analyzed: {len(filtered)}")
    print(f"Impressions: {total_impressions}")
    print(f"Clicks: {total_clicks}")
    print(f"CTR: {ctr:.2f}%")
    print(f"Signups: {total_signups}")
    print(f"Signup rate: {signup_rate:.2f}%")
    print(f"Spend: ${total_spend:.2f}")
    print(f"Cost per signup: ${cost_per_signup:.2f}")


if __name__ == "__main__":
    main()