How I Built 10 Python Micro-Tools That Generate Passive Income Daily
From automation scripts to micro SaaS — small projects, real revenue
A few years ago, I realized I was spending more time chasing big projects than actually building useful tools. I decided to switch strategies: small, high-impact Python scripts that solve real problems, scale quickly, and — most importantly — could generate income even when I wasn’t actively working.
Over time, I built 10 micro-tools. Some took a single weekend. Others were polished over a couple of evenings. Combined, they now earn me recurring revenue while automating tedious tasks I used to hate. Here’s the human story behind each one.
1. Flask + Jinja2: My First $50 Tool in a Weekend I built a micro web app for freelancers to generate invoice PDFs. No database, no login, just form input → styled HTML → PDF. Stack: Flask + WeasyPrint
pip install flask weasyprint
from flask import Flask, render_template, request
from weasyprint import HTML
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def index():
if request.method == "POST":
html = render_template("invoice.html", data=request.form)
HTML(string=html).write_pdf("invoice.pdf")
return "Invoice created!"
return render_template("form.html")
Shared it in two Reddit communities — $50 by Day 2.
2. Streamlit: Turning Python Scripts Into Income-Generating Web Apps
I turned a CSV cleaner into a web app that small Etsy sellers now use. Users upload their CSVs, the script removes duplicates, and outputs a clean version ready for upload.
Stack: Streamlit + pandas
pip install streamlit pandas
import streamlit as st
import pandas as pd
uploaded_file = st.file_uploader("Upload your CSV")
if uploaded_file:
df = pd.read_csv(uploaded_file)
df_cleaned = df.dropna().drop_duplicates()
st.write(df_cleaned)
df_cleaned.to_csv("cleaned.csv", index=False)
I deployed it on Streamlit Cloud with a simple checkout → $300 in passive downloads in a month.
3. FastAPI + Uvicorn: PDF-to-Text API Writers and researchers wanted a fast way to extract text from PDFs. I built an API that accepts PDFs and returns JSON.
pip install fastapi uvicorn PyMuPDF
from fastapi import FastAPI, UploadFile
import fitz # PyMuPDF
app = FastAPI()
@app.post("/extract/")
async def extract_text(file: UploadFile):
doc = fitz.open(stream=await file.read(), filetype="pdf")
text = "".join([page.get_text() for page in doc])
return {"text": text}
Added Stripe + rate limiting → $10/month subscriptions from SEO agencies.
4. Selenium + Twilio: Stock Alert Bot I set up an alert system that watches stock prices and sends a text when anything drops >5%.
pip install selenium twilio
from selenium import webdriver
from twilio.rest import Client
client = Client("TWILIO_SID", "TWILIO_TOKEN")
driver = webdriver.Chrome()
driver.get("https://finance.yahoo.com/quote/TSLA")
price = float(driver.find_element("xpath", '//*[@data-field="regularMarketPrice"]').text)
if price < 600:
client.messages.create(
body=f"TSLA below $600: ${price}",
from_="+123456789",
to="+987654321"
)
Friends requested custom versions → $180 selling bots on Gumroad.
5. OpenAI + Gradio: Resume Review App Built a simple app where users upload resumes → GPT-4 critiques → feedback displays instantly.
pip install openai gradio
import openai, gradio as gr
def review_resume(text):
prompt = f"Review this resume and give actionable feedback:\n{text}"
res = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role":"user","content":prompt}]
)
return res['choices'][0]['message']['content']
gr.Interface(fn=review_resume, inputs="textbox", outputs="text").launch()
$5 one-time payments → $400 in three weeks from social media marketing.
6. Pandas + Plotly + PDFKit: Auto Monthly Reports Clients wanted weekly analytics reports. Automated using pandas for data, plotly for charts, pdfkit for PDF generation.
import pandas as pd, plotly.express as px, pdfkit
df = pd.read_csv("sales.csv")
fig = px.bar(df, x="week", y="revenue", title="Weekly Revenue")
fig.write_html("report.html")
pdfkit.from_file("report.html", "report.pdf")
Cron-job → hands-off revenue: $200/month.
7. Python + Notion API: Automation Scripts Automated dashboards, habit logs, task resets. Bundled scripts into .py files → $10 products.
pip install notion-client
from notion_client import Client
notion = Client(auth="your-secret")
page = notion.pages.retrieve("page_id")
print(page["properties"])
Earned $850 via Gumroad and Reddit marketing.
8. BeautifulSoup + Flask: Niche Web Monitors Scraped websites for updates (e.g., government job listings). Flask backend + Google Sheets → email alerts.
pip install beautifulsoup4 flask requests
Charged $5/month → 20 clients.
9. PyPDF2 + OCR + Email Automation: Document Parser Automated scanned PDFs → extract key info → email summary. Clients: lawyers, admins → $600/month recurring.
10. Full Python SaaS (No JavaScript!) Flask + Stripe + SQLite + Bootstrap → built “InvoiceMailer.”
- Users sign up → generate/send invoices → Stripe handles billing.
- Scaled to $100 MRR.
Key Lessons From Building Micro-Tools
- Start with small, repeatable tasks.
- Modular, maintainable code makes scaling easier.
- Automation amplifies your value, doesn’t replace humans.
- Micro SaaS can generate recurring revenue without heavy upfront investment.
- Social media and small communities can kickstart marketing with almost zero budget.
Read the full article here: https://python.plainenglish.io/how-i-built-10-python-micro-tools-that-generate-passive-income-daily-803e9563d247