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 &quot;how we say we work&quot; and &quot;how we actually work&quot; 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.

ElMundi consumer app home on dev.elmundi.com
The product the loop ships — dev.elmundi.com home page. Every visible change here was driven by an agent-and-engineer pair walking the Ship loop.
ElMundi product pages on dev.elmundi.com
Product pages on staging. Each visible change corresponds to merged tickets that passed the same audit chain — Linear → PR → Playwright trace.
Ship docs chapter for ElMundi reference wiring
Operator depth — the same story written in the docs (/use-cases/elmundi) for engineers, security, and onboarding. One source, two audiences.