tempuh.com Open ↗ Has Plan
57
DOM 75 PLN 100 REV 10 EAS 30
design.md ×
package-lock.json ×
package.json ×
plan.md
PREVIEW

tempuh.com — Journey Tracking & Goal Progress Platform

2026 one-man, 100% AI-automated, 100% Cloudflare SaaS — Dan-Martell-shaped playbook

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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).
  5. 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.


2. The Money Stack (2026 ARR target: $120k = ~Rp 1.9M MRR)

Pricing ladder (3 tiers — Dan recommends max 3)

Tier Price Cap Hook
Gratis Rp 0 1 active journey, 30-day cap, public only Acquisition + SEO surface
Pro Rp 49.000 / bln (or Rp 449k/thn — save 24%) 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
    • R2 photo storage (~5MB avg): ~Rp 0.50
    • D1 reads/writes: ~Rp 0 (free tier covers <100k DAU)
  • Gross margin: ~95%. Healthy for solo ops.
  • 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."

  1. 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).
  2. 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.
  3. 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
D1 tempuh-prod users, journeys, checkins, milestones, streaks, payments, referrals, templates
KV CACHE edge cache for landing pages (~5min TTL), hero image URLs (30d)
KV SESS session tokens (24h sliding)
KV RATELIMIT per-IP, per-user, per-WA-recipient counters
R2 tempuh-media user photo log, generated TikTok mp4s, generated hero PNGs
Queue tempuh-jobs WA send, AI coach reply, photo resize, TikTok render
Durable Object JourneyDO live streak counter + per-journey ratelimit (1 check-in / 12h)
Cron 6am daily check-in send; hourly streak nudge; Sun 7pm digest; nightly SEO regen; daily IndexNow ping
Analytics Engine tempuh_events signup, checkin, streak_break, convert_pro, ltv events
Workers AI fallback only (when ai-router CF route triggers)

Mandatory bindings & secrets

  • KIE_API_KEY, OPENROUTER_API_KEY, JAPRI_KEY (X-Japri-Key for WA), MAYAR_API_KEY, MAYAR_WEBHOOK_SECRET, RESEND_API_KEY (digest emails, shared from bijaksana.org), ELEVENLABS_API_KEY, INDEXNOW_KEY, ADMIN_TOKEN.
  • All set via wrangler secret put. Zero .env in production path.

Routes

  • / — landing
  • /template/<slug> — pre-built journey templates (start a journey in 1 click)
  • /cara-mencapai/<goal-slug> and /cara-mencapai/<goal-slug>/<duration> — programmatic SEO (1.500 pages)
  • /@<username> — public profile
  • /@<username>/<journey-slug> — public journey page (the Strava unit)
  • /app/* — SPA dashboard (Cloudflare Access for admin sub-paths)
  • /api/* — REST (JSON), versioned /api/v1/
  • /wa/webhook — Meta WA Business inbound (verify token tempuh-wa-2026)
  • /mayar/webhook — payment events
  • /sitemap.xml, /robots.txt, /llms.txt, /feed.xml, /<indexnow-key>.txt

Image strategy

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)

Days 1–14 — Painted Door

  • DNS + zone + worker scaffold (1 day)
  • D1 schema + migrations (templates, journeys, checkins, users, payments, referrals)
  • 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.

Days 15–45 — MVP & 10 Paying Users ($0 → $30 MRR)

  • SPA dashboard (5 screens: home, journey detail, new-journey wizard, settings, public profile)
  • 3 productized templates fully built (Diet 21d, Belajar Python 90d, Subuh Streak 100d)
  • WA check-in send + reply parsing + AI coach loop
  • Public journey page SSR + OG card generator (1200×630 SVG)
  • Pro paywall + Mayar flow + entitlement DB
  • First 10 paying users — personally onboarded via WA (Dan: do things that don't scale, get to 10 paying customers BY HAND)

Days 46–75 — Content Engine & AppSumo Launch ($30 → $1k MRR)

  • Build 1.500 programmatic SEO pages, ship sitemap, IndexNow ping
  • Build TikTok daily-shorts pipeline (cron → script → TTS → ffmpeg → review queue)
  • AppSumo listing prep (demo video, listing copy, 6 screenshots, 3 FAQ answers)
  • Submit to AppSumo Marketplace; target: 200 LTDs first month = Rp 260M cash
  • community-builder skill: 50 seeded authentic public journeys

Days 76–90 — Referral Engine & Tim Plan ($1k → $3k MRR)

  • Referral codes + MGM kickback (Rp 200k cash @ 30d retention)
  • Tim plan launch (target: 5 paying teams)
  • Cancellation save flow with AI counter-offer
  • Weekly cohort retention dashboard (Analytics Engine queries)
  • 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.
  • D1 cost optimization patterns (edge cache + bot gate + sampled writes) per cf_d1_cost_optimization.md.
  • Beads epic ucok-tempuh to track all child issues.
  • 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)

  1. WhatsApp-first onboarding in Bahasa — 92% WA penetration in ID; zero competitor does this in Bahasa
  2. Public SEO-indexable journey URLs/u/<handle>/<goal> doubles as growth engine; Strava-style discoverability for non-fitness is empty
  3. 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
  4. 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)
  5. 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 pagestatus.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 ceilingworker/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
  • Mascot (Kancil) sprite sheet — 8 poses, reference-locked via nano_banana_2 (MEMORY feedback_mascot_reference_lock.md)
  • 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

  1. 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)
  2. 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.
  3. "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
  4. 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
  5. "Smile and Dial Thursdays" — 8 customer WA-calls/week minimum until $10k MRR; AI does the scheduling, human (me) does the calls
  6. 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
  7. 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"
  8. 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:

  1. 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.
  2. 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.
  3. 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.

AI ASSISTANT

Ask AI to research, improve, or generate content.

Try: "Research competitors for this niche"

Actions