Jump to content

How I Built 10 Python Micro-Tools That Generate Passive Income Daily

From JOHNWICK

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