Bot2Bot LabsBot2Bot Labs

r-0001 · Published 2026-10-17 · Price date 2026-10-17

SnagTime, the AI-built Calendly clone: what it really costs to run

A self-hostable Calendly-style scheduler (SnagTime) built with OpenAI Codex agent swarms. We checked the builder's published numbers against his own posts, then installed and ran it ourselves for free.

Break-even

3+ seats

$28.80/mo clone infra ÷ $10/seat/mo Calendly Standard = 2.88 seats → round up to 3+ seats before monthly run cost beats list subscription (= headline.breakeven).

Verdict

Good for: Teams with 3+ seats who can self-host, patch dependencies, and accept you as support.

Skip if: Single seat, need vendor SOC 2 / SLA, or cannot upgrade Next.js before a public deploy.

Main risk: Critical/high npm advisories on pinned commit; no repo commits since 2026-08-28 (reliability_notes + maintenance_pulse).

Confidence — 40% measured by us

measured 4/10 · builder-stated 5 · unverified 1 — Counts from claims[] types on this receipt (2026-10-17).

Labor-adjusted operator TCO @1 user (year 1): $695.60 — Same as cash TCO $695.60: maintenance_hours_month is not_measured, so no labor added (would be hours × $50/hr assumption if measured).

True monthly cost to run publicly vs the subscription it replaces

$28.80/mo to run vs $10.00/seat/mo Calendly

Break-even

3+ seats

Self-hosting costs less than Calendly Standard only at 3+ seats ($28.80 / $10 = 2.88 seats). For one person it costs about $18.80/mo more, before any maintenance time.

Bot2Bot estimate, infrastructure only: DigitalOcean Basic Droplet 4 GiB / 2 vCPU at $24.00/mo (sized to the repo's own production Compose limits: Postgres 2G + web 768M + worker 768M) + weekly backups at 20% of Droplet cost ($4.80). Email on Resend Free ($0, up to 3,000/mo and 100/day). Google Calendar API $0 under quota. Excludes domain, maintenance prompts, and your time.

Calendly Standard, $10 per seat per month billed yearly ($12 billed monthly), calendly.com/pricing checked 2026-10-17.

estimate (cited list prices; not a live deployment bill)

Two-sided receipt

A · Operator receipt

Builder or operator running the software

Build — tokens est. vs billed
$14,982.96 / $350.00(builder-stated)
Build — human hours
Not disclosed(Not disclosed)
Run @ 1 user / mo
$28.80/mohost $24.00 + DB $0.00 + email $0.00 + APIs $0.00 + tokens $0.00(measured by bot2bot labs)
Run @ 10 users / mo
$48.80/mohost $28.80 + DB $0.00 + email $20.00 + APIs $0.00 + tokens $0.00(measured by bot2bot labs)
Run @ 100 users / mo
$77.60/mohost $57.60 + DB $0.00 + email $20.00 + APIs $0.00 + tokens $0.00(measured by bot2bot labs)
Maintenance h / mo (@ 1 / 10 / 100)
Not measured · Not measured · Not measured(Not measured)
TCO year 1 (@ 1 / 10 / 100 users)
$695.60 · $935.60 · $1,281.20(measured by bot2bot labs)
Labor-adjusted TCO year 1 (@ 1 / 10 / 100)
$695.60 · $935.60 · $1,281.20(Not measured)
  • From build.token_usd_estimated and build.token_usd_billed (builder-stated, x.com/nateherk/status/2093335489231102341, 2026-08-28). Billed = $200/mo Codex (maxed) + ~$150 extra credits = $350 (sum in billing_note).
  • $24.00 Droplet (4 GiB/2 vCPU, digitalocean.com/pricing/droplets, 2026-10-17) + $4.80 weekly backups (20% of Droplet) + $0 Resend Free + $0 Google Calendar API = $28.80/mo (= views.own_business.total_usd_month). Postgres runs on the same Droplet (db $0 line item).
  • $28.80 infra (same single deployment as @1) + $20.00 Resend Pro (resend.com/pricing, 2026-10-17) = $48.80/mo (= views.sell_10.total_usd_month).
  • $48.00 Droplet (8 GiB/4 vCPU) + $9.60 backups (20%) + $20.00 Resend Pro = $77.60/mo (= views.sell_100.total_usd_month).
  • $350 build (billed, builder-stated) + 12 × $28.80/mo run = $695.60 year-1 cash. List-equivalent build would be $14,982.96 + $345.60 run = $15,328.56 (not cash paid).
  • $350 build (billed) + 12 × $48.80/mo run = $935.60 year-1 cash.
  • $350 build (billed) + 12 × $77.60/mo run = $1,281.20 year-1 cash.

B · User receipt

Someone using the product vs the commercial alternative

Clone price
free self host — software $0 (you pay infra)(measured by bot2bot labs)
Real product @ 1 / 10 / 100 seats / mo
$10.00 · $100.00 · $1,000.00(measured by bot2bot labs)
Price date
2026-10-17
Switching effort
Measured local setup: npm run setup + demo:free; ~2 min wall-clock per claims, plus npm run db:generate:postgres when pages 500; Node 24 for full tests.(measured by bot2bot labs)
Risk — reliability
Local run only (2026-10-17); 10-way booking burst had 5× HTTP 500 on SQLite; repo unchanged since 2026-08-28; public uptime not measured (reliability_notes + breakage_log).
Risk — security
Our copy: 1 critical + 10 high npm advisories; security_check status open — patch Next.js before public deploy. Calendly vendor posture not probed; compare via public trust/compliance pages only.
Risk — support
Self-hosted: you are support. Calendly includes vendor support on paid plans (not measured here).
Risk — data export
Self-host Postgres/SQLite under your control (MIT repo); Calendly export terms unverified — we did not log in.
  • MIT license at setup.license; no SaaS fee — operator pays infra (operator receipt).
  • $10/seat × 100 seats (= views.sell_100.notes)
  • List price source: https://calendly.com/pricing

Maintenance pulse

Measured 2026-10-17

Last commit
2026-08-28T12:30:56Z
Open issues
3
Contributors
1
License
MIT
Stars
388

Source: https://api.github.com/repos/nateherkai/snagtime

Data & lock-in

Self-hosted PostgreSQL in production Compose (setup.environment); local demo uses SQLite on your machine — not Calendly cloud.

Export: partial — Database files/backups on your infra; no export UI tested (reliability_notes: local run only).

  • Google Calendar API: Calendar events when OAuth enabled (maintain.services; quota page cited in sources)
  • Resend (SMTP): Transactional email content if configured (maintain.services)
  • Stripe: Test mode only as shipped — live keys rejected (security_check.findings)

Price history

Receipts are re-priced at least every 90 days; append rows, do not overwrite.

CheckedProductPriceSource
2026-10-17Calendly Standard (per seat, billed yearly)$10 USD/mo/seatlink
2026-10-17DigitalOcean Basic Droplet 4 GiB / 2 vCPU$24 USD/molink
2026-10-17Resend Pro$20 USD/molink
2-week breakage log ongoing: 2026-10-17 to 2026-10-31Two-week local run at the pinned commit. New entries are appended with dates; this receipt's price_date stays 2026-10-17 unless prices are re-checked.
AI Receiptpartially_verified
TaskA self-hostable Calendly-style scheduler (SnagTime) built with OpenAI Codex agent swarms. We checked the builder's published numbers against his own posts, then installed and ran it ourselves for free.
Tool + modelOpenAI Codex (builder's build) · Not disclosed by builder · $200/mo Codex plan plus ~$150 extra credits (builder-stated)
Human hoursNot disclosed
Agent active time5 days 5 hours
Agent hours (aggregate)334 h
Token $ est vs billed$14,982.96 / $350.00
Run $/mo$0.00 tokens + $28.80 hosting
Broke6 entry(ies)
Dated2026-10-17

Builder did not publish human hours. He published agent time: 5 days 5 hours active, 334 aggregate agent-hours.

Builder-stated vs measured

TypeClaimValueSource
Builder-statedEquivalent inference (API list-price equivalent)$14,982.96Link · 2026-08-28
Builder-statedActually paid for AI$200/mo Codex plan, "completely maxed out", plus roughly $150 in extra usage credits (about $350 total, our sum)Link · 2026-08-28
Builder-statedInput / output tokens32,103,178,736 in / 47,364,103 outLink · 2026-08-28
Builder-statedAgent time5 days 5 hours active; 334 aggregate agent-hours (parallel agents); 76 unique subagents; 300+ delegations (his estimate)Link · 2026-08-28
Builder-statedCalendar timeRoughly two calendar weeksLink · 2026-08-28
UnverifiedHuman hours to buildNot disclosedLink · 2026-08-28
Measured by Bot2BotLocal setup on a fresh Linux boxAbout 2 minutes wall-clock including one fix (npm ci: 24 s; 547 packages)Link · 2026-10-17
Measured by Bot2BotUnit tests196/196 pass on Node 24 (one flaky failure on the first run); 2 of 30 test files cannot load on Node 20.19.2Link · 2026-10-17
Measured by Bot2BotProduction buildnext build succeeded in 34 sLink · 2026-10-17
Measured by Bot2BotDependency audit13 advisories: 1 critical, 10 high, 2 moderate (npm audit, 682 packages incl. 171 production)Link · 2026-10-17

Acceptance criteria

  • Every builder number traced to his own post, with date
  • Repo installs and runs locally from the README with no paid services and no new accounts
  • Public booking flow works: list slots, book, reject a double booking
  • Time zones and the Nov 1, 2026 US daylight-saving change handled correctly
  • Dependency and secret-handling check recorded
  • Calendly price taken from calendly.com/pricing, logged out, on the price date

Builder-stated, not invoice-verified. Estimated = his "equivalent inference" figure ($14,982.96). Billed = his $200/mo Codex plan (maxed) + roughly $150 in extra usage credits; $350 is our sum of the two, and the plan fee also covers his other use that month. He also estimated a maxed $200 Claude Code plan delivers "closer to $8,000" of inference. Source: x.com/nateherk/status/2093335489231102341 (2026-08-28).

Not measured. Builder expects "a few prompts every month"; $0 marginal only if you already pay for an AI coding plan.

Run cost services

  • VPS for web + worker + PostgreSQL 18 (Docker). Estimate: DigitalOcean Basic 4 GiB/2 vCPU $24.00/mo, digitalocean.com/pricing/droplets, checked 2026-10-17
  • Droplet weekly backups: 20% of Droplet cost = $4.80/mo (same page)
  • SMTP email: Resend Free $0 (3,000 emails/mo, 100/day); Pro $20/mo for 50,000. resend.com/pricing, checked 2026-10-17
  • Google Calendar API: no charge under quota (1,000,000 requests/day/project). developers.google.com/workspace/calendar/api/guides/quota, checked 2026-10-17
  • Stripe: test mode only. SnagTime rejects live keys by design, so it cannot take real payments as shipped
  • Domain: excluded (assumes you already own one)

Breakage / fix log

  • 2026-08-28

    Builder-stated: testing agents never flagged a progress bar that looked clickable but wasn't; he found it by using the app himself.

    Cause: Agent testers clicked through flows without judging the human experience.

    Source

    Fix cost: 0 h · $0.00

  • 2026-08-28

    Builder-stated: typing and mouse input lagged close to one second; he set a ~10 ms target and sent the agents back.

    Cause: Performance pass needed after the first build.

    Source

    Fix cost: 0 h · $0.00

  • 2026-08-28

    Builder-stated: the first build ("TempoCove") "looked extremely vibe coded" and needed a rebrand and redesign.

    Cause: Initial agent output.

    Source

    Fix cost: 0 h · $0.00

  • 2026-10-17

    Measured: following the README (npm run setup, npm run demo:free) on a fresh clone, every page returned HTTP 500: Module not found '@tempocove/postgresql-client'.

    Cause: apps/web/src/server/db.ts requires the PostgreSQL client even in SQLite mode, and the dev bundler resolves it at build time. The client is only generated by a separate command.

    Fix: npm run db:generate:postgres (no database or account needed), then restart the dev server.

    Fix cost: 0.03 h · $0.00

  • 2026-10-17

    Measured: README says Node.js 20.9+; on Node 20.19.2, 2 of 30 test files fail to load (No such built-in module: node:sqlite).

    Cause: Tests rely on node:sqlite, which Node 20 does not ship.

    Fix: Use Node 24 (the README's verified runtime): 196/196 tests pass. One test failed on the first Node 24 run and passed on rerun (flaky, not identified).

    Fix cost: 0.02 h · $0.00

  • 2026-10-17

    Measured: 10 simultaneous booking requests for the same slot on the local SQLite demo: 1 booked (201), 4 correctly refused (409), 5 failed with HTTP 500 after ~5.1 s. No double booking occurred.

    Cause: Unhandled Prisma error under write contention in SQLite mode (likely a lock timeout). The PostgreSQL production path was not tested.

    Fix: Not fixed; local demo only.

    Fix cost: 0 h · $0.00

Status pages

Subscription it replaces

Calendly (Standard, per seat, billed yearly ($12 billed monthly; Teams $16 yearly / $20 monthly)) — $10.00/mo checked 2026-10-17. Source · see also /prices

Reliability notes

Local run only, 2026-10-17 (PT). Public booking page and slot API worked; slot API first call took 4.7 s on a cold dev server. Booking, idempotent retry, and double-booking refusal worked. Daylight-saving check: a Chicago 9-to-5 host showed 7:00 to 14:30 Pacific start times on both sides of the Nov 1, 2026 change (UTC shifted 14:00 to 15:00), which is correct. Repo last pushed 2026-08-28; no commits in the 7 weeks since. Uptime of a public deployment not measured.

Security check

Tested 2026-10-17 · Status: open

  • npm audit at commit 1c95490
  • Secret handling: .env files, .gitignore, repo secret scan
  • Password storage and strength rules (source review)
  • Public booking endpoints: rate limits, idempotency, double-booking race
  • Payments: live-key handling
  • 13 dependency advisories (1 critical, 10 high, 2 moderate). Critical: next 16.3.2, including GHSA-2xp9-vwfh-vxw4 (RCE in Image Optimization with AVIF) and GHSA-vcvr-r3jv-pc5j (RCE in next/og ImageResponse); patched in 16.3.8+. High: nodemailer (GHSA-2x7j-588g-ccc2, GHSA-v53p-9fqp-m79j), sharp (GHSA-rgj7-g3m4-5g8c, GHSA-wq5f-xc86-pv6w). Upgrade before any public deployment.
  • Good: setup generates independent random secrets into a git-ignored .env.local; .env.example holds placeholders only; the repo's own secret scan passed 266 files.
  • Good: passwords hashed with scrypt (16-byte salt, constant-time compare); 12+ characters with mixed classes required.
  • Good: public slot and booking endpoints are rate-limited (120/min per IP) and bookings require an Idempotency-Key.
  • Good: Stripe live keys are rejected; paid bookings are test-mode only.
  • Not tested: PostgreSQL row-level security, Google OAuth flow, SMTP, CSRF/XSS penetration testing, a public deployment.

Own business

Total / mo
$28.80
Hosting / mo
$28.80
Support hours / mo
1 h

You patch it. At the pinned commit, a critical Next.js advisory must be fixed before going public.

VPS list prices are stable; Google says Calendar API charges above quota are planned later in 2026.

Math: $24.00 Droplet + $4.80 backups + $0 Resend Free + $0 Google API = $28.80/mo vs Calendly Standard $10/seat/mo. 1 seat: +$18.80/mo. Break-even: 2.88, so 3+ seats. Assumption: 1 h/mo upkeep (not priced). A 2 GiB Droplet ($12 + $2.40 backups = $14.40) may work but is below the repo's own resource limits; untested.

Sell @ 10 customers

Total / mo
$48.80
Hosting / mo
$28.80
Support hours / mo
3 h

Needs live payments (not supported as shipped), privacy policy and data-processing terms, Google OAuth consent-screen verification for calendar scopes (requirement unverified here), and SPF/DKIM/DMARC.

Email volume and Google API billing are the variable costs.

Assumptions: 10 customers × 1 seat × ~50 bookings × ~3 emails = ~1,500 emails/mo; Resend Pro $20 to remove the 100/day cap. $28.80 + $20 = $48.80/mo, about $4.88 per customer, plus ~3 support hours. Same single deployment (multi-workspace is built in); load not tested.

Sell @ 100 customers

Total / mo
$77.60
Hosting / mo
$57.60
Support hours / mo
10 h

Adds backup restore drills, an on-call owner, incident response, and the SOC 2-style questions buyers ask Calendly-class vendors.

Google Calendar API charges above quota are planned for later in 2026 (Google's quota page); email overage $0.90 per 1,000 on Resend Pro.

Assumptions: 100 seats, ~15,000 emails/mo. DigitalOcean Basic 8 GiB/4 vCPU $48 + 20% backups $9.60 = $57.60; Resend Pro $20. Total $77.60/mo, about $0.78 per customer, plus ~10 support hours. For scale: 100 Calendly Standard seats list at $1,000/mo. Not measured.

Reproducible setup

  • git clone https://github.com/nateherkai/snagtime && git checkout 1c95490
  • npm run setup (creates git-ignored .env.local with random secrets)
  • npm run demo:free (npm ci, migrate 25 migrations, seed, start dev server)
  • If every page returns 500: npm run db:generate:postgres, then restart with npx dotenv -e .env.local -- npm run dev
  • Run tests on Node 24: npx -y node@24 node_modules/vitest/vitest.mjs run
  • npm audit; npm run ci:secret-scan; npm run build
  • Booking checks: GET /api/public/strategy-call/slots, POST /api/public/strategy-call/bookings with an Idempotency-Key, repeat the same slot, then 10 concurrent requests
  • Calendly price: calendly.com/pricing logged out, schema.org Offer data, 2026-10-17

Repo: https://github.com/nateherkai/snagtime

License: MIT

Sources

Disclosure

Verification: partially_verified. Bot2Bot Labs. Test cost $0: local run on our own box, no paid services, no accounts. No relationship with the builder, Calendly, DigitalOcean, Resend, Google, or Stripe.

Build cost and agent-time figures are builder-stated (traced to his own post, not invoice-verified). Local install, tests, booking behavior, and security findings are measured by Bot2Bot on 2026-10-17. Hosting is an estimate from cited list prices; we did not deploy publicly.

How to cite

Bot2Bot Labs (2026-10-17). SnagTime, the AI-built Calendly clone: what it really costs to run. AI Receipt r-0001. Price date 2026-10-17. https://bot2botlabs.com/receipts/r-0001

Download JSON