M
Meridian Software Works
Penawaran Teknis & KomersialTechnical & Commercial Proposal
Rahasia — Untuk Kalangan TerbatasConfidential — Restricted Circulation
Sistem Operasi & Costing Logistik Logistics Operations & Costing System

Satu sistem untuk
operasi, biaya, dan
margin per job.
One system for
operations, cost, and
margin per job.

Rancangan, harga, dan jadwal untuk platform freight forwarding terintegrasi — dari intake quotation sampai job closing, dengan costing yang dapat dipertanggungjawabkan dan pembacaan invoice vendor berbantuan AI. Design, price, and schedule for an integrated freight forwarding platform — from quotation intake to job closing, with defensible costing and AI-assisted vendor invoice reading.

Nilai Investasi
Investment
IDR 585,000,000
Durasi
Duration
22 minggu22 weeks
Tim
Team
6 orang6 people
Garansi
Warranty
90 hari90 days
Ref. MSW/LOG/2026/014  ·  v1.0  ·  22.10.2026 Berlaku 30 hariValid for 30 days
Daftar IsiContents

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.

Harga total
Total price
IDR 585 jutaLingkup penuh, belum termasuk PPNFull scope, excluding VAT
Durasi
Duration
22 minggu22 weeksEmpat gerbang uji, go-live di W22Four test gates, go-live in W22
Tim
Team
6 orang6 peopleSatu tech lead dari awal sampai akhirOne tech lead, start to finish
Hosting
Hosting
IDR 4,1–5,6 jt/blnAWS Jakarta, ditagih ke akun AndaAWS Jakarta, billed to your account
Garansi
Warranty
90 hari90 daysLalu pemeliharaan mulai IDR 4,5 jt/blnThen maintenance from IDR 4.5m/month
Kepemilikan
Ownership
100% milik Anda100% yoursKode sumber, data, akun cloudSource code, data, cloud account
01 — Pemahaman01 — Understanding

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:

01

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.

02

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.

03

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.

Satu hal yang kami hargai dari brief Anda: Anda sudah menyediakan process flow dan business rules per peran. Itu memotong fase discovery dari biasanya 6–8 minggu menjadi 2 minggu, dan kami menurunkan harga sebesar 9% dari penawaran normal kami karena risiko asumsi yang jauh lebih kecil. Kami tidak perlu menebak proses Anda.
One thing we value in your brief: you already have process flows and business rules per role. That cuts discovery from the usual 6–8 weeks to 2 weeks, and we have priced 9% below our normal rate because the assumption risk is far lower. We do not have to guess your process.
02 — Cakupan02 — Scope

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

F1

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
F2

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
F3

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
F4

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

O1

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
O2

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
O3

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
O4

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
O5

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
O6

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
Catatan desain pada papan tersebut: status tidak boleh diisi manual. Jika "siap tagih" bisa dicentang seseorang, maka dalam tiga bulan papan itu akan berisi centang yang tidak berarti. Setiap kolom dihitung dari data yang sudah ada di job — sehingga papan itu tidak bisa berbohong, dan manajer melihat antrean yang sebenarnya.
A design note on that board: the status must never be typed in by hand. If "ready to bill" can be ticked by anyone, within three months the board will be full of meaningless ticks. Every column is computed from data already on the job — so the board cannot lie, and managers see the real queue.

Pilar 2 — Costing

Pillar 2 — Costing

C1

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
C2

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
C3

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
C4

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
C5

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
C6

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

M1

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.

M2

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.

M3

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

03 — Harga03 — Price

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 total — lingkup penuh
Total price — full scope
IDR 585.000.000 ± USD 36.100 pada kurs IDR 16.200/USD · belum termasuk PPN approx. USD 36,100 at IDR 16,200/USD · excluding VAT

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.

Sudah termasuk
Included
  • 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.

ItemItem IsiContent 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
Mengapa kami menurunkan harga, bukan menaikkan janji. Tarif normal kami untuk lingkup sebesar ini adalah IDR 640 juta. Karena Anda menyediakan process flow dan business rules per peran — pekerjaan yang biasanya memakan 30–40 hari-orang analis — kami dapat memotong fase penemuan proses dan menurunkan harga sekitar 9%. Yang tidak kami potong: pengujian, tinjauan kode, dan dokumentasi.
Why we cut price rather than inflate promises. Our normal rate for scope this size is IDR 640 million. Because you supply the process flows and business rules per role — work that normally consumes 30–40 analyst days — we can compress the process-discovery phase and price roughly 9% lower. What we did not cut: testing, code review, and documentation.
04 — Jadwal04 — Schedule

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.

FasePhaseGaris waktu — 22 mingguTimeline — 22 weeksWk
Kickoff & pemetaan prosesKickoff & process mappingValidasi flow, aturan, matriks persetujuanFlow validation, rules, approval matrixW1–2
FondasiFoundationAkses, master data, alur status, auditAccess, master data, status flow, auditW3–6
Operasional intiOperations coreQuotation, job, booking, trucking, dokumenQuotation, job, booking, trucking, documentsW7–11
Costing & AI invoiceCosting & AI invoice readingTerencana vs aktual, selisih, rebillPlanned vs actual, variance, rebillW12–15
Manajemen & laporanManagement & reportsDashboard, tren, asisten selisih, eksporDashboard, trends, variance assistant, exportsW16–18
Impor data, UAT, pengerasanData import, UAT, hardeningData nyata, uji per peran, uji bebanReal data, per-role testing, load testingW19–20
Go-live & hypercareGo-live & hypercarePendampingan penuh 2 mingguTwo weeks of full on-call supportW21–22
GerbangGate Yang kami serahkanWhat we hand over Cara Anda mengujiHow 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
Tentang "siap" kami. Sebuah gerbang hanya dinyatakan lulus bila skrip uji yang Anda setujui di minggu ke-1 berjalan tanpa intervensi developer. Kami menulis skrip itu bersama Anda di awal, bukan setelah aplikasi jadi — karena ujian yang disusun setelah hasilnya terlihat bukanlah ujian.
On what "ready" means. A gate passes only when the test scripts you approved in week 1 run without developer intervention. We write those scripts with you at the start, not after the build — because a test written after you can see the result is not a test.
05 — Teknologi05 — Technology

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.

# TahapStage Perilaku sistemSystem 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.

KomponenComponent SpesifikasiSpecification USD/bln
AplikasiApplication2× Fargate 0,5 vCPU / 1 GB, auto-scale2× Fargate 0.5 vCPU / 1 GB, auto-scaling45–60
Basis dataDatabaseRDS PostgreSQL Multi-AZ, db.t4g.mediumRDS PostgreSQL Multi-AZ, db.t4g.medium95–120
RedisElastiCache t4g.microElastiCache t4g.micro15–20
PenyimpananStorageS3 250 GB + siklus hidup ke kelas dinginS3 250 GB + lifecycle to cold tier10–15
Jaringan & keamananNetwork & securityALB, CloudFront, WAFALB, CloudFront, WAF30–45
OperasionalOperationsBackup, log, secret, monitoringBackups, logs, secrets, monitoring20–30
StagingSkala diperkecil, jadwal hidup terbatasScaled down, scheduled uptime40–55
Perkiraan totalEstimated 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.

06 — Cara kerja & mutu06 — Method & quality

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

AktivitasActivity AIAI ManusiaHuman
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

Q1

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
Q2

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
Q3

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
Q4

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.

07 — Tim07 — Team

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.

PeranRole Tanggung jawabResponsibility AlokasiAllocation
Tech lead / arsitekTech lead / architectArsitektur, tinjauan kode, keputusan teknis, kontak utama AndaArchitecture, code review, technical decisions, your main contact60%
Analis bisnisBusiness analystMenerjemahkan flow dan aturan Anda menjadi spesifikasi yang dapat diujiTranslates your flows and rules into testable specifications50%
Engineer full-stack (2)Full-stack engineers (2)Implementasi modul, migrasi, integrasiModule implementation, migrations, integrations100%
QA engineerQA engineerOtomasi uji, skrip UAT, uji regresi, uji bebanTest automation, UAT scripts, regression, load testing70%
DevOpsDevOpsInfrastruktur, CI/CD, backup, pemantauan, pengerasan keamananInfrastructure, CI/CD, backups, monitoring, security hardening25%
Desainer produkProduct designerAlur layar padat data, keterbacaan papan dan tabelData-dense screen flows, board and table legibility30%

Ritme kerja

Working rhythm

08 — Garansi08 — Warranty

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 cacatDefect severity DefinisiDefinition ResponsResponse PerbaikanFix
S1Operasi berhenti; tidak ada jalan pintasOperations halted; no workaround2 jam1 hari kerja
S2Fungsi utama terganggu; ada jalan pintas manualCore function impaired; manual workaround exists4 jam3 hari kerja
S3Gangguan kecil, tidak menghambat pekerjaanMinor issue, does not block work1 hariRilis berikutnya
S4Kosmetik atau permintaan peningkatanCosmetic or enhancement request3 hariDitawarkan terpisah

Paket pemeliharaan setelah garansi

Maintenance after the warranty

E

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
S — DIREKOMENDASIKANS — RECOMMENDED

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
P

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.

09 — Portofolio09 — Portfolio

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.

01

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.

LaravelPostgreSQLCostingCostingPersetujuanApprovals
6 mnt → 90 dtk6 min → 90 sec Waktu proses per invoice vendor, dilaporkan klien setelah 8 bulan Processing time per vendor invoice, client-reported after 8 months
02

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.

Vue 3RedisPenjadwalanSchedulingDepoDepot
−71%−71% Penurunan entri biaya depo yang hilang atau tercatat ganda Drop in depot charges lost or double-entered
03

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.

Alur kerjaWorkflowKepatuhanComplianceEscalation
00 Keterlambatan dokumen kepabeanan dalam 14 bulan terakhir Customs document delays in the last 14 months
04

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.

KeuanganFinanceApprovalsCSV bridge
4 hari → 1 hari4 days → 1 day Siklus tutup buku bulanan Monthly close cycle

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.

10 — Kepemilikan10 — Ownership

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.

A

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)
B

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
C

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
D

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
Soal keamanan data secara ringkas. Enkripsi saat transit dan saat disimpan; peran diuji dari sisi negatif; audit trail tidak dapat diubah; backup point-in-time 35 hari dengan RPO 15 menit dan RTO 4 jam; runbook pemulihan bencana yang diuji setahun sekali. Rincian tersedia di dokumen keamanan terpisah.
Data security, briefly. Encryption in transit and at rest; roles tested negatively; immutable audit trail; 35-day point-in-time backups with a 15-minute RPO and 4-hour RTO; a disaster recovery runbook tested annually. Details available in a separate security document.
11 — Komersial11 — Commercial

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.

TerminMilestone Syarat penagihanInvoicing condition % IDR
M1Penandatanganan & kickoff; skrip UAT disetujuiSignature & kickoff; UAT scripts approved15%87.750.000
M2Gerbang G1 — fondasi lulus ujiGate G1 — foundation passed20%117.000.000
M3Gerbang G2 — operasional lulus ujiGate G2 — operations passed20%117.000.000
M4Gerbang G3 — costing lulus uji, akurasi dilaporkanGate G3 — costing passed, accuracy reported20%117.000.000
M5Gerbang G4 — siap go-liveGate G4 — go-live ready15%87.750.000
M6Go-live, serah terima kode, alih pengetahuanGo-live, code handover, knowledge transfer10%58.500.000
TotalTotal100%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

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.

Ketentuan. Penawaran berlaku 30 hari sejak tanggal dokumen. Mata uang IDR. Pembayaran melalui transfer bank. Perubahan lingkup diatur lewat catatan perubahan tertulis dengan estimasi biaya sebelum dikerjakan. Kami siap menandatangani NDA Anda dan memulai setelah termin pertama diterima.
Terms. This quotation is valid for 30 days from the document date. Currency IDR. Payment by bank transfer. Scope changes are handled through a written change note with a cost estimate before any work begins. We are ready to sign your NDA and start once the first milestone is received.
12 — Langkah berikutnya12 — Next steps

Tiga langkah, dua minggu

Three steps, two weeks

01

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.

02

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.

03

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.

Untuk dan atas nama Meridian Software Works
For and on behalf of Meridian Software Works
Nama, jabatan, tanggal
Name, title, date
Diterima untuk dan atas nama klien
Accepted for and on behalf of the client
Nama, jabatan, tanggal
Name, title, date