Josiah Forestieri
I was hired in February 2020 to cold-call restaurants, and started the month the country closed them. I had just finished a degree in innovation consulting — go into an organisation, find the problem it cannot see, pitch the fix — and month-long placements at Honda Australia and the City of Sydney doing exactly that. Then I spent a year on the phone to venues that were shut.
Since then I have built a sales channel from effectively nothing to about a quarter of the company's revenue, and then built the software those teams run on. My titles read inside sales, sales development, operations. None of them says the work, which is: find where a team is losing its week, size the problem in SQL, decide what the tool should actually do, and put it in front of the people who need it by Monday.
The direct channel: first rep, then five, then about a quarter of the business
When I joined, FoodByUs sold through partners. Direct — our own reps selling to venues — was 0.5% of the business in 2021, the first year it appears in reporting at all, with several months reading zero.
I was the first rep on it, calling from my bedroom through the lockdowns. It is one of the toughest introductions to sales you can get, and it is the base for everything after: you find out very quickly what a buyer will actually pick up the phone for, because almost nobody does.
Then I built the function. Five reps booking meetings across three states, and the systems they ran on — the phone platform, the CRM pipelines, a lead-scraping setup so nobody was hand-building lists, and a call script rewritten around what was actually converting. I trained and managed all of them, and several were promoted into field roles.
I ran that team until the end of 2024. By then the direct channel was about a quarter of company revenue.
It has grown a lot since. I am not going to claim that part — I handed the team over in November 2024, and what happened after is somebody else's number.
Price comparisons: a six-step wizard became two questions
A rep wins a wholesale account by showing a buyer what they are overpaying. That means taking the buyer's supplier invoices, matching every line against our catalogue, applying the right price tier, and totalling the saving. Three to five hours of work, by hand, done by the person whose actual job is selling.
The first version I built did all of that automatically and then walked the rep through six screens of confirmations. It worked. Reps used it. It still handed the rep six decisions.
So I changed what the product was for. The rep does not want to co-pilot a price comparison; the rep wants the price comparison. The current version reads the invoices, works out which page belongs to which supplier, matches every line, applies tier pricing, and produces the buyer-facing one-pager, the CSV and a draft negotiation email — and asks the rep to confirm twice. Once at setup, once at review. That is a product decision, not a coding one, and it is the part of the job I want more of.
Two things underneath it that I am prouder of than the pipeline. It keeps a match memory that learns from rep corrections across the whole team, so a fix made once stops being made again. And the queue where reps flag a bad match is deliberately not wired into that memory — one rep's complaint should never quietly change the price another rep is quoting.
Built with React and TypeScript on the front, Node and Postgres behind it, Claude models doing the reading and the checking, and an internal API for product data.
Three to five hours, down to minutes.
Cross-sell: the event designed to catch this had never fired
A buyer who is about to spend somewhere else does not tell you. They browse a supplier they have never bought from, they compare prices, they search outside the categories they normally order in, they put a competitor's product in a cart and never check out.
There was exactly one Amplitude event built to catch that behaviour. I went to use it and found it had never fired in production. Not once, not in any environment, not ever. The name was right there in the schema and it had never carried a single record.
So I built the signal set out of the events that do fire. Seven behaviours, cross-checked against order data from the production replica, running nightly on our ops server, landing as a per-rep digest in the sheet that feeds Slack — so a rep starts the day with a short list of accounts worth a phone call, and a reason for each one.
The pipeline was the easy half. The half that mattered was not trusting the event name. What a field is called and what a field contains are two different facts, and only one of them is worth acting on.
Zendesk to HubSpot: five channels, eight years, a hard deadline
Our support platform contract was ending on a fixed date, and the account went with it. Five support staff, five channels — email, a 1300 number, WhatsApp, SMS and Slack ticketing — and eight years of ticket history that would be deleted along with everything else.
I owned the move. Porting the phone number to a new provider, rebuilding the pipelines and the routing, designing how tickets reach the right person, training the team while the queue stayed live, and getting eight years of history out before the door closed.
It ran long. The roadblocks were mostly features that worked in the vendor's description and not in the account, and I had planned around the description. It is the clearest lesson I have had in the last few years, and it is why I now confirm a vendor's claim myself before it goes anywhere near a plan.
It landed. Five channels live on the new platform, the history out, and a support team that did not lose a day to the switch.
How I work
Four different problems, and the same move in each one: check the thing everybody assumes is already true.
That instinct is most of what I do, and the way I have set my work up is really just a machine for not having to check the same thing twice. I run my own projects like a small engineering org, and the labour is AI agents — Claude Code, most days, all day.
None of this started with AI. In 2021 the same instinct looked like a rewritten call script and a lead-scraping job, and the tools it runs on have been replaced twice since. The habit is the part that stayed.
"AI-assisted" gets said a lot and usually means nothing. Here is what it actually is, in my folders, today:
Every project has a file that says where to look. Status, owner, last worked, and the one question the project answers. It is forbidden from restating detail that lives somewhere else. I learned that the hard way from two documents that said the same thing until, quietly, they did not.
Bigger work runs as a map. Numbered tickets, each one resolving exactly one decision, worked one at a time. A ticket is claimed before it is worked so two sessions never collide on it, and the answer gets written back onto the ticket that asked the question.
Settled decisions go on a do-not-reopen list. A fresh session has no memory of the argument that closed something, so without the list it reopens it — and re-arguing a settled decision costs almost exactly what it cost to settle the first time.
Every business definition carries its own wrong reading. Underneath the definition, a line naming the plausible misreading and how big an error it causes. Definitions do not stop people getting it wrong; the named trap does.
Nothing ships until a reviewer with no memory of it reproduces the number. An agent that did not build the analysis gets the question and the database and has to arrive at the same headline figure. When it does not, one of us is wrong, and I would rather find that out than have the CRO find it.
None of this is on a resume anywhere, mine included, and it is the part of how I work that I would most want to bring somewhere else.
The belief underneath all of it is simple. The expensive part is not producing the answer. It is having to produce it twice.
Teaching it
I have been teaching the thing I do for about as long as I have been doing it. There is no stretch where I was not.
Six months into an operations job at ING Direct, I was training other people on my team. For nearly three years after that I was a technology and design teaching assistant at a school, right up to the month I started at FoodByUs. Then I trained the sales team I had built, and several of them were promoted. Then a team of onboarding specialists. Then, with a colleague, the support team.
Lately it is AI. I coach our CRO one-to-one on getting more out of it, and I run a series of enablement sessions for the sales team — how to use the tools, and which ones are worth using at all. It is roughly a fifth of what I was asked to do in 2026, and the CRO's own recommendation is that it should be a stated part of my remit rather than something I do around the edges.
That last part is the bit I would point at. A way of working only I can run is worth whatever I can personally produce. One that other people pick up — including people more senior than me, unprompted — is worth considerably more.
The homelab
There is a server in my house running about a dozen machines on top of it: the household's photos and media, storage that checks itself for corruption, a few models running locally, the proxy that sits in front of all of it, and a gaming machine with a graphics card handed straight through to it.
None of it needed to exist. I built it because I wanted to know how the things I use every day are actually put together, and reading about it has never once worked for me.
I once costed out replacing my laptop and rebuilding the whole thing as a single box. The research killed its own budget — memory and used graphics cards had both moved hard against it — and on the way it turned up a legislative deadline on the benefit I was going to buy it through, established which games anti-cheat actually blocks on a virtual machine rather than which ones people say it does, and corrected four errors in my own earlier documentation of the server.
I did not buy anything. That was the right answer. It was not the one I wanted.
31 hobbies, 1999 to now
Every hobby I have picked up since 1999, when it started, and whether it stuck.
Music since 1999 and still going. Skating for twenty years. Magic. Lock picking. Blacksmithing. Building a guitar from parts. Film photography. Restoring bicycles. Tarp surfing. Selling fake headphones, briefly, in 2011.
Some of these lasted two decades and some lasted a single year, and the chart does not hide which is which.
It is here because it is the same instinct as the job: work out how a thing is put together by taking one apart and building your own. Most of them went nowhere at all. One or two of them turned into how I make a living.
- 1999
- Music1999–present
- 2001
- Random Facts2001–2005
- 2003
- Gaming2003–present
- Piano2003–2005
- 2004
- Skating2004–2024
- Trumpet2004–2010
- 2005
- Knitting & Long Stitch2005
- 2006
- Coffee2006–present
- Magic2006–2009
- YoYoing2006–2008
- 2008
- Lock Picking2008
- 2009
- Fingerboarding2009–2011
- Jailbreaking iPhones2009–2011
- 2010
- Hardcore Music / Ear Spacing2010–present
- Woodwork2010–2019
- Dirt Biking2010–2011
- Lino Cutting2010
- 2011
- Skiing2011–present
- Selling Fake Headphones2011
- 2012
- Ramp Building2012–2014
- Blacksmithing2012–2014
- Tarp Surfing2012
- 2014
- Guitar2014–present
- Basketball2014–present
- Travelling2014–present
- 2015
- Guitar Building2015–2018
- 2020
- PC Building2020–2023
- Bouldering2020–2021
- Kombucha Making2020
- 2023
- Film Photography2023–present
- 2024
- Bicycle Restoration2024–present
Sydney, Australia.
Email is the fastest way to reach me.