Hey, I’m Colin! I help PMs and business leaders improve their technical skills through real-world case studies. For more, check out my live courses, Technical Foundations and AI Prototyping.
Before ChatGPT, a few curious developers had access to a brand new AI model from OpenAI: GPT-3. I was one of those developers.
This is the story of how I built my first AI app (back in 2022, before it was cool), scaled to 4,000+ users, and sold — all in a few months.
Let’s dive in.
The Plan
This product didn’t come about the typical way. I had no go-to-market plan, no customer interviews, and it was the first time I worked with a generative AI model.
I began down the road of building this product simply because I had early access to GPT-3 and thought it would be fun to build something.
At first, I was just messing around with the model. Once I had a good understanding of its limitations, I started brainstorming products I could build. I had a few criteria:
Built-in distribution - I didn’t have time or money to market the product myself
Extremely small scope - One high value feature
Easy to monetize - I wanted customers who were willing to pay
To satisfy these, I thought the best approach would be to build into an existing marketplace – something like the Shopify app store. Luckily for me, Saas Marketplaces has a complete list of marketplaces you can easily build on top of. Shopify would likely have been the best bet but their app store was already crowded with AI writing services. I decided to go for the next best thing - Wix.
Once I decided on building a Wix plugin, I spent a few hours playing with Wix’s product. I wrote blog posts, set up an ecommerce site, and generally looked for points of friction. The thing I found most annoying was adding a new product – you’re presented with this lengthy form that requires 30+ minutes to complete just to add a new product.
Given many ecommerce brands frequently change their offerings, I thought writing product descriptions automatically could be a useful way to leverage GPT-3.
So now I had a plan:
Build a Wix plugin
That helps ecommerce owners save time by automating product copy
So that they can spend time on more important issues
And so Product Description Generator was born.
Here was the full plan:
The Build
This app was pretty straightforward to build. Users would provide a quick description of the product via my app, which I would send over to GPT-3. OpenAI would return the description for the user to edit or save.
Here’s how it worked on the technical side:
The user signs up for a free trial. My app authenticated them with the Wix credentials, ensuring the sign up experience was smooth
My app fetches their existing products from the Wix API and displays them in a list
The user selects a product, enters a description, product type, and tags, then clicks Generate
My app sends the information to OpenAI and receives a product description in response.
The user can edit the description and save to the associated product
On save, my app calls the Wix API to update the product description in their ecommerce store
The most complex part was the Wix integration. Their documentation was not the best, so there was a lot of trial and error in setting up the correct requests to authenticate the user and save the new description. In addition to the basic functionality, I also had to add a credit system. Free users were assigned 5 credits to use and could purchase an additional 100 ($12) or 300 ($20) credits per month. This meant I had to have background jobs that checked the users’ status and applied the correct number of credits at the beginning of each month, and that I properly handled their credit amounts when generating new product descriptions.
Partway through this project I hit a roadblock - each request to OpenAI cost about $0.03. OpenAI’s charges would cost me $27 to generate 300 descriptions but I was only charging $20!
Rather than increase my prices, I looked for ways to get more value out of each request. I discovered I could have OpenAI generate all 3 descriptions in a single request and split them by a special character. Then, I could process them in my server and display them properly as 3 separate options. Now, 300 credits would only cost $9 and I had $11 of margin to work with.
Here’s what my final prompt for GPT-3 looked like:
I used a technique called one-shot prompting, where you provide the model with a single example of what a “good” output looks like. This helps improve performance without adding complex technical steps like fine tuning.
The descriptions were preceded by a pipe character (|) which allowed me to split the line and grab the description.
Knowing what I do now, I would have used xml tags instead to format the prompt. It would have made splitting the text more reliable and allowed me to be more precise in my instructions.
<Instructions>
Given information about a product, write three compelling product descriptions that are at least one paragraph long.
</Instructions>
<Example1>
<Input>
Details:Classic yet stylish, these jackets are ideal for any situation. The warm and comfortable woolen fabric easily adjusts in size.
Tags:Cotton, Limited Edition
Type:Coat
</Input>
<Output>
<Option1>
Elevate your everyday style with our Limited Edition Classic Coat. Meticulously crafted for the discerning individual, this versatile jacket seamlessly transitions from casual daytime outings to sophisticated evening events. The premium woolen fabric provides exceptional warmth while maintaining breathability, ensuring your comfort in changing weather conditions. With its adjustable sizing feature, this coat adapts perfectly to your silhouette, offering a tailored fit that moves with you throughout your day. A timeless investment piece that will remain a staple in your wardrobe for years to come.
</Option1>
<Option2>
Embrace the perfect blend of tradition and trend with our Cotton Limited Edition Coat. This exceptional outerwear piece combines classic silhouettes with contemporary sensibilities, creating a jacket that's truly timeless yet distinctly modern. The warm woolen construction wraps you in luxurious comfort while the innovative adjustable sizing ensures a flattering fit for every body type. Whether paired with jeans for a casual weekend look or layered over business attire, this versatile coat effortlessly elevates any ensemble. Make a subtle statement with this exclusive piece that balances understated elegance with practical design.
</Option2>
<Option3>
Discover unparalleled versatility with our signature Limited Edition Coat. Designed for the dynamic lifestyle of today's fashion-conscious individual, this exceptional jacket serves as the perfect companion for any situation life throws your way. The premium woolen fabric delivers substantial warmth without unnecessary bulk, while the thoughtfully engineered adjustable sizing ensures a customized fit that honors your unique silhouette. Crafted from select cotton and available in strictly limited quantities, this coat represents not just remarkable quality, but genuine exclusivity. An investment in enduring style that seamlessly bridges the gap between classic appeal and contemporary relevance.
</Option3>
</Output>
How It Went
After working on Product Description Generator part-time for about 3 months, I was ready to launch. I filed tickets with the Wix App team and OpenAI team, picked a launch date, and waited anxiously for my first customers. At this time, OpenAI was manually reviewing and approving every app integrating with their API to ensure you were following their guidelines. They even had a separate endpoint you had to integrate with that would check if the content generated by GPT3 was harmful or not.
Eventually, I got through the approvals and had a launch date – but no marketing plan. On launch day, a slow trickle of users started showing up and using the app. First it was 10, then 20, then 100.
It was working!
Over the next two months, over 4,000 users signed up for Product Description Generator and I reached $400 per month in revenue. Most of my time was spent fixing bugs and responding to customer support requests. My initial joy at building a real SaaS app was slowly fading as I realized I had no future plans or way to expand the app. One day, after a particularly frustrating bug was finally solved, I decided I to look into selling the app.
I listed Product Description Generator on Acquire.com, expecting very little interest. To my surprise, I very quickly had dozens of inbound requests to learn more about the product. Within two weeks of listing I had sold Product Description Generator for low five-figures. The acquisition process was smooth and I handed off all the accounts and assets to the new owners.
And just as quickly as it started, it was over. I had fulfilled a life long goal of building a SaaS app, scaled to thousands of users, and sold it – all within four months.
What I’d Do Differently
Honestly, there isn’t much I’d change about this experience. I set out with the goal of building an AI product and was successful. Since 2022, generative AI has taken the world by storm and this product has lost most of its defensibility.
If I was still running this product, I’d continue to look for friction points in the user’s experience for managing ecommerce stores. I’d likely bundle together a few features that offer a similar value proposition (like generating product photos with the OpenAI’s new image gen models) and sell access to the set of features at a fixed price.
I think products like these are the best starting point for beginners – the built in distribution ensures you at least get off the ground and can meaningfully help you scale. There is a big difference between 0 users and 100+ users that is difficult to understand without experiencing it.
Did you enjoy this post? Make sure to hit subscribe for more!
What a great story! I think any product manager shall start to build his own product with todays tools.
Great read!