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.
Free giveaway: Every month we give away one free rebuild to a qualifying team. Reply to this post or DM us to enter.
Leave a Reply