Ringkasan dokumen
What this document contains
Dokumen ini menjawab tujuh pertanyaan dalam permintaan penawaran Anda secara berurutan, ditambah asumsi komersial yang kami butuhkan agar harga dapat dipertanggungjawabkan.
This document answers the seven questions in your request for quotation in order, followed by the commercial assumptions we need so the price holds up.
Anda tidak sedang membeli aplikasi. Anda sedang membeli kontrol atas margin.
You are not buying an application. You are buying control over margin.
Dari daftar lingkup yang Anda kirim, masalah yang sebenarnya ingin diselesaikan bukan "digitalisasi" — melainkan kebocoran biaya yang tidak terlihat sampai job sudah tutup. Tiga gejala yang biasanya mendorong proyek seperti ini:
Reading your scope list, the problem being solved is not "digitalisation" — it is cost leakage that stays invisible until a job is already closed. Three symptoms usually drive a project like this:
Biaya aktual datang terlambat
Actual cost arrives late
Invoice vendor masuk 3–6 minggu setelah job selesai. Selisih terhadap estimasi baru ketahuan saat margin sudah tidak bisa diperbaiki.
Vendor invoices land 3–6 weeks after the job ends. The variance surfaces only when the margin can no longer be fixed.
Kesiapan berangkat & kesiapan tagih bersifat lisan
Departure and billing readiness live in people's heads
Status dokumen, container, dan seal tersebar di WhatsApp dan Excel. Yang tahu pasti hanya satu atau dua orang.
Document, container, and seal status is spread across WhatsApp and spreadsheets. Only one or two people actually know.
Biaya yang bisa ditagihkan ulang hilang
Rebillable cost disappears
Biaya yang seharusnya masuk ke customer tidak tercatat sebagai rebillable, atau tercatat tanpa bukti yang cukup untuk dipertahankan.
Costs that should reach the customer are never flagged as rebillable — or are flagged without evidence strong enough to defend.
Karena itu kami membangunnya dalam satu urutan, bukan satu daftar fitur
So we build it in one sequence, not one feature list
Sistem ini kami susun sebagai satu rantai yang tidak bisa dipotong: job → biaya terencana → biaya aktual → selisih → persetujuan → rebill → job closing. Setiap modul hanya bernilai jika modul sebelumnya menghasilkan data yang bersih. Inilah alasan kami menolak membangun dashboard lebih dulu: dashboard di atas data yang tidak disiplin hanya mempercepat kesalahan yang sama.
We structure this as a single chain that cannot be cut: job → planned cost → actual cost → variance → approval → rebill → job closing. Each module is only worth what the previous one puts into it. That is why we refuse to build the dashboard first: a dashboard over undisciplined data only accelerates the same mistakes.
Empat pilar, satu basis data
Four pillars, one database
Seluruh lingkup yang Anda sebutkan masuk ke dalam harga total. Kami memetakannya ke empat pilar, ditambah lapisan fondasi yang menopang semuanya. Tidak ada modul yang "dijanjikan nanti".
Everything in your scope is inside the total price. We map it into four pillars plus the foundation layer beneath them. Nothing is promised "later".
Fondasi — lapisan yang menentukan apakah sistem ini bisa dipercaya
Foundation — the layer that decides whether the system can be trusted
Identitas, peran, dan hak akses
Identity, roles, and access rights
- Login email/kata sandi, 2FA opsional, sesi per perangkat
- Email/password login, optional 2FA, per-device sessions
- RBAC berlapis: peran × modul × aksi (lihat/ubah/setujui/batal)
- Layered RBAC: role × module × action (view/edit/approve/void)
- Pembatasan data per cabang/unit bisnis dan per pemilik job
- Data scoping per branch/business unit and per job owner
- Delegasi kewenangan saat cuti, dengan jejak audit
- Authority delegation during leave, with audit trail
Master data & tarif
Master data & rates
- Customer, vendor, agent, pelabuhan, depo, kapal, armada
- Customers, vendors, agents, ports, depots, vessels, fleet
- Rate card berversi: per vendor, per lane, per tipe kontainer, per periode
- Versioned rate cards: per vendor, lane, container type, validity period
- Tipe biaya dengan perilaku: rebillable, kena margin, kena PPN, mata uang
- Cost types with behaviour: rebillable, margin-bearing, taxable, currency
- Persetujuan perubahan tarif + riwayat harga sebelumnya
- Rate change approval + prior-price history
Penomoran job, alur status, aturan bisnis
Job numbering, status flow, business rules
- Penomoran berpola (contoh: JKT/OF/26/00184) per jenis layanan
- Patterned numbering (e.g. JKT/OF/26/00184) per service type
- State machine eksplisit: transisi sah, penjaga (guard), dan pembatalan
- Explicit state machine: legal transitions, guards, and void handling
- Validasi wajib sebelum status maju (dokumen, biaya, persetujuan)
- Mandatory validation before status advances (docs, cost, approval)
- Mesin persetujuan berjenjang dengan batas nilai
- Multi-level approval engine with value thresholds
Berkas, notifikasi, jejak perubahan
Files, notifications, change history
- Penyimpanan objek dengan versi, tipe berkas dibatasi, pemindaian virus
- Object storage with versioning, file-type limits, malware scanning
- Notifikasi dalam aplikasi + email; pengingat tenggat dokumen & kapal
- In-app + email notifications; document and vessel deadline reminders
- Audit trail tidak dapat diubah: siapa, kapan, nilai sebelum/sesudah
- Immutable audit trail: who, when, before/after values
- Ekspor Excel & impor data awal (template + validasi baris)
- Excel export & initial data import (templates + row validation)
Pilar 1 — Operasional
Pillar 1 — Operations
Quotation & penerimaan order
Quotation & order intake
- Quotation dari rate card, dengan margin terlihat dan dapat dikunci
- Quotation built from rate cards, with visible and lockable margin
- Versi quotation, kirim ke customer, catat menang/kalah beserta alasannya
- Quotation versioning, customer send-out, win/loss with reason codes
- Konversi quotation → order → job tanpa input ulang
- Quotation → order → job conversion with no re-keying
Manajemen job
Job management
- Satu job untuk banyak kontainer, banyak leg, banyak vendor
- One job spanning multiple containers, legs, and vendors
- Timeline aktivitas per leg dengan penanggung jawab
- Activity timeline per leg with named owners
- Catatan internal vs catatan yang terlihat customer
- Internal notes vs customer-visible notes
Booking & jadwal kapal
Booking & vessel schedule
- Booking per carrier, nomor booking, cut-off dokumen dan cut-off barang
- Booking per carrier, booking number, document and cargo cut-offs
- Jadwal kapal (ETD/ETA, vessel/voyage) dengan perubahan yang tercatat
- Vessel schedules (ETD/ETA, vessel/voyage) with tracked revisions
- Peringatan otomatis H-3 / H-1 terhadap setiap cut-off
- Automatic T-3 / T-1 alerts against every cut-off
Trucking & depo
Trucking & depot
- Nomor kontainer dan nomor seal per unit, termasuk segel ganti
- Container and seal numbers per unit, including re-seals
- Penugasan armada & driver, jadwal angkat dan kembali
- Fleet and driver assignment, pickup and return scheduling
- Biaya depo (lift on/off, storage, cleaning, repair) langsung ke costing job
- Depot charges (lift on/off, storage, cleaning, repair) posted straight to job costing
Dokumen & kepabeanan
Documents & customs
- Checklist dokumen per jenis job (BL, invoice, packing list, PIB/PEB, COO, dll.)
- Document checklist per job type (BL, invoice, packing list, customs declaration, COO, etc.)
- Kelengkapan dihitung, bukan diperkirakan — persentase dan dokumen yang kurang
- Completeness computed, not estimated — percentage plus the missing documents
- Tenggat per dokumen dengan eskalasi saat mendekati batas
- Per-document deadlines with escalation as the limit approaches
Papan "Siap Berangkat / Siap Tagih"
"Ready to Depart / Ready to Bill" board
- Dua papan, satu sumber kebenaran, diperbarui otomatis dari aturan
- Two boards, one source of truth, updated automatically from rules
- Siap berangkat = dokumen lengkap + booking terkonfirmasi + kontainer/seal terisi
- Ready to depart = documents complete + booking confirmed + container/seal recorded
- Siap tagih = biaya aktual terkunci + selisih disetujui + bukti vendor terlampir
- Ready to bill = actual cost locked + variance approved + vendor evidence attached
Pilar 2 — Costing
Pillar 2 — Costing
Biaya terencana vs biaya aktual
Planned cost vs actual cost
- Estimasi per baris biaya saat quotation, terkunci saat order dikonfirmasi
- Line-level estimate at quotation, locked when the order is confirmed
- Aktual masuk dari invoice vendor, biaya depo, dan entri manual ber-approval
- Actuals arrive from vendor invoices, depot charges, and approved manual entries
- Selisih per baris, per vendor, per job — dalam nilai dan persentase
- Variance per line, per vendor, per job — in value and percentage
Pembacaan invoice vendor dengan AI
AI-assisted vendor invoice reading
- Ekstraksi terstruktur: vendor, nomor invoice, tanggal, mata uang, baris biaya
- Structured extraction: vendor, invoice number, date, currency, cost lines
- Setiap baris diberi skor keyakinan; di bawah ambang masuk antrean verifikasi manusia
- Every line carries a confidence score; below threshold it queues for human verification
- Tidak ada posting otomatis ke ledger tanpa persetujuan
- No automatic posting to the ledger without approval
Selisih & persetujuan
Variance & approval
- Ambang selisih per peran: di atas X% wajib persetujuan atasan
- Variance thresholds per role: above X% requires manager approval
- Alasan selisih wajib dipilih dari daftar + catatan bebas
- Variance reason chosen from a controlled list plus free text
- Antrean persetujuan dengan konteks lengkap, bukan sekadar angka
- Approval queue with full context, not just a number
Biaya rebillable & kesiapan tagih
Rebillable cost & invoice readiness
- Penandaan rebillable per baris, dengan markup atau harga jual tetap
- Rebillable flag per line, with markup or fixed sell price
- Rekap siap tagih per customer, siap diekspor ke proses penagihan Anda
- Ready-to-bill summary per customer, exportable into your billing process
- Peringatan biaya belum ter-rebill saat job akan ditutup
- Warning for un-rebilled cost when a job is about to close
Penutupan job
Job closing
- Pemeriksaan penutupan: dokumen, biaya menggantung, rebill, persetujuan
- Closing checks: documents, dangling cost, rebills, approvals
- Job tertutup bersifat read-only; koreksi lewat jurnal penyesuaian berjejak
- Closed jobs are read-only; corrections via a tracked adjustment entry
- Laporan margin final per job terkunci sebagai baseline pembanding
- Final job margin locked as the baseline for comparison
Kasbon / cash advance OPSIONAL
Cash advance OPTIONAL
- Pengajuan, persetujuan, pencairan tercatat, dan penyelesaian dengan bukti
- Request, approval, recorded disbursement, and settlement against receipts
- Sisa kasbon otomatis menjadi pengurang penyelesaian job
- Outstanding advances automatically offset job settlement
- Harga terpisah: lihat bagian 03
- Priced separately: see section 03
Pilar 3 — Manajemen
Pillar 3 — Management
Dashboard
Dashboard
Job aktif per status, job berisiko, kesiapan dokumen, antrean persetujuan, margin berjalan versus margin terkunci.
Active jobs by status, at-risk jobs, document readiness, approval queue, running margin vs locked margin.
Tren biaya vendor & margin
Vendor cost & margin trends
Pergerakan harga per vendor dan per lane dari waktu ke waktu; vendor mana yang menekan margin Anda, dan sejak kapan.
Price movement per vendor and lane over time; which vendors are compressing your margin, and since when.
Asisten AI untuk ringkasan selisih
AI assistant for variance summaries
Menjelaskan penyebab selisih dalam bahasa manusia, dengan rujukan ke baris biaya aslinya. Angka dihitung SQL; AI hanya menjelaskan.
Explains what drove a variance in plain language, citing the underlying cost lines. Numbers come from SQL; the model only explains.
Prinsip yang kami pegang pada fitur AI
The principle we hold on AI features
Model bahasa tidak pernah menjadi sumber angka. Semua nilai, total, dan selisih dihitung oleh query deterministik terhadap basis data. AI menerima hasil itu sebagai fakta dan tugasnya hanya menyusun penjelasan serta menunjuk baris mana yang relevan. Jika model keliru, yang salah adalah kalimatnya — bukan angkanya. Ini yang membedakan sistem yang bisa dipakai untuk keputusan komersial dari demo yang mengesankan.
The language model is never the source of a number. Every value, total, and variance is computed by a deterministic query against the database. The model receives that as fact and its only job is to write the explanation and point at the relevant lines. If the model errs, the sentence is wrong — the number is not. This is what separates a system usable for commercial decisions from an impressive demo.
Yang sengaja kami keluarkan dari cakupan
Deliberately out of scope
- Pembayaran dan transfer dana
- Payments and fund transfers
- Faktur pajak dan invoice resmi
- Tax invoices and official invoices
- Aplikasi mobile native (antarmuka web dibuat responsif penuh)
- Native mobile apps (the web interface is fully responsive)
- Integrasi akuntansi, portal customer, pelatihan — ditawarkan terpisah
- Accounting integration, customer portal, training — offered separately
Harga total, satu angka, tanpa kejutan di tengah jalan
One total price, no surprises halfway through
Harga di bawah mencakup seluruh lingkup pada bagian 02 — fondasi, operasional, costing, dan manajemen — sampai serah terima, pelatihan pengguna kunci, dan 90 hari garansi.
The figure below covers the entire scope in section 02 — foundation, operations, costing, and management — through handover, key-user training, and the 90-day warranty.
Harga tetap untuk lingkup pada bagian 02. Tidak ada tagihan per jam, tidak ada biaya tersembunyi, dan tidak ada penagihan tambahan bila pekerjaan memakan waktu lebih lama dari perkiraan kami.
A fixed price for the scope in section 02. No hourly billing, no hidden charges, and no additional invoice if the work takes longer than we estimated.
- 334 hari-orang pengerjaan334 person-days of work100%
- Uji terima per peranRole-based acceptance testing✓
- Impor data awalInitial data import✓
- Pelatihan 3 sesi3 training sessions✓
- Garansi 90 hari90-day warranty✓
- Serah terima kode & dokumentasiCode & documentation handover✓
| Pilar | Pillar | Isi utama | Core content | Hari-orangPerson-days | IDR |
|---|---|---|---|---|---|
| FondasiFoundation | Akses, master data, alur status, berkas, audit, impor/eksporAccess, master data, status flow, files, audit, import/export | 92 | 161.000.000 | ||
| OperasionalOperations | Quotation, job, booking, trucking & depo, dokumen, papan kesiapanQuotation, job, booking, trucking & depot, documents, readiness boards | 86 | 150.500.000 | ||
| CostingCosting | Terencana vs aktual, pembacaan invoice AI, selisih, rebill, closingPlanned vs actual, AI invoice reading, variance, rebill, closing | 82 | 143.500.000 | ||
| ManajemenManagement | Dashboard, tren vendor & margin, asisten selisih, laporan standarDashboard, vendor & margin trends, variance assistant, standard reports | 38 | 66.500.000 | ||
| Pengiriman & jaminan mutuDelivery & quality assurance | Manajemen proyek, analis bisnis, QA, DevOps, dokumentasi, UATProject management, business analysis, QA, DevOps, documentation, UAT | 36 | 63.500.000 | ||
| Total lingkup penuh | Total, full scope | 334 | 585.000.000 | ||
Tarif rata-rata tertimbang IDR 1.750.000 per hari-orang. Rincian per modul tersedia pada lampiran terpisah bila diperlukan. Blended rate of IDR 1,750,000 per person-day. Module-level breakdown available as a separate annex on request.
Item opsional — dihargai terpisah
Optional items — priced separately
Kami sengaja tidak memasukkan ini ke harga total. Masing-masing punya nilai yang berbeda bagi setiap perusahaan, dan Anda sebaiknya memutuskan berdasarkan data nyata setelah sistem inti berjalan tiga bulan.
We deliberately kept these out of the total. Each has a different value for each company, and you should decide on real data once the core system has run for three months.
| Item | Item | Isi | Content | IDR |
|---|---|---|---|---|
| Integrasi software akuntansiAccounting software integration | Studi kelayakan 2 minggu, lalu ekspor/impor CSV dua arah sebagai basis; konektor langsung ke Accurate Online atau SAP B1 sebagai opsi lanjutanTwo-week feasibility study, then two-way CSV export/import as the baseline; a direct connector to Accurate Online or SAP B1 as a further option | 96.000.000 | ||
| Portal customerCustomer portal | Login customer, pelacakan job, unduh dokumen, status tagihan, riwayat pengirimanCustomer login, job tracking, document download, billing status, shipment history | 119.000.000 | ||
| Pelatihan & dokumentasiTraining & documentation | SOP tertulis per peran, pustaka video, 3 sesi tambahan, dan pelatihan train-the-trainerWritten SOP per role, video library, 3 additional sessions, and train-the-trainer | 35.000.000 | ||
| Kasbon / cash advanceCash advance module | Pengajuan, persetujuan, pencairan, penyelesaian dengan bukti, dan offset ke jobRequest, approval, disbursement, receipt-based settlement, and offset to job | 28.000.000 |
22 minggu sampai produksi, dengan empat gerbang uji
22 weeks to production, with four test gates
Kami tidak bekerja dalam satu rilis besar di akhir. Setiap pilar diserahkan, diuji, dan diterima sebelum pilar berikutnya dimulai — sehingga kegagalan terdeteksi di minggu ke-6, bukan di minggu ke-20.
We do not work toward one large release at the end. Each pillar is delivered, tested, and accepted before the next begins — so failure surfaces in week 6, not week 20.
| Fase | Phase | Garis waktu — 22 minggu | Timeline — 22 weeks | Wk | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kickoff & pemetaan prosesKickoff & process mappingValidasi flow, aturan, matriks persetujuanFlow validation, rules, approval matrix | W1–2 | |||||||||||||||||||||||||||||||||||||||||||||
| FondasiFoundationAkses, master data, alur status, auditAccess, master data, status flow, audit | W3–6 | |||||||||||||||||||||||||||||||||||||||||||||
| Operasional intiOperations coreQuotation, job, booking, trucking, dokumenQuotation, job, booking, trucking, documents | W7–11 | |||||||||||||||||||||||||||||||||||||||||||||
| Costing & AI invoiceCosting & AI invoice readingTerencana vs aktual, selisih, rebillPlanned vs actual, variance, rebill | W12–15 | |||||||||||||||||||||||||||||||||||||||||||||
| Manajemen & laporanManagement & reportsDashboard, tren, asisten selisih, eksporDashboard, trends, variance assistant, exports | W16–18 | |||||||||||||||||||||||||||||||||||||||||||||
| Impor data, UAT, pengerasanData import, UAT, hardeningData nyata, uji per peran, uji bebanReal data, per-role testing, load testing | W19–20 | |||||||||||||||||||||||||||||||||||||||||||||
| Go-live & hypercareGo-live & hypercarePendampingan penuh 2 mingguTwo weeks of full on-call support | W21–22 | |||||||||||||||||||||||||||||||||||||||||||||
| Gerbang | Gate | Yang kami serahkan | What we hand over | Cara Anda menguji | How you test it |
|---|---|---|---|---|---|
| G1 · W6 | Fondasi diterimaFoundation accepted | Lingkungan staging, login per peran, master data terisi, alur status job berjalanStaging environment, per-role logins, populated master data, working job status flow | |||
| G2 · W11 | Operasional diterimaOperations accepted | Satu job lengkap dari quotation sampai dokumen, dijalankan sendiri oleh tim AndaOne complete job from quotation to documents, run end-to-end by your own team | |||
| G3 · W15 | Costing diterimaCosting accepted | 20 invoice vendor nyata dibaca; akurasi baris diukur dan dilaporkan terbuka20 real vendor invoices read; line accuracy measured and reported openly | |||
| G4 · W20 | Siap go-liveGo-live ready | Data terimpor, seluruh skrip UAT lulus, laporan beban, daftar cacat tersisa bernilai nolData imported, all UAT scripts passed, load report, zero open defects of severity 1–2 |
Stack yang mudah diwariskan, bukan yang sedang tren
A stack that is easy to inherit, not one that is trending
Kriteria kami sederhana: dalam tiga tahun, developer mana pun di Jakarta harus bisa membuka kode ini dan melanjutkannya. Itu berarti teknologi dengan talenta lokal yang dalam, dokumentasi matang, dan tanpa ketergantungan pada satu vendor.
Our criterion is simple: in three years, any developer in Jakarta should be able to open this codebase and continue it. That means technology with deep local talent, mature documentation, and no single-vendor lock-in.
Backend
Backend
- PHP 8.3 + Laravel 11
- PostgreSQL 16
- Redis (cache, queue, lock)
- Horizon untuk worker
- REST + webhook
Frontend
Frontend
- Vue 3 + TypeScript
- Inertia.js (tanpa API ganda)
- Tailwind CSS
- Antarmuka ID/EN sejak awal
- Responsif sampai tablet
AI & dokumen
AI & documents
- OCR: AWS Textract / Google Document AI
- Ekstraksi: LLM via lapisan abstraksi
- Antrean verifikasi manusia
- Setiap output tersimpan + versi model
- Bisa ganti provider tanpa tulis ulang
Infrastruktur
Infrastructure
- AWS Jakarta (ap-southeast-3)
- Docker, Terraform
- GitHub Actions (CI/CD)
- S3 + CloudFront
- Backup PITR 35 hari
Alur pembacaan invoice vendor
The vendor invoice reading pipeline
Bagian ini paling sering dijual sebagai "AI" dan paling sering mengecewakan. Karena itu kami merancangnya sebagai proses bertahap dengan titik henti manusia yang jelas.
This is the part most often sold as "AI" and most often disappointing. So we designed it as a staged process with explicit human stopping points.
| # | Tahap | Stage | Perilaku sistem | System behaviour |
|---|---|---|---|---|
| 1 | Unggah & klasifikasiUpload & classification | Berkas masuk, jenis dokumen dikenali, duplikat dicek berdasarkan nomor invoice + vendorFile arrives, document type identified, duplicates checked by invoice number + vendor | ||
| 2 | OCR & ekstraksiOCR & extraction | Teks dan tabel diambil, lalu dipetakan ke baris biaya terstruktur dengan skor keyakinan per barisText and tables captured, then mapped to structured cost lines with a per-line confidence score | ||
| 3 | PencocokanMatching | Dicocokkan ke job, kontainer, dan tipe biaya berdasarkan nomor referensi dan konteksMatched to job, container, and cost type using reference numbers and context | ||
| 4 | Verifikasi manusiaHuman verification | Baris di bawah ambang keyakinan masuk antrean; verifikator melihat gambar asli di samping nilai yang diekstrakLines below threshold enter a queue; the verifier sees the original image beside the extracted value | ||
| 5 | PostingPosting | Hanya setelah disetujui. Tersimpan: berkas asli, hasil ekstraksi, versi model, dan siapa yang menyetujuiOnly after approval. Stored: original file, extraction result, model version, and who approved |
Target yang kami berani janjikan secara kontraktual: ≥ 80% baris biaya diterima tanpa koreksi pada invoice vendor Anda setelah penyetelan dengan 200 invoice nyata. Kami tidak menjanjikan 99% — dan sebaiknya Anda berhati-hati pada penawaran yang menjanjikannya.
The target we will commit to contractually: ≥ 80% of cost lines accepted without correction on your vendor invoices after tuning on 200 real invoices. We do not promise 99% — and you should be wary of quotes that do.
Biaya hosting bulanan
Monthly hosting cost
Estimasi untuk sekitar 60 pengguna bersamaan, 15.000 job per tahun, dan penyimpanan dokumen 250 GB. Angka dalam USD, kurs asumsi IDR 16.200.
Estimated for roughly 60 concurrent users, 15,000 jobs per year, and 250 GB of document storage. Figures in USD at an assumed IDR 16,200.
| Komponen | Component | Spesifikasi | Specification | USD/bln |
|---|---|---|---|---|
| AplikasiApplication | 2× Fargate 0,5 vCPU / 1 GB, auto-scale2× Fargate 0.5 vCPU / 1 GB, auto-scaling | 45–60 | ||
| Basis dataDatabase | RDS PostgreSQL Multi-AZ, db.t4g.mediumRDS PostgreSQL Multi-AZ, db.t4g.medium | 95–120 | ||
| Redis | ElastiCache t4g.microElastiCache t4g.micro | 15–20 | ||
| PenyimpananStorage | S3 250 GB + siklus hidup ke kelas dinginS3 250 GB + lifecycle to cold tier | 10–15 | ||
| Jaringan & keamananNetwork & security | ALB, CloudFront, WAFALB, CloudFront, WAF | 30–45 | ||
| OperasionalOperations | Backup, log, secret, monitoringBackups, logs, secrets, monitoring | 20–30 | ||
| Staging | Skala diperkecil, jadwal hidup terbatasScaled down, scheduled uptime | 40–55 | ||
| Perkiraan total | Estimated total | 255–345 | ||
≈ IDR 4,1 – 5,6 juta per bulan di AWS Jakarta. Alternatif penyedia lokal (Biznet Gio, IDCloudHost) berada pada kisaran IDR 3,5–4,5 juta dengan konsekuensi layanan terkelola yang lebih terbatas. Biaya ditagih langsung ke akun cloud Anda — kami tidak menaikkan harga hosting. ≈ IDR 4.1 – 5.6 million per month on AWS Jakarta. A local provider alternative (Biznet Gio, IDCloudHost) sits around IDR 3.5–4.5 million with more limited managed services. Billed directly to your own cloud account — we do not mark up hosting.
Kami memakai AI setiap hari. Itu sebabnya kami justru memperketat pengujian.
We use AI every day. Which is exactly why we tightened testing.
AI mempercepat penulisan kode sekitar 30–40% pada pekerjaan yang bersifat pola — CRUD, validasi, migrasi, kerangka uji. Yang tidak ia percepat: pemahaman proses bisnis Anda, keputusan arsitektur, dan penilaian apakah sesuatu benar. Karena itu pembagian kerjanya kami buat tegas.
AI speeds up pattern work by roughly 30–40% — CRUD, validation, migrations, test scaffolding. What it does not speed up: understanding your business process, architectural decisions, and judging whether something is actually correct. So we draw the division of labour sharply.
Pembagian kerja antara manusia dan mesin
The division of labour between people and machines
| Aktivitas | Activity | AI | AI | Manusia | Human |
|---|---|---|---|---|---|
| Pemetaan proses & aturan bisnisProcess and business-rule mapping | Meringkas dokumen Anda, menyusun daftar pertanyaanSummarises your documents, drafts the question list | Analis mewawancarai process owner, memutuskan interpretasiAnalyst interviews the process owner, decides the interpretation | |||
| Desain skema & arsitekturSchema and architecture design | Mengusulkan alternatif, menandai konsekuensiProposes alternatives, flags consequences | Tech lead memilih, dan menandatangani pilihannyaTech lead chooses, and signs the choice | |||
| Penulisan kodeWriting code | Draf pertama, boilerplate, refactor mekanisFirst draft, boilerplate, mechanical refactors | Engineer memverifikasi setiap baris; tidak ada merge tanpa tinjauanEngineer verifies every line; nothing merges without review | |||
| PengujianTesting | Menghasilkan kandidat kasus uji, termasuk kasus batasGenerates candidate test cases, including edge cases | QA memutuskan cakupan; skrip UAT disetujui Anda di minggu 1QA decides coverage; UAT scripts approved by you in week 1 | |||
| Tinjauan kodeCode review | Tinjauan otomatis awal pada setiap pull requestAutomated first-pass review on every pull request | Tech lead meninjau desain, keamanan, dan konsistensi domainTech lead reviews design, security, and domain consistency | |||
| Keputusan akhirFinal accountability | Tidak pernahNever | Selalu. Nama engineer ada di commit; tanggung jawab tidak bisa dialihkan ke alatAlways. The engineer's name is on the commit; responsibility cannot be delegated to a tool |
Tiga aturan yang tidak bisa ditawar
Three rules that are not negotiable
1. Tidak ada kode AI yang masuk tanpa tinjauan manusia. Setiap pull request ditinjau tech lead. Rata-rata pull request kami di bawah 300 baris — bukan karena rapi, tapi karena tinjauan yang sungguhan tidak mungkin dilakukan pada 1.200 baris.
1. No AI-written code merges without human review. Every pull request is reviewed by the tech lead. Our average PR is under 300 lines — not for tidiness, but because genuine review is impossible on 1,200.
2. Data Anda tidak masuk ke prompt tanpa perjanjian. Kami memakai endpoint komersial dengan retensi nol. Data pelanggan, tarif, dan invoice tidak pernah dipakai untuk pelatihan model. Untuk fitur AI di dalam produk, ini tertulis di kontrak dan dapat diaudit.
2. Your data does not enter a prompt without an agreement. We use commercial endpoints with zero retention. Customer data, rates, and invoices are never used for model training. For the AI features inside the product, this is written into the contract and auditable.
3. Kode yang tidak bisa dijelaskan engineer-nya akan ditulis ulang. Jika seseorang tidak dapat mempertahankan baris yang ia commit di depan tinjauan, baris itu dibuang. Ini satu-satunya cara agar kecepatan tidak berubah menjadi utang teknis yang Anda bayar setelah kami pergi.
3. Code an engineer cannot explain gets rewritten. If someone cannot defend a line they committed in review, the line goes. It is the only way to stop speed from becoming technical debt you pay for after we leave.
Jaring pengaman mutu
The quality net
Uji otomatis
Automated tests
- Unit & feature test (Pest) pada lapisan domain — target cakupan 75%
- Unit & feature tests (Pest) on the domain layer — 75% coverage target
- Uji peramban (Playwright) untuk 12 alur kritis: job, dokumen, selisih, closing
- Browser tests (Playwright) for 12 critical flows: job, documents, variance, closing
- Uji beban (k6) pada papan kesiapan dan dashboard
- Load tests (k6) on the readiness boards and dashboard
Gerbang otomatis di CI
Automated CI gates
- PHPStan level 8, ESLint, TypeScript strict — gagal berarti tidak bisa merge
- PHPStan level 8, ESLint, TypeScript strict — failure blocks merge
- Pemindaian dependensi dan rahasia pada setiap commit
- Dependency and secret scanning on every commit
- Migrasi diuji maju dan mundur pada basis data kosong
- Migrations tested forward and backward on an empty database
Uji terima oleh Anda
Acceptance testing by you
- Skrip UAT per peran ditulis bersama di minggu 1
- Per-role UAT scripts written jointly in week 1
- Dijalankan tim Anda di staging, bukan didemokan kami
- Run by your team on staging, not demonstrated by us
- Cacat dicatat di pelacak yang Anda lihat, dengan prioritas
- Defects logged in a tracker you can see, with priority
Keamanan
Security
- Daftar periksa OWASP ASVS level 2 pada setiap rilis
- OWASP ASVS level 2 checklist on every release
- Peran diuji negatif: memastikan yang tidak berhak benar-benar ditolak
- Roles tested negatively: confirming the unauthorised are actually refused
- Uji penetrasi pihak ketiga tersedia sebagai opsi berbayar
- Third-party penetration test available as a paid option
Setiap Jumat kami mendemokan aplikasi yang berjalan — bukan slide. Anda melihat kemajuan di staging setiap minggu, sehingga tidak ada kejutan pada saat UAT.
Every Friday we demo the running application — not slides. You see progress on staging weekly, so nothing is a surprise at UAT.
Enam orang, satu penanggung jawab
Six people, one owner
Proyek seperti ini gagal karena terlalu banyak suara dan tidak ada yang bertanggung jawab. Kami menempatkan satu tech lead yang sama dari awal sampai serah terima, dan ia yang menandatangani keputusan teknis.
Projects like this fail because there are too many voices and no one accountable. We assign one tech lead from start to handover, and that person signs the technical decisions.
| Peran | Role | Tanggung jawab | Responsibility | Alokasi | Allocation |
|---|---|---|---|---|---|
| Tech lead / arsitekTech lead / architect | Arsitektur, tinjauan kode, keputusan teknis, kontak utama AndaArchitecture, code review, technical decisions, your main contact | 60% | |||
| Analis bisnisBusiness analyst | Menerjemahkan flow dan aturan Anda menjadi spesifikasi yang dapat diujiTranslates your flows and rules into testable specifications | 50% | |||
| Engineer full-stack (2)Full-stack engineers (2) | Implementasi modul, migrasi, integrasiModule implementation, migrations, integrations | 100% | |||
| QA engineerQA engineer | Otomasi uji, skrip UAT, uji regresi, uji bebanTest automation, UAT scripts, regression, load testing | 70% | |||
| DevOpsDevOps | Infrastruktur, CI/CD, backup, pemantauan, pengerasan keamananInfrastructure, CI/CD, backups, monitoring, security hardening | 25% | |||
| Desainer produkProduct designer | Alur layar padat data, keterbacaan papan dan tabelData-dense screen flows, board and table legibility | 30% |
Ritme kerja
Working rhythm
- Demo mingguan setiap Jumat di staging (30 menit)
- Weekly Friday demo on staging (30 minutes)
- Satu process owner dari pihak Anda sebagai lawan bicara tetap
- One process owner on your side as a fixed counterpart
- Pelacak isu yang dapat Anda akses kapan saja
- An issue tracker you can access at any time
- Perubahan lingkup lewat catatan perubahan tertulis, bukan percakapan
- Scope changes via a written change note, not conversation
90 hari garansi, lalu pemeliharaan yang Anda pilih
90-day warranty, then maintenance on your terms
Garansi mencakup perbaikan cacat tanpa biaya. Pemeliharaan mencakup hal yang berbeda: penyesuaian aturan bisnis yang berubah, pemantauan, dan pembaruan keamanan. Kami memisahkan keduanya agar Anda tidak membayar dua kali untuk hal yang sama.
The warranty covers defect fixes at no cost. Maintenance covers something else: adapting to changed business rules, monitoring, and security updates. We separate the two so you do not pay twice for the same thing.
| Tingkat cacat | Defect severity | Definisi | Definition | Respons | Response | Perbaikan | Fix |
|---|---|---|---|---|---|---|---|
| S1 | Operasi berhenti; tidak ada jalan pintasOperations halted; no workaround | 2 jam | 1 hari kerja | ||||
| S2 | Fungsi utama terganggu; ada jalan pintas manualCore function impaired; manual workaround exists | 4 jam | 3 hari kerja | ||||
| S3 | Gangguan kecil, tidak menghambat pekerjaanMinor issue, does not block work | 1 hari | Rilis berikutnya | ||||
| S4 | Kosmetik atau permintaan peningkatanCosmetic or enhancement request | 3 hari | Ditawarkan terpisah |
Paket pemeliharaan setelah garansi
Maintenance after the warranty
Esensial
Essential
IDR 4.500.000 /bln
- Perbaikan cacat S1–S3
- S1–S3 defect fixes
- Verifikasi backup bulanan
- Monthly backup verification
- Pembaruan keamanan dependensi
- Dependency security updates
- 2 jam perubahan kecil per bulan
- 2 hours of minor changes per month
Standar
Standard
IDR 8.800.000 /bln
- Semua pada Esensial, dengan SLA penuh
- Everything in Essential, with full SLA
- 8 jam perubahan per bulan
- 8 hours of changes per month
- Pemantauan 24/7 dengan panggilan darurat
- 24/7 monitoring with on-call escalation
- Laporan kesehatan bulanan
- Monthly health report
- Tinjauan kinerja kuartalan
- Quarterly performance review
Mitra
Partner
IDR 15.500.000 /bln
- Semua pada Standar
- Everything in Standard
- 20 jam perubahan per bulan
- 20 hours of changes per month
- Satu hari arsitek per bulan untuk roadmap
- One architect day per month for roadmap
- Prioritas pengembangan fitur baru
- Priority on new feature development
Kontrak pemeliharaan tahunan, dapat diakhiri dengan pemberitahuan 60 hari. Tanpa kontrak pemeliharaan, kode tetap milik Anda dan dapat dilanjutkan pihak lain — kami menyediakan dokumen serah terima yang membuat itu benar-benar mungkin. Annual maintenance contract, terminable with 60 days' notice. Without a maintenance contract the code is still yours and can be continued by another party — we provide handover documentation that makes that genuinely possible.
Sistem serupa yang sudah berjalan
Comparable systems already in production
Empat proyek di bawah adalah pekerjaan yang paling dekat dengan lingkup Anda. Nama klien kami samarkan di dokumen terbuka; rujukan lengkap, termasuk kontak yang bersedia dihubungi, kami berikan setelah NDA.
The four projects below are the closest work we have to your scope. Client names are anonymised in an open document; full references, including contacts willing to speak with you, are provided under NDA.
Freight forwarder laut — sistem job costing
Ocean freight forwarder — job costing system
Surabaya. 140 pengguna, ±11.000 job per tahun, 3 cabang. Menggantikan 40+ berkas Excel dengan satu alur job, biaya terencana versus aktual, dan persetujuan selisih berjenjang.
Surabaya. 140 users, ~11,000 jobs per year, 3 branches. Replaced 40+ spreadsheets with a single job flow, planned vs actual cost, and tiered variance approval.
Trucking & depo — pelacakan kontainer dan seal
Trucking & depot — container and seal tracking
Jakarta. 60 unit armada, 4 depo mitra. Penugasan driver, jadwal angkat/kembali, pencatatan nomor kontainer dan seal termasuk segel ganti, serta biaya depo yang langsung masuk ke costing job.
Jakarta. 60 trucks, 4 partner depots. Driver assignment, pickup/return scheduling, container and seal capture including re-seals, and depot charges posted straight into job costing.
Project cargo — kepatuhan dokumen & tenggat
Project cargo — document compliance and deadlines
Kontraktor EPC, Kalimantan. Pelacakan milestone pengapungan modul berat: kelengkapan dokumen, tenggat kepabeanan, dan eskalasi otomatis ke manajer proyek saat tenggat mendekat.
EPC contractor, Kalimantan. Heavy-module shipment milestone tracking: document completeness, customs deadlines, and automatic escalation to the project manager as deadlines approach.
Distributor — keuangan operasional & pencocokan tiga arah
Distributor — operational finance and three-way match
Grup distribusi, 6 entitas. Matriks persetujuan berbasis nilai, pencocokan pesanan–penerimaan–invoice, dan jembatan CSV ke perangkat lunak akuntansi yang sudah dipakai.
Distribution group, 6 entities. Value-based approval matrix, purchase–receipt–invoice matching, and a CSV bridge into the accounting software already in use.
Angka di atas dilaporkan oleh klien dan tidak diaudit secara independen. Kami tidak mencantumkan logo atau nama yang belum memberi izin tertulis. The figures above are client-reported and not independently audited. We do not display logos or names without written permission.
Kode dan data milik Anda. Tanpa syarat tambahan.
The code and the data are yours. Without further conditions.
Kami menegaskan ini secara hitam di atas putih, karena banyak vendor menyebut "milik klien" lalu menahan sesuatu: repositori, kunci deployment, atau hak untuk melanjutkan.
We state this in black and white because many vendors say "client-owned" and then withhold something: the repository, the deployment keys, or the right to continue.
Hak kekayaan intelektual
Intellectual property
- Seluruh hak cipta atas kode yang kami tulis dialihkan kepada Anda pada pembayaran termin terakhir
- All copyright in code we write transfers to you on the final milestone payment
- Anda bebas memodifikasi, menjual, atau memindahkan ke vendor lain
- You may modify it, sell it, or move it to another vendor
- Lisensi pihak ketiga tetap milik masing-masing pemilik (mayoritas MIT/Apache)
- Third-party licences stay with their owners (mostly MIT/Apache)
Serah terima teknis
Technical handover
- Repositori penuh dengan riwayat commit, di akun GitHub milik Anda
- Full repository with commit history, in your own GitHub account
- Infrastruktur sebagai kode; akun cloud dan tagihan atas nama Anda
- Infrastructure as code; cloud account and billing in your name
- Dokumentasi arsitektur, kamus data, dan runbook operasional
- Architecture documentation, data dictionary, and operations runbook
- Sesi alih pengetahuan 2 hari untuk tim internal atau vendor penerus
- Two-day knowledge transfer for your internal team or a successor vendor
Data
Data
- Data pelanggan, tarif, invoice, dan dokumen sepenuhnya milik Anda
- Customer data, rates, invoices, and documents are entirely yours
- Tidak dipakai untuk pelatihan model atau tujuan lain apa pun
- Never used for model training or any other purpose
- Ekspor penuh dalam format terbuka (CSV, SQL dump) kapan pun diminta
- Full export in open formats (CSV, SQL dump) whenever you ask
- Penghapusan permanen dalam 30 hari setelah kontrak berakhir
- Permanent deletion within 30 days of contract end
Kontinuitas
Continuity
- Opsi escrow kode sumber pihak ketiga atas biaya Anda
- Third-party source code escrow at your cost, if you want it
- Tanpa ketergantungan pada layanan khusus kami
- No dependency on any proprietary service of ours
- Kami menandatangani NDA Anda sebelum dokumen proses dibagikan
- We sign your NDA before process documents are shared
Pembayaran mengikuti hasil uji, bukan kalender
Payment follows test results, not the calendar
Anda menyebut pembayaran berbasis milestone yang dikaitkan dengan hasil uji. Kami setuju, dan kami mengikatnya lebih ketat: setiap termin hanya dapat ditagih setelah gerbang uji pada bagian 04 dinyatakan lulus oleh tim Anda.
You asked for milestone-based payment tied to test results. We agree, and we bind it tighter: each milestone can only be invoiced after the corresponding gate in section 04 has been signed off by your team.
| Termin | Milestone | Syarat penagihan | Invoicing condition | % | IDR |
|---|---|---|---|---|---|
| M1 | Penandatanganan & kickoff; skrip UAT disetujuiSignature & kickoff; UAT scripts approved | 15% | 87.750.000 | ||
| M2 | Gerbang G1 — fondasi lulus ujiGate G1 — foundation passed | 20% | 117.000.000 | ||
| M3 | Gerbang G2 — operasional lulus ujiGate G2 — operations passed | 20% | 117.000.000 | ||
| M4 | Gerbang G3 — costing lulus uji, akurasi dilaporkanGate G3 — costing passed, accuracy reported | 20% | 117.000.000 | ||
| M5 | Gerbang G4 — siap go-liveGate G4 — go-live ready | 15% | 87.750.000 | ||
| M6 | Go-live, serah terima kode, alih pengetahuanGo-live, code handover, knowledge transfer | 10% | 58.500.000 | ||
| Total | Total | 100% | 585.000.000 | ||
Termin 30 hari sejak invoice. Bila gerbang tidak lulus, penagihan ditunda dan perbaikan menjadi tanggungan kami. 30-day terms from invoice. If a gate does not pass, invoicing is deferred and the remedy is at our cost.
Asumsi yang membuat harga ini berlaku
The assumptions this price depends on
- Satu entitas legal; multi-entitas ditawarkan terpisah
- One legal entity; multi-entity offered separately
- Process flow dan aturan bisnis tersedia sesuai yang Anda sebutkan
- Process flows and business rules available as you described
- Satu process owner dan 2 pengguna kunci per peran untuk UAT
- One process owner and 2 key users per role for UAT
- Data awal tersedia dalam Excel/CSV yang wajar
- Initial data available in reasonable Excel/CSV form
- Jadwal kapal dimasukkan manual atau lewat impor; integrasi carrier API di luar cakupan
- Vessel schedules entered manually or by import; carrier API integration out of scope
- Antarmuka dua bahasa (ID/EN) sudah termasuk; bahasa ketiga tidak
- Bilingual interface (ID/EN) included; a third language is not
- Umpan balik UAT diberikan dalam 3 hari kerja per putaran
- UAT feedback returned within 3 working days per round
Di luar harga
Excluded from the price
PPN; biaya cloud dan domain; biaya API OCR/LLM (perkiraan IDR 900.000–1.800.000 per bulan pada volume 800 invoice); lisensi perangkat lunak pihak ketiga; uji penetrasi; perjalanan ke luar Jabodetabek. VAT; cloud and domain costs; OCR/LLM API costs (estimated IDR 900,000–1,800,000 per month at 800 invoices); third-party software licences; penetration testing; travel outside Greater Jakarta.
Tiga langkah, dua minggu
Three steps, two weeks
Percakapan 60 menit
A 60-minute conversation
Kami membahas process flow Anda dan tiga keputusan desain yang paling menentukan: struktur job, definisi "siap tagih", dan matriks persetujuan selisih.
We walk through your process flows and the three design decisions that matter most: job structure, the definition of "ready to bill", and the variance approval matrix.
NDA & dokumen proses
NDA & process documents
Kami menandatangani NDA Anda, menerima dokumen rinci, lalu mengembalikan penawaran final dalam 5 hari kerja — termasuk koreksi harga bila ada yang berbeda dari asumsi kami.
We sign your NDA, receive the detailed documents, and return a final quotation within 5 working days — including price corrections if anything differs from our assumptions.
Kickoff
Kickoff
Minggu ke-1: lokakarya pemetaan, penulisan skrip UAT bersama, dan penyiapan lingkungan staging. Anda melihat aplikasi berjalan pada minggu ke-2.
Week 1: mapping workshop, joint UAT script writing, and staging setup. You see a running application in week 2.