Tempuh (Bahasa Indonesia) = "to traverse / to take on a journey". Positioning the product as a journey companion, not a to-do list.
1. The Wedge (why tempuh wins in a crowded goal-tracker space)
Notion/Coda/Habitica/Strides/Goalscape compete on features. tempuh competes on accountability loops + ID-native habits:
WhatsApp-native check-ins. Daily "udah nge-gym belom?" from an AI coach. WA is the Indonesian inbox; nobody opens a goal-tracker app on day 14. Reuses japri.com public API (X-Japri-Key → /api/wa/send) so zero new WA infra cost.
Public Journey Pages = Strava for any goal.tempuh.com/@wendy/diet-90-hari is a live shareable page (streak + photo log + milestone graph) that turns every user into a referral surface. SEO + social proof + flex = three jobs from one artifact.
AI Coach in the loop. Not a chatbot — a coach that reads your last 7 check-ins, finds the lag, and DMs the 1-3-1 ("1 problem, 3 options, 1 recommendation" — Dan's framework) on WA. Model = Gemini 2.0 Flash Lite via shared ai-router.
Productized templates. "Diet Anti-Gemuk 21 Hari", "Belajar Python 90 Hari", "Subuh Streak 100 Hari" — pre-built journeys with milestones, daily prompts, photo asks. New user picks a template, doesn't design from scratch (Dan's "painted door" wedge).
Bahasa Indonesia first. All competitors are EN-only or auto-translated. tempuh ships ID-native copy, ID emoji, ID coach voice ("Bro, lo skip 2 hari berturut-turut").
Niche statement (Dan's "who" exercise):Indonesian self-employed creators, students, and PNS who want to hit a 30-90 day goal and need someone to ask "udah?" every morning at 6am. Broaden only after $10k MRR.
unlimited journeys, AI coach, WA reminders, private mode, photo log
Core MRR
Tim
Rp 299.000 / bln(up to 10 anggota)
OKR per anggota, weekly leaderboard, admin dashboard, slack-style #standup channel
B2B UKM/komunitas
Lifetime Deal (Q1 2026 launch): Rp 1.299.000 LTD via AppSumo + lokal partner (Niagahoster Discounts). Dan's bootstrap move — 200 LTDs = Rp 260M cash injection with zero CAC. Hard-cap at 500 LTDs ever.
Coach Marketplace (Q3 2026, only after $5k MRR): real coaches list packages (Rp 500k-3M), tempuh takes 20%. Defensible moat — community + 2-sided market.
Unit economics (must be true from month 1)
Variable cost per Pro user / month: Rp ~2.500
WA send (japri): ~Rp 0 (shared infra, marginal cost only)
AI coach (~30 msgs × Gemini Flash Lite via OR free tier): ~Rp 0 → DeepSeek fallback ~Rp 1.500
Break-even: ~40 Pro users (covers domain, kie credits, OR top-up).
$120k ARR = ~3.200 Pro users OR ~300 Tim accounts OR mix.
AI cost ceiling
Hard cap $200/month across OR + kie + ElevenLabs combined. Above that → cron pauses non-paying users' AI features until quota resets. Codified in worker/src/lib/ai_budget.ts.
3. The Acquisition Triple-Stack (no paid ads in year 1)
Dan: "You don't have a marketing problem — you have a content velocity problem."
Programmatic SEO — 1.500 goal landing pages./cara-mencapai/<goal-slug> × 300 goals (diet, ngoding, hafalan, gym, hemat, dll.) ×
/<duration> modifier (7-hari, 30-hari, 90-hari, 1-tahun) =
~1.500 pages. Each = SSR'd via Worker, FAQ + HowTo + Course JSON-LD, hero image from kie z-image cached in KV (img:<slug>, 30d TTL), example public journeys auto-injected. IndexNow ping daily (rotating batch of 30).
TikTok/Reels daily shorts — fully automated.
Cron pulls top 5 public journeys from previous day → AI generates 30s script ("Hari ke-12 diet, turun 2 kg, ini menu sahurnya...") → ElevenLabs TTS (cached, never regenerate per feedback_elevenlabs_credits) → ffmpeg auto-cut on server → manual upload (only manual step — 15 min/day). Goal: 365 shorts in year 1, 1 viral per quarter = enough.
AppSumo LTD + Indonesian directory blasts. seo-boost skill for backlinks (GitHub, Archive.org, Niagahoster blog guest posts). community-builder skill seeds first 50 authentic public journeys.
Referral kickback (MGM, audible.id pattern): referrer gets Rp 200k cash per Pro convert that stays 30d. Referee gets first month free. Auto-tracked via referral_codes + 14d holding → Xendit Disbursement.
4. The AI Automation Map (every loop a human would do → which model)
Dan: "List every task, then put a price next to each, then automate or delegate everything below your hourly rate." For a solo founder, hourly rate = ∞ → automate everything.
Loop
Frequency
Model
Cost/run
Daily WA check-in send
per active Pro user, 6am WIB
template, no AI
~0
AI coach reply (when user replies to check-in)
per inbound msg
Gemini 2.0 Flash Lite (OR free) → DeepSeek v3.2 fallback
~Rp 0-50
Weekly journey summary digest
Sunday 7pm
DeepSeek v3.2
~Rp 100
Broken-streak nudge ("hari ini blm check-in, lo masih bisa selamatin streak")
hourly cron
template + 1 LLM line
~Rp 10
Hero image per goal landing page
once per slug, KV-cached 30d
kie z-image
~Rp 70
TikTok script + storyboard
daily
DeepSeek + ElevenLabs (cached)
~Rp 500
New user onboarding sequence (WA, 5 msgs over 3 days)
per signup
template + 1 LLM personalization line
~Rp 50
Programmatic SEO page regeneration
weekly cron, 100 slugs/week
DeepSeek (cheap bulk)
~Rp 5k/wk
Payment dunning (gagal bayar)
per failed charge
template + WA
~0
Cancellation save survey + counter-offer
per cancel
LLM reads reason → picks discount tier
~Rp 100
Support inbox triage (WA)
per inbound
agent-hub @pd-style sticky agent (already built!)
~Rp 30
All routed through pro/ai-router/router.js (vendored). No raw API calls.
5. The Cloudflare Architecture (specific, not generic)
Resource inventory
Resource
Name
Purpose
Pages
tempuh-com
React 19 + Vite SPA shell (dashboard)
Worker
tempuh-web
SSR for public journey pages + landing pages + API
Worker
tempuh-jobs
Queue consumer for WA send, AI coach, photo processing
T2I = kie z-image (per global rule). Always pipe https://xmoj.com/?url=<kieUrl>&w=1280&output=webp&q=82&our_origin=tempuh.com before R2 put. Add tempuh.com to xmoj whitelist.
6. The 90-Day Execution Plan (Dan-style milestone discipline)
Landing page (1 page, SSR, no app yet) — describe the product + email capture + "Start your journey FREE — WhatsApp coach included"
Set up japri WA integration (X-Japri-Key, register @tempuh agent slug per agent_japri_com.md)
Mayar payment + webhook
Painted door test: push landing to 500 cold IDs via existing seo-boost backlinks; measure email-capture rate. If <5% → iterate copy before building. If >5% → proceed.
Decision gate: if MRR <Rp 5M after 90d → kill or pivot. Dan rule.
7. The Moat (year 2 thinking)
Dan: "Product = price of entry. Community + content + data = the moat."
Community: WA group per template ("Diet Anti-Gemuk Squad") — Pro users only. Run by AI agent + 1 human community lead (volunteer-promoted, paid in LTD).
Content: 365 TikTok shorts + 1.500 SEO pages = compounding free traffic asset that competitors can't buy.
Data: by month 12, tempuh has the largest dataset of "what actually makes Indonesian users finish a 90-day goal". Sell aggregate insights to corporate wellness clients in year 2.
Coach marketplace (year 2): 2-sided. Coaches list → users buy → tempuh takes 20%. Switching cost = your followers + your reviews.
8. Mandatory Standards (non-negotiable per CLAUDE.md)
100% Cloudflare in production path. No PM2, no Docker, no Hetzner serving requests.
Shared ai-router (pro/ai-router/router.js) — vendor to worker-cf/src/lib/ai-router.js. NEVER raw OR/CF/kie API calls.
Image gen = kie z-image, piped through xmoj.com before R2 put.
WA sends ONLY via japri public API (X-Japri-Key) — never raw Meta Graph.
WAF + bot gate + rate-limit before public launch.
All secrets via wrangler secret put. Zero .env in prod.
Run quality gates before each commit; git pull --rebase && bd dolt push && git push to close session.
9. Competitor Synthesis (from research 2026-05-25)
International landscape
Mature space, but every WhatsApp-coach competitor (HabitGPT, Habit Hero, Coach Call AI) is English-first, opaque pricing, founded 2024-25 — none localized to Indonesia. Goal/journey trackers fall into 4 camps: (a) gamified solo (Habitica, Streaks); (b) commitment-device (Stickk, Beeminder); (c) human-coach marketplace (Coach.me $87/mo — too expensive for ID); (d) Notion templates (static, no accountability). Public discoverable journey URLs for non-fitness goals = basically GoAchievo alone, no AI, no WA, no business model. Strava-for-anything is structurally vacant.
Indonesian landscape
No Indonesian product combines goal tracking + WA check-in + AI coach. Adjacents:
Fita (Telkomsel, 2.5M users, Rp 49-55k/bln) — fitness only, no goal/cohort
Satu Persen — owns "self-improvement Bahasa" mindshare but sells events/courses, not tracker
Riliv / KALM / Bicarakan / Naluri — mental health, not goals (Rp 33k-250k per session)
DOOgether — gym/class booking, not goals
Indonesian Notion-template creators (notionakhi, yudho) sell Rp 25-150k one-off, no recurring + no WA
5 confirmed wedges (validated by both researches)
WhatsApp-first onboarding in Bahasa — 92% WA penetration in ID; zero competitor does this in Bahasa
Public SEO-indexable journey URLs — /u/<handle>/<goal> doubles as growth engine; Strava-style discoverability for non-fitness is empty
Hybrid AI + human coach marketplace — Coach.me $87/mo (too expensive), Habit Hero AI-only. Hybrid where AI does 90% + human takes 30k IDR/mo = unique
Tim plan for ID micro-coaches at Rp 299k/bln — undercuts a VA (Rp 2-3M/bln) by 10×; coaches resell tempuh as their own dashboard (TAM: 5,000-15,000 micro-coaches × Rp 299k = Rp 1.5-4.5 mrd ARR cap)
Cultural-ritual templates — sholat 5 waktu, hafalan Quran, puasa Senin-Kamis, target haji 2030, diet sebelum kondangan; global apps tone-deaf, Satu Persen has no tracker
Pricing reality-check
Indonesian WTP for productivity sits Rp 29-49k/bln (Fita Premium territory). Above Rp 100k = mental-health-session price band, only works with human coaching. Revise §2 to: Pro Rp 39k/bln (was Rp 49k), annual prepay Rp 299k (was Rp 449k). Tim Rp 299k validated against ID coach hourly rate (Rp 299k = 1 hr of billed rate).
10. Missing Parts Audit (gaps in v1 plan)
These were absent from the original plan and would have bitten us in production. Folding them in now.
A. Product correctness
Activation metric (Dan's "Tent Pole"): define = first WA coach reply received within 60s of signup AND first check-in posted within 24h. North-star = % new users hitting both in first 7 days. Target ≥ 40% by month 3.
"Bright Spot" reverse-engineering loop: weekly cron tags top 2 power users (most check-ins + invites). I auto-summarize their journey + attributes into a weekly "Bright Spot Report" for the founder's Sunday review.
Onboarding video (60-sec, Bahasa) — required for AppSumo. Higgsfield Marketing Studio can generate w/ avatar.
B. Data, legal, compliance (Indonesia-specific)
UU PDP 2022 (Indonesian Personal Data Protection Law) — Pro tier handles photos = sensitive data. Need: explicit consent flow, data export endpoint (GET /api/me/export), data deletion endpoint (DELETE /api/me), DPO contact email, breach notification procedure within 72h. Run legal-pages skill to generate.
Tim plan = data processor relationship — needs DPA (Data Processing Agreement) template for B2B customers
Age gate: Pro requires ≥17 (KTP age). Under-17 → free tier only, no public profile, no WA send. Soft gate at signup.
Photo log moderation — public journey pages = NSFW dumping risk. Pipe every uploaded image through @cf/unum/uform-gen2-qwen-500m or CF Image Moderation API (when GA) BEFORE R2 put. Reject + email user if flagged.
Coach marketplace KYC — coaches need NPWP (tax ID) verification before payout. Defer to year 2 launch.
C. Operations
Support SLA + agent-hub @tempuh sticky agent — reuse pattern from agent_japri_com.md. Register new slug in japri-api L4942. AI handles tier-1; escalation_to_human → WA notification to founder.
Cancellation save flow — 3 steps: (1) exit survey (pick reason), (2) AI generates counter-offer (downgrade / pause 30d / 50% off 3 months — based on reason), (3) confirm. Save rate target ≥25%.
Subscription pause (1-3 months) — high-impact for ID where Lebaran/UAS interrupt routines. Reduces churn 5-10%.
Status page — status.tempuh.com static page reading from CF Workers Analytics. Cron pings core paths every 5min, flips red if 3 consecutive fails.
D1 backup + DR — nightly cron exports D1 → R2 (backups/tempuh-prod-YYYY-MM-DD.sql.gz), 30-day retention. Document restore runbook in RUNBOOK.md.
Buyback Rate calculation (Dan) — at $150k target → $18/hr ceiling. Hire ID-based VA at Rp 25-40k/hr for inbox + content-upload tasks the moment they cross 4hr/week.
D. Growth & moat
Founder-builds-in-public engine — daily LinkedIn + X post: MRR + 1 lesson + 1 metric. Dan: <1.5hr/week planned content; rest = extraction from calls/customer convos. Tool: record every call → daily soundbite → repurpose.
Referral milestone NFTs / shareable badges — finishing a 30/60/90 day journey mints a shareable SVG badge (1080×1080, IG-ready) with personal stats + tempuh wordmark. K-factor driver.
Strava / Apple Health / Google Fit import — auto-create "10k steps daily" or "lari 5k" journey from existing data. Defer to month 4.
Affiliate program (33% MRR kickback) — same audible.id pattern. Tracks referral_codes + 14-day holding + Xendit Disbursement.
Newsletter (weekly digest) — Mondays 7am, shared Resend infra (from bijaksana.org). Top 3 public journeys + 1 founder story + 1 tip. Drives re-engagement.
Indonesian-creator partnerships — 5 micro-influencers in self-dev space (Satu Persen alumni, productivity TikTokers) → free Tim plan in exchange for cohort use. Defer to month 2.
E. Tech & infrastructure
A/B testing infra — KV-based feature flags (flag:<slug>:<variant>:<userid_mod>), variant assignment in worker middleware, log to Analytics Engine tempuh_events.experiment_<slug>. Required for paywall copy + pricing tests.
PWA push notifications — web push API + service worker, fallback when WA send fails or user disabled WA. Mirror duolingo.id PWA pattern.
Mayar webhook idempotency — store event_id in D1 webhook_events, reject duplicates. Mayar retries on 5xx.
Rate-limit per WA recipient — per MEMORY wa_per_recipient_throttle.md: never send >1 msg / 12h to same number from cron, max 3 / 24h total. Codify in worker/src/lib/wa_throttle.ts.
AI budget ceiling — worker/src/lib/ai_budget.ts tracks daily OR + kie + ElevenLabs spend in KV (ai:spend:YYYY-MM-DD). Above $6.50/day = pause non-paying users' AI features until reset.
Inverse-cache for public journey pages — public /u/<h>/<g> cached aggressively (5min KV + 1hr CF edge); dashboard pages always private, no-cache per MEMORY gotcha.
xmoj.com whitelist — add tempuh.com BEFORE first kie-generated hero image hits R2 (per global rule).
F. Brand & design
Brand kit ships before scaffold — per web/tempuh.com/design.md § 9
Lighthouse desktop-preset check in CI — catches contrast bugs the mobile preset misses (MEMORY brand color gotcha)
Dark mode from day 1 — global html.theme-dark overrides (duolingo.id pattern) not per-component classes
G. Dan-rules I'm currently violating in the v1 plan
Pricing too low — Rp 49k → was already aggressive; ID research confirms it's right but anchor Tim at Rp 399k not Rp 299k then walk down with the 10-5-20 rule (raise 5% every 10 customers, expect ~20% pushback as the signal)
AppSumo LTD listed as cash-injection — Dan structurally opposes LTDs (kills 10-5-20 pricing power). Revise: only run LTD on tempuh's templates marketplace layer (year 2), not on the core subscription.
"Painted door" was vague — make it concrete: ship landing-only with WA-capture form, drive 500 cold visits via existing seo-boost backlinks, kill if <5% capture rate after 14 days
No CAB (Customer Advisory Board) — recruit 12-30 power users into a private WA group at user #50; weekly poll for what to build next
"Smile and Dial Thursdays" — 8 customer WA-calls/week minimum until $10k MRR; AI does the scheduling, human (me) does the calls
Manual coach before automated coach — for first 50 Pro users, I personally write every coach reply via WA. AI replaces me only after I have a 100-reply library to fine-tune against
No "Perfect Fit Customer" avatar named — adding: "Rina, 31, Jakarta middle manager, 1 anak, sudah coba 3 habit apps, semua nyerah karena gak ada yang nge-push"
No clear hire #1 trigger — defined: hire ID VA (Rp 25-40k/hr) when admin tasks cross 4hr/week — likely month 2
11. What I'm Asking For Before Building
Three product calls only the human can make:
Niche commit (Dan's hardest ask): ship as "Indonesian creators/students/PNS 30-90 day goal" specifically, OR ship broader as "anyone with a goal"? Tighter niche = faster $1k MRR but smaller TAM. Recommendation: tight niche around the "Rina" avatar, broaden at $10k MRR.
AppSumo LTD — yes/no/year-2? Dan-aligned answer: drop LTD from year 1, run it only on the templates-marketplace layer in year 2 once subscription has 10-5-20 pricing locked.
Mascot direction — Kancil (Indonesian mouse-deer, cultural moat, recommended) vs. abstract blob (cheap to animate, Headspace-style) vs. running-compass character?
If confirmed, day-1 execution order:
(a) Generate brand assets per design.md § 9
(b) Add tempuh.com to xmoj whitelist + register @tempuh agent slug in japri
(c) DNS + zone + worker scaffold + D1 schema + Mayar webhook
(d) Landing-only painted-door deploy + 500-visitor traffic test
(e) Decision gate at day 14 on capture rate.
⚙ HARD CONSTRAINTS (enforced for all sites)
This domain MUST operate within these constraints — no exceptions:
100% Cloudflare serverless — Workers + D1 + R2 + KV + Workers AI + Vectorize. NEVER PM2, NEVER VPS, NEVER Docker in production path.
100% AI-automated — every customer interaction, every moderation decision, every transaction reconcile = AI. No manual queue, no live human chat support, no physical fulfillment.
1-operator solo — one person can run the entire operation from a phone. No team meetings, no shared inbox, no shift rotation.
WhatsApp AI bot for all support (24/7, instant response, no SLA promises that need humans).
Mayar QRIS for all Indonesian payments (subscription auto-renew, no manual invoicing).
Indonesian UI primary — bahasa-first, English fallback only where unavoidable.
Privacy — opt-in only, delete-on-request honored within 24h (cron-driven).
No physical goods, no inventory — digital products + affiliate referrals only.
If the plan above describes any flow that violates these constraints, treat the plan as ASPIRATIONAL only and rework before building. The constraint trifecta wins.