01
End-to-end SaaS
Architecture, backend, frontend, mobile and deployment. I do not outsource what matters — I deliver the full stack, from schema to component.
Full-stack software engineer
I build products end to end — architecture, backend, frontend, mobile and AI agents — in sectors where business rules are dense and the margin for error is thin. Six products are in production today on the same technical foundation.
Available for contract work
By the numbers
How I work
01
Architecture, backend, frontend, mobile and deployment. I do not outsource what matters — I deliver the full stack, from schema to component.
02
Schema-level isolation in PostgreSQL, decoupled Laravel modules, no data leaking between clients. The same pattern replicated across six products.
03
MCP agents running inside the product, not a chatbot bolted on the side. They operate on real data, with real permissions, under the same tenant model.
04
Design system, shared template and CI with a real gate. A new product starts with multi-tenancy, RBAC and authentication already in place — not from scratch.
Selected work
Clients cannot be named publicly. I can go into detail under NDA — just ask.
CASE / 01
Public procurement
Multi-tenant platform for companies bidding on public tenders. Integration with government APIs, automated prospecting, tender analysis and price comparison across competing platforms. A conversational MCP agent operating on the tenant data.
In a recent consolidation I merged three modules into one and took the product from seven modules down to five — proving parity across 345 routes, with no migration re-run on any of the five schemas and 979 tests green.
Architecture · Backend · Frontend · AI
CASE / 02
Public sector
The largest product in the portfolio: a modular platform for city halls and public agencies, isolated per municipality at the schema level. Modules for budgeting, fleet, assets, scheduling and HR with payroll and timekeeping — each client enables only what they use.
Architecture · Backend · Frontend · AI
CASE / 03
Tax
Cross-referencing service invoices, receipts with no matching invoice and federal tax authority statements into a revenue cube with propagated measures. A domain where a badly implemented rule does not produce a bug: it produces an unjustified tax assessment.
Backend · Frontend · Tax rules
CASE / 04
Citizen services
Mobile app for public services with a single codebase running on iOS, Android and web. Public venue booking, municipal taxi service with offline support, payslips with income tax and social security statements, city financial indicators and a water and sewage portal.
Published on both stores and in use by citizens — not a prototype.
Mobile · Frontend · Integrations
Platform work
Much of what I deliver is not a product feature: it is the foundation the other products — and the other developers — rely on.
A Vue 3 component library shipped as a private npm package and versioned with semver. A single canonical source shared by three products: fixing one component fixes all three at once.
The starting point for a new product, already carrying schema-based multi-tenancy, global and local RBAC, authentication, PDF generation and the core modules. Time from decision to a working screen drops from weeks to days.
There was one MCP server per product, each a copy of the same scaffold with the same dozens of duplicated tools — which produced the same bug in three places at once. I designed the unified server that resolves the connection per product at runtime and replaces all three, proving coverage case by case before retiring each one.
Stack
About
Software engineer focused on SaaS platforms in complex domains. I work with Laravel, Vue 3 and multi-tenant PostgreSQL on products running in production across public procurement, municipal government, tax, payroll and citizen services.
I got here by a crooked path. I was a personal trainer, lived abroad between 2014 and 2018 working in hostels in Chile and Norway, and led a CrossFit coaching team for three years. I joined the company I am at today in 2021, in an administrative role; I moved into development in 2024 and now I lead its innovation team.
Coaching people teaches something that carries straight into software: you answer for someone else's outcome, and a lapse in judgement has physical consequences. That is where my discomfort comes from with a system that passes its tests but that nobody has ever opened on screen.
I consolidated products that started out separate into one coherent technical platform: the same modular architecture, the same tenant isolation model, the same design system, the same quality gates. That is what lets me ship a new feature in any of them without relearning the terrain.
I work with AI agents integrated into the product through MCP — not as a marketing layer, but as a real operating interface, with the same permissions and the same tenant scope as the graphical interface. I also supervise an intern and write the onboarding documentation: part of my job is making sure someone else can get into the code without having to ask me.
Everywhere I have been, I made a difference. And every time I left, I left behind people who carried the work forward — or improved on what I built.
Let us talk
Open to opportunities and contract work. For details under NDA, drop me an email.