Dale Miles.

TradeSoft, 2016 to now

Built it. Sold it. Bought it back. Rebuilt it.

TradeSoft is a peer-to-peer marketplace for the New Zealand airsoft community, on iOS, Android and the web. I launched it in 2016 as AirsoftTrader, after Facebook banned the sale of replica firearms and left the community with nowhere to trade, and sold it in 2022. It then sat largely unchanged, so when I left ThriveCart I bought it back and rebuilt it on an entirely new stack, in the direction I had wanted to take it originally. Every decision on it now is mine, and I have to live with all of them.

7,800+

Legacy accounts carried across in the rebuild, with their trading history intact.

$140k+

Traded between members in the first three months after relaunch, at no commission.

1,500+

Monthly active users, around 1,000 of them signed in.

Somebody else’s policy change left a community with nowhere to trade.

In 2016 Facebook banned the sale of firearms, replica firearms and paintball markers. For airsoft in New Zealand that was the venue, and there was no central place to go instead. The platform I built to fill that gap ran for six years, reached over 100,000 page views a month, and sold in 2022.

Starting from something that already worked

I knew WordPress well by then, having built a lot of sites on it over the years, ThriveCart’s support knowledge base among them. So the first job was research rather than code: finding a classifieds platform solid enough to build a business on. That was ClassiPress, and it was a good foundation and nowhere near a finished product for this niche. I taught myself enough CSS and PHP to shape the theme around the community and the brand I wanted.

The product role, several years before the title

What the foundation did not cover, I specified. I hired a developer to build it, and everything around that was mine: scoping each feature, designing the flows and the interface, writing what were effectively the user stories and tickets he worked from, and testing all of it before it went out. I was doing product management several years before I knew that was the name for it, and the shape of the job has not changed since.

  • Scoping and specification
  • UX, UI and the tickets
  • All of the testing

Then I sold the work back to the ecosystem

Those features were packaged as plugins and sold inside the ClassiPress ecosystem. I had built them because my own marketplace needed them, and it turned out plenty of other people running classifieds sites needed the same things. Recognising that a specific problem is a general one is most of what a roadmap is, and the market was willing to pay for the answer.

I had already decided to rebuild it. Buying it back is what made the rebuild worth doing.

The decision to build TradeSoft came first, and the chance to buy AirsoftTrader back came afterwards. That order matters, because it changed what the new platform was starting from.

What the old stack would not let me do

I had tried adding a directory and an events system to the original site. WordPress themes do not combine, so each of those had to live under its own domain, which is a workaround rather than a product. Rebuilding meant one platform carrying the marketplace, the clubs, the retailers and the game days together, plus the features I had spent six years wishing I could add and could not.

The Play tab in the TradeSoft app showing upcoming airsoft events by date, with times, venues and entry prices.
Events
The clubs directory in the TradeSoft app, filtered by region, showing each club with its member count.
Clubs
The retailer directory in the TradeSoft app, listing stores with their ratings and shipping coverage.
Retailers

Three things that each needed their own domain on the old platform, now three tabs in one app.

Mobile first, because the traffic already was

65% of traffic to the old site was mobile, arriving at a desktop theme that had been persuaded to squeeze, with several parts of it that only really worked on a desktop. People reach for whichever device is already on them, and for most of this audience that has been a phone for years. Native apps rather than a responsive site was the obvious call, and it has proven out: over 80% of traffic now comes through the iOS and Android apps.

  • 65% mobile before the rebuild
  • Over 80% through the apps now

The hard part of a migration is deciding what not to bring.

Moving the data was the straightforward half, and it went without drama. Every interesting question was about what deserved to come across, what had to be relabelled on the way, and what the first login would feel like for someone who had not opened the old site in three years.

A dry run, then a sample, then staging

I stood up a local WordPress install and imported the old SQL database, so the AI agents I was working with could read the real schema rather than my description of it. We worked out the mapping between the two systems, ran it dry, ran it against a small sample, moved the whole thing into staging, and only then into production. Nothing reached production that had not already run correctly somewhere else twice.

  • Mapped against the real schema
  • Dry run, sample, staging, live

What came across, and what did not

Accounts, active listings, feedback, and the listing images, which were in the export and could be mapped onto the new listings and reattached to their owners. Drafts, sold and archived listings, and watchlists did not come, because nothing needed them. The old system never tied a piece of feedback to the transaction it came from, so a sold listing from 2019 was not evidence for anything. The feedback was the part that mattered, and it stood on its own.

Around 9,000 accounts, 7,800 worth moving

The first scope was narrow: only accounts with something behind them, an active listing or feedback given or received. I widened it to everyone, minus the obvious fakes, by running the full list through an email validation service and dropping the throwaway and anonymous providers. That is the difference between the roughly 9,000 accounts on the old platform and the 7,800 that were worth carrying into the new one.

Claiming an account rather than being handed one

Passwords could not come across, so there was no version of this where people simply found themselves logged in. I made that the onboarding instead of apologising for it: register with the same email address, or run a password reset, and the account and its history attach themselves. Two different emails went out, one to people whose history was waiting for them and one to people whose was not, because those are two different conversations and sending one message to both would have got each of them wrong.

  • Same email, or a password reset
  • History attaches automatically

The migration created a new place to hide

A dormant account from 2018 suddenly becoming active is what a returning member looks like. It is also what somebody who has bought a credible-looking account with a decade of history looks like, and that account is worth buying precisely because of the trust I had just carried over. So historic dormant accounts that reactivate and start trading are monitored internally as part of ScamScan. The thing that made the migration worth doing is the thing that made it worth watching.

Free to list, no commission, and still a business.

Listing costs nothing and there is no commission on a sale. The revenue comes from everything around the listing instead, which is a harder model to run and the right one for this market.

What people do pay for

Optional improvements to a listing: making it stand out in the feed, putting it at the top, and bump credits people buy to lift something back up when it has drifted down. Businesses take a subscription for commercial listings, and there is an advertising system with packages running across the platform’s surfaces at different levels of exposure. Everything on that list is bought by someone who has already decided they want more than the free version does.

  • Feature and promote a listing
  • Bump credits
  • Commercial subscriptions and advertising
The TradeSoft home screen, where a row of featured gear sits above the rest of the content.
Featured, on the home screen
The TradeSoft marketplace feed, where a promoted listing carries a Featured badge among the ordinary results.
And again in the feed
A seller's own listings in the TradeSoft app, each with an upgrade option and a bump button showing the credits they hold.
Where a seller buys it

Still looking for the next one

I keep looking for revenue that does not come from charging to list, and the bar for all of it is the same: it has to be worth paying for in its own right, rather than a toll on getting started. What TradeSoft offers a seller is not reach, it is the right audience. A smaller, specific market where everyone browsing already wants the sort of thing being sold will convert better than a general one, and that is the advantage any new revenue idea has to strengthen rather than spend.

You cannot promise a safe trade. You can make a bad actor’s job expensive.

ScamScan is the name for a set of anti-fraud systems and the internal monitoring around them. It is the part of this product I am most pleased with, and the part with the clearest limits.

Images, checked by the platform and by the buyer

A Google Vision integration scans uploaded images automatically and either flags them for review or raises a warning where a member will see it. Beyond that, members can run an image through other reverse image search services themselves. A stolen product photo is the most common tell in this market, and the person about to send money to a stranger is the one with the most reason to look properly.

Registration happens in the apps, and only there

You can only create an account through the iOS or Android app, and both are region locked. That costs some sign-ups, and I decided it was worth it. The same friction that mildly annoys a genuine new member is a real obstacle to somebody creating accounts in volume from the other side of the world.

Trust the platform cannot supply itself

Club verification, phone verification, and a rank built from real activity in the community and the marketplace. I can tell you an account is old. I cannot tell you its owner turns up and behaves themselves, and the club they play with every weekend can. The useful trust signals in a community market are the ones the community issues.

  • Club verification
  • Phone verification
  • Rank earned through activity
The TradeSoft leaderboard, ranking members by points earned for trading, reviewing and helping out.
Rank, earned
A TradeSoft message thread where a seller shares payment details, with a verified phone number shown beside them.
Verified, in the thread

What it does not do

None of this guarantees a safe transaction, and the platform does not verify items. That is published on TradeSoft itself rather than buried in terms, because a safety feature that people trust further than it deserves is worse than no safety feature at all.

Clubs are the part I got wrong.

Club verification is the strongest trust signal on the platform. The first version of it barely moved, and both reasons were mine.

A separate area, with a separate login

I built clubs their own section of the platform, with its own sign-in. What they wanted was the same functionality inside the account they already used every day for their own buying and selling. Asking a volunteer committee to keep hold of a second set of credentials, in order to do a job whose benefit lands on somebody else, is most of the problem in a single design decision.

And I assumed they would want it

Vouching for your own members looked like a straightforward yes to me. It is their community, the self-regulation is in their interest, and it costs nothing. Some clubs did not want the extra administration. Some did not reply at all. Being obviously right about the value of something is not the same as it being worth somebody’s Tuesday evening.

Then I took the administration away

Club management moved into the mobile app. A club manager can now invite a TradeSoft member in a couple of taps while standing on the field at a game, with the person in front of them, instead of coming home to a queue of requests from people whose faces they can no longer place. More than half the clubs in the country now verify their members. The idea was always right. It needed to cost them thirty seconds in a place they were already standing.

  • Invite from the field, in the app
  • Members ask their own clubs
A club manager's own TradeSoft account, with club management sitting in the same menu as their payment details and bump credits.
Club management

The second login, deleted. A manager now finds their club in the same menu as their own payment details and bump credits.

The thing itself.

Everything above is a decision. This is what the decisions turned into, running on the App Store and Google Play today.

That is TradeSoft. ThriveCart is the other half.

TradeSoft is the product where every call was mine, and where a bad one shows up in my own support inbox. ThriveCart is ten years of the same thinking inside somebody else’s platform, at four people and at two hundred.

There is more detail behind all of this than belongs on a page. Ask me about any of it.