Masalah yang Dihadapi Klien

Situasi Toko Berlian “Permata Nusantara”

Toko berlian dengan 15 cabang di Indonesia mengalami masalah serius 6 bulan terakhir:

Problem 1: Penjualan Stagnan

  • Omzet flat, tidak naik meski sudah promo gencar
  • Target sales tidak tercapai 3 bulan berturut-turut

Problem 2: Margin Keuntungan Turun Drastis

  • Dari 30% turun ke 18% (drop 12%)
  • Meski jual banyak, untung makin tipis

Problem 3: Stok Numpuk

  • Berlian mahal (>150 juta) tidak laku, modal tertahan
  • Berlian murah (<15 juta) sering habis, kehilangan sales

Problem 4: Kalah Kompetisi

  • Marketplace online lebih murah
  • Customer bandingkan harga lalu pindah ke online

Pertanyaan Owner

“Kenapa penjualan mandek? Harga kita sudah benar belum? Di range harga berapa kita harus fokus? Apakah ada kesalahan pricing yang bikin rugi?”

Tujuan Analisis

Menggunakan data 53,940 berlian untuk: - Cari pola distribusi harga → temukan sweet spot - Identifikasi masalah pricing → deteksi kesalahan harga - Berikan solusi konkret → action plan langsung jalan


Data yang Dianalisis

Variabel Detail
Harga (Price) Termurah: Rp4.890.000 | Termahal: Rp282.345.000
Berat (Carat) 0.2 - 5.01 carat (rata-rata: 0.8 carat)
Jumlah Data 53,940 berlian
Korelasi Harga-Berat 0.922 → Hubungan SANGAT KUAT

Key Insight Awal:

Korelasi 0.922 artinya berat berlian sangat mempengaruhi harga. Tapi range harga lebar (Rp 4.9 juta - Rp 282 juta) menunjukkan ada faktor lain yang perlu digali.


Analisis 1: HISTOGRAM — Dimana Mayoritas Penjualan?

Grafik Distribusi Harga

median_val <- median(diamonds$price_idr)
mean_val <- mean(diamonds$price_idr)

ggplot(diamonds, aes(x = price_idr)) +
  geom_histogram(bins = 50, fill = "#1976D2", color = "white", alpha = 0.8) +
  geom_vline(xintercept = median_val, color = "#D32F2F", linetype = "dashed", size = 1.2) +
  geom_vline(xintercept = mean_val, color = "#F57C00", linetype = "dashed", size = 1.2) +
  annotate("text", x = median_val + 20000000, y = 5000, 
           label = paste0("Median\nRp", format(round(median_val/1000000), big.mark="."), " Jt"), 
           color = "#D32F2F", fontface = "bold", size = 5) +
  annotate("text", x = mean_val + 20000000, y = 4500, 
           label = paste0("Rata-rata\nRp", format(round(mean_val/1000000), big.mark="."), " Jt"), 
           color = "#F57C00", fontface = "bold", size = 5) +
  scale_x_continuous(
    labels = function(x) paste0("Rp", format(x/1000000, big.mark=".", decimal.mark=","), " Jt"),
    breaks = seq(0, 300000000, 37500000)
  ) +
  scale_y_continuous(labels = scales::comma) +
  labs(
    title = "Distribusi Harga: Mayoritas Berlian di Segment Budget",
    subtitle = "Grafik miring kanan → Volume tinggi di harga rendah, ekor panjang di harga tinggi",
    x = "Harga (Rupiah)",
    y = "Jumlah Berlian"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold", size = 17),
    plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
    axis.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

Temuan Penting

Pola: Grafik Miring Kanan

Artinya: - Puncak di kiri (harga murah) → Mayoritas berlian murah - Ekor panjang ke kanan (harga mahal) → Sedikit berlian mahal

Gap Median vs Rata-rata: - Median: Rp 36 juta - Rata-rata: Rp 59 juta - Selisih: Rp 23 juta

Kesimpulan: Jangan pakai rata-rata untuk patokan! Pakai median karena lebih real.

Distribusi per Segment

segment Jumlah Persentase Harga Rata-rata
Budget (<15 Juta) 14499 26.9% Rp11 Jt
Menengah (15-75 Juta) 24714 45.8% Rp39 Jt
Premium (75-150 Juta) 9504 17.6% Rp104 Jt
Luxury (>150 Juta) 5223 9.7% Rp205 Jt

Dead Zone Terdeteksi: Rp 75-150 Juta

Volume drop drastis di segment ini. Konsumen cenderung: - Skip dari menengah (Rp 75 juta) langsung ke luxury (>Rp 150 juta), ATAU - Turun dari Rp 75 juta ke Rp 45 juta

Akar Masalah & Solusi

Masalah:

  1. Stok salah distribusi → Terlalu banyak di dead zone
  2. Sales fokus rata-rata → Miss sweet spot di <Rp 37 juta
  3. Margin tipis di budget → Volume tinggi tapi untung kecil

Solusi:

1. Rebalancing Stok: - 60-70% stok di Rp 7.5-37 juta (laku cepat) - 20-25% di Rp 37-75 juta (margin bagus) - 5-10% di Rp 75-150 juta (hati-hati!) - <5% di >Rp 150 juta (showcase, pre-order)

2. Clearance Dead Zone: - Berlian Rp 75-150 juta >90 hari → Diskon 15-20% - Bundle dengan garansi/servis gratis - Trade-in program

3. Strategi Harga Beda: - Budget (<15 jt): Kompetitif, fokus volume - Menengah (15-75 jt): Value add (sertifikat, garansi) - Premium (>75 jt): Konsultasi, customization


Analisis 2: DENSITY PLOT — Sweet Spot Pasar

Grafik Smooth Distribution

ggplot(diamonds, aes(x = price_idr)) +
  geom_density(fill = "#1976D2", alpha = 0.6, color = "#0D47A1", size = 1.2) +
  geom_vline(xintercept = 15000000, color = "#4CAF50", linetype = "dashed", size = 1) +
  geom_vline(xintercept = 75000000, color = "#FF9800", linetype = "dashed", size = 1) +
  geom_vline(xintercept = 150000000, color = "#D32F2F", linetype = "dashed", size = 1) +
  annotate("rect", xmin = 0, xmax = 15000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#4CAF50") +
  annotate("rect", xmin = 15000000, xmax = 75000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#FF9800") +
  annotate("rect", xmin = 75000000, xmax = 150000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#FFC107") +
  annotate("rect", xmin = 150000000, xmax = 300000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#D32F2F") +
  annotate("text", x = 7500000, y = 3.5e-08, label = "BUDGET", color = "#2E7D32", fontface = "bold", size = 5) +
  annotate("text", x = 45000000, y = 3.5e-08, label = "MENENGAH", color = "#E65100", fontface = "bold", size = 5) +
  annotate("text", x = 112500000, y = 3.5e-08, label = "PREMIUM", color = "#F57F17", fontface = "bold", size = 5) +
  annotate("text", x = 210000000, y = 3.5e-08, label = "LUXURY", color = "#C62828", fontface = "bold", size = 5) +
  scale_x_continuous(
    labels = function(x) paste0("Rp", format(x/1000000, big.mark="."), " Jt"),
    breaks = seq(0, 300000000, 37500000)
  ) +
  labs(
    title = "Density Plot: Identifikasi Sweet Spot Pasar",
    subtitle = "Area di bawah kurva = proporsi pasar | Puncak = harga paling banyak terjual",
    x = "Harga (Rupiah)",
    y = "Density (Probabilitas)"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold", size = 17),
    plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
    axis.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

Temuan Penting

Sweet Spot: Rp 11-15 Juta

Puncak kurva ada di sini → Harga paling banyak terjual.

Distribusi Pasar:

segment Jumlah Persentase Harga Rata-rata
Budget (<15 Juta) 14499 26.9% Rp11 Jt
Menengah (15-75 Juta) 24714 45.8% Rp39 Jt
Premium (75-150 Juta) 9504 17.6% Rp104 Jt
Luxury (>150 Juta) 5223 9.7% Rp205 Jt

Insight Krusial:

  • Segment Menengah (15-75 jt) = 45.8%SWEET SPOT!
  • Margin bagus, velocity oke → Area paling menguntungkan
  • Tapi: Banyak toko under-penetrated di sini

Kurva Smooth = Single Market

Tidak ada dua puncak → Artinya satu pasar unified, bukan terpisah (retail vs wholesale).

Solusi Berdasarkan Density

Strategi 60-30-10:

Alokasi Segment Alasan
60% Budget-Menengah (<75 jt) Volume tinggi, cepat laku
30% Menengah (15-45 jt) SWEET SPOT margin terbaik
10% Premium-Luxury (>75 jt) Showcase, konsinyasi

Dynamic Pricing:

  • High density (Rp 7.5-22 jt): Match marketplace, kompetitif
  • Medium density (Rp 22-75 jt): Value-add +20-30% margin
  • Low density (>Rp 75 jt): Konsultasi, nego, cicilan 0%

Marketing Focus:

  • Budget: Iklan online, marketplace, flash sale
  • Menengah: Edukasi in-store, sertifikat, garansi
  • Premium/Luxury: Private viewing, VIP service

Analisis 3: BOX PLOT — Deteksi Masalah Pricing

Grafik Price per Carat by Cut

medians_cut <- diamonds %>%
  group_by(cut) %>%
  summarise(med = median(price_per_carat_idr))

ggplot(diamonds, aes(x = cut, y = price_per_carat_idr, fill = cut)) +
  geom_boxplot(alpha = 0.7, outlier.alpha = 0.3, outlier.size = 1) +
  stat_summary(fun = median, geom = "point", shape = 23, size = 3, fill = "white", color = "black") +
  scale_fill_manual(values = c(
    "Fair" = "#BDBDBD",
    "Good" = "#9E9E9E",
    "Very Good" = "#FF9800",
    "Premium" = "#1976D2",
    "Ideal" = "#2E7D32"
  )) +
  scale_y_continuous(
    labels = function(x) paste0("Rp", format(x/1000000, big.mark="."), " Jt"),
    breaks = seq(0, 300000000, 37500000)
  ) +
  labs(
    title = "TEMUAN KRUSIAL: Premium Lebih Mahal dari Ideal!",
    subtitle = "Box = 50% data tengah | Garis tengah = Median | Titik = Outlier",
    x = "Kualitas Potongan",
    y = "Harga per Carat (Rupiah)"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold", size = 17, color = "#D32F2F"),
    plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
    axis.title = element_text(face = "bold"),
    legend.position = "none",
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank()
  )

MASALAH KRITIS TERDETEKSI!

PREMIUM PARADOX:

cut Median (Rp/carat)
Premium Rp56 Jt
Good Rp54 Jt
Very Good Rp54 Jt
Fair Rp52 Jt
Ideal Rp50 Jt

Harusnya:

Ideal > Premium > Very Good > Good > Fair

Kenyataannya:

Premium (Rp 56.4 jt) > Ideal (Rp 49.6 jt)

Premium lebih mahal Rp 6.8 juta per carat dari Ideal!

Kenapa Ini Masalah Besar?

Secara objektif: - Ideal = kualitas potongan terbaik - Premium = di bawah Ideal

Yang terjadi: - Customer educated tahu Ideal lebih bagus - Lihat Premium lebih mahal → AVOID! - Premium stuck di gudang → Modal tertahan

Hasil: - Terpaksa diskon untuk jual → Margin hancur - INI KENAPA MARGIN TURUN 12%!

Solusi URGENT

Action Immediate (1-2 Minggu):

Reprice Premium Cut:

Cut Sekarang (SALAH) Target (BENAR)
Ideal Rp 49.6 jt/carat Rp 49.6 jt (benchmark)
Premium Rp 56.4 jt ❌ Rp 46 jt (-7%) ✅
Very Good Rp 54 jt Rp 42 jt (-15%)

Expected Result: - Premium turnover naik 30-40% - Value ladder jelas: Fair < Good < VG < Premium < Ideal - Total margin naik meski per unit turun sedikit

Outlier Management:

Untuk berlian di atas Q3 (25% termahal):

Segment A — Legitimate Premium: - Ideal/Premium + berat besar + warna D-E + clarity IF/VVS - Keep pricing → Memang exceptional - Strategy: Konsinyasi, pre-order, trunk show

Segment B — Overpriced Fair/Good: - Fair/Good tapi harga tinggi - Re-audit: Kenapa mahal? Berat besar? Warna bagus? - Action: Jika ga justified → Diskon 15-20%


Analisis 4: VIOLIN PLOT — Deep Dive Distribution

Grafik Distribution Detail

ggplot(diamonds, aes(x = cut, y = price_idr, fill = cut)) +
  geom_violin(alpha = 0.7, draw_quantiles = c(0.25, 0.5, 0.75), scale = "width") +
  geom_boxplot(width = 0.15, alpha = 0.5, outlier.shape = NA) +
  scale_fill_manual(values = c(
    "Fair" = "#757575",
    "Good" = "#9E9E9E",
    "Very Good" = "#FF9800",
    "Premium" = "#1976D2",
    "Ideal" = "#2E7D32"
  )) +
  scale_y_continuous(
    labels = function(x) paste0("Rp", format(x/1000000, big.mark="."), " Jt"),
    breaks = seq(0, 300000000, 37500000)
  ) +
  coord_cartesian(ylim = c(0, 300000000)) +
  labs(
    title = "Violin Plot: Distribusi Harga by Cut Quality",
    subtitle = "Lebar violin = banyaknya berlian di harga itu | 3 garis = Q1, Median, Q3",
    x = "Kualitas Potongan",
    y = "Harga (Rupiah)"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold", size = 17),
    plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
    axis.title = element_text(face = "bold"),
    legend.position = "none",
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank()
  )

Temuan Penting

Shape Comparison:

Very Good (Orange): - Violin paling lebar di Rp 30-75 juta - Sweet spot VG ada di sini - Volume tinggi, distribusi merata

Premium (Biru): - Lebar merata dari Rp 7.5 juta - Rp 180 juta - Lack of focus! Ga ada positioning jelas - Memperkuat Premium Paradox

Ideal (Hijau): - Sangat lebar di bawah Rp 30 juta - Volume play → Ideal populer di semua segment - Kompetisi ketat → Harga tertekan

Key Insight:

Very Good = Hidden Champion! - Dominasi di Rp 45-75 juta - Area terbaik untuk margin + volume - Under-utilized oleh banyak toko

Solusi Berdasarkan Violin

Capitalize on Very Good:

Campaign “VG Sweet Spot”: - Tagline: “90% kecantikan Ideal, 70% harganya” - Target: Rp 45-75 juta - Bundle: VG + warna G + clarity VS2 = Paket Perfect Rp 52.5 juta

Action: - Tambah stok VG 40% di range Rp 45-75 juta - Train sales: Value prop VG yang clear - Display showcase VG di toko

Segmentasi Ideal:

3 Tier Berbeda:

Tier Range Product Channel
Entry Rp 7.5-30 jt 0.3-0.5 carat, warna I-J Online, marketplace
Classic Rp 37-105 jt 0.5-1.0 carat, warna G-H In-store, konsultasi
Signature Rp 105-225 jt 1.0-2.0 carat, warna D-F VIP, private viewing

Benefit: - Clear messaging per tier - Tidak kanibalisasi antar tier - Maksimalkan volume DAN margin

Eliminate Outliers Fair/Good:

Audit berlian Fair/Good >Rp 75 juta: - Recertify → Mungkin seharusnya Very Good? - Recut → Upgrade kualitas potongan - Markdown 25-30% → Quick liquidation


Laporan dibuat: 18-02-2026