DEV Community

Brad
Brad

Posted on

Python Freelancing: How to Charge $100/hr for Business Automation Scripts

Generic Python freelancers charge $25-50/hour. Business automation specialists charge $75-150/hour.

The difference? You're not selling code. You're selling ROI that clients can calculate.

The Business Case That Closes Deals

When you pitch:

  • Generic: 'I can build you a Python script'
  • Automation specialist: 'This script will save you 10 hours/month at your $80/hr rate = $800/month. I charge $500 to build it.'

The client sees 160% ROI in month one. Deal closed.

The 5 Highest-Paying Automation Niches

1. Invoice Processing ($300-600/project)

Every business drowns in invoices. Automate the extraction and entry.

import anthropic, json

def process_invoice_text(invoice_text):
    client = anthropic.Anthropic()
    response = client.messages.create(
        model='claude-3-5-haiku-20241022',
        max_tokens=400,
        messages=[{
            'role': 'user',
            'content': f'Extract as JSON: vendor, amount, date, invoice_number.\n{invoice_text}'
        }]
    )
    return json.loads(response.content[0].text)

# Client saves 5 hrs/month, you charge $500 setup + $100/month maintenance
Enter fullscreen mode Exit fullscreen mode

2. Email Campaign Automation ($200-400/project)

import smtplib, csv, time
from email.mime.text import MIMEText
from string import Template

def send_campaign(csv_file, template_text, sender, password):
    tmpl = Template(template_text)
    sent = 0
    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
        smtp.login(sender, password)
        with open(csv_file) as f:
            for row in csv.DictReader(f):
                msg = MIMEText(tmpl.substitute(**row), 'html')
                msg['Subject'] = f'Hi {row["first_name"]}'
                msg['From'] = sender
                msg['To'] = row['email']
                smtp.send_message(msg)
                sent += 1
                time.sleep(3)
    print(f'Sent {sent} emails')
    return sent
Enter fullscreen mode Exit fullscreen mode

3. Data Reporting ($400-800/project)

import pandas as pd
from fpdf import FPDF
import schedule

def weekly_report(db_path, email_to):
    import sqlite3
    conn = sqlite3.connect(db_path)
    df = pd.read_sql("SELECT * FROM sales WHERE date > date('now', '-7 days')", conn)

    pdf = FPDF()
    pdf.add_page()
    pdf.set_font('Arial', 'B', 16)
    pdf.cell(0, 10, 'Weekly Sales Report', ln=1, align='C')
    pdf.set_font('Arial', size=12)
    pdf.cell(0, 10, f'Total: ${df["amount"].sum():.2f}', ln=1)
    pdf.cell(0, 10, f'Orders: {len(df)}', ln=1)
    pdf.output('report.pdf')
    # Email the PDF
    print(f'Report sent to {email_to}')

# Runs every Monday automatically
schedule.every().monday.at('09:00').do(weekly_report, 'sales.db', 'boss@company.com')
Enter fullscreen mode Exit fullscreen mode

4. CRM Sync ($200-500/project)

import requests

def sync_to_hubspot(contacts, api_key):
    url = 'https://api.hubapi.com/crm/v3/objects/contacts'
    headers = {'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'}

    for contact in contacts:
        payload = {
            'properties': {
                'email': contact['email'],
                'firstname': contact['first_name'],
                'lastname': contact['last_name'],
                'company': contact.get('company', ''),
            }
        }
        r = requests.post(url, headers=headers, json=payload)
        print(f'{contact["email"]}: {r.status_code}')
Enter fullscreen mode Exit fullscreen mode

5. Competitor Monitoring ($150-300 add-on)

import requests, hashlib, smtplib
from email.mime.text import MIMEText

def monitor_competitor(url, stored_hash, notify_email):
    resp = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
    new_hash = hashlib.md5(resp.text.encode()).hexdigest()

    if new_hash != stored_hash:
        print(f'CHANGED: {url}')
        # Send email alert
        return new_hash, True
    return stored_hash, False
Enter fullscreen mode Exit fullscreen mode

Pricing Strategy

  • Invoice automation: $500 setup + $100/month maintenance
  • Email campaigns: $300 one-time
  • Report generation: $600 setup + $75/month
  • CRM sync: $400 one-time
  • Competitor monitor: add $200 to any project

Starter package: Invoice + CRM sync = $900
Full package: All 5 workflows = $2,000+

Finding Clients

  1. LinkedIn: Post a before/after automation demo weekly
  2. Upwork: Target 'business automation Python' gigs specifically
  3. Local businesses: The owner doing invoices manually is your best lead

Get All 20 Scripts Ready to Show Clients

The Python Business Automation Toolkit includes all 5 workflows above (plus 15 more) with full documentation.

Perfect for freelancers to show clients what's possible. $29 one-time.


What's your hourly rate? I'll suggest the automation niche with the best ROI for you.

Top comments (0)