1
Media Buying
Your ads, placed where your customers actually look. I manage campaigns across Google, Meta, and display networks — turning ad spend into measurable revenue, not just impressions.
I turn data into decisions and campaigns into revenue. With 22 years in digital marketing — from managing MYR 150K+ monthly ad budgets for insurance giants to raising MYR 7 million for social causes — I've learned that great marketing lives at the intersection of analytical rigor and creative instinct. I build strategies grounded in real numbers, not hunches.
Years of experience
Your ads, placed where your customers actually look. I manage campaigns across Google, Meta, and display networks — turning ad spend into measurable revenue, not just impressions.
More conversions from the traffic you already have. I analyze your funnel, test what works, and fix what doesn't — because driving traffic to a leaky bucket is just expensive water play.
Qualified leads that actually pick up the phone. Using AI-powered targeting and proven nurture sequences, I build pipelines that fill your CRM with prospects ready to buy — not just browse.
New markets, strategic partnerships, and revenue channels you haven't tapped yet. I help you identify growth opportunities and build the relationships that turn them into real business.
Dashboards that tell you what to do, not just what happened. I turn your raw data into clear, actionable insights — so every marketing decision is backed by evidence, not guesswork.
Custom tools that save hours, not create headaches. From marketing automation scripts to full web applications, I build solutions that make your processes faster and your team more productive.

I have been playing chess online since I was 13. I am 38 now, so that is 25 years of online chess across platforms like Spelpunt.nl, Playchess.com, ChessCube, Chess.com, and Lichess. For most of that time I played casually — fast games, lots of bullet, always enjoying it but never thinking too much about ratings. Then recently two things happened that I feel compelled to write about: I hit <strong>2400 bullet on Lichess</strong>, and shortly after I went <strong>2-2 against a 3000+ rated bullet player</strong>. I still can't fully believe the second one happened.

When I started building the Webfluentia dashboard, my first instinct was to handle data isolation in application code. Check the user's role, filter queries by client ID, add middleware to every API route. It worked, but it was fragile — one missing filter and a client could see another client's data. Then I discovered Supabase Row Level Security (RLS), and it changed how I think about multi-tenant data isolation entirely. Instead of trusting application code to filter data correctly, the database itself enforces who can see what. Even if my code has a bug, the wrong data never leaves PostgreSQL. Here's how I implemented it and what I learned.