Generate Indonesian construction quotation/proposal PDFs (Surat Penawaran). Use when creating proposals for bored pile drilling, construction services, or similar project quotes in Indonesian. Supports custom items, pricing, and terms.
Resources
7Install
npx skillscat add albertpurnama/agent-skills/create-proposal Install via the SkillsCat registry.
SKILL.md
Create Proposal (Surat Penawaran)
Generate Indonesian construction proposal PDFs matching KBI's standard quotation format.
Quick Start
# Generate HTML
python3 skills/create-proposal/scripts/generate_proposal.py data.json output.html
# Convert to PDF (Chrome headless)
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless --disable-gpu --no-pdf-header-footer --print-to-pdf=output.pdf file://$(pwd)/output.htmlTemplate Structure
1. Letterhead (HTML/CSS)
- KBI logo image on left
- Company name "PT. KONSTRUKSI BORNEO INDONESIA" in blue
- Address, phone, email in blue
- Blue bottom border
2. Document Header
- Date on left: "Samboja, [tanggal] [bulan] [tahun]"
- Nomor on right: "KQ-XXX/QUO-KBI/[BULAN]/[TAHUN]"
- Recipient: Kepada Yth., company name, Ditempat
3. Price Table (6 columns)
| NO | Deskripsi | Qty | Satuan | Harga Satuan (Rp) | Jumlah (Rp) |
- Project info rows inside table (Lokasi Proyek, Alat, Pekerjaan Pengeboran)
- Sub-items supported (indented under parent)
- "Rate Only" for items without calculated total
- Summary: Nilai Jasa → DPP (×11/12) → PPN 12% → GRAND TOTAL
- Terbilang: amount in Indonesian words
4. Keterangan (9 standard terms)
Payment terms, responsibilities, pricing conditions
5. Signature Section
- Signature stamp + director name (right side only)
JSON Data Structure
{
"nomor": "KQ-018/QUO-KBI/I/2026",
"tanggal": "Samboja, 29 Januari 2026",
"kepada": "PT. SCS",
"lokasi_proyek": "Renovasi RSUD Kondosapata Mamasa",
"alat": "Bored Pile Machine",
"items": [
{
"no": 1,
"deskripsi": "Pengeboran Bored Pile Ø60",
"sub_items": [
{"deskripsi": "a. Pengeboran Tanah", "qty": 2496, "satuan": "m¹", "harga_satuan": 400000},
{"deskripsi": "b. Pengeboran Batu", "qty": 1, "satuan": "m¹", "harga_satuan": 1000000, "rate_only": true}
]
},
{"no": 2, "deskripsi": "Jasa Pengecoran", "qty": 365.75, "satuan": "mᶟ", "harga_satuan": 150000},
{"no": 3, "deskripsi": "Jasa Pembesian", "qty": 13457.21, "satuan": "Kg", "harga_satuan": 2000},
{"no": 4, "deskripsi": "Persiapan", "qty": 1, "satuan": "Ls", "harga_satuan": 100000000}
],
"keterangan": ["Custom terms..."],
"direktur_name": "ARIANTO GAN"
}Item Options
rate_only: true— Shows "Rate Only" instead of calculated totalexclude_from_total: true— Excludes from Nilai Jasa calculationsub_items— Nested items under a parent row
Common Units
m¹— linear metermᶟ— cubic meterKg— kilogramLs— lump sum
Assets
assets/kbi-logo.jpg— KBI logo for letterheadassets/signature-stamp.jpeg— Director signature stamp
Technical Notes
- Letterhead built with HTML/CSS (not image)
- Chrome headless converts HTML to PDF
- Images embedded as base64 data URIs (self-contained HTML)
- A4 page size with margins: 8mm top/bottom, 10mm left, 12mm right
- Number format: comma for thousands (1,000,000), period for decimals (2,496.00)