Datum

One system for running a construction company.

Co-founder · product, design & engineering

The office and the field, finally in one place.

Construction runs on handoffs, and handoffs are where things get lost. Datum keeps the projects, the people, the equipment, the safety paperwork, and the money in one place, so nothing has to survive being passed between five different tools.

Built for boots on the ground.

The field isn't an afterthought here. Daily reports, hazards, timecards, concrete pours. It all gets captured on site, while it's happening.

Datum's field view of a job day
The field's job day

Your day, already sorted.

Everyone opens Datum to their own work: what needs action, what's coming up, and what's running late.

Datum's personal work home screen
Your work, in one place

Every department. One Datum.

Estimating and bid analysis in Datum
Estimating
Finance overview in Datum
Finance
Safety dashboard in Datum
Safety
People dashboard in Datum
People
Equipment command center in Datum
Equipment
Strategy hub in Datum
Strategy

The short version.

The brand film. 28 seconds.

Building it.

I co-founded Datum and build the product end to end: design, frontend, backend, and the AI that runs underneath it.

What is shipped.

Full-stack engineer. Architecture, security, infrastructure and release, end to end.

2,259
HTTP endpoints across 394 backend services
1,031
tables in Azure SQL, behind 558 tracked migrations
332
screens and 392 shared components in React
132
standard operating procedures, automated end to end

Tenant isolation is enforced at the query layer rather than trusted to callers, with role based access through Entra ID. The agent layer runs inside that same boundary: a tool registry and persistent memory fenced by SQL guardrails and data policy, so an agent cannot reach across tenants.

An ERP adapter framework with a durable writeback queue, normalizing phase codes and cost types, so the platform talks to the accounting systems contractors already run. GDPR deletion and data subject export, which meant resolving one person across three identity systems that had never been connected.

A React Native app through TestFlight, an Outlook add-in deployed across the organization, and CI/CD into Azure with health checks and uptime monitoring.

How it is put together

A request passes down through these layers. Rest on a plate, or tap one, and it explains itself. Nothing here is a number the page does not already count.

Clients
Identity
one tenant boundary, three layers deep
Services
Guards
Data
Edges

Web app

React. Everyone opens Datum to their own work: what needs action, what is coming up, and what is running late.

Decision logs

The engineering behind three of those claims: what was chosen, what it cost, what broke.

  • Tenant isolationApp-layer scoping, an adversarial audit, and the day RLS went under all of it.
  • Session promptingAn agent that inherits the clearance of the person asking, and never has one of its own.
  • ERP writebackThe decision was who owns the money. The queue is just the consequence.
See it live · datumci.com← All work