Case study by Gabriel Espinheira, senior full-stack engineer
SharpOS, the platform my studio runs on
One workspace per client for pages, boards, forms, customers, audits and support, on web, macOS and iOS. I build it as its only engineer, directing coding agents.

The brief
One studio, many clients, one workspace each
The problem
My studio, SharpHaw, runs websites, ads, content and automations for small businesses across Europe. Every client comes with pages, boards, forms, customers, site audits, media, a brand kit and support conversations.
Who it's for
The SharpHaw team and its clients, who share one hub. Each client gets an organization where every item is marked for the client or internal, and access is set per area and per resource.
What it does
SharpOS keeps a client's pages, boards, forms, customers, audits, Studio posts and support inbox in one place. AI agents work in that same workspace through REST and MCP.
My role
I'm its only engineer, directing coding agents, from the data model to the interface. It has shipped 104 releases since 08/04/2026, and SharpHaw runs on it every day.
2,734
commits since 24/03/2026
104
releases, about four a week
39,770
unit tests, plus 140 end-to-end
220
operations people and agents share
Counted from the repository on 07/10/2026. Test figures come from the coverage report of 12/09/2026.
Tech stack
Three apps on one TypeScript codebase and one Convex backend
Open a tool to see what it does in this product.
Interface
Apps and backend
AI and agents
Delivery
Features
What a client's workspace holds
SharpOS ships 26 feature modules. Open one to see how it works.

Cards with typed properties, shown as columns, a table, a grid or a calendar, live in every window.

Briefs and plans several people edit at once, in a page, a card or a customer note.

Forms on SharpOS or the client's own site, where a submission starts the work.

Social posts designed from templates on a canvas, then exported together.

A website assistant that answers from each client's own knowledge base, then hands over to the team.

An agent audits the client's site and pushes in nine scores and a fix-first queue.
Shipping
104 releases, about four a week
| Week of | Commits |
|---|---|
| 23/03/2026 | 87 |
| 30/03/2026 | 116 |
| 06/04/2026 | 171 |
| 13/04/2026 | 105 |
| 20/04/2026 | 132 |
| 27/04/2026 | 89 |
| 04/05/2026 | 75 |
| 11/05/2026 | 133 |
| 18/05/2026 | 84 |
| 25/05/2026 | 21 |
| 01/06/2026 | 54 |
| 08/06/2026 | 58 |
| 15/06/2026 | 33 |
| 22/06/2026 | 194 |
| 29/06/2026 | 62 |
| 06/07/2026 | 87 |
| 13/07/2026 | 14 |
| 20/07/2026 | 47 |
| 27/07/2026 | 94 |
| 03/08/2026 | 65 |
| 10/08/2026 | 67 |
| 17/08/2026 | 99 |
| 24/08/2026 | 132 |
| 31/08/2026 | 358 |
| 07/09/2026 | 68 |
| 14/09/2026 | 41 |
| 21/09/2026 | 85 |
| 28/09/2026 | 1 |
| 05/10/2026 | 3 |
Engineering
Built with agents, held together by tests
Open a topic for the decisions and the numbers behind it.
220
operations in REST and MCP
REST and MCP share one registry of 220 operations, such as creating a card, each one scoped.
53
versioned modules in four tiers
53 versioned modules in four tiers, shipped together on one deployment.
94.6%
line coverage across 103k measured lines
Every change starts from a failing test and passes one required gate.
v3.4.1
latest release, 06/10/2026
Each release is a pull request that tags the version and publishes the notes.
329
commits from v2.5.5 to v3.0.0
How a codebase knotted into one cycle became 53 modules, one revertable step at a time.
Need someone to own the build?
I'm open to a full-time role or a contract build. I read every message myself and reply within 2 business days.
- Full-time role
A senior engineer on your team
Remote on EU hours, or hybrid and on-site in Lisbon.Talk about a role - Contract build
Your product, built end to end
Web, desktop and mobile on TypeScript, Next.js, Convex and Expo, including AI features.Talk about a build
