I used to buy and sell high-end guitars throughout university, so I knew the Kijiji workflow pretty well.
One of the biggest pain points was reposting ads. Years ago, I had paid $5 for a plugin that helped repost ads for free, since Kijiji only offered a paid repost option. It worked for a long time, then eventually stopped working as Kijiji changed over time.
Later on, when I was still occasionally selling, reposting manually started taking too much time, so my ads stayed stale.
Last year, mostly as an experiment, I tried rebuilding that plugin with Claude to see if I could solve the problem again.
First draft: just asking Claude to build it
At first, I thought I could just prompt my way through it.
I explained what the plugin used to do, what the UX looked like, and what I wanted it to do. After a few tries, Claude gave me files that looked like a real extension.
But once I actually tested it in Kijiji, it didn't work.
Second draft: decoding the original plugin
So I tried a new approach.
I started looking through the old plugin files and troubleshooting specific errors to understand where things were breaking.
That's when I realized the real blocker wasn't just the code. Kijiji no longer allowed the direct repost flow I wanted, likely because it conflicted with their paid repost model.
So the issue became less about "how do I get Claude to build this" and more about what part of this workflow was still actually possible.
Reframing the UX
The original plugin flow was simple:
- Enable plugin
- A repost button appears
- Click it
- A new tab opens with the listing pre-filled
- The old ad gets deleted
- The new one gets posted
- The tab closes
- You land back on the listings page with a fresh ad live
That was the flow I was trying to recreate.
But after digging in, I realized that exact version of the automation wasn't going to work. So I stepped away from Claude for a bit and mapped out the workflow properly.
I looked at:
- Where the code was blocking automation
- What parts of the old UX were no longer possible
- What parts could still be streamlined without fighting the platform
The breakthrough was reframing the problem.
Instead of trying to make the extension repost an ad, I asked:
That shift changed everything.
Getting it working
Once the problem was framed better, Claude became much more useful.
After a lot of trial and error, some dead ends, and Claude losing context more than once, a fresh chat finally got me to a version of the plugin that actually worked.
What I learned
A few things became very clear from this:
- I need to know exactly what I want returned
- AI chat is not a one-chat-do-all workflow
- There still needs to be homework outside of AI to understand the problem and avoid AI slop
- Mapping the user experience is critical when working through complex problems, whether with dev teams or AI
- Technical constraints are not always the end of the road if you stay focused on the actual user problem
- AI tools are getting better fast, and designers need to learn how to work with them well
For me, that was the real value of the experiment.
Not just that I got a plugin working, but that it reinforced something familiar: if you understand the user problem properly, there's usually a better path than the first solution you had in mind.