From Claude Code User to Script Writer

Your Evolution in Automation

graph LR
    A[Claude Code User] --> B[Describe Problem]
    B --> C[Claude Generates]
    C --> D[You Review & Run]
    D --> E[Script Writer]
    E --> F[You Write Logic]
    F --> G[Claude Reviews]
    
    style A fill:#e0e7ff
    style E fill:#fce4ec
                    

You've been building scripts with Claude Code. Now write the logic yourself — Claude reviews.

Python Basics You Already Use

From your Claude Code sessions, you know these concepts:

# Variables (like Make.com variables)
campaign_name = "Spring Sale"
rpe_threshold = 0.50

# Functions (like Make.com modules)
def calculate_rpe(revenue, clicks):
    """Calculate Revenue Per Email"""
    if clicks == 0:
        return 0
    return revenue / clicks

# JSON handling (like parsing API responses)
import json
campaign_data = '{"name": "Spring", "revenue": 5000}'
parsed = json.loads(campaign_data)
print(parsed['revenue'])  # Output: 5000
                

Same logic as Make.com — just text instead of visual nodes.

JavaScript in Make.com / n8n

Make.com "Code" module = n8n Function node. Same concept.

// Make.com "Code" module (similar to n8n Function node)
// Input: bundle (contains campaign data)
// Output: modified bundle

let campaigns = bundle.campaigns;
let threshold = 0.50;

campaigns.forEach(campaign => {
    if (campaign.rpe < threshold) {
        campaign.fatigue_flag = true;
    }
});

return { campaigns: campaigns };
                

You've used Make.com Code module. That IS JavaScript. Now write it from scratch.

Real Example: RPE Calculator

Build this for WagerBird-style analysis (what you do with Looker):

import csv
import json

def calculate_rpe_for_campaigns(csv_file):
    """Read CSV, calculate RPE for each campaign"""
    results = []
    
    with open(csv_file, 'r') as file:
        reader = csv.DictReader(file)
        for row in reader:
            revenue = float(row['revenue'])
            clicks = int(row['clicks'])
            rpe = revenue / clicks if clicks > 0 else 0
            
            results.append({
                'campaign': row['name'],
                'rpe': round(rpe, 2),
                'fatigue_score': calculate_fatigue(rpe, row['peak_rpe'])
            })
    
    return results

# Use it:
campaigns = calculate_rpe_for_campaigns('looker_export.csv')
print(json.dumps(campaigns, indent=2))
                

Exercise: Transform CSV Data

Goal: Write a Python function that:

  1. Reads a campaign CSV (name, revenue, clicks, date)
  2. Filters out campaigns with <100 clicks
  3. Calculates RPE for the rest
  4. Outputs sorted JSON (highest RPE first)

Claude Code Prompt:

"Teach me to write this function step-by-step:
1. Read CSV with csv.DictReader
2. Loop and filter
3. Calculate RPE
4. Sort by RPE descending
5. Output JSON

I'm a Make.com expert learning Python. Use my WagerBird 
experience as reference."