- Migrate from Airtable to Baserow: BaserowClient with snapshots, actions, creatives, logs - Claude agents (Haiku for decisions/units, Sonnet for creatives) with cost_cap_eur vs CPL comparison - Slack bot with colored action emojis, effect text before approval buttons, 500-char justifications - Streamlit dashboard with date-range navigation, campaign drill-down (adsets/ads), Histórico tab - Approval server (FastAPI + ngrok) for Slack button callbacks - backfill.py for historical snapshot regeneration with Claude re-analysis - Margin fix: 0-lead campaigns contribute -spend (not 0) to margin - CTR fix: Meta returns CTR as percentage already, removed *100 - Parameter fix: pass decision parameter to Slack action for correct budget effect display Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
28 lines
704 B
Plaintext
28 lines
704 B
Plaintext
# Meta Ads
|
|
META_APP_ID=your_app_id
|
|
META_APP_SECRET=your_app_secret
|
|
META_ACCESS_TOKEN=your_long_lived_access_token
|
|
META_AD_ACCOUNT_ID=act_XXXXXXXXXX
|
|
|
|
# Anthropic
|
|
ANTHROPIC_API_KEY=your_anthropic_key
|
|
|
|
# Baserow (self-hosted)
|
|
BASEROW_URL=https://baserow.yourdomain.com
|
|
BASEROW_TOKEN=your_baserow_api_token
|
|
# Run setup_baserow.py once to get the IDs below:
|
|
BASEROW_TABLE_CAMPAIGNS=0
|
|
BASEROW_TABLE_ACTIONS=0
|
|
BASEROW_TABLE_CREATIVES=0
|
|
BASEROW_TABLE_LOGS=0
|
|
BASEROW_TABLE_VERTICALS=0
|
|
BASEROW_TABLE_SNAPSHOTS=0
|
|
|
|
# Slack App
|
|
SLACK_BOT_TOKEN=xoxb-your-bot-token
|
|
SLACK_SIGNING_SECRET=your_signing_secret
|
|
SLACK_CHANNEL_ID=C0XXXXXXXXX
|
|
|
|
# Operation (set to false in production to actually execute actions)
|
|
DRY_RUN=true
|