Scheduling is unglamorous and easy to get subtly wrong, which is exactly why so few tools do it.
Everything an agent recommends rests on the plan being computed correctly, the data being isolated
correctly and every change being on the record, so those came first. A few of the decisions
underneath ProjectMetrix.
Two pieces are open source, if you would rather read code than prose: the
scheduling engine,
which is dependency-free, has 25 tests, and carries a performance budget asserting a 1,200-task
plan computes in milliseconds. And the
interactive prototype
(source)
that every screenshot on this site was captured from.
The engine owns every date
Clients write inputs: durations, dependencies, constraints, calendars. Every computed field
is written only by the scheduling engine, which is pure and deterministic: same plan in, same
dates out, byte for byte. That's what makes what-if simulation trivial and testing honest.
What-if is free, by design
The engine has no database access and no clock. Simulating a change is copying the plan,
applying the change and running it again, with no special code path and nothing written. That is why
every agent proposal can show its consequences before a human approves it.
Fast enough to feel instant
A full recompute of a 1,000-plus task network runs in milliseconds. The first implementation
was two orders of magnitude slower; profiling pointed at calendar arithmetic, and memoizing
the working-day map fixed it. Measured, not assumed.
Multi-tenant from row one
Tenant isolation is enforced by the database itself through row-level security, not by
remembering to add a filter in application code. Cross-tenant reads return nothing and
cross-tenant writes are rejected, verified by tests that deliberately try.
Every change is on the record
An append-only audit log captures who changed what, when, and what it looked like before,
including which AI assistant proposed it and which human approved. It's the compliance story
and the training corpus at the same time.
Enterprise identity, day one
Single sign-on via OIDC, federating whatever directory a company already runs. Access and
permissions follow existing groups, joiners and leavers sync automatically, and people who
should be nameable (sponsors, vendors, SMEs) don't need accounts.
One API, no divergence
A single specification drives the product surface and the assistant's tool registry, so
anything the interface can do can be asked for in plain language. Chat capabilities can't
drift from the product because they're generated from the same source.
Upgrades that can't corrupt data
Schema versions are explicit, migrations are forward-only and checksum-protected, and the
service refuses to start against a database version it wasn't built for. Failing loudly at
boot beats serving errors from columns that don't exist yet.
Deployable where the customer needs it
A stateless API, configuration entirely from the environment, and no local disk state, so
scaling out is more instances behind a load balancer, and running inside a customer's own
environment is a deployment choice rather than a rewrite.