I built a $0/month automation stack using GitHub Actions free tier
Source: Dev.to
I built a $0/month automation stack using GitHub Actions (free tier)
After being rejected from 21 job applications, I decided to build passive income instead.
Three months later I have 6 automation workflows running 24/7 that cost me exactly $0/month.
Below is the complete technical breakdown.
The Problem
I needed automation for:
- Market scanning – checking prices across platforms
- Deal alerts – instant notifications when opportunities appear
- Lead monitoring – 24/7 inbox watching
- Data aggregation – combining info from multiple sources
Traditional solutions
| Service | Cost (monthly) | Cost (yearly) |
|---|---|---|
| Zapier | $19.99 | $240 |
| n8n Cloud | $20.00 | $240 |
| AWS Lambda + EventBridge | ≈ $20 | ≈ $240 |
My solution
GitHub Actions (free tier) = $0/month
What GitHub Actions Gives You (Free)
- 2,000 minutes/month for public repositories
- Ubuntu Linux runners (Python 3.11, Node.js 18)
- Cron scheduling (minimum 5‑minute intervals)
- Built‑in secret management (encrypted API keys)
- Artifact storage for outputs
- Full Git integration
My 6 Workflows
1. Market Scanner
Scans multiple platforms for pricing opportunities every 6 hours.
name: Market Scanner
on:
schedule:
- cron: '0 */6 * * *' # every 6 hours
workflow_dispatch:
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Run Scanner
env:
NTFY_TOPIC: ${{ secrets.NTFY_TOPIC }}
run: |
python scripts/market_scanner.py \
--notify \
--output-csv data/results.csv
- name: Commit Results
run: |
git config user.name "github-actions[bot]"
git add data/
git commit -m "Scan: $(date +%Y-%m-%d)" || true
git push
Key insight: Use the Git repository itself as a database. Every scan commits a CSV file, so no external database is required.
2. Deal Alerts
Sends push notifications via ntfy.sh (free) when high‑value opportunities are detected.
# notification_helper.py
import urllib.request
import os
NTFY_TOPIC = os.getenv("NTFY_TOPIC")
def send_alert(title: str, message: str, priority: str = "default"):
req = urllib.request.Request(
f"https://ntfy.sh/{NTFY_TOPIC}",
data=message.encode(),
headers={
"Title": title,
"Priority": priority,
"Tags": "moneybag,bell"
}
)
urllib.request.urlopen(req, timeout=10)
Why ntfy.sh? Free, no authentication required, works on iOS/Android, supports priority levels.
3. SAGE Feedback Loop
A Thompson‑Sampling‑based system that learns from conversions.
# sage_feedback_loop.py
def record_conversion(listing_id, platform, revenue):
"""Boost weights for successful conversions."""
boost_factor = 1.1 + (revenue / 100)
if platform in weights["platform_weights"]:
weights["platform_weights"][platform] *= boost_factor
normalize_weights()
save_weights()
The system tracks:
- Which platforms convert best
- What price points work
- Which times of day perform
- Category performance
Over time it becomes smarter about where to focus effort.
4‑6. Lead Monitor, Scout, Dashboard
Same pattern – scheduled Python scripts that:
- Fetch data from APIs
- Process & filter it
- Commit results to the Git repo (state persistence)
- Send notifications when needed
Usage Stats (3 Months)
| Workflow | Frequency | Minutes/Month |
|---|---|---|
| Market Scanner | Every 6 h | 600 |
| Deal Alerts | Every 4 h | 360 |
| Lead Monitor | Every 2 h | 720 |
| Scout | Daily | 150 |
| Dashboard | On push | 80 |
| SAGE | Every 4 h | 540 |
| Total | — | ~2,450 theoretical |
| Actual | — | ~1,400 (early exits save time) |
I’m using roughly 70 % of the free tier with room to spare.
Architecture
GitHub Actions (FREE)
↓
Python scripts (market_scanner.py, etc.)
↓
Data stored in Git repo (CSV + JSON)
↓
Triggers on update → Alert workflow
↓
ntfy.sh push notification (FREE)
↓
Mobile alert (iOS/Android)
No servers, no databases, no infrastructure costs.
Limitations (Be Honest)
- 2,000 min/month cap – GitHub Pro ($4/mo) adds 3,000 min
- 5‑minute minimum cron – No sub‑minute scheduling
- 6‑hour max job runtime – Sufficient for most automation
- Public repos for free tier – Private repos require a paid plan
- ≈15 min scheduling variance – Not precise to the second
When NOT to Use This
- Real‑time applications (< 5 min latency)
- High‑frequency operations (thousands per day)
- Sensitive data processing (use private repos or self‑hosted runners)
- Video/image processing (burns minutes quickly)
Results (After 3 Months)
- Storage arbitrage: 12 opportunities with $120‑$180/month spreads
- Tool rental (JIT model): $800 profit in the first month
- Lead response time: 35 % faster → higher conversion
The workflows paid for themselves immediately.
Get Started
I’ve packaged everything into downloadable templates:
FREE tier (no email required)
- 1 starter workflow
- Setup guide
- ntfy.sh integration
Full bundle ($79)
- All 6 production workflows
- SAGE feedback loop system
- 20+ pages of documentation
Questions?
Drop a comment below. I’m happy to share:
- Specific workflow details
- Customization tips
- Advice on scaling or securing the stack
Happy automating!
Flow Patterns
- Error handling strategies
- Scaling approaches
- Real performance data
This is part of my “Building in Public” series. I got rejected from 21 jobs, so I’m documenting my journey to $30/day passive income instead.
Follow for updates: @IgorGanapolsky
