I build the parts of a product people touch. Right now that means Danone's headless storefronts in Brazil and Mexico and, project by project, operations platforms built around how each client works.
Outside work I build Gastify, an iPhone finance app on the App Store, from the first spec to every release. Shipping isn’t the end of the job: I read the analytics to see where people drop off and what they never open, and that becomes the next spec.
Work
Gastify
A finance app for iPhone, built as a pair.
iOS · 2024 – now
Gastify as released on the App Store.
Bills, subscriptions and instalments with a reminder before each is due. Expenses are logged by hand on purpose, not read from the bank. Juan and I build it side by side: we plan, decide, ship, read the numbers and go again. He leads design; I write the React Native code and run releases, subscriptions and analytics.
Bonafont, the Mexico store: category, product, and the delivery address check before adding to cart.
Danone's direct-to-consumer stores used to reload the whole page on every click. I led the move to a headless Next.js storefront, built the checkout with address validation and Mastercard 3DS, and took PageSpeed from single digits to around 60 on image-heavy pages. Content teams now publish without waiting for a deploy.
Next.js, React, TypeScript, GraphQL, Magento, New Relic
Service ops
Maintenance platform for a gym equipment company.
Client work · 2023 – now
A finished preventive service: engineers, times, the checklist per machine and the manager’s signature. Sample data, client brand changed.
Built around how this company already worked. Staff keep every client gym and its machines on file, schedule preventive and corrective services and assign engineers. Engineers work each machine through a checklist on their phone and collect the gym manager’s signature; the system then produces the PDF report. Gyms log in to see their inventory, their service history and to report a broken machine with photos.
Green, amber and red dots: on time, close to the limit, or late. Sample data, client brand changed.
The same client needed one place for requests between its departments: quotes, warranty claims, customer complaints. Each department defines its own request types, with their own form fields and response times. The board shows at a glance which tickets are on time, at risk or late, counted in office hours only. Every change lands in the ticket’s timeline.
The broker’s view: every project with its starting price, location and sales stage. From the design file, with project names and photos replaced.
Built for a real estate developer. Each project gets a public landing page with the basics and a form to ask for information. The real work happens with a broker: they log in, check which units are still available, compare options side by side with the buyer, walk them through the payment plan month by month and reserve the unit with a Stripe payment.
Next.js, TypeScript, Chakra UI, React Query, Zustand, Stripe, Leaflet, Strapi
How I work
Spec-driven development
Every feature starts as a spec: what changes for the person, the rules and the edge cases. It is the brief for the AI agents and the reference for whoever joins next.
Reviewed, then tested
Agents write from the spec; I review every line, and nothing merges without passing tests.
Measured after launch
Errors and usage data show what to change next, and that becomes the next spec.