[{"data":1,"prerenderedAt":561},["ShallowReactive",2],{"tech-attendance-story-driven-tracking":3},{"id":4,"title":5,"author":6,"body":7,"category":544,"date":545,"description":546,"extension":547,"image":548,"meta":549,"navigation":273,"path":551,"readingTime":552,"seo":553,"stem":554,"tags":555,"__hash__":560},"tech\u002Ftech\u002Fattendance-story-driven-tracking.md","Story-Driven Attendance Tracking: How I Built a Smart System for My Engineering Team","Zainul Fanani",{"type":8,"value":9,"toc":533},"minimark",[10,14,21,24,29,32,35,38,44,60,67,69,73,76,79,85,103,109,120,123,125,129,132,138,141,143,147,150,238,244,246,250,253,328,331,337,339,343,349,352,363,366,380,387,389,393,396,402,408,414,420,422,426,429,434,437,440,442,446,449,461,464,467,493,496,516,518,523,529],[11,12,5],"h1",{"id":13},"story-driven-attendance-tracking-how-i-built-a-smart-system-for-my-engineering-team",[15,16,17],"p",{},[18,19,20],"em",{},"Tim remote? Tim workshop? Nggak ngaruh. Kalau sistem absensimu masih \"tolong isi buku di meja,\" kamu hidup di 2015.",[22,23],"hr",{},[25,26,28],"h2",{"id":27},"masalah-yang-jarang-orang-bahas","Masalah yang Jarang Orang Bahas",[15,30,31],{},"Saya manage beberapa tim engineering di Balikpapan, Jakarta, Sidoarjo. Tim tersebar di beberapa lokasi, engineer yang bolak-balik antara workshop dan site. Tracking absensi? Jujur — berantakan.",[15,33,34],{},"Karyawan sering lupa catat. Kadang buku absensi hilang. Beberapa kali ada yang klaim sudah masuk jam 7 padahal baru nyampe workshop jam 9. HRD capek nge-chase. Saya juga capek nge-chase HRD.",[15,36,37],{},"Fingerprint? Mahal. WiFi-based tracking? Nggak akurat di area workshop yang luas. Selfie attendance? Gampang dicurangin.",[15,39,40],{},[41,42,43],"strong",{},"Saya butuh sesuatu yang:",[45,46,47,51,54,57],"ul",{},[48,49,50],"li",{},"✅ Terjangkau (realita budget startup)",[48,52,53],{},"✅ Akurat (nggak ada clock-in palsu)",[48,55,56],{},"✅ Otomatis (saya nggak punya waktu nge-babysit)",[48,58,59],{},"✅ Mobile (engineer jarang di depan meja)",[15,61,62],{},[63,64],"img",{"alt":65,"src":66},"Engineering Workshop Attendance","\u002Fimages\u002Fposts\u002Fattendance-gps-screen.jpg",[22,68],{},[25,70,72],{"id":71},"solusinya-gps-proximity-otak-openclaw","Solusinya: GPS Proximity + Otak OpenClaw",[15,74,75],{},"Ceritanya gini — saya punya app Android yang tiap karyawan install di HP mereka. Waktu mereka mau masuk, app otomatis capture GPS dan cek apakah mereka dalam radius 100 meter dari workshop. Kalau iya, clock-in berhasil. Kalau nggak, app kasih warning.",[15,77,78],{},"Data dari app itu masuk ke API. Nah, di sinilah menariknya.",[15,80,81,84],{},[41,82,83],{},"OpenClaw — yang saya pakai buat jalankan seluruh operasi AI saya — jadi otaknya."," Tiap pagi jam 08:15 WITA, secara otomatis:",[86,87,88,91,94,97,100],"ol",{},[48,89,90],{},"Nge-pull semua data absensi dari API",[48,92,93],{},"Hitung siapa yang telat (lebih dari jam 08:00)",[48,95,96],{},"Push ke Google Sheets (biar HRD bisa buka dan review)",[48,98,99],{},"Kirim laporan Telegram langsung ke saya",[48,101,102],{},"Track pola dari waktu ke waktu",[15,104,105],{},[63,106],{"alt":107,"src":108},"AI Automation Workflow","\u002Fimages\u002Fposts\u002Fattendance-workflow.jpg",[110,111,116],"pre",{"className":112,"code":114,"language":115},[113],"language-text","┌─────────────────────────────────────────────┐\n│  📱 HP ENGINEER                             │\n│  ├── GPS Module                             │\n│  ├── Proximity Check (radius 100m)          │\n│  └── Clock In → API                         │\n└──────────────────┬──────────────────────────┘\n                   │\n                   ▼\n┌─────────────────────────────────────────────┐\n│  ☁️  absensi.uno-st.com                     │\n│  └── Simpan data clock-in\u002Fout               │\n└──────────────────┬──────────────────────────┘\n                   │\n                   ▼\n┌─────────────────────────────────────────────┐\n│  🤖  OPENCLAW BRAIN (tiap 08:15 WITA)      │\n│  ├── Fetch data dari API                    │\n│  ├── Deteksi siapa yang telat               │\n│  ├── Push ke Google Sheets                  │\n│  └── Kirim laporan Telegram ke Manager      │\n└─────────────────────────────────────────────┘\n","text",[117,118,114],"code",{"__ignoreMap":119},"",[15,121,122],{},"Tanpa intervensi manusia. Tanpa nge-chase. Tanpa spreadsheet yang diisi manual.",[22,124],{},[25,126,128],{"id":127},"kayak-apa-di-praktiknya","Kayak Apa di Praktiknya",[15,130,131],{},"Ini contoh laporan pagi yang muncul di Telegram saya:",[110,133,136],{"className":134,"code":135,"language":115},[113],"📢 Absensi Karyawan — PT UNO SOLUSI TEKNIK\n📅 Sabtu, 4 April 2026\n\n👤 ROBERT CHRISTIANTO W.\n⏱ Masuk  : 08:39 ⚠️ (telat)\n⏱ Pulang : 18:15\n\n👤 ANDI SETIAWAN\n⏱ Masuk  : 07:55 ✅\n⏱ Pulang : -\n\n━━━━━━━━━━━━━━━\n📍 Sumber: absensi.uno-st.com\n",[117,137,135],{"__ignoreMap":119},[15,139,140],{},"Jam 08:20 pagi, saya udah tau siapa yang telat. Bukan baru dapet complain jam 10 bahwa \"Pak, Robert bilang dia udah masuk tapi nggak ada di absensi.\"",[22,142],{},[25,144,146],{"id":145},"dampaknya-angka-real","Dampaknya (Angka Real)",[15,148,149],{},"Setelah sistem ini jalan beberapa bulan:",[151,152,153,169],"table",{},[154,155,156],"thead",{},[157,158,159,163,166],"tr",{},[160,161,162],"th",{},"Metrik",[160,164,165],{},"Sebelum",[160,167,168],{},"Sesudah",[170,171,172,186,199,212,225],"tbody",{},[157,173,174,180,183],{},[175,176,177],"td",{},[41,178,179],{},"Cara Tracking",[175,181,182],{},"Buku manual",[175,184,185],{},"GPS + API",[157,187,188,193,196],{},[175,189,190],{},[41,191,192],{},"Laporan telat",[175,194,195],{},"Tahu jam 10",[175,197,198],{},"Tahu jam 08:20",[157,200,201,206,209],{},[175,202,203],{},[41,204,205],{},"Waktu HRD",[175,207,208],{},"~2 jam\u002Fhari nge-chase",[175,210,211],{},"\u003C15 menit review",[157,213,214,219,222],{},[175,215,216],{},[41,217,218],{},"Akurasi",[175,220,221],{},"~75%",[175,223,224],{},"~99%",[157,226,227,232,235],{},[175,228,229],{},[41,230,231],{},"Biaya setup",[175,233,234],{},"Fingerprint: Rp 15jt",[175,236,237],{},"Rp 3jt (sistem ini)",[15,239,240,243],{},[41,241,242],{},"Saving per tahun:"," sekitar Rp 12 juta cuma dari hardware dan waktu HRD.",[22,245],{},[25,247,249],{"id":248},"membangun-otaknya-cara-openclaw-handle-ini","Membangun Otaknya: Cara OpenClaw Handle Ini",[15,251,252],{},"Ini script Python yang menjalankan keajaiban. Lebih simpel dari yang kamu kira:",[110,254,258],{"className":255,"code":256,"language":257,"meta":119,"style":119},"language-python shiki shiki-themes github-light github-dark","API_ENDPOINT = \"https:\u002F\u002Fabsensi.uno-st.com\u002Fapisiapaabsen\"\n\ndef fetch_attendance(date_str):\n    response = requests.get(API_ENDPOINT, params={'tanggal': date_str})\n    return response.json()\n\ndef is_late(check_in_time):\n    if not check_in_time or check_in_time == \"-\":\n        return False\n    hour, minute, second = map(int, check_in_time.split(':'))\n    return hour > 8 or (hour == 8 and minute > 0)\n","python",[117,259,260,268,275,281,287,293,298,304,310,316,322],{"__ignoreMap":119},[261,262,265],"span",{"class":263,"line":264},"line",1,[261,266,267],{},"API_ENDPOINT = \"https:\u002F\u002Fabsensi.uno-st.com\u002Fapisiapaabsen\"\n",[261,269,271],{"class":263,"line":270},2,[261,272,274],{"emptyLinePlaceholder":273},true,"\n",[261,276,278],{"class":263,"line":277},3,[261,279,280],{},"def fetch_attendance(date_str):\n",[261,282,284],{"class":263,"line":283},4,[261,285,286],{},"    response = requests.get(API_ENDPOINT, params={'tanggal': date_str})\n",[261,288,290],{"class":263,"line":289},5,[261,291,292],{},"    return response.json()\n",[261,294,296],{"class":263,"line":295},6,[261,297,274],{"emptyLinePlaceholder":273},[261,299,301],{"class":263,"line":300},7,[261,302,303],{},"def is_late(check_in_time):\n",[261,305,307],{"class":263,"line":306},8,[261,308,309],{},"    if not check_in_time or check_in_time == \"-\":\n",[261,311,313],{"class":263,"line":312},9,[261,314,315],{},"        return False\n",[261,317,319],{"class":263,"line":318},10,[261,320,321],{},"    hour, minute, second = map(int, check_in_time.split(':'))\n",[261,323,325],{"class":263,"line":324},11,[261,326,327],{},"    return hour > 8 or (hour == 8 and minute > 0)\n",[15,329,330],{},"Lalu OpenClaw menjalankannya lewat cron schedule tiap pagi weekday. Cron job-nya diset sekali, lupa-lupain, dan tinggal terima hasilnya.",[15,332,333,336],{},[41,334,335],{},"Di setup saya, saya pakai Gog CLI buat push data ke Google Sheets"," — jadi tim HR bisa buka di browser tanpa software khusus. Spreadsheet yang mereka udah biasa pakai. Nggak perlu training.",[22,338],{},[25,340,342],{"id":341},"sisi-manusianya-bikin-absensi-jadi-positif","Sisi Manusianya: Bikin Absensi Jadi Positif",[15,344,345,346],{},"Ini yang saya pelajari: ",[41,347,348],{},"tracking absensi nggak harus terasa menghukum.",[15,350,351],{},"Saya bikin sistem poin sederhana di atas data tersebut:",[45,353,354,357,360],{},[48,355,356],{},"Clock-in tepat waktu: +10 poin",[48,358,359],{},"7 hari berturut-turut tepat waktu: +50 bonus poin",[48,361,362],{},"Monthly rate >95%: Employee of the Month",[15,364,365],{},"Poinnya bisa ditukar reward real:",[45,367,368,371,374,377],{},[48,369,370],{},"100 poin → Voucher kopi Rp 25.000",[48,372,373],{},"250 poin → Makan siang gratis dari kantor",[48,375,376],{},"500 poin → Tiket bioskop",[48,378,379],{},"1.000 poin → Bonus Rp 200.000",[15,381,382,383,386],{},"Sekarang engineer beneran ",[18,384,385],{},"mau"," clock-in tepat waktu. Ini bukan soal surveillance — tapi soal mengapresiasi orang yang konsisten hadir.",[22,388],{},[25,390,392],{"id":391},"yang-saya-lakukan-kalau-mulai-dari-nol","Yang Saya Lakukan Kalau Mulai Dari Nol",[15,394,395],{},"Kalau saya mulai dari nol hari ini, ini sarannya:",[15,397,398,401],{},[41,399,400],{},"1. Mulai dari GPS proximity check","\nVerifikasi lokasi ini yang bikin sistem ini bisa dipercaya. Tanpa ini, kamu cuma bikin app lain yang bisa dibuka karyawan dari kasur mereka.",[15,403,404,407],{},[41,405,406],{},"2. Database-nya simpel dulu aja","\nSaya mulai dari Google Sheets aja. Baru pindah ke Supabase kalau udah butuh analitik historis. Jangan over-engineer dari hari pertama.",[15,409,410,413],{},[41,411,412],{},"3. Buat laporan manager otomatis","\nKalau kamu harus cek dashboard manual, udah kalah. Kalau datangnya di Telegram jam 08:20 tiap pagi, nggak ada effort.",[15,415,416,419],{},[41,417,418],{},"4. Tambahin sistem reward dari awal","\nSistem poin ini ngubah cara orang merasakan sistem absensi. Dari \"big brother lagi ngawasin\" jadi \"aku mau pertahankan streak-ku.\"",[22,421],{},[25,423,425],{"id":424},"gambaran-lebih-besar","Gambaran Lebih Besar",[15,427,428],{},"Sistem absensi ini sebetulnya kecil dibanding apa yang lagi saya bangun dengan OpenClaw di seluruh Radian Group. Tapi ini representatif dari filosofi saya:",[15,430,431],{},[41,432,433],{},"Otomatisin hal-hal membosankan biar kamu bisa fokus ke hal yang bermakna.",[15,435,436],{},"Saya nggak mau habisin pagi-pagi buat nge-chase data absensi. Saya mau pakai pagi-pagi buat mastiin project engineering kita on track, klien senang, dan tim berkembang.",[15,438,439],{},"Sistemnya jalan. Tinggal jalan.",[22,441],{},[25,443,445],{"id":444},"mau-coba-juga","Mau Coba Juga?",[15,447,448],{},"Kalau kamu mau lihat versi teknis yang lebih lengkap — termasuk setup cron, SQL schema Supabase, dan kode lengkap — saya udah tulis tutorial step-by-step di GitHub:",[15,450,451,452],{},"📖 ",[41,453,454],{},[455,456,460],"a",{"href":457,"rel":458},"https:\u002F\u002Fgithub.com\u002Ffanani-radian\u002Fopenclaw-sumopod\u002Fblob\u002Fmain\u002Ftutorials\u002Fabsensi-uno-st-openclaw-android-gps.md",[459],"nofollow","Tutorial Lengkap: Sistem Absensi Cerdas dengan OpenClaw + Android GPS",[15,462,463],{},"Kalau kamu punya tim — terutama tim lapangan, workshop, atau tim yang tersebar — dan masih tracking absensi pakai kertas atau spreadsheet manual, pendekatan ini bisa cocok buat kamu.",[15,465,466],{},"Komponen utamanya:",[45,468,469,475,481,487],{},[48,470,471,474],{},[41,472,473],{},"Android app dengan GPS"," (developer mana pun bisa bikin ini)",[48,476,477,480],{},[41,478,479],{},"API sederhana"," (atau bahkan cuma Google Sheet dengan form submission)",[48,482,483,486],{},[41,484,485],{},"OpenClaw"," sebagai otak automasi",[48,488,489,492],{},[41,490,491],{},"Telegram"," buat notifikasi instan",[15,494,495],{},"Kamu nggak perlu software enterprise. Nggak perlu hardware mahal. Yang kamu butuhin adalah definisi masalah yang jelas dan kemauan buat otomatisin hal-hal repetitif.",[497,498,499],"blockquote",{},[15,500,501,502,509,510,515],{},"💡 ",[41,503,504,505],{},"Semua automasi di atas jalan berkat ",[455,506,485],{"href":507,"rel":508},"https:\u002F\u002Fgithub.com\u002Fnicepkg\u002Fopenclaw",[459]," — AI agent framework yang bisa handle cron, script, notifikasi, dan integrasi API dalam satu tempat. Buat yang mau mulai explore, cek ",[455,511,514],{"href":512,"rel":513},"https:\u002F\u002Fgithub.com\u002Ffanani-radian\u002Fopenclaw-sumopod",[459],"Sumopod"," — koleksi tutorial OpenClaw dalam Bahasa Indonesia yang saya kumpulkan.",[22,517],{},[15,519,520],{},[18,521,522],{},"Sistem ini dibangun buat PT UNO Solusi Teknik, bagian dari Radian Group. Kalau mau diskusi soal automasi serupa buat tim kamu, ya udah tahu caranya nyari saya.",[15,524,525,528],{},[41,526,527],{},"Tags:"," #AttendanceSystem #HRTech #OpenClaw #Engineering #Automation #Android #GPS #Balikpapan",[530,531,532],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":119,"searchDepth":270,"depth":270,"links":534},[535,536,537,538,539,540,541,542,543],{"id":27,"depth":270,"text":28},{"id":71,"depth":270,"text":72},{"id":127,"depth":270,"text":128},{"id":145,"depth":270,"text":146},{"id":248,"depth":270,"text":249},{"id":341,"depth":270,"text":342},{"id":391,"depth":270,"text":392},{"id":424,"depth":270,"text":425},{"id":444,"depth":270,"text":445},"tech","2026-04-04 19:18:00","Dari absensi manual ke sistem GPS otomatis — bagaimana saya mengubah cara tim engineering saya mencatat kehadiran dengan OpenClaw dan Android app.","md","\u002Fimages\u002Fposts\u002Fattendance-story-hero.jpg",{"owner":548,"ogImage":548,"readTime":550,"type":544},"8 min","\u002Ftech\u002Fattendance-story-driven-tracking",null,{"title":5,"description":546},"tech\u002Fattendance-story-driven-tracking",[485,556,557,558,559],"HR Tech","Engineering","Automation","Android","YErGl_RZgi02RU5nrYaY-z41HzyUO92zCQt2VX9A4DI",1775317692325]