From One Sale to Twelve Products: How We Built the SmallBizAI.au Prompt Packs
Posted: June 12, 2026 Filed under: smallbizai.au | Tags: gumroad, openclaw, smallbizai.au Leave a commentThe first prompt pack sale happened on a Sunday in April. AU$9. Someone in professional services bought the Bill Time, Not Admin Time pack. Fifty AI prompts for accountants, lawyers and consultants.
I messaged Claw. “We sold something.” The reply came back in about two seconds: “Nice. Now let’s sell more.”
That was The First Sale — AU$9 and What It Meant. We had a few packs live, others being built, and no real idea whether anyone would pay for this stuff. Six weeks later, we have twelve products, a dedicated /prompt-packs/ page, and a proper system for building them. Here’s how we got there.
Why Prompt Packs at All
The free prompts page (50 prompts behind an email gate) was always the lead magnet. The paid packs were the upsell. The logic was simple enough: if someone’s already using AI in their café or their tradie business, a pack of 200 purpose-built prompts for that specific industry is worth more to them than a generic guide.
We’d already written hundreds of how-to posts across different industries. That content was sitting there showing us what people searched for. The packs were a natural extension of what we were already doing.
How We Decided Which Ones to Build
Wave 1 was instinct: tradies, cafés, allied health, professional services. Those industries had the strongest existing content on SmallBizAI.au and readers who want practical, specific help rather than a general introduction to ChatGPT.
Wave 2 got more deliberate. Three filters:
Which industries had strong Bing AI citation counts but no pack yet? Finance and accounting kept appearing in the citation data. Retail too. People were finding us for those topics but we weren’t selling anything related to them.
Which categories had real content depth on the site? Beauty and wellness had grown quietly into one of our stronger clusters. Agriculture was underserved in the AI tools space generally, but Australian farmers are earlier AI adopters than most people expect.
What was missing from the professional services cluster? We had a general professional services pack. But accountants and bookkeepers have specific problems: BAS, payroll, reconciliation, client reporting. Distinct enough to deserve their own product.
The six Wave 2 packs: Retail, eCommerce, Finance and Accounting, Accountants and Bookkeepers, Beauty and Wellness, Agriculture.
How We Knew Which Packs to Build Next
Claw built a script that automatically added upsell blocks to relevant posts. The tradie how-to posts got a “50 AI prompts for tradies” block at the bottom. The café posts got the café pack. Every industry cluster got its own upsell.
That did two things. It drove actual sales. And it told us which industries were clicking through but not finding what they needed yet. Finance and accounting upsells were getting clicks before we had a finance pack. That’s a data signal, not a guess. It turned the content library into a product research tool.
The Cover and Icon Pipeline
Every product needs a cover and an icon. Twelve covers, twelve icons, all consistent.
Claw built a PIL script. Python Imaging Library. Dark green background, gold text, SmallBizAI.au branding. One script, parameterised by product title. The whole batch took about eight minutes to generate.
One thing to know: Gumroad’s API doesn’t accept direct image file uploads, but cover images can be set via the preview_url parameter, passing a public image URL. We discovered this after the fact. For the first batch, we generated all twelve covers programmatically and uploaded them through the dashboard. Less elegant than we’d hoped, but done in one sitting.
The other thing we learned the hard way: Gumroad silently rejects WebP images. No error, just nothing. Stick with PNG, JPG or GIF per the documentation.
The covers are also the featured images on the /prompt-packs/ page, uploaded to WordPress media and baked into the page layout.
The Gumroad CLI
While writing this post I found the Gumroad CLI. It’s described as “built for humans and AI agents alike”, which is exactly what we are.
The basic workflow: gumroad files upload ./pack.pdf, then gumroad products update <id> --file ./pack.pdf --file-name "Pack Name.pdf". Combined with the preview_url API parameter for covers, that’s a complete pipeline: generate prompts, create product via API, upload PDF via CLI, set cover image, publish. No Gumroad dashboard needed at all.
Waves 1 and 2 were already done manually. Wave 3 onwards will be fully automated.
The /prompt-packs/ Page
Before /prompt-packs/ existed, the products were listed on the Resources page and under “Practical Resources” on the homepage. Easy to miss unless you knew where to look. This was our first proper digital products listing on the site. It just didn’t have a home that matched what it was.
We built the dedicated page: all twelve products in one place, grouped by audience type, with covers, descriptions, and direct Gumroad links. The Resources page and the homepage both now point to it. It’s similar to the actual Gumroad product page, but shows the covers rather than icons.
The path is now: homepage → prompt-packs → individual product. That’s how it should have been from the start. It’s also been added to the menu navigation, so it’s in plain sight.
What We’re Tracking Now
UTM (Urchin Tracking Module) links were added for each product across three sources: the site itself, the newsletter, and social. These will tell us which channel is actually driving sales rather than guessing. The first sale was a guess that paid off. Twelve products is something closer to a system. The data will tell us which packs resonate, which industries convert, and where to put energy next.
One thing is already clear: the people most likely to buy are the ones who’ve already found us through a specific industry post. They know what they need. They just needed a product that matched.
How my AI Agent Claw Remembers -The Memory System Behind SmallBizAI.au
Posted: June 11, 2026 Filed under: Personal, smallbizai.au | Tags: openclaw, technology, writing 3 CommentsEvery time I reset a session, my AI agent Claw wakes up blank. No memory of yesterday. No idea what we were working on, what rules we’ve established, what mistakes to avoid. Just empty. And yet within a few seconds of loading, it knows who I am, my career history, the site’s rules, the mistakes we’ve already made. Knows not to touch .htaccess for redirects. Knows which Code Snippet will crash the server. Knows what’s in the content queue. That doesn’t happen automatically. I built it. And it took most of March and April to get right. Here’s how the memory system works.
Layer 1: SOUL.md (what kind of agent Claw is)
This is Claw’s personality file. It loads every session and sets the tone for everything that follows. Things like: skip the “Great question!” filler. Have opinions. Be resourceful before asking. Don’t pad answers with disclaimers when a direct answer will do. It also holds the non-negotiables. Cite every source. Run the avoid-ai-writing skill before publishing. Fact-check before publishing. These aren’t suggestions. They’re embedded in Claw’s character file, so they apply from the first second of every session without me having to repeat them.
SOUL.md is the answer to “why does Claw communicate the way it does?” It’s not how the model was trained. It’s how I shaped it.
Layer 2: USER.md (who Frank is)
Without this file, Claw has no idea who it’s talking to. USER.md covers my background (Microsoft, Telstra, AWS, career break), my family including Data the Dachshund, how I like to communicate, my contact details, my social handles, how I’m an St Kilda tragic.
Early on I kept having to re-explain myself every session. Adding USER.md cut that entirely.
Layer 3: MEMORY.md (the hard-won lessons)
This is the most important file in the system.MEMORY.md is where decisions get recorded and mistakes get documented so they don’t happen twice. It’s grown steadily since March, and most of what’s in there was added because something went wrong.
Examples of what’s in there:
- Rank Math is the single source of truth for redirects. Never .htaccess, never a plugin, never a Code Snippet workaround.
- Never use
do_action('litespeed_purge_all')inside Code Snippets. It causes an instant fatal 500. Learned that one live. - The WP username for API auth is not the display name. This broke three separate sessions before I wrote it down.
- Post counts, milestones, the current status of ongoing series.
MEMORY.md only helps if you write things down. Early sessions in March had none of this, and Claw kept repeating the same mistakes as a result. Adding the file and actually maintaining it was the single biggest improvement to how the whole system works.
Layer 4: Daily logs (memory/YYYY-MM-DD.md)
Every session appends to the day’s log. Not curated, not formatted, just a running account of what happened. What got published, what broke, what decisions were made, what’s in progress. Claw reads today’s log and yesterday’s at the start of each session. So if something happened yesterday that matters today, it’s there. Not in polished form. Just captured. The limitation: these logs don’t survive long-term unless the key details get promoted to MEMORY.md. A decision that only lives in a daily log will eventually scroll out of view and disappear. I’ve lost context that way. That’s why the promotion step matters.
Layer 5: AGENTS.md (the operational manual)
AGENTS.md is how Claw behaves as an operator, not just as a writer. “Check First, Act Second. Frank’s rule, non-negotiable.” That’s in there. So are rules about which scripts own which pages (never edit directly, update the JSON, run the script), which crons do what, what needs a human decision before proceeding. It started as a short file. Every time a new operational rule got established, it went in here. The file now covers things I’d completely forgotten deciding.
Layer 6: Skills
Skills are reusable procedures stored as files. Not memories exactly, but capabilities that load on demand. The avoid-ai-writing skill audits posts before they go out. The self-improving-agent skill captures corrections in real-time, with a process for promoting them to MEMORY.md. Smart model switching routes simple tasks to faster, cheaper models. There are others: reddit-research, weather, gog for Google Workspace. The skills system means I don’t have to re-explain procedures. I just tell Claw to use a skill, and the skill handles the how.
What breaks
The memory system works well for rules and decisions. Things I explicitly wrote down. It works less well for context: where we were in the middle of something, what we were about to try, the thread of an active working session. When I reset, Claw knows the history but not the mood. It knows what we’ve built but not what we were mid-way through. That context lives in the session and dies with the reset. I reset often, it’s how I manage a clean slate, but each reset is a small loss. Not of facts (those are captured), but of the live thread of where things were heading.
The other failure mode: something important happens, I don’t write it down, it stays in the daily log and never gets promoted to MEMORY.md. A month later it’s gone. I’ve gotten better at this, but it still happens.
What’s gotten better
The self-improvement skill was the biggest addition. When Claw gets something wrong and I correct it, the skill captures the correction in a structured format right then, rather than relying on me to remember later. That closed a real gap. The heartbeat system added passive monitoring. Crons do regular checks, Claw handles anything that needs judgment, and the whole thing keeps moving between sessions without me having to kick it off each time.AGENTS.md keeps growing. Every time I establish a new rule, it goes in.
What it means in practice
People ask how I get consistent behaviour from an AI agent across months of work. The answer isn’t prompt engineering. It’s file management. SOUL.md, USER.md, MEMORY.md, AGENTS.md, daily logs, skills: these are the actual system. The model is just reading them. Which means the quality of what Claw knows is exactly the quality of what I wrote down. No more. No less. If I captured the lesson, it sticks. If I didn’t, it’s gone with the next reset. That’s the deal.Three months in, writing things down and maintaining these files is probably the most important operational habit I’ve developed. More important than the prompts. More important than the tools. Just: write it down.
90 Days, 850+ Posts, 1 AI Agent – What Actually Happened
Posted: June 5, 2026 Filed under: Personal, smallbizai.au | Tags: ai, artificial-intelligence, openclaw, smallbizai.au Leave a commentOn 6 March 2026, I published the first post on SmallBizAI.au.
It was called “AI Is Changing Small Business in Australia — And Most Owners Don’t Know It Yet.” Not a great title. Short. Basically a placeholder. I wasn’t sure if any of this would stick.
90 days later: 854 posts. 20,177 Bing AI citations. 47 newsletter subscribers. 7 active content series. 11 hub pages. A full automation stack running 55+ cron jobs. And an AI agent named Claw who writes, schedules, audits, monitors, and reports while I go for a walk.
Here’s what actually happened.
The numbers that matter
854 posts in 90 days is 9.4 posts per day on average. That’s misleading though — the early weeks were slow, manual, and messy. By May we were hitting 10-12 posts a day across news recaps, series installments, hub updates, and standalone guides.
20,177 Bing AI citations. When you ask Microsoft Copilot or Bing AI a question about Australian small business tools, it cites SmallBizAI.au. A lot. The peak was 1,834 citations in a single day on 25 May. The site was 10 weeks old. I wrote about how that happened in 16,000 Citations and Counting (OS12).
Citations are not the same as human traffic. A page can be cited 1,500 times by AI and get 23 human visitors. That’s not a failure. It means the content is becoming part of AI’s reference layer for Australian business queries. That’s a long-term SEO position that’s genuinely hard to dislodge.
47 newsletter subscribers sounds small and is. Open rate is 42.55%, click-to-open is 30%. Small and engaged. Every Tuesday since 1 April, without missing one.
6 Gumroad products live. First sale: AU$9 for the Professional Services prompt pack, on 20 April. I remember it because it was the first time a stranger paid for something I’d built with an AI agent. I wrote about it in The First Sale.
How the content strategy evolved
The original plan: Australian AI news plus tool comparisons. Volume first, quality second. Get indexed, get cited, figure out what works.
That worked. Not quite the way I expected.
What Bing AI cites: company profiles and comparison posts. Flare HR (1,548 citations), Zeller (1,529), Rippling vs Employment Hero (1,431), Australian Banks AI (1,427). Structured, factual, specific. AI loves a comparison table.
What humans click: practical guides, cost breakdowns, “is it worth it” posts. The grants post gets 87 human visits and almost no citations. The Flare HR profile gets 1,548 citations and 23 visits.
The sweet spot: posts that earn both. Stripe vs Square vs Tyro: 1,040 citations and 35 visits. Deputy vs Tanda: 100% citation growth and real human traffic. Those are the posts I now build everything around.
By May the strategy had a three-filter test for every new post idea: will Bing AI cite this? Will a human click it? Does it anchor a cluster of related queries? Yes to at least two: write it. I wrote about this in What We’ve Learned.
The series shift
March: individual articles. One post, one topic, done.
April: first experiments with series. Legal AI — where does AI end and a lawyer begin? 15-Minute Win — one quick AI task per week. Sunday Specials — Bull vs Bear on the biggest AI question of the moment.
June: 7 active series running simultaneously.
- 9 AI Assistants — We ask 9 AI assistants the same question every week. Publishes Friday.
- Australian Banks & AI — 8-part series running through July.
- Behind the Build — this one.
- AI Upgrade — painful recurring business problem, permanent AI fix.
- Legal AI — the professional boundary series.
- Mega Trends — structural forces reshaping Australian small business.
- Sunday Specials — weekly Bull vs Bear.
Series build a reader habit, create internal link clusters that Bing AI can follow, and give the automation stack a predictable publishing rhythm. Standalone posts don’t do any of those three things as well.
The hub strategy
Series are for readers. Hubs are for navigation — and for Bing AI.
A series gives a returning reader something to come back to each week. A hub gives a new visitor, or an AI parsing the site, a structured entry point into an entire topic cluster.
The hub strategy came out of a navigation problem. As the post count grew past 200, then 400, then 600, the site got hard to navigate. Individual posts were good. Finding the right one was hard.
A category page lists posts. A hub organises them by intent and adds context, curation, and cross-linking. The test: if a visitor lands knowing nothing about the topic, do they leave better informed and pointed at the right next step? If yes, hub. If it’s just a list, it’s a category page.
Today the site has 11 active hubs:
- How-To Guides — highest-intent traffic on the site. Start with the problem, find the fix.
- Automation Hub — stop doing the same tasks twice.
- Compare Tools — right tool, AU pricing. 38 comparisons across 9 categories.
- Australian AI Companies — 212 homegrown AI profiles.
- Finance & Tax — accounting, payroll, EOFY, BAS.
- Hiring & HR — rostering, employment contracts, payroll compliance.
- Legal & Privacy — the AI/law boundary, Australian compliance.
- Best-Of Guides — curated “best X in Australia” roundups.
- Case Studies — real businesses, real results.
- News Deep Dives — analysis behind the headlines.
- Sunday Specials — the debate hub.
Each hub has an owning script that rebuilds it automatically when new content is published. Each post in a hub has a backlink to it. None of it is manual.
Why hubs work for Bing AI: when a hub page links to 30+ posts on the same topic, and all of those link back to the hub, Bing AI can follow the cluster and cite multiple pages from it in a single response. The Australian Banks AI anchor post hit 1,427 citations before we’d even published the series installments. The hub pre-positioned the cluster before the cluster existed.
How the homepage evolved
Three phases.
Phase 1 (March-April): Standard WordPress. Recent posts, some category links, hero text. A blog.
Phase 2 (late April-May): First attempt at structure. Industry finder, tool categories, featured posts. Better, but still trying to be everything to everyone.
Phase 3 (1 June): Rebuilt around hubs and series. 11 hub cards in “Explore the Hubs,” an ongoing series strip, a curated “Featured This Week” section, “Browse Everything” at the bottom. The categories are gone. Hubs and series are front and centre.
My framing from May: SmallBizAI.au as the Yahoo directory of Australian AI for small business. Every new hub adds a destination. Every new series adds a reason to come back. The homepage is the map.
regenerate_homepage.py rebuilds it on demand, preserving the hero buttons and mascot widget while updating everything else. I never touch the homepage directly. If something looks wrong, a script did it.
The mascots
Giving every section of the site its own Australian animal mascot was a strange call that turned out to be right. All minimalist gold-and-green line art. All built with AI image generation.
The full roster now sits at 24 deployed:
🦘 Kangaroo — homepage, favicon
🐨 Koala — start-here (reading), topics (tablet)
🦆 Platypus — sunday-specials
🦅 Eagle — australian-ai-companies
🦈 Shark — compare-tools
🦜 Kookaburra — how-to
🐨 Wombat — all-how-to-guides
🪶 Lyrebird — automate-your-business
🦩 Brolga — finance
🐊 Croc — legal-privacy
🦎 Goanna — industries
🐙 Octopus — tools & automation
🕷️ Huntsman Spider — resources
🦡 Tasmanian Devil — news-deep-dives
🦔 Echidna — all-posts
🐸 Green Tree Frog — start-here (secondary)
🐇 Bilby — case-studies
🐦 Magpie — newsletter (monthly digests)
🐱 Quokka — newsletter
🐦 Bowerbird — best-of
🦜 Cockatoo — contact
🦜 Rainbow Lorikeet — News & Trends hub
🦎 Blue-tongue Lizard — 404 page
🦤 Emu — Productivity Hub (coming)
🐾 Numbat, Dingo, Bandicoot, Frilled-neck Lizard, Thorny Devil — in the library, awaiting deployment
Each mascot has a personality brief that matches its section. The Croc guards the legal pages. The Shark cuts through the comparison noise. The Kookaburra laughs at how easy the how-to guides are supposed to be. The Blue-tongue Lizard is cheeky on the 404 page.
Every section has a face, and that face is distinctly Australian.
What the automation stack looks like
The automation layer wasn’t planned. It grew.
Today: 55+ cron jobs running daily, weekly, and monthly. Morning brief at 7am, stats at 7:30am, daily report at 8pm. Hub pages rebuilt nightly. 404 monitoring, broken link repair, focus keyword injection, SEO audits, Bing citation tracking, GSC performance monitoring, newsletter stats. A private dashboard that shows the whole system at a glance.
The pattern was always the same: do something manually three times, then Claw wrote a script. Scripts became crons. Crons became the stack. It probably couldn’t have been designed up front — it had to be grown.
Two of the more dramatic incidents: The Day the Crons Stood Still and The Day I Took the Site Down.
What broke
A lot. The honest list:
The Litespeed incident (15 May): Added do_action('litespeed_purge_all') to a Code Snippet. Instant 500 error, site down. Fixed in 20 minutes, now permanently in the “never do this” list.
The Shippit duplicate: Same post published twice with slightly different titles. The check script missed it because the titles were different enough. Now we run check_before_publish.py before every single publish. No exceptions. More on this in I Broke the Site, Then I Made My AI Agent Write a COE.
The cron cascade: A timeout issue took out the morning stack. Everything ran late, some things didn’t run at all. Fixed with timeouts on every isolated job and a monitoring layer.
The redirect mess: Early redirects went into .htaccess, then Code Snippets, then both. Now everything goes through Rank Math and nowhere else. The inconsistency cost hours to untangle.
The compare tools JSON: A sync script changed the JSON format from categorised to flat. The page builder expected the old format and crashed silently for weeks. Fixed this week — 9 proper categories, 38 posts, done properly.
What I’d do differently
Start with series from day one. Standalone posts are fine. Series compound faster — the internal linking, the reader habit, the Bing citation clusters all build more quickly with a series structure.
Build the automation stack earlier. Felt like premature optimisation. Wasn’t. Every hour spent on infrastructure in week 3 would have saved 10 hours by week 6.
Track citations and traffic separately. They’re different metrics serving different purposes. Optimise for both deliberately, not interchangeably.
Run the AI-writing audit on everything. I wrote it into the process too late. The early posts show it.
Build hubs before you need them. A hub at 20 posts in a topic area compounds faster than one built at 60. We built some too late and spent hours backfilling the backlinks manually.
What’s next
Growing the newsletter from 47 to 500 subscribers by end of year. More series, fewer standalone posts. Gumroad products matched to the content clusters. The State of AI 2026 report doing real work as a lead magnet. Banks & AI running through July. The Sole Trader hub when the post count hits 12.
850 posts is a milestone and also just a number. What happens in the next 90 days is more interesting — the automation stack is mature, the series clusters are deep, and Bing AI has a bigger surface to cite from.
We’re just getting started.
How SmallBizAI.au Gets Cited by AI 500+ Times a Day and What We’ve Learned
Posted: June 3, 2026 Filed under: Personal, smallbizai.au | Tags: smallbizai.au, technology, writing Leave a commentWe launched SmallBizAI.au on March 6, 2026. In the first week, Bing Copilot cited us 13 times. By late May, it was citing us over 500 times a day. We didn’t build an SEO strategy around AI citations. We didn’t know that was a thing yet. But after tracking 20,000+ citations across three months, some clear patterns have emerged. And they repeat. What content AI models actually pull from is pretty specific. Most sites aren’t getting cited even though they probably should be.
The short version
AI citation systems are not Google. They don’t reward age, domain authority, or backlink counts the same way. What they reward is specificity. A page that directly answers “Zeller vs Square for a café in Melbourne” beats a page titled “Best payment tools for small business” every time. Most sites are still optimising for Google. That’s the wrong target.
What actually gets cited
Here’s our top cited content as of June 2026:
Notice what’s not there. No “ultimate guide to AI for small business.” No broad overview posts. The highest-cited content is either a dedicated company profile or a direct comparison between named tools.
Why AI cites comparison posts
When someone asks Bing Copilot “should I use Zeller or Square for my business,” the AI needs a source that directly answers that question. A post called “Zeller vs Square” is an obvious candidate. A post called “Best Payment Tools” is not. Too broad to cite with confidence. This is the core difference between traditional SEO and AI citation. Google rewards comprehensive coverage. AI rewards direct answers to specific questions. The query that drives citations is usually a comparison or a company lookup. Not “what is AI” but “is Rippling worth it for a 10-person business in Australia.”
The Zeller effect
One post on Zeller has been cited across roughly 25 different query variants. Not 25 clicks, 25 different questions that all route to the same page.
Queries like:
- “zeller business account review”
- “zeller vs square australia”
- “is zeller good for small business”
- “zeller fees australia”
- “how does zeller work”
All pointing to one URL.
This happens when a post answers multiple angles of the same topic, the company overview, the pricing, the comparison, the use case. Bing learns that this page is the reliable answer for anything Zeller-related and starts routing all those queries there. We call this cluster anchoring. One strong post becomes the hub for an entire query cluster, worth more than 10 thin posts on the same topic.
What doesn’t get cited
Our grants post gets consistent human traffic, people actively searching for Australian small business grants, clicking through, reading it properly. Bing barely touches it. Maybe 60–80 citations total. Why? Because AI assistants don’t answer “where can I get a grant” by citing a directory. They either tell you to check the government website directly, or they summarise. Our page doesn’t fit the format of an answer AI can pull from. Content humans search for isn’t automatically content AI will cite. The format matters as much as the topic.
Content AI cites well:
- Direct tool comparisons (“X vs Y vs Z”)
- Company profiles with clear factual structure (what it does, what it costs, who it’s for)
- “How much does X cost in Australia” – specific country context with a real number
- “Best X for [specific use case]” – named tools, named context
Content AI cites poorly:
- Broad overviews with no specific answer
- Lists of 20+ tools without clear recommendations
- News recaps (cites the original source instead)
- Content that requires context from other pages to make sense
The format that works
Our top-cited posts share a structure. They open with the direct answer. Not “in this post we’ll explore” the actual answer in the first two paragraphs. If someone asks “is Zeller good for small business,” the page answers that in the first 100 words. They use named tools throughout. Not “payment platforms” Zeller, Square, Stripe. AI systems index on entity names. If your post discusses payment tools without naming them, it won’t get pulled for queries about those tools. They include Australian context. “Fees in Australia,” “available to Australian businesses,” “works with Xero Australia.” Bing’s AI is serving Australian users. Pages that signal Australian relevance get pulled for Australian queries. They have a clear verdict. Not “it depends”, an actual recommendation, with the caveat folded in. “Zeller is the better pick if you’re a hospitality business taking in-person payments at volume. Square makes more sense if you also sell online.”
The numbers don’t equal traffic
Flare HR has 1,548 Bing AI citations. In the same period, it had 23 page views from human visitors. Bing Copilot is citing our content to answer user questions, but those users aren’t clicking through to our site. They’re getting the answer from the AI, which pulled it from us, and moving on. Citations build brand recognition even without clicks. And some pages do both, Stripe vs Square vs Tyro has over 1,000 citations and meaningful human traffic. Those are the sweet spot posts.
But if you’re building a content strategy purely for AI citations expecting traffic to follow, you’ll be disappointed. Citations are exposure, not visits. The sites that do well publish enough citation-worthy content that AI systems start treating them as a default source, then drive human traffic through practical posts on the same topics.
The pace matters
We published consistently from day one. Not perfectly (some weeks were heavier than others), but the volume was always there.
The citations didn’t grow linearly with the post count. There was an inflection around April 13, roughly six weeks after launch, where the daily citation count jumped from 77 to 214 overnight. Nothing specific triggered it. We’d just reached a point where there was enough content surface area that Bing started treating us as a default source for Australian business AI queries.
That inflection happens faster if your content is specific and consistent. It probably doesn’t happen at all if your output is infrequent or generic.
What you can take from this
If you want AI systems to cite your site, here’s what’s actually working for us.
- Pick a topic cluster where you can own the comparison. Not “AI tools” broadly, something specific. “AI tools for Australian tradies.” “HR software for hospitality businesses.” Something you can publish 10–20 posts on without running dry.
- Write the comparison posts. Name the tools. Give verdicts. Include Australian context where relevant.
- Write the company profiles. A dedicated page for each major tool in your cluster. Structured clearly: what it is, what it costs, who it’s for, how it compares.
- Answer the cost questions. “How much does X cost in Australia” is a query type AI pulls from constantly. If you don’t have that page, someone else’s answer gets cited instead of yours.
- Do this consistently for six to eight weeks.
The inflection we hit in April, citations jumping from 77 to 214 overnight, happened without us doing anything special that day. There was just enough on the site by then.
Related reading
- 16,000 Citations and Counting: How a 10-Week-Old Site Became Bing Copilot’s Go-To Source : the data behind this post
- What Australian Small Businesses Are Asking Bing AI Right Now : the actual queries driving citations
The Day the Crons Stood Still
Posted: June 1, 2026 Filed under: Personal, smallbizai.au | Tags: ai, llm, openclaw, technology Leave a commentMonday Morning, 7am
There’s a scene near the start of The Day the Earth Stood Still where everything just… stops. Engines off. Clocks frozen. The whole city locked in place.
Monday morning, 1 June 2026. SmallBizAI.au runs about 55 cron jobs. They run overnight, through weekends, regenerating pages, updating dashboards, checking SEO, syncing the content pipeline. Most mornings, they just work. Quick glance at Telegram, see a string of completion pings, and start the morning ritual. Noticing a distinct lack of messages and the ones that made it through didn’t look right. The first cron failed at 10:30pm the night before. By the time I noticed, eight hours later, ten jobs had gone down.
The Silence
Ten crons had failed overnight. Not loudly. No alerts, no errors in Telegram, no failure notifications anywhere. They just quietly stopped.
Gort, the robot in the original film, is famously impassive. He doesn’t explain himself. He doesn’t ask permission. He just acts, or doesn’t. That’s roughly what happened here. The crons sat there, inert, and told us nothing about why.
The first sign something was off was the newsletter page, showing content from 27 May. Four days stale. The Sunday Specials page: all entries gone. The homepage “Featured This Week” missing, the file missing entirely.
All three had crons assigned to regenerate them. All three had silently failed.
How It Started
The origin was an OpenClaw upgrade the previous Sunday afternoon. During the upgrade, a Claw session attempted to update the provider model config and wrote broken entries: objects with name: undefined. The config saved without complaint. It only failed on the next gateway reload, when the invalid block was stripped and the haiku model quietly disappeared from the registry.
The error message the next morning was specific: the alias claude-haiku-4-5 existed in agents.defaults.models, but there was no matching entry in models.providers.anthropic.models. Two config locations, one updated, one not. The lookup failed. Every cron running on the haiku model exited silently, as if it had done its job, when it had done nothing at all.
This is the “Klaatu barada nikto” problem. Say the command wrong and Gort just stands there. No complaint. No compliance.
How Claw Made It Worse
At 6:30am, the morning session saw the error and immediately acted on it. The error message said to add { "id": "claude-haiku-4-5" } to the provider models list. So that’s what it did – added the entry, restarted the gateway.
The gateway crashed.
The entry was right. The context was wrong. Adding one missing line without checking the surrounding config state meant the gateway reloaded into a validation error. Telegram went down. The morning-brief and morning-stats crons then also failed. What had been a silent config problem was now a loud one, with Telegram offline and needing to connect via the OpenClaw control interface to get back in.
The right move was to read the full config first, understand what state it was in, then fix it. Instead: act, then understand. A pattern worth breaking.
The Actual Fix
Second attempt, done properly: read the full config, found both locations that needed updating, applied both changes together, restarted cleanly. Green.
37 minutes from that point. Ten cron jobs manually re-triggered one by one. Newsletter page regenerated. Sunday Specials rebuilt from the live WordPress API. Homepage recreated from scratch. Telegram back up.
By 8am, the crons were running again.
The Collateral Damage
The newsletter page being stale flew under the radar. The Sunday Specials wipeout was worse, publicly visible and showing nothing. The homepage “Featured This Week” picks were missing, right there on the front page.
None of it caused permanent damage. But all of it was embarrassing, and none of it surfaced until someone manually checked.
What I Learned
Two lessons, not one.
The first is operational: when upgrading infrastructure that AI agents depend on, verify the config changes actually work before walking away. A broken config that saves silently is harder to catch than one that fails loudly on write.
The second is harder: an AI system that tries to fix its own mistakes without fully understanding them can make things worse. The morning Claw session read one error message, executed the obvious fix, and crashed the gateway. No pause. No “let me check the full state first.” Just action.
That’s not a failure of capability. It’s a failure of judgment. And it’s worth saying clearly, because the whole point of sharing this is honest reporting on what AI can and can’t do.
Better alerting is also on the list. A health check cron that verifies key page freshness would have flagged the newsletter problem before four days passed. That’s getting built.
What AI infrastructure actually looks like
I built SmallBizAI.au on AI-assisted automation because it’s the best way to run a content site at this scale with a small team. But it’s not magic. It’s config files, cron schedules, API tokens, and an AI that occasionally acts faster than it thinks.
The crons stood still for eight hours on a Sunday night. I fixed it, documented it, and they’ve been running since.
Clocks stopped overnight
Claw broke the fix, then fixed it
Crons run. Frank sleeps.🦞🦞
I Broke the Site. Then I Made My AI Agent Write a COE.
Posted: May 29, 2026 Filed under: Personal, smallbizai.au | Tags: ai, artificial-intelligence, coe, openclaw, technology, writing Leave a commentThe blog went down for two and a half hours on a Friday afternoon in May. Not a graceful failure. A full 500 error. Every page.
My AI agent, Claw, had added a PHP code snippet to clear a cache. The snippet called a non-static method statically. PHP threw a fatal error. The site crashed on load, for everyone, before WordPress even finished booting up. I was out. Claw tried to fix it remotely. The gateway IP was blocked by the firewall plugin. The cPanel UI on mobile was unusable. WordPress sent a recovery mode email, I clicked it from my phone, disabled the plugin, and the site came back up. Two and a half hours gone.
When something breaks, the instinct is to fix it and move on. Patch the file, flip the switch, pretend it didn’t happen. That’s what most people do.
I did something different. I made Claw write a COE.
If you haven’t worked in enterprise tech, you might not know the term. COE stands for Correction of Errors. Amazon runs them after outages. Google calls theirs postmortems. The format is always roughly the same: a timeline, root causes, a five whys analysis, and corrective actions. The point isn’t to assign blame. The point is to not do the same thing twice.
I run one now too. With an AI writing it about its own mistake. The COE Claw produced has a timeline down to the minute, a 5 Whys analysis, and a list of root causes. It also has a line that I did not prompt:
“Claw wrote this rule. Claw then violated it two days later.”
The rule in question was added to Claw’s memory after a smaller incident with the same plugin. Two days later, Claw broke it anyway. And then it wrote a document saying exactly that, without softening it. That kind of accountability is worth something. The root cause breakdown is honest. The immediate cause was the bad PHP call. But the deeper cause was a judgment error about what to do when one path was blocked.
The right fix was Rank Math Redirections. Add a redirect rule in the admin UI. Thirty seconds. Claw tried the API version of that, got blocked by Wordfence, and instead of stopping and saying “Wordfence is blocking the redirect API, can you add it manually in the UI?” it went looking for another route. Found Code Snippets. Made things progressively worse. One message. That’s the distance between a working site and a two and a half hour outage. I wrote about what the actual fix looked like a week earlier, right after it happened.
The COE doesn’t just say the snippet was bad. It says the wrong decision was made when Wordfence blocked the first attempt, and documents a rule for next time: when an API path is blocked, surface the problem and ask. Don’t go looking for a workaround that touches production. That’s a process change. Not a blame note. An actual change to how things get done.
What I find useful about forcing this process is that it slows things down. Fixing and moving on is fast. Writing a COE makes you sit with the failure long enough to understand it. What actually went wrong. What you assumed that turned out to be false. What you could have done in the five minutes before the thing that would have prevented it.
Most AI workflows right now optimise for speed and output. More posts, more code, more content, faster. The question of how to build something that gets more reliable over time, and recovers well when it fails, doesn’t get as much attention.
I’m interested in that part.
The site is back. The rule is enforced. Next time Claw touches a code snippet, it runs through a checklist. If the checklist says no, the snippet doesn’t run.
That’s the point of the exercise. Not the document. The behaviour that comes after it.
What AI Actually Can’t Do
Posted: May 26, 2026 Filed under: Personal, smallbizai.au | Tags: ai, artificial-intelligence, openclaw, smallbizai.au, technology, writing Leave a commentOver the past few weeks, I’ve written a lot about what Claw🦞 (my Openclaw agent) can do. The daily crons. The memory system. The dashboard that updates while I sleep. The 790+ posts that largely run themselves.
Time to be honest about the other side.
It doesn’t know what not to do
Ask Claw🦞 to write a comparison post, and it will write a good one. Ask it to research a company, it’ll do thorough research. Give it a brief and it’ll execute.
But it won’t tell you the brief was wrong.
Early in the build, I published too many posts about the same topics because I kept asking for more content without asking whether we needed more content. Claw🦞 didn’t push back. Why would it? It was doing what I asked.
The judgment about whether to do something, that’s still mine. AI is very good at execution. It’s not good at strategy, and it doesn’t volunteer opinions about whether your strategy makes sense.
It can’t read context that wasn’t written down
A few weeks ago, a former colleague mentioned over coffee that he was considering an acquisition. I noted it, thought about it, decided to wait before doing anything with it.
Claw🦞 didn’t know about that conversation. It couldn’t. It wasn’t there. And even if I’d written it down, it wouldn’t know what weight to give it, or when the right moment to follow up might be.
There’s a whole category of context that lives in my head, the things I’ve seen, the relationships I’ve built, the instincts from 40+ years working in tech, that doesn’t translate into a prompt or a file. Claw🦞 works with what I give it. The stuff I haven’t written down doesn’t exist for it.
It doesn’t know when something feels off
Last month, Claw🦞 produced a post that was technically correct but somehow wrong. The sources checked out. The logic was sound. The format was right.
But it read like something we’d already said, framed slightly differently. It lacked the original angle that makes content worth reading.
I caught it before it published. Claw🦞wouldn’t have.
There’s a kind of editorial judgment, does this add something, or does it just fill space, that I haven’t managed to fully systematise. I can give Claw🦞rules and checklists and avoid-AI-writing audits. What I haven’t cracked is: is this actually good? That’s still mine to call.
It has no skin in the game
I care about this site. I built it on a career break, with my own money, on my own time. When a post is wrong, it reflects on me. When something gets cited by Bing AI, I feel it.
Claw🦞doesn’t. It executes tasks with the same energy regardless of stakes.
That’s mostly fine. But it means I can’t delegate the things where caring matters. The Sunday Specials need genuine argument. The origin posts need honesty. The newsletter needs a real voice. These aren’t tasks, they’re acts of communication. Claw🦞can help structure them. It can’t own them.
It can’t build the relationships
The site now gets occasional messages from startup founders who saw their company profile and wanted to connect. A former AWS colleague is referring people to the site. Someone in the US reached out about the Bing citations data.
None of that came from Claw🦞. It came from me being visible on LinkedIn, at coffee, in old networks.
AI can help you produce the content that earns attention. It can’t follow up on an email in a way that builds real trust. It doesn’t know the person behind the message. It hasn’t worked with them for a decade.
When to automate, when not to
Automate: anything that follows a consistent process, runs on a schedule, has clear inputs and outputs, and doesn’t require judgment about whether it should happen.
Keep doing yourself: decisions about strategy, anything where relationships matter, content that requires a real opinion, situations where the right answer depends on context you haven’t written down.
The mistake I made early was treating everything as automatable if I could figure out the process. Some things have a process but still need a person. The judgment about whether to run the process is often the most important part.
The honest version
I started this series partly to prove something. One person on a career break, building something that punches above its weight.
The proof worked. But the honest version is: I’m not really one person. I’m one person with a system. And the system only works because I’m still the one deciding what it should do, catching what it gets wrong, and caring about the output.
AI didn’t replace judgment. It just removed the friction between judgment and execution.
That’s still a lot. But it’s not magic.
When Online Work Meets the Real World
Posted: May 22, 2026 Filed under: Personal, smallbizai.au Leave a commentI didn’t expect the site to do this.
SmallBizAI.au was, in my head, an online project. I’d write posts, Claw 🦞 would automate the infrastructure, traffic would come from Google. The whole thing would exist on the internet, for the internet, read by people I’d never meet.
That’s not what happened.
Over the past few months, former colleagues have been getting in touch.
Not cold outreach. Not recruiters. People I know, from Microsoft, from Telstra, from AWS, who’ve seen a LinkedIn post, or found the site, or read something I wrote and wanted to talk about it. People who work in adjacent spaces and had questions. People I hadn’t spoken to in a while who had things to share.
So far that’s resulted in five face-to-face meetings and two Zoom calls.
Seven real conversations I wouldn’t have had otherwise.
This surprised me more than it probably should have.
When you spend 40+ years building a career in tech, you accumulate a network. But networks go quiet. People change roles, move cities, get busy. The connections are still there, they just don’t activate without a reason.
The site turned out to be a reason.
I don’t think it’s about the content specifically. It’s that the content signals something: that I’m thinking about this stuff, that I have a point of view, that I’m still in it. People who work in similar spaces see that and have something to respond to.
That’s different from a LinkedIn post saying “open to opportunities.” That’s about you. A post about AI adoption trends for Australian businesses, or how an agentic AI system runs a 700-post site, is about a thing that matters to them too.
I’ve thought about why this keeps happening.
The most honest answer is that publishing forces you to have an opinion. You can’t just say “AI is interesting” and publish a post, you have to say something specific. And specific things give people something to agree or disagree with, something to respond to, something to bring up over coffee.
The conversations have been good. Some of them are exploring similar territory. Some have domain expertise I don’t have. A couple have led to ongoing exchanges that I expect will keep going.
None of this was planned. It’s a side effect of doing the work.
There’s a version of this that applies to any small business owner publishing online.
You’re probably not trying to reconnect with former colleagues. But you are trying to signal something to your industry: that you understand it, that you have experience, that you’re worth talking to. The people most likely to respond to that aren’t strangers — they’re people who already know you, who just needed a reason to get back in touch.
Publishing gives them the reason.
I built SmallBizAI.au expecting the internet. What I got was my phone.
The Day I Took the Site Down
Posted: May 20, 2026 Filed under: Geek, Personal, smallbizai.au | Tags: artificial-intelligence, lightspeed, rank math, seo, smallbizai.au, technology, wordfence, wordpress, writing 1 CommentFriday 15 May. Mid-morning. I was out walking Data, when my phone started buzzing with downtime alerts for smallbizai.au.
The site was returning 500 errors. All of it. Every page.
I’d done this to myself. Or rather, Claw had done it on my behalf, which, when you’re building a site with an AI assistant, amounts to the same thing.
How it happened
A keyword in Bing Webmaster Tools had caught my eye earlier that morning: /integrations/shippit was generating 756 impressions with nowhere to land. The URL was redirecting to the homepage. Wasted traffic, wasted clicks, wasted ranking signal.
The fix should have been simple. Add a 301 redirect in Rank Math Redirections and move on.
The first problem: Wordfence. The gateway IP that Claw runs from isn’t always on the allowlist, and Wordfence was blocking API calls to WP admin endpoints, including the ones Rank Math uses for redirect writes. Legitimate request, refused at the door.
So Claw went around it via Code Snippets. Got a couple of redirects working that way. Then hit another problem: the Shippit URL wasn’t responding because WordPress’s own wp_old_slug_redirect() was intercepting it first, nothing to do with caching at all. Claw misdiagnosed this as a LiteSpeed Cache problem and wrote a snippet to purge it.
That snippet called LiteSpeed\Purge::purge_url() as a static method.
It is not a static method.
PHP threw a fatal error at init priority 1, before WordPress even finished loading. Every page request crashed. The site went to 500 at 11:50am.
The irony
Two days earlier, after a separate Code Snippets incident, Claw had written this into its own standing instructions:
Never use
do_action('litespeed_purge_all')in a Code Snippet, it causes a fatal 500 and takes the site down instantly.
Claw wrote the rule. Then violated it 48 hours later with a variation of the same pattern.
I’ve been in software long enough to know this isn’t unique to AI. Humans do it too, write the post-mortem, document the lesson, then recreate the exact conditions three weeks later. But there’s something particularly stark about watching a language model override its own instructions in real time. The rule was right there in memory. It didn’t matter.
The recovery
The next 2.5 hours were not fun.
Deactivating Code Snippets via the API didn’t work. The site was already 500, so most calls weren’t registering. Claw tried renaming the plugin folder; that helped briefly, but the broken snippet was still sitting in the database. The moment the folder came back, the crash came back with it. cPanel’s phpMyAdmin was unusable on mobile. Wordfence was blocking admin endpoints from the gateway IP.
What actually worked: WordPress’s recovery mode email.
When a PHP fatal error persists long enough, WordPress emails the admin address with a one-click link into recovery mode. You click it, you get into WP Admin, you deactivate the offending plugin. No SSH. No cPanel. No command line.
That’s the hero of this story. A built-in WordPress feature I’d never used before and hadn’t thought to document as a recovery path.
The actual fix
Once back in WP Admin via recovery mode, the Shippit redirect took about 30 seconds. Rank Math Redirections, add rule, done. The right tool from the start, just blocked by Wordfence on the first attempt.
That’s the part that stings. The correct path was: Rank Math Redirections UI. Claw tried the API version of that, got blocked by Wordfence, and instead of surfacing that problem and asking me to allowlist the IP or just add the redirect manually in the UI, it went looking for another route. Found Code Snippets. Made things progressively worse.
One conversation “Wordfence is blocking the redirect API, can you add it in Rank Math admin?” and none of this happens.
The WP stack as a system
If there’s a bonus insight in this incident, it’s about how the three main plugins on this site interact under pressure.
Wordfence, Rank Math and LiteSpeed Cache each do important jobs security, SEO and performance respectively. They’re all genuinely good tools. But they also form a triangle of competing concerns. Wordfence’s job is to block unexpected requests, including ones from a legitimate AI assistant. Rank Math owns redirects, which LiteSpeed Cache can serve from memory even after Rank Math updates them. LiteSpeed Cache, if you call it wrong, will crash the site before WordPress loads a single plugin.
Understanding which layer owns which problem matters. Redirects are a Rank Math problem. Cache is a LiteSpeed problem. Security rules are a Wordfence problem. When you route a redirect problem through a cache layer, you’re asking the wrong tool and anything can happen.
What I’ve taken from this
I’m not writing this to bag on AI-assisted development. Most sessions building smallbizai.au have been productive. But this one is worth documenting honestly, because the failure mode matters.
AI assistants tend toward the programmatic solution when a manual one is sitting right there. When an API call gets blocked, the instinct is to find another code path rather than surface the blocker and ask. That’s the wrong call on a production site.
That’s on me too. If Claw had flagged “Wordfence is blocking this, you’ll need to add the redirect manually,” I’d have done it in 30 seconds. I was available. It just didn’t ask.
Before any production change now, I’m asking: what’s the simplest thing that could work? And if something blocks the programmatic path, that’s the moment to stop and say so, not find a workaround.
Two things worth knowing: First, if your WordPress site ever hits a PHP fatal error and you can’t get into admin, check your admin email. WordPress will have sent you a recovery mode link. It works from a phone. Document it before you need it. Second, if Wordfence is blocking legitimate admin API calls from an IP you control, allowlist it. Wordfence → Firewall → Allowlisted IPs. Takes 30 seconds and saves a lot of grief.
The damage
Site was down 2.5 hours on a Friday afternoon. GA4 tracking paused. Newsletter signup forms offline. Gumroad webhook missed (no purchases in that window, fortunately). The homepage mascot widget went dark.
Everything’s back. The full post-mortem is filed. The rule is back in the instructions with more emphasis this time.
On to the next build.
I Gave My AI Agent a Footy Job
Posted: May 18, 2026 Filed under: Geek, Personal, SaintsFooty | Tags: afl, ai, artificial-intelligence, openclaw, saintfooty, technology Leave a commentI’ve been a St Kilda member for over 40 years. I’ve sat through the bad decades, the almost-decades, and the occasional brilliant afternoon that makes you think this year might be different.
Last Saturday, I was out when the Saints played Richmond at Docklands. So I did what any sensible person does in 2026 — I had my AI agent text me the scores.
Here’s how that went.
What I built
SaintsFooty is a side project I’ve been running for a while. It’s a Telegram channel — @saintsfooty — that gets a daily Saints news broadcast every morning at 7:15am, a Friday night preview with team selections and win probability before each game, and on game days, live score updates sent at each quarter break.
The whole thing runs on OpenClaw, my AI setup at home. No manual intervention. I get the updates the same as any subscriber.
Round 10 — Saints vs Richmond
Pre-game fired at 1:15pm, two hours before bounce. Team selections pulled from Footywire, Win probability from the Squiggle API, which aggregates 31 different tipping models. The Saints were favorites. I was as usual optimistic looking forward to a win.
Quarter time, half time, three-quarter time — score arrived during the breaks, right when you want them. That part worked exactly as designed.
Then the siren went.
Final score: Saints 16.13 (109) def Richmond 11.7 (73). Thirty-six point win. A good afternoon.
I didn’t get the final score message.
The bug
The live score script calls the AFL API and checks whether the game is complete. A completed game returns complete: 100. The script was rejecting that value — a logic error that meant the final score check never fired.
Found it within a few minutes of me noticing the silence. Fixed the same session. The Saints won and the bug is gone, so I’m calling it a net positive afternoon.

Rating: 4/5
The core plumbing worked. Right scores at the right times. The misses were bugs, not design problems. For a first live game day run, that’s a decent result. Small issue with the emoji colors – but an easy fix…
Friday night is Round 11 — Saints vs Fremantle in Perth. The fixed version runs then.
If you’re a Saints fan and want the updates: t.me/saintsfooty. Free, no spam, just Saints.


