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.
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
- First paying customer signed (revenue-share model)
- Customer access dashboards via /r/dashboard/<token>
- Weighted campaign rotation + Solo Lock exclusivity
- Bilingual pricing.html (Hebrew + English with toggle)
- iOS ad-rotation cache-busting hotfix
- Sirocco + גרפוהוליק onboarded as paying customers
- Real CTR verified: 4%+ across all campaigns
- Pricing pivot to 3 flat tiers (Always-On / Solo Lock / Annual)
- CPM/CPC pricing model — spend tracking, auto-pause, Telegram alert
- Budget cap + eligibility filter in /v1/ad/next
- Customer dashboard — budget widget, invoice line, weekly grouped spend table, leads card
- Admin campaigns table — spend column, totals row, thumbnails, ID column, search/filter
- Campaign duplication + click URL test button
- Reports — spend in JSON + CSV (EN + HE)
- Per-campaign lead export CSV — admin + customer dashboard
- Rate limiting — 60 req/token/min on dashboard data endpoint
- iOS cache fix — .reloadIgnoringLocalAndRemoteCacheData on /v1/ad/next
- Android cache fix — setUseCaches(false) + device_id in query
- WhatsApp tracking fix — landing pages now include ?campaign_id=N
- Docs hub — campaign-guide.html, pricing self-contained, lobby updated
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 |
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.
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.
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.
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.
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.