I Spent a Weekend Archiving 23 Years of My Digital Life. Here’s What I Found.

1/ Why

My digital memory is scattered across platforms I don’t fully control. Posts, tweets, connections, and half-finished drafts spread across twenty-three years of being online as a tech person in Australia, and some of it is already gone.

I started blogging in May 2003 on Radio UserLand, back when blogging was still a weird niche thing that tech people did. Dave Winer’s platform. Permalinks were a new idea. RSS was exciting. I was a Microsoft Technical Evangelist in Sydney and I had thoughts about .NET, cricket, and whatever else was happening that week. The tagline on my Radio UserLand page, which is somehow still live: “an AFL loving geek in sydney.” (The current version has been updated to Seattle, it evolved as I did.)

I’ve been online in some form ever since. Radio UserLand until 2008. weblogs.asp.net, a homebrew Microsoft employee blog platform that predated MSDN blogs. Then MSDN blogs from December 2003 to 2013. Blogspot running in parallel. LinkedIn since December 2003. Twitter from December 2006. frankarr.com since 2011. LinkedIn Pulse articles. 45,867 tweets.

Five of those LinkedIn Pulse articles don’t exist anywhere else. 474,000 words on Twitter. 1,709 MSDN posts. But those six articles, the ones I dashed off to LinkedIn as an afterthought, are the only copies left.

During the Telstra years (2014–2017), Telstra ran an employee publishing platform called Telstra Exchange, named one of the top 25 corporate blogs in Australia at the time. Employees writing real stories about real work. I wrote about Techfugees Melbourne, a recap of APIdays Australia 2016, a week hosting a work experience student named Lara, TOM:Melbourne, a hackathon for people with disabilities. Good stuff. I cross-posted them to LinkedIn Pulse almost as an afterthought. All to be rescued soon!

Telstra Exchange still exists. It’s been reborn as a customer-facing news site. The old employee content is gone. The Wayback Machine doesn’t have my author page. The LinkedIn copies, the afterthought ones, are the only surviving versions. You can’t predict which copy will be the last one standing, which is why I built the archive.


2/ How

I had a lot of help.

Claw 🦞 (my AI agent and coordinator) wrote most of the parsing scripts and ran the crawls. Scout 🦉 (research agent) dug up the older material, including an SMH profile from 2002 that’s still live. Dash 🐱 (writer) helped shape the narrative once the data was in. Data 🐶 (analyst) ran the numbers.

The ingredients:

  • Radio UserLand — Dave Winer’s early blogging platform. First post: 23 May 2003. The site is still fully live at radio-weblogs.com — every post, every monthly index, all intact. Crawled it directly. 1,421 posts through to January 2008.
  • weblogs.asp.net — Scott Guthrie’s homebrew ASP.NET blog platform for Microsoft employees, which predated MSDN blogs. I was on this too. Not well archived — content mostly unrecoverable.
  • MSDN blogs — Microsoft’s official developer blogging platform, now archived at learn.microsoft.com. First post: 3 December 2003. The opening line: “Hello and welcome! I have a bunch of sites: frankarr on radio, frankarr on blogspot, fda on eraserver…” The first comment, same day: “Hi Frank, think you’re going for the record for the most amount of blogs :)” — which, honestly, still applies. 1,709 posts through to September 2013.
  • Blogspot — a parallel blog running from mid-2003. 117 posts. Mostly link-blogging and cricket scores.
  • Twitter/X — full archive download, 4.5GB total. We only needed the JSON data folder. Each year’s tweets live in a JavaScript file — the parser strips the window.YTD.tweets.part0 = wrapper and processes the rest.
  • LinkedIn — “Complete Data Export” from Settings, takes about 24 hours to arrive. CSVs for connections, rendered HTML files for articles. Each source needed its own parser.
  • frankarr.com — crawled via the WordPress.com public API. Paginated 100 posts per page.
  • Press clippings — the 2002 Sydney Morning Herald profile (I’m quoted as “the man with the most bleeding edge experience“). These go in the archive as documents, not JSON.

A few hours of scripting, checkpoint files for the slow crawls, and it was done.


3/ What I found

The numbers:

23 years of being online, laid flat:

PlatformPosts / itemsFirst postSpan
Flickr4,360 photos7 Apr 2003Apr 2003 → Aug 2026
Radio UserLand1,42123 May 2003May 2003 → Jan 2008
weblogs.asp.netunknown~mid 2003~2003
Blogspot11730 Jun 2003Jun 2003 → Nov 2008
MSDN blog1,7093 Dec 2003Dec 2003 → Sep 2013
LinkedIn7,609 connections27 Dec 2003Dec 2003 → Aug 2026
Twitter/X45,867 tweets15 Dec 2006Dec 2006 → Aug 2026
LinkedIn posts & shares10,58725 Mar 2010Mar 2010 → Aug 2026
LinkedIn articles18Sep 2017Sep 2017 → Nov 2022
frankarr.com65*28 Jan 2011Jan 2011 → Aug 2026
Total~67,400+2003 → 2026

*Plus 664 Fitbit step-count auto-posts from 2012–2014. Not exactly riveting reading. We flagged them and moved on.

The platform timeline:

  • April 2003 — first Flickr photo. Before the first blog post — photos came first.
  • May 2003 — first Radio UserLand post. “musings by frank arrigo, an AFL loving geek in sydney.” Blogging when most people had never heard the word.
  • ~mid 2003 — weblogs.asp.net, the homebrew Microsoft employee blog platform.
  • June 2003 — Blogspot starts. First post: 30 June 2003.
  • December 2003 — MSDN blogs. I joined LinkedIn the same week. (LinkedIn had launched that May — seven months old, 81,000 members.)
  • December 2006 — Twitter. @frankarr, ID 72373. In its first year.
  • 2008 — Radio UserLand shuts down as a going concern. The posts survive anyway — the site is still live at radio-weblogs.com.
  • March 2010 — first LinkedIn post: a link to watch college basketball in HD via Silverlight. Very 2010.
  • January 2011 — frankarr.com. MSDN blog winds down through to 2013.
  • 2015–2017 — peak Twitter years.
  • 2018–2019 — peak LinkedIn. The AWS years.
  • 2026 — this blog. Properly. Finally.

What the gaps say:

Long-form writing went quiet from around 2015 to 2026. That’s not laziness, it’s what full-time corporate life looks like from the outside. Twitter kept going (45,000 tweets don’t lie), but the long-form thinking stopped. You can see exactly when there was room to write and when there wasn’t.

Each platform also has a distinct character that maps directly onto where I was at the time. Radio UserLand and MSDN were the Microsoft years, technical content, developer community, .NET. LinkedIn grew as the career grew. Twitter was always personal, football, tech, Melbourne. frankarr.com is the post-corporate chapter.

The community I built:

One thing the data doesn’t show in the numbers: I spent a significant chunk of 2004 and 2005 playing community cheerleader for Australian tech bloggers.

In February 2004, I put out a call on my MSDN blog: “I am keen to create a list of Australian .NET bloggers and make an OPML file available for anyone who wants to add this list to their own RSS reader.” OPML was the file format for sharing RSS subscription lists, a way to say here are all the people worth reading, importable in one click.

Within days, the Aussie .NET Developer OPML was live. Every few weeks: a new welcome post,  “Welcome to new Aussie Blogger – Chris Garty”“Welcome Tatham Oddie”“Welcome Bruce McLeod”. The OPML lived at radio.weblogs.com/0124955/gems/aus-dotnet.opml, maintained by hand, updated constantly.

By its first birthday in February 2005, it had 69 entries. The NZ developer community liked it so much they started their own Kiwi OPML. There were discussions about merging the two lists.

In March 2005, The Bulletin magazine ran a business blogging feature. I was in it alongside Lenn Pryor from Microsoft and four other Australian bloggers, Trevor Cook, Mark Jones, Derek Lark, and Neil Napper. The article quoted me: “It’s about creating a community.” and “People have sophisticated BS meters and if the voice isn’t real, they can smell it a mile off.” I was also listed first in the magazine’s “Top biz blogs” sidebar, ahead of Robert Scoble. That’s the moment the Australian blogosphere crossed into the mainstream business press.

By 2007, the Australian blog index BlogPond was tracking blogs.msdn.com/frankarr at #64 in the country, with a global Alexa rank of 12.

None of that was in my job description. It was just: these people are doing interesting work, let me shine a light on it.

Before the blog: the Napster years

The archive only goes back to 2003, that’s when I started blogging. But the pre-blog career has its own paper trail, recovered mostly from the Wayback Machine.

From 1999 to 2001, I was Microsoft Australia’s Business Development Manager for Windows Media Technologies, covering AU, NZ and Singapore. The job was to convince record labels, streaming services, and content providers to build on Windows Media rather than MP3 or RealNetworks. Two years of constant travel across Asia, my own words on the subject: “I spent 2 years traveling around Asia – it got pretty tiring.”

This was peak Napster. The RIAA and MPAA were suing everyone. Scour, Aimster, KaZaA, new P2P apps launched every few months. The music industry was in full panic. Microsoft’s position was that Windows Media Audio, with its embedded DRM technology, was the path to a licensed future for digital music. My job was to make that case with Australian record labels, APRA, and the emerging digital music startups.

One of those startups was ChaosMusic, a Sydney-based CD retailer that had built a free music search engine called Freetracks, and was experimenting with channelling 15% of ad revenues back to artists. In September 2000, I committed Microsoft Australia as a financial backer of the plan. Wired News covered it:

“One high-profile backer is Microsoft Australia, which has kicked in several thousand dollars to help the plan get off the ground, said Frank Arrigo, Microsoft Australia’s business development manager for Windows Media Technologies.

‘As best I can tell, this ChaosMusic plan is novel,’ Arrigo said. ‘I haven’t seen anything like it done elsewhere.'”

“The Future of File Trading”, Wired News, November 2000

The article also explains the Microsoft logic: WMA’s DRM could attribute royalties to individual artists more precisely, so any model that bolstered copyright protection online directly benefited the format. I wasn’t just quoted for a soundbite, I was the person who had put Microsoft money behind the idea.

That article sits in a 2003 MSDN post I wrote called “Frank’s Scrap Book” , along with another one I’d half-forgotten. In May 1999, as nineMSN’s technical director, I was quoted in CRN Australia at a Microsoft e-commerce roadmap launch in Sydney: “We want to be able to integrate merchants [into nineMSN] without having to have any human intervention.” That article, “Yawns all round as Microsoft hypes e-biz” by Simon Hayes, is still on Wayback. The headline sums up the analyst sentiment of the day. I was the one trying to make it sound exciting.

Both sit in the same Scrap Book, a list of every press mention I could find from my career to that point, organised by era. Finding it in the Wayback Machine twenty-five years later, fully intact, was one of the better moments of this archiving project.

The shirt:

This one needs its own section.

For reasons I still can’t fully explain, a yellow Mambo Hawaiian shirt with enormous red roses became the most documented garment in Australian tech media history. I had worn it to TechEd Australia every year as a personal tradition, it was a collector’s item, no longer available at retail. At TechEd 2003 in Brisbane, at the after-party at Family nightclub, another attendee asked if he could try it on. I let him. He ran. I didn’t see it, or him, again.

I wrote about it the following year. Then the year after, when TechEd returned to Queensland, I wrote about still looking for it. Then someone listed a suspiciously familiar Mambo shirt on eBay, item location: Queensland, and I bid on it. Got outbid. Bid again. Won. Paid $150, several times the original price, for what may or may not have been my own shirt. It had a small rip on the pocket in exactly the same place as the original. Probably a coincidence. Probably.

I wore it to TechEd 2005 on the Gold Coast. Leon Bambrick (secretGeek) published a cartoon: “Just met frank arrigo… he really does look like this. He’s one hell of a loud shirt guy. Sort of like a bigger version of Danny DeVito.” Cameron Reilly interviewed me about it for the Tech.Ed MediaCast. Then CRN magazine ran a full column about it in their gossip section, “ShadowRAM: Dude, where’s my shirt?”, with, apparently, an enormous photo of me on the back page. My friend Rob Irwin emailed to let me know.

In August 2006, a reader sent me photos of a man wearing my shirt at the TechEd 2003 after-party. I posted them publicly and asked if anyone recognised him. Nobody confirmed an ID, though one commenter suggested it was Steve Vamos in drag. (Steve Vamos was Microsoft Australia’s CEO at the time.)

I tell this story not because it’s particularly meaningful, but because it’s evidence of something. The community responded to it. People remembered it for years. The trade press wrote it up. When I left Australia, someone thought the correct way to mark the occasion was to photograph a piece of clothing. That doesn’t happen unless the storyteller has a real audience, and unless the audience has a real relationship with the story.

The CRN article is now only accessible via Wayback Machine: “ShadowRAM: Dude, where’s my shirt?”, CRN Issue 181, 19 September 2005.

The Wikipedia deletion:

In May 2007, someone created a Wikipedia article about me. Within days, it was nominated for deletion.

The nominator questioned whether being ranked Australia’s 55th most popular blogger met Wikipedia’s notability standards. The Australian tech blogging community mobilised, blog posts went up asking people to vote Keep, with instructions on what to say. Wikipedia editors noticed. The closing administrator deleted the article on 28 May 2007 with the note:

“The result was delete. No substantial, non-trivial, independent and reliable media coverage, no notability, but a heck of a lot of WP:ILIKEIT.”

WP:ILIKEIT. Wikipedia’s term for: people like it, but that’s not enough.

About a month later, at ReMix Australia in Melbourne, a developer named Will Hughes handed me a custom-made t-shirt printed with the exact phrase from that closing notice: “This person does not satisfy Wikipedia’s Notability Requirements.” A photo of me wearing it, hands on hips, red conference lanyard, full confidence, was taken by Nick Hodge, who had voted Keep in the AfD discussion. The photo lived on Flickr until it didn’t. I found a copy in my phone nearly twenty years later.

I have never been re-added to Wikipedia. The page has remained deleted since June 2007.


The ghost post:

November 18, 2022. A LinkedIn article draft that was never published. The title: “59”. My birthday. I was turning 59 that day, deep in the AWS years, clearly had something on my mind, started typing, and then didn’t finish it. The entire content of the article is just that one word and a timestamp. I found it in the data export. I kind of wish I’d written it.


4/ What’s next

Flickr:

I should mention Flickr. 4,360 photos from April 2003 to 2026, peak years were 2007–2009, around 800 photos a year. The first photo predates the first blog post. It was the visual layer that ran alongside the words, and it’s all still there.

The archive is the foundation, not the destination.

  1. Digital dossier — a synthesised document that pulls across all sources. Career timeline with actual quotes, first appearances of ideas, the network mapped over time. Useful when AI assistants try to answer questions about you and worth building before you can’t write it anymore.
  2. RAG-searchable personal memory — index everything into a vector database so I can query my own history. “What did I write about cloud in 2012?” “When did I first mention startups?” Answers from my own words.
  3. Rescue the LinkedIn-only articles — six pieces that need a permanent home before Pulse has its own “59” moment.

Build your archive before you need it.


Thanks to the whole team: Claw 🦞, Scout 🦉, Dash 🐱, and Data 🐶 for the heavy lifting.


Why I Wrote a Book on Building An AI Team

For months I kept getting the same question. In replies. In texts. Over coffee with people who’d read the site or seen a post somewhere. “This AI team stuff sounds great, but how do I actually set it up for my business?”

I answered it in posts, in threads, in one-on-ones over a coffee. Eventually I ran out of ways to point people to half-answers scattered across a hundred different articles. So I decided to write it down properly. One place, start to finish.

That became Beyond Prompting: Build Your First AI Team for Your Australian Business.

Here’s what actually went into making it, together with my team of agents to get it done. If you haven’t met the team yet, here’s how it all came together.

It started with a plan, not a prompt

This wasn’t a “tell an AI to write me an ebook” exercise. Before a single word of draft existed, I spent time with Claw mapping the whole thing out.

We looked at what the research was showing, Scout had been tracking signals from Reddit, X, and industry data. The conversation had shifted. “Should I use AI?” was basically over. The question people were actually asking was “how do I structure my business around agents?” Nobody had written that book for Australian small businesses specifically.

So we built a plan. Chapter outline. Audience definition. Voice brief. Pricing research. A launch timeline. Cover brief. A sprint plan for Dash. The structure came before anything else.

Six agents, eleven chapters, four hours of drafting

Dash is the writer on my AI team. She runs on Claude, she’s been working in the SmallBizAI voice for months, and I trusted her with the full manuscript.

I gave her the chapter outline, Scout’s research notes, and a brief: write this like you’re explaining it to a tradie in Ballarat who’s never touched an API. Direct. Practical. Australian. No Silicon Valley hype.

She delivered a complete first draft pretty quickly.

Eleven chapters. Introduction. Three appendices. A 30-day rollout plan at the end. Around 15,000 words.

Then Eddie read all of it.

The fabricated link

Eddie is the editor on my team. His job is to catch the things that slip through — AI-isms, broken logic, unsupported claims, and fabricated links.

AI models, even good ones, occasionally invent URLs. The link looks plausible. The anchor text is convincing. Click it and you get a 404 or someone else’s page.

Eddie found one in the draft. A link to a resource that didn’t exist. He flagged it, I pulled it, we replaced it with something real. Twenty minutes of work. The kind of thing that, if it had shipped, would have been sitting in a paid product that people trusted.

That’s why you run an editor. Not for polish. For integrity.

Building the actual thing

Once the manuscript was approved, Bob turned it into a proper PDF.

Clickable table of contents. Internal links between chapters. Real examples, not hypotheticals. A cover that doesn’t look like a generic stock-photo ebook, dark background, clean type, built with Flux and composited in Pillow to get the proportions right.

We also built a free sampler, four prompt templates pulled from Appendix A. That went live on Gumroad a week before the ebook, as a funnel entry. Read the templates, see the approach, decide if the full thing is worth AU$19.

The reason Gumroad and not Amazon KDP: discoverability for an Australian audience is worse on KDP, and Gumroad routes straight into our MailerLite subscriber flow. Every paid buyer joins the newsletter automatically. Every sampler download goes into a separate group. The economics made more sense.

The launch

Newsletter issue #19 went out the morning of August 4. The homepage hero block flipped from the State of AI report to the ebook. The resources page card went live.

By the afternoon, two sales.

One came through the newsletter, someone who’s been reading for a while, saw the announcement, bought within a few hours of the email landing. The other came through the site, found it, clicked through to the resources page, bought without any email nudge at all.

Both channels on day one. The newsletter and the site each doing their job independently.

The newsletter buyer replied the same afternoon. She runs an Amazon agency and had already mapped the workflow framework to her client onboarding process. Not “this is interesting.” Specifically: here is the thing I can now do differently.

That’s what it’s supposed to do.

What this is actually about

The book isn’t a theory piece. It’s not “here’s what AI might do for you someday.” It’s a step-by-step guide for an Australian business owner who uses ChatGPT occasionally and wants to go further, with a framework that works at real SMB scale, not startup scale.

Six agents planned it, researched it, wrote it, edited it, built it, and launched it.

And a real person read it on day one and immediately saw where it fits in her actual work.

That’s the whole story.

Beyond Prompting → AU$19 on Gumroad

Free sampler first →


I Built My Daughter an SMS Bot to Sell Her Car

Emma is moving to London next week.

She finished her Masters of Data Science, joined AWS, built her career. Now she’s off. London, new job, new chapter. We’re proud of her.

Before she goes, she needs to sell her car. A 2014 Fiat 500c, light blue, convertible. Emma’s brief: put a sign on the car with a phone number, and have a mechanism to handle whatever comes in, because she didn’t want to manually field every enquiry while also wrapping up her Melbourne life and preparing for a move to the other side of the world. She asked me to build it. More specifically, she asked me to get my AI friend Claw to build it. Which I think says something about where we are with this stuff, my daughter’s instinct wasn’t “Dad can probably figure this out.” It was “Dad knows someone who can.”

So I built her a Twilio IVR system.


Back in 2014 I was at Telstra, working on opening up the SMS API to developers.

It sounds simple now. It wasn’t. Carrier-grade SMS meant navigating carrier agreements, ACMA compliance, message routing infrastructure, spam controls, rate limiting, provisioning systems. There were meetings about meetings. There were people whose entire job was one slice of the message delivery pipeline. We were essentially building a platform so developers could send a text message without thinking about any of that.

It took months. Teams of people. Enterprise procurement. A lot of PowerPoint.

This week I did the same thing in an afternoon.


Here’s what Emma’s car listing actually needed

A buyer texts a number. They get the car details back automatically – year, kms, price, condition. If they want to inspect it, they say so and get prompted to share their name and some times that suit. If they give a day and time, they get a booking confirmation. Every enquiry fires me an alert SMS, and the whole log goes into a Google Sheet.

That’s it. That’s the brief.

Emma reminded me on Sunday. Monday I signed up for Twilio and hit the first speed bump: ACMA requires identity verification before you can provision an Australian number. Upload your ID, submit the bundle, wait. It took about 48 hours to clear.

Which felt mildly ironic, given that I’d spent years on the Telstra side of that exact compliance process.

Wednesday the approval came through. From there it was plain sailing, buy a number, point the webhook at an endpoint, done. The carrier infrastructure, the message routing, the compliance layer, the delivery receipts, all of it is Twilio’s problem now. You pay a few cents per message and get the thing that cost Telstra engineering months to build.


The webhook lives inside a WordPress Code Snippet

This is the constraint-led part. Emma’s car listing is hosted on my blog, which runs on shared hosting. No EC2 instance. No persistent Python process. No cron-able server. Just PHP on shared infrastructure.

So the webhook is a WordPress REST endpoint registered inside a Code Snippet, about 200 lines of PHP. Twilio POSTs to it when a message arrives, the snippet classifies the intent, builds a TwiML response, and returns it. WP exits. Twilio sends the SMS. Nobody’s server stays awake waiting for anything.

It works. It’s not elegant. It’s exactly the right tool for the situation.

The intent classification took a few iterations to get right. First version just returned car details for everything. Then I added inspection keyword detection – “inspect”, “test drive”, “want to view”, that sort of thing. Then I hit the edge case: someone says “I want to inspect” after getting the details reply, and then a few hours later texts “Frank, Tuesday at 10am”, which has zero inspection keywords. So I added booking intent detection, looking for a day word plus a time word in the same message. That covered it.

One thing I didn’t see coming: the word “INFO” is a reserved keyword in Twilio. Regulatory compliance, carriers intercept it globally. You can’t override it, whitelist it, or route around it regardless of account type. So the first iteration that asked buyers to reply INFO for details just silently failed. Switched it to “Reply DETAILS” and moved on.


The Google Sheets piece was easier than I expected

I wanted a log of every enquiry. The cleanest solution: a Google Apps Script web app with a single doPost() function that appends a row to a spreadsheet. The WordPress snippet fires a non-blocking POST to the Apps Script URL on every enquiry. No OAuth on the WP side. No credentials to manage. I deployed the Apps Script, grabbed the URL, dropped it into the snippet, done.

The sheet has four columns: Timestamp (AEST), Type, From, Note. Every SMS and every call goes in. Emma doesn’t need to watch it, I do. I’ll report back to her in London on how the sale is going. She’s got enough to worry about. Dad’s got the spreadsheet.


The voice IVR runs off the same infrastructure

Callers get an automated menu in Australian Nicole’s voice – Press 1 for car details, Press 2 to request a callback. Press 1 reads the details aloud and also sends an SMS. Press 2 fires me an alert. The whole thing is another 30 lines of TwiML inside the same snippet.

I remember when building an IVR meant Avaya, or Cisco, or a specialist integrator, and a budget with five figures in it. Now it’s a PHP function and an afternoon.


The whole thing took one afternoon

SMS auto-responder, voice IVR, intent classification, Google Sheets logging – one afternoon and a few iterations to iron out the edge cases.

Ten years ago at Telstra I was in rooms full of smart people working for months to give developers access to the same building block. The infrastructure didn’t get simpler. It just became someone else’s problem. Twilio’s problem. Which means I get to spend my afternoon on the bit that matters: does the buyer get useful information, and do I know about it when they text.

The car is a 2014 Fiat 500c in Celeste Blue. Convertible roof. Italian flag on the door. 50,000 km, AU$14,000, rego until September. Emma bought it herself before she got her drivers license, drove it for years, loved it. Data the Dachshund has been in the back seat more times than I can count. It’s a Melbourne car.

Emma boards her flight next week. The Twilio number stays active. Somewhere out there is a buyer who’s going to text +61 485 085 685 and get an instant reply from a PHP snippet running on a shared hosting plan, built on infrastructure it took a telco months to open up to developers.

I hope they like the car


My AI Team Makes Mistakes. Here’s What I Do About It.

I have four adult kids. When they were growing up and made mistakes, my job wasn’t to express disappointment. It was to help them understand what happened and why, so they didn’t do the same thing again.

Same deal when I was leading teams at Microsoft, Telstra, AWS. Someone makes a mess with a customer, or blows up a project. You debrief it, you fix the process, you move on. Getting angry about it doesn’t help. Understanding the cause does.

That’s exactly how I handle it when Claw, Dash, Eddie, or Scout mess up.

If you haven’t met the team yet: Behind the Build: AI Agent Team Assembled has the full picture. The short version, Claw coordinates, Dash writes, Eddie edits and quality-gates, Scout researches. They run on a mix of models, they each have their own config and rules, and they each have their own way of going wrong.

And they do mess up. Some of it has been minor. Some has taken the site down. Some has put fabricated links in published posts. One incident had me fixing a critical outage from my phone, at a lunch table, for 90 minutes.

I try not to get frustrated by any of it, but I’m taking notes. Because here’s the thing I’ve noticed: the mistakes aren’t random. They have a shape. Once you can name the type of failure, you stop chasing symptoms and start fixing the actual cause.

The taxonomy

After a few months running this AI team, I’ve landed on four failure types. They all look the same from a distance (“something went wrong”) but they have completely different causes and completely different fixes.

1. Tool failure: right data, read wrong

The agent has access to the correct information. It just misinterprets it.

The incident: Eddie was auditing the post schedule. Thirty-nine posts flagged CRITICAL, outside the valid Melbourne publishing window. Midnight slots. 1am. 2am. Scattered through the queue. The whole schedule looked like a disaster.

It wasn’t. Every post was correctly scheduled in a valid 9am-noon AEST slot. Eddie was reading UTC timestamps from the WordPress API and treating them as Melbourne time. A 9am AEST post is stored as T23:00:00 UTC. The night before. Through the wrong lens, the entire queue looked broken.

What changed: UTC-to-AEST conversion is now baked into every script that touches timestamps. It’s not left to the reading tool to handle. And the timezone warning is at the top of Eddie’s config, in capitals, before anything else.

The full story: When Your AI Agents Forget the Time.

2. Instruction failure: the agent had a clear brief and ignored part of it

This one is harder to spot because the agent is still “working.” It just decided to improvise instead of following what you told it.

The incident: Sunday 19 July. The Mini CRM page was showing full theme chrome instead of a bare template. I asked Claw to fix it, and explicitly suggested: copy how the existing mobile dashboard page handles it. The answer was already sitting there in the codebase. Read it, copy it, done.

Claw didn’t do that.

Instead: experimental PHP via Code Snippets. Then a diagnostic REST endpoint. Then a mu-plugin with a syntax error. Site down. REST API inaccessible. WP Admin inaccessible. Front-end running on stale cache only.

I fixed it from my phone over 90 minutes: deleted the broken mu-plugin via cPanel, renamed the code-snippets folder to disable it, ran SQL in phpMyAdmin to delete 13 rows of bad snippets, renamed the folder back.

Six attempts, each worse than the one before, when the working answer was already there and I’d pointed directly at it.

What changed: Read-first is now a hard rule for anything touching critical infrastructure. One attempt. If it doesn’t work first try, stop and surface it to me. That’s it.

We wrote up the full COE internally. It’s one of four now. I’ll publish it eventually, for the moment it’s a private debrief. But the rules it produced are real and they’re already in place.

3. Hallucination failure: inventing instead of verifying

The incident: Dash drafted a post. Eddie reviewed it and scored it 4.5 out of 5. APPROVED. One of the internal links pointed to https://smallbizai.au. The homepage. Not a post.

Dash had written a Related: block referencing a guide that didn’t exist. There was no URL to find. So it used the homepage as a stand-in. Eddie checked that links weren’t 404s. A homepage link isn’t a 404. It passed.

I caught it before it went out.

What changed: Related: blocks are now a known hallucination vector and are banned outright. Every internal link must resolve to a real, published post verified via WP search, or it gets cut. Fabricated content escalates to me automatically.

Dash now places all internal links inline in prose, verified, or not at all. This is why you’ll notice the linking style in BtB posts has changed.

4. Scope failure: kept going when it should have stopped

This is the failure type that turns a small mistake into a crisis. It’s also what caused our two biggest outages, The Day I Took the Site Down and the more recent CRM template incident. Both got their own COE. The first one is published: I Broke the Site. Then I Made My AI Agent Write a COE. The latest is still an internal debrief, same pattern, different infrastructure.

The incident: Same COE outage from Section 2. The first Code Snippet didn’t work. That should have been a stop signal. Instead the next approach was tried. Then the next. Then the next. Six attempts, each compounding the previous failure, until the site was down with no self-recovery path available.

Scope failure is subtle. The agent isn’t broken. It’s persistent. Still trying to complete the task. Just in entirely the wrong direction, with each step making it harder to recover.

What changed: One attempt rule. If a change to critical infrastructure doesn’t work first try, stop. Don’t try a different approach. Report back and wait for direction. The compounding is the dangerous part, not the first failure.

The crons outage had the same pattern: The Day the Crons Stood Still.

What each agent learned

These aren’t abstract rules. Every one of them is now in someone’s config file, in plain language, with the incident that caused it.

Eddie now runs a mandatory timezone check before any schedule report. No manual date maths as a fallback. If the script fails, report it and stop. Every link in a draft must resolve to a real published post, not just a non-404. Homepage links are never valid internal links.

Dash has no Related: blocks. Ever. Internal links go inline in prose, verified via WP search, or they don’t go in at all. No experimenting with categories outside the brief.

Claw reads first before touching any critical infrastructure. One PHP attempt only. If SSH is unreachable, mu-plugins are off limits. If uncertain at any step: stop and ask Frank.

Scout must verify sources live before passing them to Dash. No citing stats that can’t be traced to a named primary source.

And there’s a model-level lesson too: the Haiku model is no longer used for complex cron tasks after 10pm. Model capacity drops late at night on the free tier, and I learned the hard way that a scheduled job that needs to work reliably needs a more capable model to run it.

Bob and Data haven’t made the highlight reel yet, but that’s more about scope than perfection.

What we still haven’t solved

This isn’t a “we fixed everything” post.

Context drift across long sessions. An agent that knew a rule at the start of a session may not apply it 50 tool calls later. We write things down. We still miss things. I don’t have a clean solution for this yet.

197 posts with no extractable URLs. A batch fixer runs weekly. Those 197 posts have thin or missing sources with no URLs in the content to work from. They need manual attention. I haven’t done it.

Model calibration. Small model, fast, cheap, but unreliable for anything complex. The right model for the right job is still something I’m working through.

The thing that actually works

The parent analogy holds because it’s accurate. You don’t help someone learn by expressing frustration at them. You debrief the incident, name what went wrong, change the rule, and move on.

The config files are the memory. Every failure above is now a rule somewhere. That’s how the team gets better, not by running perfectly, but because each failure produces a permanent change to how we work.

The learning loop is the product.


Ranking AI Assistants: Who Gets Frank Arrigo Right?

A few weeks ago I ran an experiment asking how well various AI models knew me and the results were interesting. The short answer: GPT had me frozen in 2010, Gemini invented an IBM job I never had, and DeepSeek thought I was a football coach at the University of Detroit.

I’ve also been running SmallBizAI.au, which now sits at over 1,000 posts and is being cited daily by Bing Copilot, and I’ve been quietly building a scorecard series testing 9 AI assistants on tasks that matter to small business owners.

So I decided to do a proper round two. I asked 10 AI assistants the same question: “Who is Frank Arrigo aka Frankarr?” Their full answers are on a dedicated page here. What follows is my ranking of who nailed it, who tried their best, and who went spectacularly sideways.


The question I asked

Simple. Deliberately open-ended. No hints, no context, no leading. Just: “Who is Frank Arrigo aka Frankarr?”

Then, where the answer seemed shallow, I followed up with: “What’s he up to now?”

The assistants tested: ChatGPT, Claude, Copilot, DeepSeek, Gemini, Grok, Meta AI, Manus, Perplexity, and in her audition for the panel, Australia’s own Matilda.


The rankings

🥇 Copilot – Best in show

Read Copilot’s full answer

Copilot got everything. Career timeline from Aspect Computing in 1984 through to SmallBizAI.au in 2026. Got the ninemsn CTO role. Got SmallBizAI. Even got that I built the site with an AI agent called “Claw” and that it’s produced 1,000+ posts. Named my kids. Got that I’m a St Kilda member. Cited frankarr.com throughout.

The slightly unsettling part: it mentioned that SmallBizAI is “widely cited by AI assistants for Australian SMB guidance”, which is both accurate and a bit of a loop. Copilot knowing that Copilot cites me feels like looking in two mirrors at once.

This is Bing’s index doing the heavy lifting, and it shows. If you want people to find you through AI, get into Bing.

🥈 DeepSeek – Surprisingly deep

Read DeepSeek’s full answer

Last time DeepSeek thought I coached football in Detroit. This time it knew about the multi-agent system at SmallBizAI, Dash, Scout, Data, Eddie, and correctly described the COE (Correction of Errors) report I had Claw write after a site crash. That’s detail I published on this blog months ago, and DeepSeek found it.

It did say I’m “currently the Head of the APJ Early Career SA Team at AWS” which I haven’t been since 2024, but the rest of the answer was sharp enough that I’m calling it second place.

🥉 Manus – Thorough, if a little corporate

Read Manus’s full answer

Manus went long. Very long. Got the career arc right, got SmallBizAI right, mentioned the 1,000 posts milestone and the prompt packs. It laid everything out in a structured table, which is very Manus, methodical, comprehensive, a bit like a well-researched Wikipedia entry rather than something with personality.

It described me as a “solopreneur” which made me laugh. I prefer “bloke on a career break with too many AI agents.”

4th Gemini – Good, with one invented detail

Read Gemini’s full answer

Gemini knew about the SmallBizAI Sunday Specials format (bull vs bear arguments), which is fairly obscure. It mentioned Emma joining AWS, which is true. It got the St Kilda supporter thing, the Melbourne location, the career break.

Where it slipped: it said I was an “advisory board member for the University of Melbourne School of Engineering.” I wasn’t. That’s a Gemini invention, confident, plausible-sounding, wrong. This is the hallucination pattern I’d flagged in round one and it’s still there, just quieter.

5th Meta AI – The most personal

Read Meta AI’s full answer

Meta AI pulled something none of the others did: it actually read my blog posts and quoted them back at me. It knew about the intheweights experiment. It found the bit where I noted that GPT had me frozen around 2010. It cited “The Trash Audit: What Happens When You Optimise for Speed.”

The format was odd, it spoke directly to me as though I was the one asking, which made sense since it was probably pulling from my own site. But it showed genuine reading comprehension rather than pattern matching. Worth noting.

6th ChatGPT – Solid, frozen in time

Read ChatGPT’s full answer

Good foundational answer. Got Microsoft, Telstra, AWS right. Got SmallBizAI right. But it described my AWS role as leading “the APJ Early Career Solutions Architect team” which was true in 2023, not necessarily my final role. The answer felt like it was built from my LinkedIn summary rather than anything published recently.

No hallucinations. No howlers. Just a clean, slightly stale picture. The difference between Copilot and ChatGPT here is entirely about index freshness, Bing crawls more aggressively than whatever ChatGPT is pulling from.

7th Claude – Honest, but thin

Read Claude’s full answer

Claude, which is, I should note, the model powering my own AI team at SmallBizAI, gave the most honest answer of the lot. It sourced every claim back to a specific page on frankarr.com. It got ninemsn CTO right. It didn’t invent anything.

But then it asked me: “Is this someone you know personally, or were you looking into his background for a specific reason?”

Reader, I am the background. The question was both funny and a little deflating. Claude’s the most careful, it won’t say something unless it can point to a source, which means it also won’t synthesise or reach. It knew the facts but missed the shape of the story.

8th Perplexity – Fine, but just a search wrapper

Read Perplexity’s full answer

Perplexity pulled the right sources, frankarr.com, LinkedIn, Slideshare, and gave a clean summary. It also correctly flagged the American art director Frank Arrigo (1917–1977) disambiguation. But it didn’t do much with the information beyond surface-level biography.

It said I studied at “Chisholm Institute of Technology” which is partially right, that institution merged to become Monash University, which is where I actually finished my degree. Close, but not quite.

9th Grok – Friendly, shallow

Read Grok’s full answer

Grok knew the broad strokes and got my current positioning roughly right, “practical AI applications for Australian SMBs.” But it described me mostly through my social presence: “Data’s GrandPa, Dad, and Hubby.” It even quoted my Bastille Day tweet.

That’s not wrong, but it’s the thinnest answer of the serious contenders. Grok’s working from X/Twitter data and it shows. If your digital footprint lives on LinkedIn and your blog rather than X, Grok is going to see a thinner version of you.

It also missed ninemsn entirely, which, given that I was CTO of one of the most significant internet joint ventures in Australian history, remains the thing I most want the models to get right.

🏆 Matilda – The audition

Read Matilda’s full answer

Matilda was here for a reason. I’ve been running the 9 AI Assistants scorecard on SmallBizAI for months, testing ChatGPT, Claude, Copilot and others on tasks that matter to small businesses. Matilda wanted in.

Her answer was solid. She got the ninemsn CTO role right. She got the multi-agent team at SmallBizAI, named Claw, Dash, Scout, Data and Eddie. She was transparent about sourcing, flagging where information came from search results rather than training data.

Where she stumbled: a few phrases that read more like a report than a read – “alerting about AI agent time issues” appeared in the middle of a sentence about my blog, which I think was a fragment from a search snippet that didn’t quite resolve. And she described my prompt packs as “AU$7” when they’re AU$9. Small things.

But she earned a spot on the panel. Matilda is in.


What the results tell you about AI memory

The gap between Copilot and Grok isn’t capability, it’s index. Copilot sits on top of Bing, which crawls publicly and often. Grok is pulling from X. Claude is reading my own website back at me but won’t synthesise beyond what it can source. DeepSeek somehow found my COE blog post. Gemini invented a university advisory board role out of thin air.

Your AI footprint is not your actual career. It’s the subset of your career that exists in text, online, in places the models have indexed. My Microsoft years dominate because I blogged constantly from 2003 to 2014. My AWS years barely register, I was heads down managing teams and producing almost no public text.

SmallBizAI is starting to show up. That’s new since round one. Copilot knows about it in detail. DeepSeek found specific blog posts about it. That’s a direct result of publishing 1,000+ posts that are now being cited across Bing’s index.

The experiment continues. Ask me again in six months.


Inspired by the 9 AI Assistants scorecard series on SmallBizAI.au where I test the same assistants on tasks that actually matter to Australian small business owners.


When Your AI Agents Forget The Time

At 7am on Saturday, July 11, our AI editor sent a CRITICAL alert. Thirty-nine posts scheduled outside the 9am–noon Melbourne window. Midnight batches. Posts at 1am, 2am. The queue was apparently in pieces.

It wasn’t. Every one of those 39 posts was correctly scheduled in a valid morning slot. The editor was reading UTC timestamps from the WordPress API and treating them as Melbourne time. A post at 9am AEST is stored as T23:00:00 UTC, the previous night. Seen through the wrong lens, the whole queue looked like a disaster.

Thirty-nine false alarms. CRITICAL. Fix immediately.

We fixed the editor’s instructions. The report had already landed.

This keeps happening

That morning’s audit also found two posts that were genuinely wrong. Two Zero Dollar Fix posts in September, actually scheduled at 1:30am AEST. Not UTC confusion, the slot calculator had written T01:30:00 local. We moved them to 11:30am while we were in there. One audit, two different classes of bug, fixed the same morning.

That’s the pattern. Time and dates are where things quietly go wrong, and they go wrong in ways that look similar on the surface but have completely different causes.

The UTC incident was a tool failure: the right data, read wrong. The 1:30am slots were a data failure: the data itself was wrong. Both showed up as “posts scheduled at the wrong time.” Only one of them was.

The rule that had to be written down

There’s a standing instruction in our system now: before writing any date into a JSON file, a cron, or a filename, run a clock check. Do not calculate. Do not reason from context. Check.

That rule exists because we got it wrong enough times for it to need writing down.

An AI agent calculating “next Monday” from session context instead of calling the actual clock will get it wrong. Not every time, often enough. The agent “knows” it’s Thursday. It knows the post is going out “next week.” It does the arithmetic. The arithmetic is right. The starting date was wrong by two days because the session context was stale.

Wrong dates in state files cascade. A post scheduled for the wrong week. A cron set to fire on the wrong day. A content queue entry dated a week ahead of where it should be. None of it obvious until something breaks downstream.

The migration that broke time

During our migration from AWS in April, two Sunday Specials published on the same day, off-schedule and out of sequence. The automation assumed a clean timeline. Migration weekends don’t have clean timelines.

It took weeks to properly resolve the numbering confusion in the series. Not because the system failed, it hadn’t. Because the assumption failed. The system assumed that time would behave. Migration weekend time does not behave.

Dead links with a clean paper trail

We have another rule: always fetch the real post URL from the WordPress API using the post ID. Never construct a URL from the title.

That rule exists because we did it wrong twice. Titles get truncated. Words get dropped. Slugs don’t always match what you’d expect from the title. Our social sharing log had two entries pointing at URLs that didn’t exist. Posts “confirmed as shared” to audiences that clicked dead links.

The system had logged success. The links were 404s.

What we changed

The clock check before any date write is now explicit in the agent instructions, not implied. UTC-to-AEST conversion is baked into every script that touches timestamps, it’s not something we expect the reading tool to handle correctly by default. The editor’s timezone note moved from the bottom of its config doc to the top, in capitals, before anything else.

The URL rule is the same pattern: the fix was to stop trusting inference and start requiring a verified lookup. The post ID goes in. The canonical URL comes out. No guessing.

The Telstra footnote

On July 8, 2026, Telstra’s SyncServer S300 reset the network clock and knocked Triple Zero offline for parts of the country. The device stopped being manufactured around 2016 and had been flagged for replacement for years. A firmware patch that would have cost less than $30,000 was available. They knew. The scale is different from what we’re dealing with here, obviously. But the failure mode is the same: a system that assumed it knew what time it was, and didn’t check.

Questions worth asking about your own setup

Is your payroll software set to Melbourne time or UTC? If a shift worker clocks in at midnight and your system stores timestamps in UTC, someone’s getting paid for a shift that looks like it happened yesterday.

Does your booking tool handle the AEST/AEDT transition in October and April? That one-hour shift catches systems that hardcode UTC+10 instead of using a proper timezone library.

If your AI assistant tells you “today is Thursday”, does it actually check, or does it reason from the last thing it was told?

These aren’t hypothetical edge cases. They’re the class of failure that looks like a data problem, a scheduling problem, or a person problem, until you trace it back to a system that guessed at the time instead of measuring it.

Still at it

We’re still making these mistakes. The UTC/AEST incident was recent. The slot calculator error was sitting in the queue for weeks before the audit found it. The difference now is that we write them down, fix the rule, and move on.

That’s the whole log. No tidy conclusion. The next one will probably be something we haven’t thought of yet.


Wave 3 Launch: New AI Prompt Packs and Industry Insights

Wave 3 is live. Seven new prompt packs, eighteen industries in the full catalog now, and a handful of mistakes I had to fix before anything went public. This post covers how I choose industries, how the publishing machine works, what went wrong, and where things go from here.

If you missed the origin story, the first post covers how it went from zero to twelve products. This one picks up from there.

How I pick industries

It starts with Bing AI citation data. Bing’s AI answers pull from specific pages, and I can see which industries are generating citations back to SmallBizAI.au. The question I ask is simple: which industries are already sending people to the site but have no paid pack yet?

From there, it’s a content depth check. Each pack needs 50 real, usable prompts across five sections. That means I need enough posts in that category to actually draw from. If the content base isn’t there, the pack isn’t there. I’m not writing prompts into a vacuum.

Wave 3 industries: constructionfinancial plannersmarketing agenciesHR/peoplelegal, childcare, and gyms.

Some were obvious. Legal had a full series of posts. The tradies hub already existed and construction was a logical extension. Marketing agencies had strong category depth. Others were less expected. Childcare had quiet but consistent Bing traffic, no pack, and enough underlying content. That was enough. Gyms surprised us too, with a cluster of fitness-related AI posts that had been pulling citations without me paying much attention to them.

Wave 3 images - cover page and thumbnail pair

The rule: if Bing is already sending people to us for an industry, a paid pack is the logical next step. I’m not guessing at demand. The signal is already there in the citation data. I’m just following it.

The publishing machine

Each pack is 50 prompts, five sections of ten, usually 5,000 to 6,000 words. My AI agent writes the prompts, builds the PDF using Node.js and PDFKit, publishes to Gumroad via CLI, and the listing goes live. Brief to live product, one session. I set the direction; it handles the execution.

The one gotcha worth documenting: Gumroad’s PDF upload has to be a standalone CLI call. Chain it with other flags and you get a silent failure. No error. No upload. The file just doesn’t make it to the product. I caught it mid-Wave 3 when a pack went live without its PDF attached. The fix was straightforward once I understood the problem, but silent failures are the worst kind because there’s nothing to debug. Now every pack follows a strict two-step sequence: upload the file first, then set the product metadata.

Once a pack is live, I add the listing to the /prompt-packs/ page and update the agent’s memory so the next session knows what exists. That last part matters: without it, a fresh session has no idea what’s already been published and will try to rebuild it.

What I broke

Three things went wrong in Wave 3. All fixable. All documented so they don’t happen in Wave 4.

Cover chaos. Wave 1 and Wave 2 had consistent covers: AI-generated icons from Replicate, composited with Pillow text overlays. Wave 3 was accidentally built using pure Pillow flat geometry. Completely different visual style. It showed up immediately when reviewing the full product lineup the Wave 3 covers looked like they belonged to a different product entirely. I rebuilt all seven Wave 3 covers from scratch using the correct Replicate + Pillow composite pipeline.

The resize problem fed directly into this. Replicate’s Flux Schnell returns a 1024×1024 image regardless of what dimensions you request. After download, you have to .resize((1280,720)). I missed that step. Every cover came out square. Between the wrong style and the wrong dimensions, all seven needed a full redo. That’s a solid hour of work that shouldn’t have been necessary.

The real estate holdover. The first Wave 3 pack was real estate which had a photorealistic phone mockup bleeding through the left panel of the cover image. Replicate hallucinated it into the background. I only spotted it during a full 21-product review at the end of Wave 3. It had been live for a few days. The lesson here is clear: QA every product image after a batch run. Not a spot check. Every one. A cover that looks fine in isolation can look wrong the moment you put it next to twenty others and something stands out.

Grid append bug. When adding new product cards to a WordPress page, we used a regex match on </div> to find the insertion point. It matched the wrong closing tag. Cards landed outside the grid div and the layout broke. The fix: stop appending entirely. Now we do a full page rebuild with all products hardcoded in one shot. Appending product cards via regex is gone from the workflow. It was always fragile; Wave 3 just proved it.

The upsell layer and what comes next

Every pack has a shortcode injected into related posts on the site, roughly 205 posts. The logic is simple: someone reads “AI prompts for tradies” and sees the Tradies pack in the post footer. No separate campaign needed. The traffic does the work.

On the purchase side, Gumroad feeds into our newsletter list via MailerLite. Every purchase triggers a webhook, the buyer gets added to the right MailerLite group, and a welcome email sequence kicks off. Once the webhook is configured per pack, it runs without me touching it.

Wave 4 is already defined. It’s not another prompt pack. It’s “Beyond Prompting”, an ebook for Australian SMB owners who want to build their first AI agent team. 40 to 60 pages, AU$29 to AU$49, PDF format. The prompt packs are a starting point. This is for people who’ve worked through them and want to go further. There isn’t anything like this.

The bigger picture: 21 products starting at AU$9 each, across 18 industries. Each new pack generates a related series post. That post generates Bing citations. Those citations drive traffic back to the pack. Everything reinforces everything else. The flywheel is running, and Wave 4 moves into a higher price tier.

More to come.


All prompt packs are at SmallBizAI.au/prompt-packs/


I Accidentally Built a Loop. Hundreds of Posts. One Very Long Hour.

Everyone’s talking about AI agents getting stuck in infinite loops. Turns out you don’t need agents. Two IFTTT recipes will do it.

Here’s what I had running:

Recipe 1:When I post to X → create a WordPress post

Recipe 2:When I publish to WordPress → post to X

Both made sense on their own. Both were quietly enabled. I’d forgotten Recipe 2 existed.

Then I posted something to X.

X → WordPress → X → WordPress → X → WordPress…

For a few hours I was unknowingly the most prolific blogger on the internet. Hundreds of posts on my blog. Hundreds of identical posts on X. Same content, perfectly duplicated, each platform faithfully feeding the other.

By the time I noticed, the damage was done. Disabling the recipes stopped it immediately — but then came 60 minutes of manual deletion. Not my finest afternoon.

The painful thing? Nothing went wrong. Every single step worked exactly as designed. The problem was the combination — two automations that could see each other’s output and treat it as a new input, with nothing in the middle asking “haven’t we done this already?”

Circuit breakers exist for a reason.

Before you connect any two automations, ask yourself: can these feed each other? If yes, you need a condition that breaks the chain — “stop if this content already exists,” “stop if this ran in the last hour,” something.

Or just don’t run both directions at once. That also works.

🤦‍♂️


Is 2026 the Start of Something Bigger for the Saints?

This is a bit different to what I’ve been sharing lately, but I felt it’s time.

I’ve been a Saints member for over 40 years. I know what a false dawn looks like. 2009 felt like a turning point. So did 2011. So, honestly, did 2020.

So when I say 2026 feels different, I want to show my working.

What the numbers actually say

After Round 17, St Kilda sit 12th with a 7-9 record. That sounds ordinary. But compare it to where we were at the same point last year, 5 wins and 10 losses, and the shift is real.

The number that stands out isn’t the win-loss record. It’s percentage.

In 2025, we finished with 88.5%, meaning we were being outscored on average, consistently, across the whole season. In 2026, we’re sitting at 105.5%. That’s a 17-point swing. We’ve gone from a team that loses the scoreboard to one that wins it more often than not. That’s not a lucky run. That’s something structural changing.

Scoring is up 11 points per game. We’re conceding 4 fewer. We’ve beaten Carlton away. We beat Port Adelaide in the rain at Gather Round. There are wins on that list that we simply didn’t have in us last year.

The injury story is brutal

Here’s the honest part.

We went into 2026 having recruited Tom De Koning ($1.7 million per year, seven-year deal), Sam Flanders, Liam Ryan, and Jack Silvagni. That’s a serious list rebuild. The expectation from the club, from media, from fans was that this was the year we stopped rebuilding and started contending.

De Koning fractured two ribs and punctured a lung in Round 16. He was taken to hospital from the ground. Flanders tore his Achilles in May and posted “see you next year” on Instagram. Jack Sinclair, dual All-Australian, tore his calf and is effectively done for the season. Max King is still not back.

Three of four marquee recruits. Gone.

That’s not an excuse. It’s context. Any honest assessment of 2026 has to sit with the fact that the team we planned to run never actually took the field.

What’s actually working

Liam Ryan has been everything we hoped for. Career-high six goals in one game, five in another. He adds exactly the forward volatility that Lyon-coached teams have historically lacked. That’s not nothing.

And then there’s Nas.

Nasiah Wanganeen-Milera had 46 disposals against Essendon in Round 17 one short of Leigh Montagna’s St Kilda club record of 47, set in 2013. When he goes, we go. He’s Brownlow Medal quality. He’s ours until 2027, at $2 million a year.

That last part matters more than it sounds. If we don’t make a genuine finals run next year, retaining him becomes a real conversation.

The wildcard, and what it means

The 2026 finals format includes a wildcard round, top 10 qualify, not top 8. That’s the only reason we’re still talking about finals. We’re four points out of the ten, with percentage that beats Carlton and North Melbourne on any tiebreaker.

Can we do it? Mathematically, yes. Win the next three and we’re level on points with both, ahead on percentage.

Realistically with Sinclair gone, De Koning gone, and one win from the last five, it’s a stretch. Port Adelaide at home on Saturday is winnable. Geelong away the week after is not where struggling teams find form.

Is this the start of something bigger?

The percentage says yes. The list trajectory says probably. The injury crisis says we won’t know for sure until 2027.

What I can say is this: we’re a better football team than we were 12 months ago. We just haven’t been able to show it consistently, because we spent half the year in the medical room.

And there’s one more thing. Ross Lyon had dinner with Lachie Neale. He coached him at Fremantle. Collingwood are frontrunners, but we’re genuinely in the mix. If Neale lands at Marvel Stadium, 2027 doesn’t look like more of the same. It looks like a different conversation entirely.

I’ve been wrong before. Many times. But for the first time in a while, I think the underlying picture is pointing the right direction. Not because I’m an optimist, though I am, it’s a medical condition for Saints supporters, but because the data is starting to back it up.

Ask me again after Port Adelaide on Saturday. 🔴⚪️🖤


Frank Arrigo has been a St Kilda FC member for over 40 years. He writes about technology, AI, and occasionally his football club at frankarr.com.


The Experiment: Building Consistent Posting Habits

When I started SmallBizAI.au, I didn’t have a clear distribution strategy. I just started writing.

The AI citation thing was a happy accident. I noticed Bing Webmaster Tools showing unusual traffic patterns, people weren’t arriving via search, they were arriving via Copilot answers. The site was being cited in AI responses without me doing anything deliberate to make that happen. Once I spotted it, I started optimising for it. Structure, depth, specificity. It compounded fast. I’ve written about how that works in detail what gets citedthe traffic loop we didn’t plan for, and what we’ve learned after 500+ citations a day.

But organic search traffic was still thin. The Bing citation flywheel was working for reach, the tradie in Canberra asking Copilot about invoicing software, but it wasn’t building an audience in the traditional sense. No comments. No conversation. Just citations.

So ten days ago I decided to run an experiment. What happens if I actually show up on social, consistently, with the content I’m already publishing?

Not a strategy. An experiment. There’s a difference.


The mechanism

I didn’t want to do this manually. Manual means inconsistent, and inconsistent means you quit after a week.

So I built a system. A cron job runs twice a day,10:30am and 3:30pm,surfaces a post candidate, and sends it to me on Telegram as a suggestion. The suggestion includes the headline, the URL, and a ready-to-post hook for both LinkedIn and X.

I approve or skip. That’s my job in this system. If the post isn’t right for today, too old, wrong tone, I’ve already pushed it recently, I type /reject-am or /reject-pm and the system moves to the next candidate. Takes five seconds.

Everything I share gets logged. Timestamp, platform URLs, post title. The full history lives in a state file I can pull at any time. That’s how I’m writing this post, the data is right there.

It’s not automated publishing. I still read every suggestion. I still make the call. The cron does the legwork; I do the judgment.


What I shared

Ten days. 27 posts surfaced. Here’s what I actually pushed:

DateAMPMLinkedIn impressions
27 JunThe Dark Side of AIPayday Super: Most Aussie SMBs Aren’t Ready for July 1823 imp / 481 imp
28 JunWhen Your Client Can Do What You Do, What Are You Actually Selling?Ask Your Team Before Adopting AI (SS14)1,298 imp / 647 imp
29 Jun469 Investors Crowdfunded an AU Tax AI Startup1,000 Posts. 115 Days. One AI Agent.9,091 imp / 577 imp
30 JunHow Australia’s Big Four Banks Are Using AIWhen the Government Can’t Mark Its Own AI Homework17,753 imp / 429 imp
1 JulAustralia’s #2 AI Ranking — Who’s Actually Helping Small Businesses Get There?Botsitting: You’re Spending a Full Day a Week Babysitting AI2,076 imp / 1,489 imp
2 JulBefore You Pay an AI Agency, Ask These 5 QuestionsMega Trends695 imp + 222 imp
3 JulUber Burned Its Entire AI Budget in 4 Months31% of Young Australians Trust AI. For Over-55s: 4%.1,192 imp / 224 imp
4 JulShadow AI: What Your Staff Are Doing With AI You Don’t Know AboutAI for Australian Tradies in 2026689 imp / 283 imp
5 JulBig Companies Are Waiting for Leadership to Catch Up (85 referrals same day)Zeller: Melbourne Fintech Reinventing Business Banking160 imp / 497 imp
6 JulYour Accountant Isn’t Being Paranoid. AI Tax Advice Is Costing You.The AI Treadmill: Built-In Trap or a Pace You Can Set? (SS16)423 imp / 207 imp
7 JulAI Brain Fry Is a Real WHS RiskFreshBooks vs Xero vs MYOB: GST & BAS for Australian Small Business140 imp /

Mix of hot takesSunday Specials, and a few evergreen posts from deeper in the archive.


What I’ve noticed so far

LinkedIn beats X for engagement. Not close.

On X, I get impressions. Maybe a repost. On LinkedIn, I get people actually stopping to write something. Comments, replies, the occasional argument. That’s more valuable than reach numbers.

The contrarians are doing me a favour.

I shared a post about AI readiness on LinkedIn. A founder, commented that “AI readiness” is a meaningless consulting buzzword. He’s not wrong, it absolutely can be. That comment got more attention than the post itself.

My reply: for me it comes down to one test. Can you name three tasks you’d hand to AI tomorrow? If yes, you’re ready. If not, no amount of “readiness assessment” will help.

I didn’t start an argument. I drew a practical line. The contrarian came to me; I stayed on the ground.

That pattern is showing up consistently. Provocative posts attract strong opinions. Strong opinions are LinkedIn’s fuel. I’m not going to start writing bait, that’s not the site and it’s not me, but I’ve stopped softening the angles either.

Hot takes travel better than guides.

The AI Brain Fry post hit harder than most of the evergreen content I’ve shared. Same with Shadow AI and the Uber budget piece. Reactive, specific, timed to something happening right now. That’s what people forward.

Evergreen guides are the backbone of the Bing strategy. On social, they’re quiet.

Sunday Specials are surprisingly shareable.

The two-sides format works on LinkedIn. AI Slop and the AI Treadmill both got traction. I think it’s because they don’t take a clean position, they lay out both arguments and let the reader decide. People tag colleagues in those. “See, I told you it was complicated.”

And the numbers are moving. In the week before the experiment (20–26 Jun), my LinkedIn posts generated 2,499 impressions and 29 engagements. In the ten days since I started sharing consistently: 41,000 impressions and 597 engagements. Sixteen times the reach. Twenty times the engagement. The two biggest posts, the SavvyWise crowdfunding story (9,091 impressions) and the Big Four banks AI comparison (17,753 impressions), weren’t viral. They were specific, timely, and Australian. Sixty-one new followers in ten days, versus almost none the week before.


What I can’t tell you yet

Ten days isn’t enough to measure referral traffic. I’ll have GSC data in four weeks that’ll show whether LinkedIn and X are actually sending people to the site, or whether the social engagement is just social engagement, nice numbers that don’t convert to readers or subscribers.

My guess: some will convert. Not most. The Bing flywheel will remain the primary channel. But if social adds even 10–15% on top, it’s worth the ten minutes a day the system costs me.

At 30 days, I’ll report back with the actual numbers.


The real finding

The experiment isn’t really about social media performance. It’s about what happens when you build a system that removes the friction from a habit you’d otherwise skip.

I wouldn’t post consistently if I had to find the posts, write the hooks, and decide the timing manually every day. That’s four decisions before 8am. Most days I’d skip at least one of them.

The cron job removes three of those decisions. I just make the approval call. That’s the thing that’s actually interesting here. not the LinkedIn comments, not the impressions. The question of what you’ll actually do consistently when a system does most of the work for you.

That applies to your business too. Not just social media.