Strategic Roadmap · v2

From Side Project to Full-Scale Platform

You have 3 paying customers, a proven product, and full-time focus. This roadmap balances three competing priorities: closing customer #4, keeping existing customers happy, and protecting what you've built.

Hebrew Calendar Ad Platform
Haggai Elezra
Generated
May 13, 2026
Customers Live
3 campaigns · CPM + CPC + Flat
Recent wins

What changed since the last roadmap

The v1 roadmap (May 8) framed your bottleneck as a sales-activity problem. That's been partially resolved by inbound — but new priorities have emerged. 30+ items shipped in 96 hours, 3 paying customers live. The roadmap below reflects the new reality.

Shipped May 8–13 · 30+ items

Strategic balance

Four parallel tracks

Since you have full-time bandwidth, you don't need to pick one priority — but you do need to know which is which. Don't let one track starve the others. A useful weekly split: 40% Track A (sales), 30% Track B (customer happiness), 20% Track C (defense), 10% Track D (foundation).

Track Theme Why this matters now Time budget
Track A Closing Customer #2 One customer = lucky. Two = a pattern. Prove this isn't a one-off. ~12 hours total
Track B Making Customers Wildly Happy Renewals + referrals are 5× cheaper than new acquisition. ~8 hours total
Track C Defense & Protection One incident kills trust. Boring but business-critical. ~6 hours total
Track D Foundation for Scale What you'd want at 10 customers, built before the pain hits. ~10 hours total
Track A
Closing Customer #2
Goal: First non-relationship customer signed within 30 days
Why this is the #1 priority. The platform is built and proven with 3 customers. To keep growing, you need new customers from outbound effort — not just inbound or network. This validates pricing and sales process at scale.
A.1 Build a target advertiser spreadsheet
2 hours
30–50 specific companies across 6 categories: hotel chains, kosher tour operators, Jewish travel agencies, Israeli wedding venues serving religious community, financial services for religious clientele, premium kosher food brands.
Why now: Without this list, "doing sales" stays vague. With it, "Tuesday I contact rows 7-12" is a concrete plan. Existing customers give you social proof and a reference.
A.2 ✅ Create live demo URL /r/demo
Done
Decided: send in-house campaign dashboard link instead. No fake data needed.
A.3 Write first customer case study (1-pager)
2 hours
Once a customer has 30 days of data: "How [Brand] reached 150,000 high-intent Jewish users per month." Include real CTR (4%+), real reach, real audience demographics. Add a quote if they'll give one.
Why now: Social proof closes deals. A real customer story converts 5× better than abstract pitches. Reuse in cold emails, on pricing.html, in WhatsApp follow-ups.
A.4 Write 3 outreach templates (Hebrew + English)
1 hour
(a) Cold WhatsApp/email, personalized to each business type. (b) Follow-up after 4 days no-reply. (c) "Last touch" before moving on. Each references the prospect's specific business and links to pricing.html (Hebrew or English version per recipient).
Why now: Write once, send 100 times. Templates beat freestyling on volume and consistency.
A.5 Run the outreach (rows 1–25)
3–4 hours
5 contacts per day, 5 days a week, for 2 weeks. Track every reply (or lack of) in the spreadsheet. Reply rate target: 15–20%. Meeting rate target: 5%. Sign rate target: 1–2 customers.
Why now: This is the actual sales work. Engineering doesn't replace it. Speed-of-iteration on the templates depends on real reply data.
A.6 Self-served quote form on pricing.html
3 hours
Prospect picks tier + dates + target market → form submits → creates draft campaign in admin (status: pending_payment) → you review and activate. Reduces sales friction from "let me build this for you" to "preview it now."
Why now: If 2 prospects ask "can I just try it?" you'll wish this existed. Cheaper to build now than retrofit during a hot lead conversation.
Track B
Making Customers Wildly Happy
Goal: Renewal + referrals from existing customers
Why this matters. Customer acquisition costs 5–10× more than retention. A renewing customer = predictable revenue. A referring customer = your easiest next deal. The investment here is high-leverage.
B.1 Booking attribution display in customer dashboard
3 hours
Admin form to record manual conversions (e.g. "47 bookings, ₪87,500 revenue"). Customer dashboard shows: "You drove 47 bookings · ₪87,500 revenue · Your investment: ₪5,000 · ROI: 1,650%."
Why now: Closes the revenue-share loop visually. ROI numbers sell renewal automatically.
B.2 Weekly email digest to customer
3 hours
Sunday 9am auto-email: "Last week on the Hebrew Calendar: 12,400 impressions · 1,034 clicks · 4.1% CTR." Direct link to live dashboard. No login required.
Why now: Premium feel. Keeps you top-of-mind for renewal conversation.
B.3 Monthly PDF report (auto-generated)
3 hours
Admin button → generates polished PDF (navy + gold) → emails to customer. Includes: campaign summary, CTR trends, geographic breakdown, week-by-week performance, ROI calculation. Branded for forwarding to their CFO.
Why now: CFOs renew budgets. A polished PDF makes you look like a SaaS, not a side project.
Track C
Defense & Protection
Goal: Survive growing pains without losing data or customer trust
Why this matters. Boring but business-critical. One serious incident (data loss, customer-visible bug, security breach) ends the business. These are the seatbelts.
C.1 Frequency cap & session dedup in /v1/ad/next
2 hours
Per-device daily cap (e.g., max 3 impressions per user per day per campaign). Prefer not-seen-in-last-10-min. Requires iOS app to send device_id on /v1/ad/next (currently sent for events only).
Why now: Critical before second paying customer. Without it, one heavy user can artificially deflate CTR or eat through a campaign's impression cap. Industry standard hygiene.
C.2 Encrypt remaining DigitalOcean env vars
5 min
DO_SPACES_KEY and DO_SPACES_SECRET still show the eye icon (revealable in DO console). Copy each to password manager, re-paste with Encrypt checkbox.
Why now: This was on every roadmap and is still pending. 5 minutes. Closes the last security gap before adding any contractor or teammate.
C.3 ✅ Rate-limit customer dashboard data endpoint ✓ SHIPPED May 13
Done
60 req/min per token sliding window. Returns 429. Auto-prunes map at 1000 entries.
C.4 Backup verification (monthly automated test)
1 hour
Cron job once a month: download backup, open in temp SQLite, run PRAGMA integrity_check. Email/Telegram alert on failure. Catches silent corruption.
Why now: You have backups but you've never tested restore. Untested backups = no backups. One verified restore is worth 100 untested ones.
C.5 Real auth (replace static API key)
2 hours
Username + bcrypt password + session tokens + rate limit on failed logins. Required before adding any second person to admin (contractor, employee, accountant viewing reports).
Why now: Current static key works for solo use but doesn't scale to multi-user. Build this before you need it, not during a hiring sprint.
C.6 Audit log
1 hour
New audit_log table. Every admin write (campaign create/edit/delete, lead delete, token generate) is logged with timestamp, action, target ID, summary. Read-only display in admin settings.
Why now: When a customer says "you paused my campaign," you can prove they did it themselves (or admit it was you). When you onboard a contractor, you can see what they did.
Track D
Foundation for Scale
Goal: Operate 5–10 customers without rebuilding
Why this matters. Build the patterns that scale before the pain hits. These are the features you'll wish existed when you're trying to onboard customer #3 while also serving customer #1.
D.1 Campaign templates
2 hours
Save a campaign config as a template ("Hotel — Always-On"). New customer wants the same? One click, swap name/dates/creative, done. Saves 10 minutes per campaign × N customers.
Why now: Solo Lock week + Always-On + Annual are repeatable patterns. Templates make onboarding feel 10× faster.
D.2 True is_solo flag for Solo Lock exclusivity ✓ SHIPPED
1 hour
Currently Solo Lock is approximated via weight=100 (97% dominance, not 100%). Add real is_solo column. When a campaign is marked solo and currently active, the /v1/ad/next handler filters out everything else for that window.
Why now: Build before first Solo Lock customer signs. Cheap to do upfront; awkward to explain "well, technically 97%" to a customer paying for 100%.
D.3 Inventory forecast view in admin
2 hours
Admin page: "You have 600K impressions per month. Currently sold: 150K. Available: 450K. Next 4 weeks: 80% capacity." Helps price the next deal and know when to say "we're at capacity."
Why now: When you have 5 customers, this becomes essential for not over-selling.
D.4 ✅ NextMillennium removal & app rollout ✓ DONE
Done
iOS + Android updated. NextMillennium SDK removed, 100% in-house ads live.
D.5 Bilingual pitch + pricing pages
3 hours
pricing.html already done (self-contained HE/EN toggle). Apply same pattern to pitch.html. Opens US/UK Jewish-community advertisers.
Why now: US/UK diaspora = 40%+ of impressions. Large market: synagogues, kosher restaurants in NY, Jewish schools.
D.6 ✅ CTR marketing materials updated ✓ DONE
Done
All materials updated to reflect real verified CTR of 4%+ (measured across 3 campaigns May 2026). Industry standard interstitial is ~1% — we are 4× better.
Execution plan

The next 4 weeks

Week 1 · May 11–17 ✅

Platform complete — now selling
  • ✅ CPM/CPC pricing model shipped
  • ✅ Customer dashboard with spend + leads
  • ✅ iOS + Android cache fix + device_id
  • ✅ Rate limiting + lead export CSV
  • ✅ WhatsApp tracking fix

Week 2 · May 18–24

Sales + Customer Care
  • A.1 Build prospect spreadsheet (2 hr)
  • A.4 Outreach templates + batch 1 (15 contacts)
  • A.3 Customer case study (2 hr)
  • B.1 Booking attribution for revenue-share customer
  • C.2 Encrypt env vars (5 min)

Week 3 · May 25–31

Case Study + Scale
  • A.5 Outreach batch 2 (15 contacts)
  • B.3 Monthly PDF report for customers
  • D.3 Inventory forecast tool
  • C.6 Audit log (1 hr)

Week 4 · June 1–7

Polish + Next Customer
  • A.6 Self-served quote form
  • D.4 NextMillennium removal from app
  • C.4 Backup verification
  • Customer #4 target
Bottom Line

The platform is built — now it's a sales problem.

3 paying customers, CPM/CPC/Flat all live, customer dashboards, reports, lead tracking. The tech is done. Customer #4 by June 1 is realistic if you spend 50%+ of your hours on Track A (sales). Everything else is in service of that goal.