Incomplete record? Flag for review.
Café Time Tracking
A mobile-first tool that turns manual attendance records into a shared employee and manager workflow.
9 automated tests on hours, overtime, and alert rules
- Node.js
- REST API
- PostgreSQL
- Supabase
Product Builder · Forward Deployed Engineering
I turn operational problems into usable software — connecting discovery, product decisions, full-stack implementation, and applied AI.
Applied AI · Agents · Integrations
A simpler way
to track shifts.The operational need, summarized
make the rules explicit
Two users, different jobs. Keep the daily employee action simple and give the manager a view of exceptions.
A browser interface, a Node.js API, and PostgreSQL connect the shift record to explicit weekly overtime rules.
Test the time calculations. Keep corrections subject to manager approval. Observe what the operation needs next.
Selected work
Three projects. Different constraints.
Decisions you can inspect.
Incomplete record? Flag for review.
A mobile-first tool that turns manual attendance records into a shared employee and manager workflow.
9 automated tests on hours, overtime, and alert rules
Nothing unconfirmed goes live.
A public website for a medicine import advisory, built with the client from briefing to launch on the company’s domain.
In production on the client’s domain · approved by the client
A human controls delivery.
A supervised pipeline that turns public news feeds into a focused briefing, with optional AI summaries.
Manually operated — no active schedule
More projects
Projects that support work with AI agents and delivery tracking.
Reusable skills that make AI-assisted engineering more predictable: a read-only repository safety audit, a risk-scaled code quality gate, an orthography check for interface text, and safe branch and worktree isolation.
A validation script checks the repository structure in CI. The organization follows mattpocock/skills.
A delivery tracker that turns merged pull requests, commits, and ROADMAP files into a timeline per project. A GitHub Action records each delivery in Firestore without duplicates, a private web panel shows stage and next steps, and an MCP server lets an AI assistant read the timeline and record milestones.
Private repository, because it tracks real projects. Firestore rules, real-time updates, and isolation between repositories are tested against the emulator.
A local MCP server that lets a person review a coding agent’s screenshots on an Excalidraw board. The agent submits a screenshot, the person draws and writes on it and marks the review ready, and the agent reads the annotated image and notes through MCP before sending the next round.
Runs only on 127.0.0.1 and imports only from allowed folders, with no login, cloud storage, or AI API. Integration tests exercise the real MCP protocol over stdio, and browser tests cover the board.
How I work
Build → learn → make it better.
Start with the people, the daily friction, and the rules that a working solution has to respect.
Café: different needs for employees and the manager.Translate an ambiguous need into a bounded workflow, with explicit trade-offs and a path to validation.
Café: a mobile browser flow, without a native app.Connect the interface, business rules, data, and integrations. Make important failure cases visible.
Briefing: filter and rank before asking a model to summarize.Test critical behavior, make the workflow observable, and use evidence to choose the next improvement.
TradePharma: staging with no indexing, then the company’s domain.Notes from the work
What the projects taught me
about building with constraints.
A mobile browser kept the first release accessible. The important complexity was in the business rules.
Read the decision ↗AI / BriefingThe workflow still produces a basic digest. Generation improves a bounded step after selection.
Read the decision ↗Language / TradePharmaAn import advisory can’t read like a store. No purchase, price, or cost: the copy explains the process instead.
Read the decision ↗Let’s build something useful
Let’s talk about your team, the problem, and what a useful first release could look like.