<jag/> works · v1.0 · cozumel, mx · 2026

Custom software, integrations, and support look like three different services. They aren't.

They're three moments of the same task: making a business run with less friction.


Most of the time, the problem that shows up as "we need a new system" is actually something else. Sometimes it's an old system nobody maintains. Sometimes it's two tools that don't talk to each other. Sometimes it's a process that was never written down and lives in one person's head.

My work starts there: figuring out which of those it is, before proposing to build anything.

keep scrolling

Building software from scratch is expensive and slow. That's why it should almost never be the first answer.


The first question is always whether the problem already has a solution. If there's a tool that solves 80% of what you need, use it. You'll save money, time, and headaches you didn't know existed.

Custom software makes sense when the business has operational logic no generic tool understands. Specific rules. Flows that don't fit the templates. Data that moves between areas in a way only your business uses.

In those cases, forcing a generic tool ends up more expensive than building one. You end up with broken processes, duplicated manual work, and a team fighting the system instead of using it.

That's custom software: solving the specific problem with the minimum structure that works. No more, no less.


Most businesses don't need more tools. They need the ones they already have to talk to each other.


A well-built integration is invisible. Data moves from one place to another without anyone copying it by hand, without intermediate Excel sheets, without that person on the team who spends their day "updating the system" instead of doing their actual job.

This sounds obvious. In practice, almost nobody gets it right. Integrations fail for boring reasons: a field that changes name, an API that updates without warning, an error nobody sees for three weeks until a customer complains. A serious integration accounts for those cases from the start. A bad one discovers them after the damage is done.

Integrating well means making the existing tools behave like a single system.



A solution that depends on initial enthusiasm isn't a serious solution.

Software isn't finished when it's delivered. It's delivered when it starts to live. After launch, things show up that no plan accounts for: a case nobody had seen, a user who uses the system in an unexpected way, an OS update that breaks something, corrupt data that enters through a door that looked closed.

Serious support isn't being available to put out fires. It's designing the system from the start so fires are rare, and so when they happen they can be resolved without rewriting anything.

That means concrete things: documentation a human can read, errors that say what happened instead of a numeric code, logs that let you reconstruct what the system did and why, and a well-defined responsibility for each part of the system. Without that, support turns into archaeology.


Designers, studios, and agencies almost always have the same problem: the idea is clear, the design is finished, and between that and something that works in production there's a gap nobody wants to cross.


That gap isn't just technical. It's translation. A Figma file isn't an implementation instruction. A nice After Effects animation doesn't say how it behaves in a real browser on a slow connection. A moodboard doesn't solve what happens when a client uploads a 12-megabyte image.

My work with creatives is being the part that crosses that gap without breaking what was already well thought out. I'm not here to redesign. I'm here to make what was designed exist, work, and keep working after the project ships.

In practice that means things like: taking a design and turning it into HTML and CSS that respect the visual system down to the detail; setting up the minimum backend so an editorial site can be edited without touching code; connecting a store to real inventory; or solving the technical part of a campaign the studio already sold but doesn't know how to execute.

I don't sign the work. I don't compete for the client. The studio or creative keeps the relationship, I deliver the technical part with the quality the project deserves, and everyone comes out looking good.



Before writing code, I understand the business logic. Not the version on the org chart. The real version, the one that happens when the client calls at five on a Friday afternoon.

That part almost always takes longer than people expect, and it's almost always what decides whether the project will work. A system built on misunderstood logic doesn't get fixed with more code. It gets rewritten.

After that, the work is orderly and boring in the good sense: simple structure, clean data, defined responsibilities for each thing, and deliverables that work in production, not in a demo.

I don't promise magic. I promise the system will do what we said it would do, that it will keep working when I'm not watching, and that when something changes in the business, the system will be able to change too.


The tool changes. The logic doesn't.

If you have a problem that looks like software but you suspect it's something else, you're probably right. Let's talk.