Skip to content
All work
Full-Stack · SaaS Platform
2024–25

ConTrust OS

Data-first construction ERP — logistics, procurement & finance

Full-StackSaaSPostgreSQLProduct
11
Relational tables
projects → procurement → billing
14
CSV sources ingested
one-drop importer
4
Stage procurement flow
MR → RFQ → PO → GRN
~$0
Infra cost
Supabase + Vercel free tier

Context

ConTrust OS (built as ConstructOS) is a full-stack SaaS platform for mid-to-large construction firms. Rather than selling software, it sells automated control: a user uploads existing Excel/CSV files and the platform maps them into a live PostgreSQL-backed operations environment with RBAC.

The problem

Construction logistics run on disconnected spreadsheets and manual updates, leaving managers without a timely, accurate view of fleet status, inventory, procurement approvals and billing — driving material waste, idle assets, missed approvals and slow (30-day) billing cycles.

My approach

I designed a Next.js 14 (App Router) front end over Supabase (PostgreSQL, Auth + RBAC, Storage). A PapaParse importer turns 14 source CSVs into normalised rows across an 11-table relational schema; procurement follows a Material Request → RFQ → PO → GRN flow with an approval matrix, and a billing ledger applies retention logic automatically.

Data-first ERP flow

14 CSV / Excel
source files
PapaParse
importer
Supabase Postgres
11-table schema + RBAC
Procurement
MR → RFQ → PO → GRN
Billing ledger
retention logic
Next.js dashboard
Gantt + charts

One-drop data onboarding

Instead of manual data entry, a manager drops their existing 14 spreadsheets into the importer. PapaParse parses them client-side and maps the rows onto a foreign-key-linked PostgreSQL schema — projects to customers, material requests to the approval matrix — so the system “exists” from day one.

Supply chain & automated approvals

An inventory master flags low stock against each item’s reorder level, and the procurement workflow (Material Request → RFQ → PO → GRN) checks an approval matrix so a new purchase order is automatically flagged “Pending” for the correct manager.

Project & finance intelligence

A Gantt view renders project start/end dates, while the billing module applies retention automatically — Net Payable = Gross − (Gross × Retention %) — tracked in a dedicated retention ledger to compress the billing cycle.

Outcome

A production-shaped ERP that turns spreadsheet chaos into a single source of truth on professional-grade infrastructure for near-zero cost — demonstrating full-stack product thinking from schema design to a polished operator dashboard.