How to define and measure your product goals — from a feature-level OKR in the PRD to a dashboard your team actually reads. Companion material for the Pajar (Pagi Belajar) session by Yuniar Fajar.
Cara mendefinisikan dan mengukur goal produk — dari OKR level fitur di PRD sampai dashboard yang beneran dibaca tim. Materi pendamping sesi Pajar (Pagi Belajar) oleh Yuniar Fajar.
And the room goes quiet — because the OKR in the PRD was written to satisfy the template, not to actually be tracked.
Dan ruangan mendadak sunyi — karena OKR di PRD ditulis buat memenuhi template, bukan buat beneran ditracking.
Sound familiar? A PRD with an OKR section, filled in — but nobody could say, three months later, whether the number actually moved.
Kedengaran familiar? PRD dengan bagian OKR yang keisi — tapi tiga bulan kemudian gak ada yang bisa jawab, angkanya gerak atau nggak.
The feature idles in place — no way to tell if it actually solves the user's problem.
Fitur jalan di tempat — gak ada cara tau ini beneran solve problem user atau nggak.
The next iteration stalls — too little data insight to decide what comes next.
Iterasi berikutnya buntu — minim data insight buat mutusin next step.
Engineering & design run below their potential — the success metric stays fuzzy.
Effort tim engineering & design jadi kurang optimal — arah success metric-nya abu-abu.
Why a PRD should start with the problem chain, not the feature list.
Kenapa PRD harus mulai dari rantai masalah, bukan daftar fitur.
Leading vs lagging metrics, and why every success metric needs a guardrail.
Leading vs lagging metric, dan kenapa tiap success metric butuh guardrail.
The events & properties that must be defined before development starts.
Event & properties yang harus didefinisikan sebelum development mulai.
From goal to dashboard to decision — and how to analyze what you see.
Dari goal sampai dashboard sampai keputusan — dan cara analisa yang terlihat.
Start from the chain: the user's problem, the outcome we expect, the product goal, the metric, and the target.
Mulai dari rantai ini: masalah user, outcome yang diharapkan, product goal, metric, dan target.
Users often stall midway through the admission process.
User sering berhenti di tengah proses admission.
More prospective students actually finish admission.
Lebih banyak calon siswa yang beneran menyelesaikan admission.
Increase admission completion.
Meningkatkan completion admission.
Admission Completion Rate
62% → 75%
This chain is what belongs at the top of the PRD — before a single feature is named.
Rantai ini yang seharusnya ada di paling atas PRD — sebelum satu fitur pun disebut.
The Objective states the direction. Each Key Result is a number proving that direction is real — never a task disguised as a metric.
Objective menyatakan arah. Tiap Key Result adalah angka yang membuktikan arah itu nyata — bukan task yang menyamar jadi metric.
"Release admission revamp." Shipping it proves nothing about whether it worked.
"Release admission revamp." Rilisnya doang gak membuktikan apa-apa soal berhasil atau nggak.
"Completion rate ≥ 75%." A number that only moves if the problem is actually solved.
"Completion rate ≥ 75%." Angka yang cuma gerak kalau masalahnya beneran keselesein.
Make admission easier to complete.
Bikin admission lebih gampang diselesaikan.
Completion rate ≥ 75% (baseline 62%).
Completion rate ≥ 75% (baseline 62%).
Median completion time < 10 minutes.
Median waktu penyelesaian < 10 menit.
Drop-off at the payment step < 15%.
Drop-off di step pembayaran < 15%.
Drop this straight into the PRD's Success Metric section.
Tempel langsung ke bagian Success Metric di PRD.
| Objective | Key Result | Metric | Baseline | Target | Data Source | Owner | Objective | Key Result | Metric | Baseline | Target | Data Source | Owner |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Make admission easier to complete | Completion ≥75%, median time <10min, payment drop-off <15% | admission_completion_rate |
62% | 75% | App event log | PM + Data | |||||||
| Bikin admission lebih gampang diselesaikan | Completion ≥75%, median waktu <10menit, drop-off payment <15% | admission_completion_rate |
62% | 75% | App event log | PM + Data | |||||||
| ___ | ___ | ___ | ___ | ___ | ___ | ___ |
Baseline AND target are both mandatory — without either, "up 20%" doesn't mean anything.
Baseline DAN target wajib diisi dua-duanya — tanpa itu, "naik 20%" gak ada artinya.
It sits on a ladder — a raw click at the bottom, a business number at the top. Every layer should trace up to the one above it.
Dia duduk di sebuah tangga — klik mentah di paling bawah, angka bisnis di paling atas. Tiap lapis harus bisa ditarik naik ke lapis di atasnya.
Revenue, CAGR, EBITDA
Admission Completion Rate, transaction success rate, payment retention rateAdmission Completion Rate, transaction success rate, payment retention rate
Complete onboarding, complete transaction, complete quizComplete onboarding, complete transaction, complete quiz
Click, page view — start_quiz, click_bannerClick, page view — start_quiz, click_banner
This is the same ladder as our admission chain — one level up, one level down.
Ini tangga yang sama dengan rantai admission kita — satu lapis naik, satu lapis turun.
Management-level OKR eventually ladders down to $ — tracked Red/Green.
OKR di level management ujungnya ke $ — ditracking Red/Green.
CAC – new
Customer Acquisition CostCustomer Acquisition Cost
CAC × frequencyfrekuensi → $$$
The final target might be retention, months away. Leading metrics tell you the direction right now.
Target akhirnya mungkin retention, yang baru kelihatan berbulan-bulan lagi. Leading metric kasih tau arahnya sekarang.
Visible within days — tells you early whether you're on track.
Kelihatan dalam hitungan hari — kasih tau lebih awal apakah kamu on track.
Only visible after weeks or months — confirms whether it actually mattered.
Baru kelihatan setelah berminggu-minggu atau berbulan-bulan — konfirmasi apakah beneran berdampak.
Median admission completion time, 20 minutes → <10 minutes. Great — but speed alone can hide a shortcut.
Median admission completion time, 20 menit → <10 menit. Bagus — tapi kecepatan doang bisa nyembunyiin jalan pintas.
"Completion Time ↓ = success." Faster could just mean people are skipping required fields.
"Completion Time ↓ = sukses." Lebih cepat bisa aja cuma berarti orang skip field yang wajib diisi.
Completion Time ↓ while Data Completeness Rate ≥ 95%.
Completion Time ↓ selama Data Completeness Rate ≥ 95%.
A raw number. Sounds impressive, tells you nothing about the base it's measured against.
Angka mentah. Kedengaran keren, tapi gak ngasih tau apa-apa soal basisnya.
A count divided by a denominator that matters — tells you if it actually worked.
Count dibagi denominator yang relevan — ngasih tau beneran berhasil atau nggak.
Total page view · report viewed · total users ≫ active users.
Total page view · report viewed · total users ≫ active users.
A metric doesn't appear on its own — it's calculated from events that must be deliberately logged. Work this out before development starts, not after a dashboard is suddenly requested.
Metric gak muncul sendiri — dia dihitung dari event yang harus sengaja dilog. Turunkan dulu sebelum development mulai, bukan setelah dashboard mendadak diminta.
The final number on the dashboard.
Angka final di dashboard.
admission_completion_rate
How to slice it — what the insight will be used for.
Cara memecahnya — buat apa insight-nya dipakai.
program, device, channelprogram, device, channel
The user action the system must log.
Aksi user yang wajib dilog sistem.
admission_started, admission_completed
The detail riding along with every event.
Detail yang nempel di tiap event.
user_id, program_id, deviceuser_id, program_id, device
Send this to the data/eng team before development starts — every step of the admission funnel, defined upfront.
Kirim ke tim data/eng sebelum development mulai — tiap step funnel admission, didefinisikan di depan.
| Event | Trigger | Trigger | Properties | Priority | Owner |
|---|---|---|---|---|---|
admission_started |
User opens the admission formUser buka form admission | user_id, organization_id, program_id, source |
must | FE | |
admission_step_completed |
Each form step is completedTiap step form selesai diisi | user_id, step_name, timestamp |
must | FE | |
payment_started |
User reaches the payment stepUser sampai di step pembayaran | user_id, program_id, amount, device |
must | FE + BE | |
payment_success |
Payment is confirmedPembayaran terkonfirmasi | user_id, program_id, amount, timestamp |
must | BE | |
admission_completed |
The full admission flow is finishedSeluruh alur admission selesai | user_id, program_id, completed_at |
must | BE | |
| ___ | ___ | ___ | nice | ___ |
Analytics isn't something you think about after release.
Analytics bukan sesuatu yang dipikirkan setelah release.
Illustrative numbers for teaching purposes — not this feature's real data.
Angka ilustratif buat contoh belajar — bukan data asli fitur ini.
The full chain, worked through with a different example: activation.
Rantai lengkapnya, ditarik pakai contoh lain: activation.
Increase activation
Meningkatkan activation
Activation Rate
Activated Users / New Users
signup → onboarding_complete → first_action
Weekly cohort
Cohort mingguan
Iterate / maintain / rollback
Getting the metric right is half the job. The other half is reading it well enough to actually act on it.
Nentuin metric yang bener itu setengah pekerjaan. Setengahnya lagi adalah baca angkanya cukup baik buat beneran bisa ditindaklanjuti.
One clear number, one clear target — this week's completion rate.
Satu angka jelas, satu target jelas — completion rate minggu ini.
Trend over time — is the metric moving in the right direction.
Trend dari waktu ke waktu — metric-nya bergerak ke arah yang benar atau nggak.
Compare categories or segments side by side.
Bandingin kategori atau segmen berdampingan.
Where users drop off, stage by stage.
Di mana user drop-off, tahap demi tahap.
How behavior changes by signup week.
Gimana perilaku berubah per minggu signup.
Breakdown by device, channel, or role.
Breakdown per device, channel, atau role.
Don't cram every metric into one view — each dashboard should answer one specific product question.
Jangan jejelin semua metric ke satu tampilan — tiap dashboard harusnya jawab satu pertanyaan produk spesifik.
North Star metric on top, supporting input metrics below — not a flat table of numbers.
North Star metric di atas, input metric pendukung di bawah — bukan tabel angka rata.
A bare number isn't actionable — every key chart needs something to compare it to.
Angka polos gak actionable — tiap chart utama butuh pembanding.
Total registered users is vanity. Weekly active users doing the target action is actionable.
Total user terdaftar itu vanity. Weekly active yang beneran ngelakuin aksi target itu actionable.
Before concluding "why did it drop," check that events aren't being dropped and timezones are consistent.
Sebelum nyimpulin "kenapa turun", cek dulu event gak ke-drop dan timezone konsisten.
A stakeholder update should be one distilled slide — not the raw dashboard dumped wholesale.
Update ke stakeholder harusnya satu slide ringkas — bukan dump seluruh dashboard mentah.
Not just "what are we building" — but "what are we trying to change, and how will we know it worked."
Bukan cuma "apa yang kita bangun" — tapi "apa yang mau kita ubah, dan gimana kita tau itu berhasil."
Problem → Outcome → Goal → Metric → Target, before a single feature is named.
Problem → Outcome → Goal → Metric → Target, sebelum satu fitur pun disebut.
"Release X" isn't a Key Result. A number proving the problem is solved, is.
"Rilis X" bukan Key Result. Angka yang buktiin masalahnya keselesein, itu baru.
Never chase a success metric alone — name what it must not break.
Jangan kejar success metric sendirian — sebutkan apa yang gak boleh ikut rusak.
Turn the metric into events before development starts, not after launch.
Turunin metric jadi event sebelum development mulai, bukan setelah launching.
The point isn't to make everyone write OKR — it's for every Product/Tribe to walk into Raker with the same shape of thinking.
Intinya bukan bikin semua orang nulis OKR — tapi tiap Product/Tribe datang ke Raker dengan bentuk pemikiran yang sama.
Bring one feature you're currently working on to the session — we'll fill in the templates together.
Bawa satu fitur yang lagi kamu kerjakan ke sesi ini — kita isi templatenya bareng-bareng.