Tech with business value.
Seven years in, still curious. I build the boring parts well so the interesting parts have somewhere to live.

I'm a full-stack developer with 8 years of professional experience. I started writing code in 2018 and never quite got tired of it — I still get a kick out of shipping something that people actually use the next day.
Most of my work sits at the intersection of polished React interfaces and reliable .NET / Node.js services. I've built marketing sites for US law firms, e-learning platforms with real-time progress tracking, multi-version e-commerce systems, analytics dashboards, and more. Lately I spend a lot of time on AI automation — wiring LLMs into the boring middle of business processes where they earn their keep.
I split my time between long-term clients and selective freelance work. I prefer engagements where I can own a feature end-to-end, or join a small team where the lines between front-end, back-end, and infrastructure are deliberately blurry.
How I work
I lead with the business problem, not the framework. Most projects don't fail at the code — they fail at scope, expectations, and the honest conversation about what's worth building. I write down the scope, agree on what "done" means, and quote in a way that doesn't punish the client for asking thoughtful questions.
In the codebase I optimize for the next person — clear naming, small surface area, no clever abstractions until they've earned their place. I'd rather repeat three lines than ship a premature helper.
The stack I reach for
Front end: React, Next.js, TypeScript, Tailwind. Back end: .NET Core (8+) and Node.js, occasionally Laravel for legacy systems. Database: PostgreSQL or SQL Server, with EF Core or Prisma depending on the team. CMS: Umbraco when content workflows are the point of the project.
For AI work I lean on the OpenAI and Anthropic APIs, with LangChain only when the abstraction earns it, and pgvector for most retrieval workloads. n8n and Make handle the deterministic automation that doesn't need an agent loop.
What I'm good at
- Owning a small product end-to-end — design system, API, database, deploy.
- Untangling messy legacy code without rewriting everything from scratch.
- Translating vague client requirements into a written scope someone can sign.
- Wiring AI features into existing products without making the rest of the app worse.
Eight years, six pivots.
Roughly how I got here. The condensed version — fewer dead ends, more honesty about what stuck.
- 2018
First professional code
Started as a junior at a small Davao agency. Learned the difference between code that works and code other people can read.
- 2019 – 2020
Going full-stack
Picked up .NET and Umbraco on real projects. Shipped my first multi-month enterprise build — and broke production exactly twice.
- 2021 – 2022
Owning bigger surface area
Led teams on law-firm sites, e-learning platforms, and analytics dashboards. Started caring about deployment, observability, and the things that don't show up in pull requests.
- 2023
Going independent
Took on my first long-term direct clients. Learned that pricing, scope, and clear writing matter more than another framework.
- 2024 – 2025
AI in production
Wired Claude and OpenAI into existing client products — pipelines, agentic workflows, retrieval-augmented search. Most of it ships better as a careful pipeline than a true agent.
- 2026
Where I am now
Splitting time between a small set of long-term clients and selective freelance work. Writing more, saying no more often, and shipping things I'm willing to put my name on.
Common questions.
If yours isn't here, just send a quick email — I read everything.
Do you work alone or with a team?+
Both. I take solo end-to-end engagements, and I also join existing teams as a senior contributor when the role is well-scoped.
Do you work on-site?+
Almost always remote. I'm in the Philippines (UTC+8) and overlap comfortably with EU mornings and US afternoons. On-site visits are possible for kickoffs.
Do you take long-term retainers?+
Yes — I keep room for two retainer clients at a time. They pay for guaranteed weekly hours, faster turnaround on requests, and someone who already knows the codebase.
Are you available right now?+
Usually yes for new scopes starting in the following 4–6 weeks. The fastest way to find out is a quick email.