Customer story · E-commerce · Reference deployment
From scattered Slack pings to one Inbox: how ElMundi runs Ship on itself
A small e-commerce team replaced ad-hoc agent prompting with a reviewable product workspace: every ticket can be traced from Linear to branch, PR, Playwright evidence, release notes, and the Inbox decision that needed a human.
Executive summary
ElMundi is the public reference deployment for Ship. Engineering wanted agentic throughput; the founders wanted procurement-grade evidence; nobody wanted a second control plane to babysit. The team shipped both by making the workspace policies, tracker, repo, and evidence trail the system of record.
Industry
E-commerce · D2C platform
Team
Engineering team of < 10
Stack
Linear · GitHub Actions · Cursor · Playwright
Status
Production · public reference org
01 · Situation
The team had agents that worked — but no operating model around them
ElMundi's engineering team had been using AI coding agents for months before adopting Ship. Capability was never the question. The question was governance: a roomful of people pasting prompts into chats produces working code and a tail of unanswered questions — which agent wrote this, against which spec, under which approval, and what proves it works in the browser? The pain was felt most by the people who do not write code: founders preparing for due diligence, the ops lead who has to explain a production incident, the new hire who joins on Monday and finds three undocumented "ways we do tickets".
On the engineering side the cost was subtler but real: operator overhead. Each morning consumed twenty to forty minutes of context-switching across Linear, the chat, the IDE, and Actions just to get the day's work moving. Agents were fast at the typing, but a human still had to be the orchestrator.
02 · Complication
Bolting on a vendor control-plane was off the table
The off-the-shelf options all came with the same trade: store your code or your secrets in someone else's SaaS, accept a proprietary opinion about how tickets, branches, and reviews should look, and replace one chat-driven blob of folklore with another. For a public-by-default e-commerce business that wanted to move faster without ballooning its third-party risk surface, that math did not work.
The ask was specific: keep code, secrets, and audit trails inside the systems the team already owns; let engineers compose the loop from named, diffable parts; and make the whole thing readable by a non-engineer on the buying committee.
03 · Resolution
Treat the monorepo as the SDLC control plane
ElMundi adopted Ship as an owner workspace on top of Linear and GitHub. The fix is not another dashboard — it is policy-first documentation plus automation that matches the words. Ship names the rules, owners, and evidence so security can inspect instead of guess.
- Linear became the spine. SDLC projects, states, and labels were standardised so an agent and a human can both reason about "what is in flight, what is blocked, what is done" without translation.
- GitHub Actions became the nervous system. Scheduled and on-demand workflows own agent launch, docs sync, and release hygiene. Secrets stay in GitHub, not in prompts.
- Cursor Cloud Agent became the execution layer. Branch-per-ticket runs, PRs as the review surface, no long-running "pet" agents.
- Playwright became the proof layer. Hosted browser runs attach traces and screenshots directly to the ticket narrative.
- The docs became the contract. Every workflow file, label, and state has a page under
/use-cases/elmundi; the page anyone reads ships the same words the automation enforces.
04 · Rollout
Wired in days, not quarters
The implementation was deliberately small. The team started with one workspace, connected Linear and GitHub, named the first policies they wanted to enforce (intake, planning, agent launch, release readiness), and pointed existing GitHub Actions at the new workflows. The first end-to-end run — a ticket in Linear, a branch cut by an agent, a PR with a Playwright trace, a merge — happened on day one. The follow-up week was spent tightening labels, naming conventions, and the owner rota for failed runs.
What did not happen is also worth naming. There was no migration project, no "adoption committee", no parallel staging org, no rewriting of existing code to suit a vendor schema. The workspace is additive; the existing CI, branch protection rules, and Linear automations stayed exactly as they were.
Results
What changed once the loop was running
Hours, not days
From idea to merged PR
Routine tickets — bug fixes, copy changes, schema updates — go from intake to a merged PR in a single working session, instead of slipping across days while operators reassemble context.
Single source
Docs = automation = sales deck
The same words describe the loop to engineers (docs), to procurement (this page), and to the runtime (workflow files). Drift between "how we say we work" and "how we actually work" is structurally impossible.
Zero
New control planes to license
No new SaaS to procure, no secrets leaving GitHub, no proprietary API in the critical path. The audit trail lives in systems your team already pays for and your auditors already accept.
Results are directional indicators reported by the ElMundi team operating the public reference deployment. The loop, the workflows, and the docs cited here are open source — adopters can reproduce the wiring and measure the same intervals in their own org.
Stakeholder view
What different stakeholders see
Engineering lead
Tickets close in fewer hops because the agent and the human share a vocabulary. Code review effort moved from setup-and-context-rebuild to the part that actually needs judgement.
Founder / GM
I can show a buyer the production site and the docs page that explains how it got built. There is no demo gap — the deck and the repository tell the same story.
Security / compliance
Every agent action is a Linear state transition, a labelled branch, an Actions log line, and a PR. The chain of custody is the existing GitHub + Linear chain — nothing new to audit, nothing new to attest.
New contributor
I read one docs page and one config file and I know what to do on a Monday morning. The names in the docs match the names in the workflow files match the names in Linear.
Evidence
Screens from the live site
Evidence comes from two places: the live consumer site (dev.elmundi.com) and the operator docs. Both render from the same monorepo the team ships into.


