Backend engineer focused on microservices and system-wide architecture. I build the data pipelines that move information between services.
Most of that work has been deep integration with third-party systems in real estate and the Samsung ecosystem, where the job is keeping end-to-end synchronization stable long after launch.
Most production incidents don't come from hard problems — they come from a change made without understanding what depended on the thing being changed. So my first contribution to a team is usually not code. It's reading the architecture and the business model behind it, until I can predict what a change will touch before I make it.
Before touching code or shipping an update, I map how the system fits together and what the company actually sells. That context is what stops a reasonable-looking change from breaking something upstream. The logic still gets applied properly — but inside the standards the application already follows, not alongside them.
I find out which cloud, which pipeline and which scaling model a team already runs before proposing enhancements. In an established company those choices are usually well made and well reasoned — very different from a startup or a legacy system. Recommendations should improve what exists, not restart it.
For a new integration or feature, I dig into how the pieces already connect and decide deliberately where the logic should live. That planning step is what keeps a codebase readable as it grows. I've seen new modules bolted on against the existing conventions, and the result is spaghetti that the next person has to work around instead of build on.
I use AI in the workflow, and I make sure it's given the whole system flow and the project's code standards before it writes anything — an agent working blind produces code that compiles and still doesn't belong. Human judgement stays in the loop on every change. Nothing ships because a model was confident about it.
Property data, room prices and organization FAQs sync to Elasticsearch daily as dense vectors from Gemini text embedding. A user message hits vector search, the Vertex AI reranker reorders the candidates, and Google Vertex AI reasons over what's left.
Replaced a quota-priced managed gateway with a custom edge built on KrakenD open source, so every new integration is a config change rather than another line on the Azure bill.
Moved search off Algolia onto Elasticsearch and Tencent ES, split by region so global and China Mini Program users each query a cluster near them. Relevance now lives in search templates that can be tuned without a deploy, with highlight queries backing autocomplete.
Implemented API integrations between SAP Hybris and third-party vendors, including authentication, data mapping, and other business logic. Collaborating with QA and other teams to meet deadlines.
A browser-based 3D game built with three.js.
bayanihan-web.vercel.app ↗Each service owns one responsibility and talks to the others over REST and gRPC. Organization settings go to KV; property data goes to Elasticsearch twice — once for search, once as embeddings for the AI agent.
{{ sysBody }}
Before writing code I map the data, the contracts, and the failure points. Most integration bugs are mapping bugs, not code bugs.
Mappings, search templates and prompts live as configuration, so tuning behaviour doesn't require a deployment.
Health checks, alerting and metrics ship with the feature — Sentry, AWS metrics, SES, and server alerts I'm on the hook for.
{{ stageBody }}
Based in Ormoc City, Philippines (UTC+8), already working with a London team. Happy to talk architecture, integrations, or a specific problem you're stuck on.