I build AI agents, custom API integrations, and automation systems that run quietly on a server somewhere — handling the boring stuff so people can focus on the work that matters.
Smart-reply bots, classification systems, and decision agents that read messages, understand intent, and respond appropriately. Built on Claude and OpenAI APIs.
Reverse-engineering internal APIs, handling cookie/OAuth auth flows, building rate-limited workers that run 24/7. Webhook ingestion and Slack delivery.
Custom Express + MongoDB apps that aggregate data from multiple sources into one view. Built when no off-the-shelf tool fits the workflow.
A multi-platform conversation aggregator that pulls inbound messages from four different services into a single dashboard.
The client was managing brand conversations across multiple messaging platforms with different APIs, auth flows, and message schemas. Each platform had its own quirks — one used cookie-based auth with a short-lived token, another required webhook ingestion, a third had a polling-only interface.

An auto-reply bot for a third-party messaging platform that classifies inbound brand messages and responds with smart, context-aware replies.
The client was getting 30+ inbound brand inquiries per day and replying manually, often with delays. I reverse-engineered the platform's internal GraphQL API (cookie auth, undocumented token refresh flow), built a Node.js service that polls for new messages, classifies them by intent, and sends a templated reply customized to the inquiry type.

// classify inbound message → route to template async function classifyAndReply(message) { const intent = await classifyIntent(message.body); if (!TEMPLATES[intent]) { await slackAlert('unknown intent: ' + intent); return; } const reply = await personalize(TEMPLATES[intent], message); await sendReply(message.threadId, reply); log({ intent, threadId: message.threadId, at: Date.now() }); }
A rule-based agent that filters inbound campaigns from a creator marketplace and auto-applies to qualified ones, then pushes summaries to Slack.
The marketplace had hundreds of new campaigns daily, most of which didn't match the client's criteria (payout floor, job type, certificate status). Reviewing manually was eating into actual creative work time. I built a worker that pulls new campaigns on a schedule, runs them through a strict rule filter, applies to the qualified ones via the platform's internal API, and posts structured summaries to specific Slack channels for the team to review.

I'm a BSIT student based in the Philippines, currently working as the technical operator for a US-based content creator client.
My day-to-day is a mix of building new automations, maintaining the ones already in production, and figuring out which manual workflow is the next one to kill. I work most comfortably when I'm given a problem instead of a spec — the part I enjoy is mapping the workflow, finding the bottleneck, and shipping the smallest version that works.
Outside client work I'm in school full-time taking DBMS, Java, C, and Discrete Math. The classroom side keeps the fundamentals sharp; the client side keeps the edges practical.
I'm available for full-time work. If you've got a workflow that should be automated and isn't, I'd like to hear about it.
Available for full-time work. Async communication preferred.