Portfolio case study
NoPM is a live, hosted proof-piece for that thesis. It is a lite, API-first project management tool where governance — immutable audit, scoped tokens, four-eyes approval — is engineered into the data and API layer, not bolted onto the UI. Shipped solo in eight waves using an AI multi-agent workflow.
The thesis
Most PM tools treat audit trails and change control as UI features — export logs, activity feeds, manual history. They can be bypassed by anyone with a database connection or a sufficiently permissive service key.
NoPM inverts that. Every mutation flows through the route() API wrapper and calls writeAudit() exactly once — fail-closed. Postgres triggers enforce append-only semantics. A service key cannot rewrite history. The UI is just a consumer of the same governed API your agent calls.
“The same surface a human uses — 61 documented endpoints, OpenAPI, an
llms.txtindex, and scoped Bearer tokens — is the surface an AI agent uses. No special mode, no privileged bypass.”
The wedge
Every action is a stable REST endpoint. Scoped resource:action Bearer tokens, an OpenAPI spec, an llms.txt discovery index, and a nopm CLI let any agent drive the tool over plain HTTP — identical to the web console.
Every mutation writes exactly one append-only audit row. Destructive deletes need four-eyes: a maker requests, a different checker approves (enforced by Postgres CHECKconstraints). Even a service key can't rewrite history.
Timeline, resource, and budget in one governed model — the gap most lite PM tools miss. Over-allocation surfaces as a clash; spend rolls up to EVM variance; a locked timeline forces a rebaseline sign-off.
What was built
$ nopm tasks rm task_8f3a --reason "superseded by revised cutover plan" ⏸ delete requested — pending a checker's approval (four-eyes) $ nopm approve req_2c91 # a different token: task:delete:approve ✓ approved & committed # one immutable audit row written $ nopm audit --limit 1 created_at actor_label action target 2026-06-08T… checker (agent) task.delete task_8f3a
Proof metrics
Every requirement has an R-ID, a status, and a traceability row. RTM verification runs in CI. Tests target the governance rules first: can a maker self-approve? Does a missing scope return 403? Does a delete without a four-eyes approval fail?
Stack & method
Technology
Discipline
Every endpoint is documented. Every mutation is audited. The console is open.