mark@automation:~$
work stack about contact
Automation Engineer / Manila, PH

Mark Jherico
Magno

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.

Status Available · Full-time
Stack Node.js · APIs · LLMs
Based in Philippines
Currently BSIT student
01 ——

What I build

// agents

AI Agents

Smart-reply bots, classification systems, and decision agents that read messages, understand intent, and respond appropriately. Built on Claude and OpenAI APIs.

// integrations

API Integrations

Reverse-engineering internal APIs, handling cookie/OAuth auth flows, building rate-limited workers that run 24/7. Webhook ingestion and Slack delivery.

// dashboards

Dashboards

Custom Express + MongoDB apps that aggregate data from multiple sources into one view. Built when no off-the-shelf tool fits the workflow.

I'm not a no-code consultant. I write the code when no-code can't handle it — rate limits, custom auth, complex payloads, edge cases. The result is automations that don't break the moment your tools change.
— how I work
02 ——

Selected work

Project / 001

Unified Inbox
Dashboard

Node.js Express MongoDB GraphQL REST

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.

  • Built normalization layer to unify message schemas across 4 platforms
  • Implemented auto token refresh on a 50-minute interval to avoid auth drops
  • Per-platform error handling and retry logic for failed message fetches
  • Single Express server with platform-specific service modules
Outcomes
  • Replaced the habit of switching between 4 separate apps with a single tab
  • Cut average time-to-first-reply by an estimated 60–70%
  • Auto token refresh eliminated daily manual re-auth across two platforms
  • Running stable in production since launch with no missed message incidents
Unified Inbox dashboard showing aggregated conversations from multiple platforms
Unified Inbox architecture diagram
Project / 002

AI Smart-Reply Agent

Node.js Claude API GraphQL PM2

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.

  • Handles 7 distinct inquiry categories (rates, portfolio, booking, retainers, etc)
  • Templated responses with LLM-assisted personalization to avoid robotic feel
  • Runs 24/7 under PM2 with Slack alerts on errors or auth expiry
  • Reduced response time from hours to seconds
Outcomes
  • ~30 inbound inquiries handled automatically per day
  • Estimated 1.5–2 hours of manual reply work saved daily
  • Response time dropped from several hours to under 30 seconds
  • Smart classification routes ~85% of inquiries to the right template on first pass
PM2 process list showing automation bots running in production
AI Smart-Reply Agent flow diagram
classify-message.js node.js
// 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() });
}
Project / 003

Auto-Apply Agent

Node.js REST Slack API Cron

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.

  • Strict rule-based filtering — no AI hallucination risk on apply decisions
  • Structured Slack summaries grouped by campaign type
  • Audit log of every application sent, for client review
  • Automated 200+ daily evaluations down to ~10 actually-relevant applications
Outcomes
  • 200+ campaigns evaluated daily, ~95% filtered out automatically
  • Estimated 3–4 hours of manual review work saved per day
  • Zero false-positive applications since the rule filter went strict
  • Slack summaries gave the team visibility without anyone watching the platform
Slack channel showing structured auto-apply summaries from the bot
Auto-Apply Agent architecture diagram
03 ——

Recently shipped

04 ——

Stack & tools

Backend & Runtime
Node.jsprimary runtime
Expressweb servers, dashboards
MongoDBpersistent state
PM2production process mgmt
Infrastructure
DigitalOceanVPS deployment
Ubuntuserver admin
Cronscheduled workers
SSH / shellremote ops
AI & LLMs
Claude APIprimary LLM
OpenAI APIembeddings, structured out
Prompt engineeringproduction-grade prompts
Agent loopsmulti-step tool use
APIs & Integration
REST + GraphQLAPI integration
Webhooksevent-driven workflows
Slack APIteam-facing automations
Discord.jsbot development
Workflow Tools
Zapierno-code prototyping
Makevisual workflows
Chrome Extensionsbrowser automation
Reverse engineeringinternal API discovery
05 ——

About me

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.

$whoami
mark_jherico_magno
$uptime
10 months shipping production automations
$status --current
building · learning · open to work
$availability
full-time · async-friendly · open to remote
$

Let's build something.

Available for full-time work. Async communication preferred.