Blog

  • We Replaced Calendly With a Custom Booking Page in 2 Hours

    The Problem

    Calendly costs $8 to $12 per user per month. For a small team with two or three people who just need a simple way to let clients book a call, that is $300 or more per year for a tool that mostly sends you an email saying someone booked a slot. We asked: how hard is it to build that ourselves?

    What We Built

    A lightweight booking page using Python, Flask, and SQLite. It displays available time slots, lets a visitor pick one, and sends a confirmation email to both parties. No third-party calendar sync — just a simple HTML form backed by a database and an SMTP send.

    How We Did It

    Stack: Python, Flask, SQLite, SMTP, HTML/CSS

    Estimated time: 120 minutes

    Build Steps

    • [done] Step 1: Scaffold Flask app with SQLite database for slots and bookings (Python, Flask, SQLite) – 20min
    • [done] Step 2: Build slot seeding script — populate available times for the next 14 days (Python, SQLite) – 15min
    • [done] Step 3: Build booking page — list available slots, form submission, slot reservation with row lock (Python, Flask, HTML) – 25min
    • [done] Step 4: Confirmation email on booking — send to visitor and host via SMTP (Python, SMTP) – 20min
    • [done] Step 5: Conflict prevention — mark slot as taken on first submission, reject duplicates (Python, SQLite) – 15min
    • [done] Step 6: Deploy to local server, test full booking flow end to end (Flask, SMTP) – 25min

    Results

    • Steps completed: 6/6
    • Total build time: 120 minutes
    • Completion: 100%
    • Verdict: COMPLETE

    Build vs Buy

    Buy (Calendly) Build (Custom)
    Cost $8-12/user/month Time investment only
    Stack Managed SaaS Python, Flask, SQLite
    Setup Time Minutes 120 minutes
    Ongoing Cost $8-12/user/month $0 (self-hosted)

    Limitations of the Rebuild

    • No Google Calendar or Outlook sync — slots are managed manually in the database
    • No timezone detection — host must configure slots in the visitor's expected timezone
    • No rescheduling UI — rebooking requires manual slot reset
    • No video conferencing link injection — Zoom/Meet links must be added manually to confirmation email

    Verdict

    The rebuild is complete. A functional booking page that prevents double-booking and sends confirmation emails took 120 minutes to build using Python, Flask, and SQLite. The ongoing cost is $0.

    For a team that books a handful of external calls per week, this covers the full use case.


    Want us to build this for you?

    We help small teams replace expensive SaaS tools with AI-assisted custom builds. If you are paying for a tool you barely use, we can probably rebuild it for less.

    Get a free rebuild assessment

    Free giveaway: Every month we give away one free rebuild to a qualifying team. Reply to this post or DM us to enter.


  • Zapier vs Custom Automation: We Built It Both Ways and Here Is What We Found

    The Setup

    We had a simple automation need: when a new row is added to a Google Sheet, send a formatted Slack message and log the entry to a database. Classic Zapier territory.

    We had been running it on Zapier Starter at $20/month. It worked. But we wanted to know what it would actually take to own this ourselves — so we built the same automation in Python and ran both for two weeks.

    Here is what we found.

    What the Automation Does

    1. Watch a Google Sheet for new rows (form submissions from clients)
    2. Format the row data into a Slack message
    3. Post to the team Slack channel
    4. Write the entry to a SQLite log

    Simple. Four steps. We had been paying $20/month for it.

    The Zapier Version

    Setup time: 25 minutes (connecting Google Sheets, Slack, configuring field mapping)

    Cost: $20/month (Starter plan — multi-step Zaps require paid tier)

    Reliability: High. Zapier ran the automation every time without issue over two weeks.

    Maintenance: Zero. No code, no server, no updates required.

    Limitations:

    • Adding a step (like writing to a second destination) requires upgrading to a higher plan
    • Logic beyond simple field mapping (conditional sends, transformations) requires Zapier Paths, which is a higher tier
    • Data passes through Zapier's infrastructure — relevant for teams with data sensitivity requirements

    The Custom Python Version

    Build time: 90 minutes

    Cost: $0/month (runs on a small VPS we already pay for)

    How it works:

    • Python script polls Google Sheets API every 5 minutes via cron
    • Formats new rows into Slack Block Kit message
    • Posts to Slack via webhook
    • Logs to SQLite

    Reliability: Equal to Zapier over our two-week test. No missed events.

    Maintenance: Low. Cron runs it. Google and Slack auth tokens need occasional refresh.

    Side-by-Side Comparison

    Zapier Starter Custom Python
    Monthly Cost $20/month $0
    Setup Time 25 minutes 90 minutes
    Ongoing Maintenance None Low (token refresh)
    Logic Flexibility Limited (upgrades required) Unlimited
    Data Ownership Passes through Zapier Local only
    Multi-step automations Requires paid plan No restriction
    Debugging Zapier task history UI Python logs
    Breaking changes Zapier API updates Google/Slack API updates

    When Zapier Wins

    Zapier makes sense when:

    • You need to connect two tools quickly and do not want to touch code
    • The automation is non-critical and convenience is the priority
    • Your team has no engineering time to spare

    When Custom Wins

    Custom automation makes sense when:

    • You are paying for Zapier to do something a 90-line Python script can do
    • You need conditional logic or multi-destination writes
    • You have data that should not leave your infrastructure
    • You want the automation to scale without a higher pricing tier

    What We Did

    We cancelled the Zapier subscription after two weeks. The Python script has been running without issues. At $20/month, the breakeven on the 90-minute build was reached in the first month.


    Want us to build this for you?

    We help small teams replace expensive SaaS tools with AI-assisted custom builds. If you are paying for a tool you barely use, we can probably rebuild it for less.

    Get a free rebuild assessment

    Free giveaway: Every month we give away one free rebuild to a qualifying team. Reply to this post or DM us to enter.


  • The SaaS Tools Most Small Teams Pay For But Barely Use

    The Problem With the Modern SaaS Stack

    The average small team of five people carries a SaaS bill between $800 and $2,000 per month. Most of it is not one big tool — it is eight or ten tools at $15 to $30 each that nobody has audited since the credit card was put on file.

    The pattern is always the same: a tool gets added to solve a specific problem, the problem gets solved or changes shape, but the subscription keeps running.

    This is not a budgeting failure. It is a visibility failure. Nobody can see the full stack at once, and nobody owns the question of whether it is still working.

    The Five Categories Where We See It Most

    1. Scheduling Tools

    Common tools: Calendly, Acuity, SavvyCal

    Typical cost: $8-15/user/month

    What most teams actually use: The ability to share a link that lets someone book a 30-minute call and sends a confirmation email.

    That is a Python script with an HTML form and an SMTP send. It is a 2-hour build. Most teams pay for it monthly for years.

    2. Form and Survey Tools

    Common tools: Typeform, JotForm, SurveyMonkey

    Typical cost: $25-50/month

    What most teams actually use: A form that collects a few fields and emails the results to someone.

    That is a static HTML form with a POST endpoint. It is a 45-minute build. The branded progress bars and animated cards are not worth $600 a year.

    3. Transactional Email

    Common tools: Resend, Postmark, Mailgun, SendGrid

    Typical cost: $15-35/month

    What most teams actually use: Sending a confirmation email when someone signs up or submits a form.

    An SMTP relay from your hosting provider plus a 50-line Python function handles this. We rebuilt Resend's core use case in 135 minutes.

    4. Internal Notification Tools

    Common tools: PagerDuty, Opsgenie, parts of Slack Pro

    Typical cost: $10-25/user/month

    What most teams actually use: Getting an alert when something breaks.

    A webhook endpoint that posts to a Slack channel or sends an SMS via Twilio covers this. It is an afternoon build. The incident management dashboards and on-call rotation software are for teams ten times your size.

    5. Simple Reporting and Dashboards

    Common tools: Datadog (lite tier), Grafana Cloud, Retool

    Typical cost: $20-50/month

    What most teams actually use: A table or chart that shows one or two key numbers updated daily.

    A Flask app with a SQLite backend and a Chart.js frontend handles this for most small teams. The enterprise observability stack is not what you need.

    The Audit Question

    Before renewing any tool, ask one question: if this tool disappeared tomorrow, how long would it take us to rebuild what we actually use?

    If the answer is less than a day, the tool is a candidate for replacement.

    What We Do About It

    We do not suggest canceling everything at once. We suggest running one rebuild experiment per month. Pick the tool with the highest cost-to-usage ratio. Build a replacement. If it works, cancel the subscription. If it does not, you learned something and kept the backup.

    Over a year, a team that runs twelve of these experiments typically eliminates $400 to $800 per month from their SaaS bill.


    Want us to build this for you?

    We help small teams replace expensive SaaS tools with AI-assisted custom builds. If you are paying for a tool you barely use, we can probably rebuild it for less.

    Get a free rebuild assessment

    Free giveaway: Every month we give away one free rebuild to a qualifying team. Reply to this post or DM us to enter.


  • We Built a Simple CRM to Replace HubSpot Starter in One Afternoon

    The Problem

    HubSpot Starter costs $20/month. For a small team managing a pipeline of 30 to 50 active deals, most of what HubSpot Starter does is: store contact records, track deal stages, and send a follow-up email reminder when a deal goes cold.

    We were not using the marketing automation, the ad attribution, or the reporting dashboards. We were using it as a glorified spreadsheet with a kanban view and email reminders.

    We asked: what would it take to build exactly what we use?

    What We Built

    A lightweight CRM using Python, Flask, and SQLite. It stores contact records, tracks deals through a configurable pipeline, and sends a daily digest of deals that have not been touched in more than five days.

    How We Did It

    Stack: Python, Flask, SQLite, SMTP, HTML/CSS/Jinja2

    Estimated time: 180 minutes

    Build Steps

    • [done] Step 1: Design schema — contacts, deals, pipeline stages, activity log (Python, SQLite) – 20min
    • [done] Step 2: Build contacts CRUD — add, edit, view, search (Python, Flask, Jinja2) – 30min
    • [done] Step 3: Build deals CRUD with stage tracking — create deal, move through stages (Python, Flask, SQLite) – 35min
    • [done] Step 4: Activity log — record every stage change and note with timestamp (Python, SQLite) – 20min
    • [done] Step 5: Stale deal digest — daily script identifies deals with no activity in 5+ days, sends email summary (Python, SMTP, SQLite) – 25min
    • [done] Step 6: Pipeline view — one-page kanban-style HTML view of all open deals by stage (Python, Flask, HTML/CSS) – 30min
    • [done] Step 7: Test full workflow: add contact, create deal, move stages, trigger digest (Flask, SMTP) – 20min

    Results

    • Steps completed: 7/7
    • Total build time: 180 minutes
    • Completion: 100%
    • Verdict: COMPLETE

    Build vs Buy

    Buy (HubSpot Starter) Build (Custom)
    Cost $20/month Time investment only
    Stack Managed SaaS Python, Flask, SQLite
    Setup Time Hours (data import, field mapping) 180 minutes
    Ongoing Cost $20/month $0 (self-hosted)

    Limitations of the Rebuild

    • No email open/click tracking
    • No built-in meeting scheduling or calendar integration
    • No mobile app — browser only
    • No third-party integrations out of the box (Slack, Google Workspace)
    • Search is simple — no fuzzy match or advanced filtering
    • Scales poorly beyond a few hundred contacts without schema optimization

    Verdict

    The rebuild is complete. A CRM covering our actual daily use case took 180 minutes to build using Python, Flask, and SQLite. The ongoing cost is $0.

    For a small team managing a modest pipeline without needing marketing automation, this covers the full use case.


    Want us to build this for you?

    We help small teams replace expensive SaaS tools with AI-assisted custom builds. If you are paying for a tool you barely use, we can probably rebuild it for less.

    Get a free rebuild assessment

    Free giveaway: Every month we give away one free rebuild to a qualifying team. Reply to this post or DM us to enter.


  • We Replaced Resend With a Custom Email System Built in 2 Hours

    The Problem

    Resend costs $20/month. For many small teams, that is money spent on a tool they only partially use. We asked: can we rebuild the core functionality ourselves?

    What We Built

    A replacement for Resend using Python, Flask, and SMTP. The system handles transactional email delivery, basic template rendering, and send logging — covering the 80% use case for small teams.

    How We Did It

    Stack: Python, Flask, SMTP

    Estimated time: 135 minutes

    Build Steps

  • [done] Step 1: Scaffold Flask app and SMTP connection layer (Python, Flask, SMTP) – 20min
  • [done] Step 2: Implement send_email() with template variable substitution (Python, Jinja2) – 25min
  • [done] Step 3: Add send logging to SQLite (Python, SQLite) – 20min
  • [done] Step 4: Build REST endpoint POST /send (Flask) – 15min
  • [done] Step 5: Write validation layer and error handling (Python) – 20min
  • [done] Step 6: Test against live SMTP relay (SMTP, Python) – 15min
  • [done] Step 7: Document and package (Python) – 20min
  • Results

  • Steps completed: 7/7
  • Total build time: 135 minutes
  • Completion: 100%
  • Verdict: COMPLETE
  • Build vs Buy

    Buy (Resend) Build (Custom) Cost $20/month Time investment only Stack Managed SaaS Python, Flask, SMTP Setup Time Minutes 135 minutes Ongoing Cost $20/month $0 (self-hosted)

    Limitations of the Rebuild

  • No hosted deliverability infrastructure (you need your own SMTP relay)
  • No open/click tracking without additional build work
  • No GUI dashboard – API and logs only
  • Not suitable for high-volume bulk email without relay configuration
  • Verdict

    The rebuild is complete. We successfully replaced Resend with a custom solution built in 135 minutes using Python, Flask, SMTP. The ongoing cost is $0.


    Want us to build this for you?

    We help small teams replace expensive SaaS tools with AI-assisted custom builds. If you are paying for a tool you barely use, we can probably rebuild it for less.

    Get a free rebuild assessment

    Free giveaway: Every month we give away one free rebuild to a qualifying team. Reply to this post or DM us to enter.