The Automation Arc: From VBA Macros to Agentic AI
If I had to name the one thread that runs through my entire career, it would be automation. Not in the dramatic, robots-replacing-humans sense. More like: I kept finding myself staring at some process that was eating hours of someone’s week and thinking, “there has to be a better way to do this.” Then I’d spend my evenings figuring out how.
I’ve worked in paid media and advertising for over twelve years now. The tools I’ve used to automate things have changed completely in that time. Multiple times. But each wave was driven by the same pattern: I’d get something working, hit a wall, and that wall would push me to learn whatever came next. Looking back, there’s a clear arc to it, and every phase made me better at the one that followed.
Excel Formulas and VBA
Early in my career, I was working at a media agency on paid search accounts for major brands. The reality of agency life is spreadsheets. Campaign performance reports that needed to be pulled from multiple ad platforms, reformatted, and delivered to clients on a weekly basis. There were people on the team spending five hours every week formatting the same reports. Another five hours on a separate set of budget optimization documents. Pacing updates, performance summaries, optimization recommendations. All manual, all repetitive, all week after week.
I realized pretty quickly that I could templatize most of this with Excel formulas. Nothing fancy, just structured templates that pulled numbers into the right places and formatted everything automatically. That five-hour weekly task dropped to about ten minutes. Open the file, paste in the new data, and the template did the rest.
That was my first real lesson in automation: even simple things compound. Saving five hours a week is over 250 hours a year. Across a team, that’s a massive amount of capacity freed up. And the time I saved didn’t just disappear. It gave me more room to focus on higher-value work, learn new things, and take on bigger challenges. Which helped me get promoted faster. That feedback loop of “automate the repetitive stuff, free up time to grow” became the lens I tried to approach everything through.
When I moved to a larger agency and started managing a major consumer electronics account with a much bigger budget, the complexity went up significantly. I needed to automate things that were beyond what formulas could handle: complex account builds, large-scale campaign restructures, multi-step processes that involved logic and decision-making, not just math. That’s when I started learning VBA.
VBA let me build macros that could handle sophisticated workflows directly in Excel. I created templates that standardized and accelerated account launches, automated repetitive campaign build processes, and let the team move faster without sacrificing consistency. It wasn’t elegant code, but it worked, and it made a real difference in how quickly we could execute.
Power Query
The problem with VBA and formula-heavy workbooks is that Excel starts to slow down. When you have thousands of cells recalculating with every click, the whole experience becomes painful. I was spending more time waiting for Excel to catch up than actually doing the work.
That’s what brought me to Power Query. What I liked about it immediately was that the processing happened in the background. Once the data refreshed, the results were just there. No more thousands of formulas recalculating live. It was a completely different experience.
But the real power of Power Query went way beyond just being faster. I learned that I could connect to online data sources directly, which opened up a lot of flexibility. And I could package sophisticated transformation logic into the query itself. This was a big deal because it meant I could take the knowledge of an experienced practitioner (how to structure an optimization analysis, what signals to look for, how to flag underperformance) and bake all of it into a template that the most junior team member or intern could run.
The workflow was straightforward: pull data out of platforms like Google Ads or Microsoft Advertising in a set format, drop the export into a SharePoint folder, open the Excel file, click “Refresh,” and Power Query would do the rest. All the views for reporting, analysis, and optimization recommendations were instantly ready. Once it was set up, there was almost no chance of anything going wrong.
I ended up running Power Query trainings across the organization. It wasn’t just about one team. The same approach worked for any team that was spending hours on manual data wrangling. And the templates were durable. Build it once, and it just kept working week after week with minimal maintenance.
Power Automate, RPA, and Dataflows
Power Query solved the data transformation problem, but there was still a manual step in the chain: someone had to get the data out of the ad platforms and into the right folder. I started using Power Automate to solve this. Many platforms supported scheduled email reports, so I set up Power Automate flows that would catch those emailed reports and automatically route them to whatever file storage the team was using (SharePoint, Box, whatever). That meant the Excel template always had up-to-date data, and all someone needed to do was open the file and click Refresh.
But not every platform supported scheduled email exports. Some required logging in, navigating through a UI, and manually exporting the data. That’s what led me to RPA. I started with UiPath to build robotic process automation workflows, then moved to Selenium via Python, and eventually landed on fully scheduled headless browser automation running on a VPS. The browsers would log into platforms with read-only access on a schedule, export the reports, and drop them into folders that Power Query could read from. All running in the background without anyone touching it.
The one thing still bugging me was that someone still needed to open the Excel file and click Refresh for Power Query to run. That’s what brought me to Dataflows, which was essentially Power Query in the cloud. Combined with Power Automate, I could finally build a fully end-to-end automated pipeline: data pulled from wherever it needed to come from, processed through Dataflows, and dropped into the final SharePoint locations where reports and dashboards could pull from.
I even started using Excel Office Scripts within these workflows. Power Automate could write to closed Excel files on SharePoint, apply conditional formatting, and use Office Scripts to capture screenshots of tables based on alerting logic I defined. Then it would send those screenshots via email to the right teams on a schedule. For example, I set up intraday performance anomaly alerts where Power Automate would make API calls to ad management platforms multiple times per day, transform the data, and send email alerts if action was needed. The more detailed data would be ready for deeper analysis in Power BI. All of it fully automated once stood up, running with minimal maintenance.
At this point I had what felt like a complete system. Data collection, transformation, alerting, reporting, all automated. But there was still one big thing that required a human.
Generative AI
Across everything I’d built, there was one task I’d never been able to automate: the actual thinking part. Specifically, writing ad copy. In enterprise paid search, you’re dealing with many thousands of lines of highly customized ad copy, tailored to specific campaigns, ad groups, and keyword sets. Writing and optimizing all of that is tedious, time-consuming work. I’ve done it myself for hours and days at a time, many times over the course of my career. All my automation could get the data ready, surface the right signals, flag what needed attention, but someone still had to sit down and write the copy.
When large language models became capable enough to actually use, that changed. I started experimenting with the OpenAI API, first through Google Sheets Scripts, then rebuilding in Excel with Office Scripts and VBA when the team needed to stay within the Microsoft ecosystem. The idea was straightforward: take all the data signals I was already extracting (performance metrics, keywords, search terms, high-performing ad variations), combine them with context about the client and their messaging guidelines, and have a language model generate ad copy.
It worked. I built an Excel-based tool that could take a paid search report, extract the most relevant information for optimization, scrape and summarize the landing page the ad was pointing to for additional context, and generate polished ad copy that accounted for platform formatting requirements. The user would review and refine the output as part of a human-in-the-loop process, and the tool would auto-generate a formatted upload file for the ad platform. One click to generate, review, refine, and export.
This ended up being my first real AI product. It wasn’t just a template that saved time on a recurring task. It was a tool that fundamentally changed a workflow. It got attention quickly because it delivered measurable value, and it was adopted across multiple teams. We went through security review, integrated with enterprise authentication, and rolled it out in a way that met all the compliance requirements.
Based on that success, I started building more tools using the same approach. I packaged my ability to interact with various AI model providers into custom Excel formulas (think =GPT or =GEMINI as actual spreadsheet functions) that took a prompt cell, a response cell, and a trigger condition as inputs. This let me treat AI models as building blocks. I could spin up new tools quickly by packaging the knowledge and workflows of channel experts into templatized, multi-step prompt workflows, all running directly in Excel with whatever API-based functionality the use case needed.
Within about a year, we got investment to rebuild the original ad copy tool as a full web application with a React frontend and Python backend, supported by a funded development team. I partnered with the team as a product manager to bring it to life, and we launched it across the US and Canada. That experience was my first real exposure to building production software as part of a proper development team.
The Shift to Pro-Code
My move away from Excel and low-code tools was driven by scale. I was working on a large data project that aggregated performance data across hundreds of advertising accounts. We tried to build it with Power Automate and Dataflows, but the volume of data exceeded what those tools were designed to handle. That’s when I dove into building the solution fully in Python, using BigQuery for data storage, Cloud Run for compute, and Cloud Tasks for orchestration.
With the help of generative AI (mainly ChatGPT at this point), I was able to get that project launched, and it gave me real confidence working on code-based projects. It was a turning point. I went from someone who could make powerful things happen inside Excel to someone who could build actual software, even if I was leaning heavily on AI to help me get there.
Agentic Development
Then agentic coding tools showed up: Claude Code, Cursor, and others. These changed the game again. Instead of copying code snippets back and forth from a chat interface, I could work across files in an IDE with an AI that understood the full project context. I started getting hands-on with things that would have been way over my head a year earlier. First simple local applications, then web-deployed projects on my own VPS. Static sites with HTML, CSS, and JavaScript. Then Next.js, Astro, and React. Then full web applications with Python FastAPI backends, React frontends, Docker deployments, JWT authentication, PostgreSQL databases. Each project taught me more about how real software gets built.
The biggest accelerator, though, has been transitioning into my current role where I lead a team of developers building full agentic solutions. I still don’t consider myself anywhere close to the career developers I’m fortunate to work alongside. But working with them, aligning on architecture, and pushing through the challenges of building from concept to production has taught me more about software development than any amount of solo tinkering could have.
Looking Back
Looking back across all of this, from Excel formulas to agentic AI, the instinct never changed. Every phase was about the same thing: removing friction between people and the outcomes they need. The tools evolved dramatically, but the core question was always “where are people spending time on work that a machine could handle, and how do I close that gap?”
What strikes me most is the acceleration. The gap between Excel formulas and VBA was a couple of years. VBA to Power Query was another year or two. Power Query to full Power Automate pipelines took a few more. But the jump from there to generative AI felt like it happened overnight. And agentic tools have moved even faster. Each generation arrives sooner, the learning curve is shorter (partly because every previous phase built intuition that carries forward), and the potential impact gets bigger.
I think the people who will build the most useful things in this space are the ones who understand the full arc, not just the latest wave. Understanding a process well enough to codify it is exactly what makes someone effective at designing AI-powered systems, whether that process lives in a spreadsheet or in an agentic workflow. The tools keep changing. That instinct for finding friction and eliminating it is the part that lasts.
If you’re looking to get started with automation and your path is like mine, where you work in media and frequently work in Excel, my honest advice is to begin with Power Query. It’s already built into Excel, it’s visual, it’s high-value, and it’s significantly more user-friendly than jumping straight into VBA or Python. From there, use ChatGPT or Claude to help you customize your Power Query logic. You can export the code from the Power Query advanced editor, give it to an AI assistant, and have it help you adapt it to your specific use case. Once you’re comfortable with that, you can start adding VBA where Power Query isn’t enough or isn’t the right tool for the job. And from there, start exploring how you can bring this technology and an automation mindset into your day-to-day work.
That last part is what I think really matters. Unless you’re able to apply this stuff to your actual work and see real value from it, it’s going to be hard to prioritize investing time in something that feels abstract. The moment automation starts saving you hours on something you do every week, it stops being a side interest and starts being a core part of how you operate. That’s what happened for me, and it’s what kept me pushing into each new wave.
I hope my path is useful to anyone reading this. If you have questions or want guidance on anything I’ve learned throughout my career, I’m happy to help. And for anyone else exploring the agentic space and building solutions (ideally media-focused, like me), I’d love to connect and maybe collaborate on a learning project. I’ve found that building alongside someone else is one of the best ways to accelerate learning and explore new approaches I might not have considered on my own.
Feel free to use the contact form below or reach out on LinkedIn.