Impact01Approach02Case Studies03Work Together04Insights05About Me06Let's talk →
Construction Workflow

Mini-BQ

From WhatsApp chaos to a structured renovation management platform — built solo in one month.

Next.jsNestJSPostgreSQLVercelPWAAI-Assisted Dev WorkflowClaude Code
0
BOQ line items
0 month
Solo build time
0 projects
Live in production
0 months
Active renovation tracked
Problem

Renovation ran on
WhatsApp and memory

A year-long residential renovation in Malaysia. Three parties — homeowner, main contractor, and subcontractors — each communicating in separate WhatsApp groups. Progress photos buried in chat history. Claims raised verbally or by Excel. No way to tie a photo to a specific work item, no documentation trail from site to invoice.

The Bill of Quantities existed as a PDF or Excel printout — a static document the homeowner couldn't meaningfully interact with. There was no way to know, at any point, what percentage of the contracted work had actually been completed versus what the contractor was claiming had been completed.

Disputes over defects were especially painful. Without a timestamped, location-pinned record, a defect raised verbally could be denied, forgotten, or simply not prioritised. Payments had no formal hold mechanism — pressure was entirely social.

Solution

A structured platform
homeowners can own

Mini-BQ is a web application (PWA) that gives homeowners a single platform to manage the full lifecycle of a renovation project — from importing the bill of quantities, to tracking daily work done, to processing contractor claims, to logging and resolving defects.

The system is designed for non-technical homeowners. Every piece of documentation — photos, approvals, defect logs, invoices — is tied to a specific zone on the floor plan and a specific line item in the BOQ. Nothing floats loose.

BOQ Import
Excel upload or AI-powered OCR
Homeowners upload their existing quotation or contract. Two paths: structured Excel import, or AI-powered OCR — upload any document, AI extracts and restructures the line items for user review before committing.
Floor Plan Zoning
Draw zones on the actual plan
Upload a floor plan image. Draw zone boundaries directly on the plan — Bedroom 1, Family Room, Outdoor, Roof. Every photo, work done entry, and defect is tagged to a zone. The plan becomes a live project map.
Work Done & Claims
Photo evidence tied to BOQ items
Contractor logs work done by selecting the zone and BOQ line items completed, attaches photos as evidence. Homeowner reviews and approves. Approved work done entries roll up into invoice claims — no unverified amounts.
Defect Module
Pin, log, hold payment
Raise a defect by dropping a pin on the floor plan — zone auto-detected. Attach photos, assign severity (Critical / Major / Minor), tag responsible party. Open defects create a documented basis to withhold payment until resolution.
Approach

Architecture & Build

The platform is a full-stack web application built on a modern, cost-efficient stack — deliberately chosen so the entire system runs at near-zero cost during early usage, with a clear path to scale.

System Architecture
Next.js Frontend
React · PWA Mobile responsive
NestJS API
REST backend Auth · Business logic
PostgreSQL
Neon serverless Vercel marketplace
Vercel
Deploy · Edge Free tier
AI OCR Layer
BOQ extraction Document parsing
AI Development
Claude Code as the development partner
Built solo using Claude Code as the primary coding assistant. The workflow was structured: user stories first, implementation plan, code generation, unit tests, E2E tests, then deployment. Not "ask AI to write code" — a disciplined sprint-based engineering workflow with AI as the pair programmer.
Sprint Design
Token management as an engineering discipline
Claude Code has session limits. Sprints were designed with minimal cross-dependencies so each conversation was self-contained. Obsidian used as a knowledge graph — features, user stories, architecture decisions indexed so AI could orient quickly without full history re-read.
Quality
Senior review on every AI output
AI-generated code is not inherently secure or well-architected. Every output was reviewed: architecture decisions challenged, security scanning applied, performance patterns verified. Domain knowledge was the filter — speed without judgment creates technical debt.
Delivery
Reusable deployment pipeline
Built reusable CI/CD scripts for consistent deployment to Vercel and Neon across sprints. Each sprint ended with a deployable, tested release — no broken main branches, no deferred integration pain.
A solo engineer with the right AI workflow can deliver an enterprise-grade platform in a fraction of the traditional time — if they have the domain knowledge to know when the AI is wrong.
Outcome

Before & after

The platform is live and in active use across two renovation projects, tracking a combined 324+ BOQ line items across a full year-long build cycle — from demolition through to finishing works.

DimensionBeforeAfter
Progress trackingProgress updates in WhatsApp — no structure, photos buried in chatEvery work done entry logged with photos, zone, and linked BOQ items. Full audit trail.
BOQ accessibilityBOQ as a static PDF/Excel — no way to track completion statusLive BOQ with In Progress / Completed status per item. AI OCR import from any document format.
Contractor claimsContractor claims raised verbally or by email — no supporting evidenceInvoice claims generated from approved work done entries only. Evidence-first invoicing.
Defect managementDefects raised informally — no record, no accountability, no payment leverageDefects pinned to floor plan with severity, photos, and assignee. Open defects documented basis to hold payment.
Floor plan usageFloor plan as a paper reference onlyInteractive floor plan with drawn zones. Every entry photo, work done, defect — geolocated to a zone.
Financial visibilityNo visibility on total claimed vs approved vs paidDashboard shows real-time financial summary: Total Claimed · Approved · Paid · Outstanding.
Lesson

What building solo
with AI taught me

AI is a multiplier, not a replacement. The productivity gain from Claude Code was real — a solo engineer delivering a full-stack platform in one month is evidence enough. But the quality of the output was entirely dependent on the human reviewing it. Architecture decisions, security patterns, performance trade-offs — AI generates plausible code fast. Knowing whether it's the right code requires domain experience. Human-in-the-loop is not a safety net; it is the engineering practice.

Context management is a first-class engineering problem. AI sessions have limits. Designing sprints with clean boundaries — minimal cross-dependencies, clear interfaces between modules — is not just good software design; it is the prerequisite for effective AI-assisted development. Obsidian as a knowledge graph gave the AI a reliable index to orient from, without needing to reconstruct full context from scratch each session.

Enterprise-grade is a mindset, not a team size. Security scanning, E2E testing, CI/CD pipelines, structured deployment — these practices don't require a team. They require discipline. The same standards applied at a large industrial group with a team of 20 applied here with a team of one. The constraint changed. The standard didn't.

System Screenshots
The platform in production
Mmini-bqConstruction trackerPROJECTDashboardFloor PlansPhotosBill of QuantityWorkdoneDefectsInvoicesSettingsMCMichael ChangAdminFloor Plans/First FloorBothZonesMapSelectDrawReplace100%150%200%Bedroom 1Zone 1FamilyRoomMasterbedRoomno roomsome zoneFirst FloorZonesActivity5 zonesBedroom 1Family RoomMasterbed Roomno roomsome zone
Floor Plan — Zone DrawingUpload floor plan, draw zone boundaries. Each zone becomes a location anchor for photos, work done, and defects. Project name masked.
Mmini-bqConstruction trackerPROJECTDashboardFloor PlansPhotosBill of QuantityWorkdoneDefectsInvoicesSettingsMCMichael ChangAdminBill of Quantities324 items · Grand Total: + Add ItemAllIn ProgressCompletedAll BillsAll ElementsAll TradesBill 1 - PreliminariesElement: PreliminariesCOMPLIANCE3 items ·SITE MANAGEMENT8 items ·TEMPORARY WORKS6 items ·ATTENDANCE1 item ·DOCUMENTATION2 items ·DEFECTS1 item ·Preliminaries — Subtotal :Bill SubtotalBILL 2 - DEMOLITION WORK & RETAINING WALLElement: DEMOLITION WORKSDEMOLITION1 item ·
Bill of Quantities324-item hierarchical BOQ — Bills → Elements → Line Items. All financial amounts masked. BOQ codes and category names retained.
Mmini-bqConstruction trackerPROJECTDashboardFloor PlansPhotosBill of QuantityWorkdoneDefectsInvoicesSettingsMCMichael ChangAdminWorkdoneTrack and manage work done entries for this project+ Log Work DoneUpload PhotosAllDraftSubmittedApprovedRejectedSearch...All ZonesYesterday & Jun3 entries · 3 approvedW.D. IDTITLEZONEBOQ ITEMPERIODSUBMITTED BYSTATUSWD-00.005Plastering2Outdoor1.1.02 →31/05/2026ApprovedWD-00.006Retaining wall excavation and concreteOutdoor2.2.01 →01/06/2026ApprovedWD-00.004Demolition workOutdoor2.1.01 →01/06/2026Approved4 May 20265 entries · 5 approvedEnd of list
Workdone — Progress LogContractor work done entries grouped by date. Each entry links zone, BOQ item(s), period, and status. Project name masked.
Mmini-bqConstruction trackerPROJECTDashboardFloor PlansPhotosBill of QuantityWorkdoneDefectsInvoicesSettingsMCMichael ChangAdminInvoicesManage claims and payment certificates+ New InvoiceTOTAL CLAIMEDTOTAL APPROVEDTOTAL PAIDOUTSTANDINGAllDraftSubmittedApprovedPaidRejectedSearch...Thursday 11 Jun1 claimIDSUBMITTED BYINVOICE NO.DATECLAIMEDAPPROVEDRETENTIONNET PAYABLESTATUSIV-00003IV/CON/LMY/20-00711 Jun0.00Approved5 May 20261 claimIV-00002IV/CON/LMY/20-0775 MayPaid
Invoices — Claims & Payment CertificatesAll financial amounts masked. Invoice numbers, dates, and status retained. Submitted by names and project name masked.
Mmini-bqConstruction trackerPROJECTDashboardFloor PlansPhotosBill of QuantityWorkdoneDefectsInvoicesSettingsMCMichael ChangAdminFloor plan0 - Ground Floor Plan+ Upload photosOutdoor (13)Attached to workdoneAttached to workdoneAttached to workdoneRetaining wallRetaining wallRetaining wallRetaining wallRetaining wallAttached to workdoneAttached to workdoneAttached to workdoneAttached to workdoneAttached to workdone0 - Ground Floor Plan2 zonesAll zones13Outdoor13Porch0
Photos — Zone-Tagged GalleryAll site photos tagged to floor plan zone and linked to work done entries. Project name masked.
2:22●●●BOQ COMPLETED50%TOTAL BOQRM 83kWorkdone awaiting review0All caught upView all →Open defects1QA-001 Something happened here57dView all →New Invoices received1323234dUpload PhotoLog Work DoneRaise DefectDashboardWorkdoneDefectsMore
Mobile Dashboard (PWA)BQ completion, pending workdone, open defects, invoices — at a glance. FAB for quick actions: Upload Photo, Log Work Done, Raise Defect.
2:21●●●DefectsCherasAllSearch...19 APR 2026 (1)QA-003 · Some title on which ok like 1ClosedCriticalno roomMing Wei18 APR 2026 (2)QA-002 · Crack a lotClosedMajorno roomEanQA-001 · Something happened hereOpenMajorno roomEanDashboardWorkdoneDefectsMore
Mobile — Defects ListList of logged defects grouped by date, showing status, severity, zone, and assignee. Red badges for open defects.
2:23●●●Raise Defect2345Tap the floor plan to drop a defect pinBedroomFamily RoomMasterbed Roomsome zonePin dropped — Auto-detected: Bedroom 1← PreviousNext →
Mobile — Raise Defect: Pin on Floor PlanTap to drop defect pin. System auto-detects zone from polygon boundaries. Existing defect pins shown. 5-step wizard flow.
2:24●●●Raise Defect345LocationChangeFirst Floor - Bedroom 1Photos1/5Upload NewFrom Zone (0)Title *Some crack at the edge of the sofaDescriptionOptional details...SeverityCriticalMajorMinorAssign ToSelect contractor...← PreviousSave DraftNext →
Mobile — Raise Defect: Detail FormLocation auto-filled from pin. Photo upload, title, description, severity (Critical/Major/Minor), assignee. 5-step wizard.
← Previous Case StudyGatepass Control System
All Case Studies →Back to portfolio