2004 – 2012
Reporting across IBM, Maersk, Convergys, and TeleTech
I led reporting teams at IBM, Maersk, Convergys, and TeleTech, introducing macros and process automations that replaced manual spreadsheet work.
// about
I'm Alvin, based in the Philippines. I've spent more than 20 years helping reporting teams replace repetitive manual work with reliable systems.
// background
n8n and Python are just the current tools. It's the same job I've had this whole time. I'm just doing it independently now, for whoever needs it.
2004 – 2012
I led reporting teams at IBM, Maersk, Convergys, and TeleTech, introducing macros and process automations that replaced manual spreadsheet work.
2012 – 2018
I moved through reporting supervisor, risk analytics lead, data scientist, and BI lead roles, then managed the technology risk management team, delivering QlikView dashboards and automating the Global Information Risk Dashboard.
2018 – 2023
I built enterprise Qlik Sense dashboards for GN Audio, then moved to UBX as a backend software engineer using Python and PostgreSQL, and later as a data visualization analyst building Tableau and Looker Studio dashboards.
2023 – Present
I started out automating QlikView and NPrinting refreshes, and now I lead reporting and analytics for the customer support team.
// selected results
10+ hrs/mo
Some client requests needed changes our reporting tool just couldn't do out of the box. I built post-processing scripts to handle those customizations automatically instead of doing them by hand each time, saving at least 10 hours a month.
80% faster
Some of our reports were running on long, unoptimized queries. I identified the worst offenders and worked with the backend team to replace them, cutting execution time by at least 80 percent.
75% fewer
Our reporting server kept running into issues during the day. I implemented a nightly service refresh that heads off most of those problems before anyone's even logged in, cutting server-related issues by 75 percent.
~15x faster
QlikView Desktop licenses need re-leasing every 30 days, and NPrinting can't generate client reports without one, but leases sometimes expired early, unpredictably. I automated the renewal to run weekly across all three engines. What used to take about 5 minutes per engine, 15 minutes total, now finishes in under a minute, running concurrently.
1 source of truth
Different reports were calculating the same numbers differently, so nobody could agree on which dashboard was right. I built a centralized Power BI semantic model that every report and dashboard now pulls from, so there's exactly one source of truth instead of several.
Powers this site
I run a self-hosted n8n instance that checks the n8n community forum for people looking for paid help. It's the same instance behind the live demos on this site's homepage. The plan started with Reddit, then Google, but both locked down the API access it would need, so the workflow moved to the community forum instead.
Grounded answers
The chat widget on this site answers questions about how I work using a curated knowledge base rather than the model's own memory, and it admits when the knowledge base doesn't cover something. The brain behind it is a self-hosted n8n AI Agent workflow, so it's both a working feature and a piece of automation I can screenshot and walk someone through. The metered LLM API behind it costs well under a dollar a month, with a hard spend cap on top.
1 post/day
Once a day this workflow picks one Baguio City news story, classifies it with an LLM against a strict output shape, renders it as a branded card with generated artwork, and posts it to a local Facebook Page with the source link as the first comment. Nothing goes out automatically: every post waits on a one-tap approval in Slack, and "nothing worth posting today" is a valid result. It tracks what it has already posted so no story runs twice.
Reads + checks
A demo on this site takes a sample invoice or receipt, sends the image to a vision model behind a strict output schema, and returns the vendor, dates, and every line item as structured data. It then re-adds the line items in plain code and flags any total that does not reconcile, so a transposed digit shows up instead of sliding through. The workflow is a thin n8n gateway over a Python service; each sample's result is cached, so the live model is called at most a handful of times.
// beyond the highlights
I'm also exploring Power BI's MCP integration with Claude, to see how much of the report-building itself can move even faster.
If a process at your business is still held together by spreadsheets, copy-paste, and one person's memory, I'd like to hear about it.