A couple weeks ago, Sawyer and I launched GPTcsv — a tool that enables user researchers, product managers, CX leaders, and SEO practitioners to analyze, enrich, and generate data using the power of Gen AI. We’re in the early stages of finding product-market fit, and your feedback is incredibly valuable.
Give it a try (we have a generous free tier!) and let me know what you think →
Use promo code FRIENDS50 for 50% off your first month.
My daughter has taken up baking to relax. A couple weekends ago, she asked, "Hey Dad, you want to help me bake some cookies?"
The product manager in me jumped into action. I searched up the best chocolate chip cookie recipes and picked one from a famous chef. I printed it out and started rushing around the kitchen marking off all the ingredients we'd need.
"Hon, we have to run to the store."
"Dad, it's been a long week. Let's just use what we have."
Forty-five minutes later, we were eating cookies.
In mid September, Sawyer and I met up for lunch. We tossed around an idea for a new kind of AI app — one designed to harness the power & flexibility of LLMs across large datasets. Less than 20 days later, we launched GPTcsv, got our first 100 customers, and made the product’s first internet dollar.
We did all of this with no PRDs, no Jira, no LOEs, no OKRs, no product reviews, and no Figma designs. We didn’t even use Slack (iMessage FTW!).
The trappings of product management can be a trap. They focus us on the planning instead of the doing. But, that blank page is a lie. We don’t have to start from scratch to get the best results. We don’t have to find the perfect recipe and then spend an afternoon running to the store.
Instead, we can use what’s in the pantry. And, it’s never been easier. There is a massive foundation of open source tools & cloud platforms — all building blocks that can be cemented together with AI tools like Github Copilot, Cursor, Replit, and v0.
Sawyer and I were able to move faster not just because of the tools available, but also because we changed our way of thinking. At least, I changed my way of thinking. This all seems to come pretty naturally to Sawyer.
Let’s look at that 19 day sprint — the stack of tech and ideas that enabled us to move 10x faster.
Day 0 — Frame the problem over lunch
A few months earlier, Sawyer and I had riffed on an idea for using OpenAI to analyze survey data. In the past, PMs and user researchers had spent hours — sometimes days — processing survey responses by hand. Now, LLMs could get the same job done in seconds.
Our lives got busy and we left the problem for another day. Maybe, like so many things, that problem space would get subsumed into ChatGPT. When we sat down for lunch in September, the world looked a bit different.
ChatGPT and Claude had gotten better at data analysis, but they take an interesting shortcut. They generate Python code to work with large datasets and then describe the results with natural language.
For example, I recently analyzed user research data with ChatGPT. I wanted to understand how often people expressed concern about pricing. The resulting analysis sounded good, but when I looked at the Python code used to analyze the results, ChatGPT was using a simple keyword search for "pricing", "cost", "expensive", etc. to identify relevant responses.
That is so 2019. The power of LLMs is that they can understand language much better than a simple bag of keywords.
The opportunity felt clearer than ever. Today’s AI chatbots process data by generating code — which isn’t so different than how it’s always been done.
What if we reimagined the venerable spreadsheet as an AI native interface for running prompts? We could turn the power and flexibility of LLMs into a new way of working with data. And we could do it with a tool that’s familiar and easy to jump into.
I didn’t know it at the time, but Sawyer was already building the proof of concept in his head.
Also Day 0 — It’s alive!
Later that day and out of the blue, Sawyer sent me a proof of concept for GPTcsv. Upload any .csv file, add an Action Column (i.e., an AI prompt that runs on every row in the file), and seconds later the results would come back. I uploaded a .csv file containing the names of 100 generic prescription medications such as levothyroxine and metaformin. In a few minutes, I had generated data for each medication listing out conditions treated, side effects, brand names the generic is sold under, and an SEO-optimized snippet.
Despite being an iOS focused engineer, Sawyer was able to build a full stack web app in a few hours. A big part of it is his approach to development. He has a gift for simplifying down to the essence of what needs to get built — what needs to get proven.
He also chose sharp tools. Next.js, Supabase, and shadcn provided a powerful “batteries included” tech stack that streamlined getting to a working prototype that was shockingly robust. He also used Cursor to stitch the pieces together — often spending time editing generated code rather than writing code from scratch.
Day 2 — Improve the UX
As things came together, we realized that we would need a lot of spreadsheet functionality to provide a full featured experience (filtering, sorting, showing/hiding columns, pivot tables, etc.)
We could build that ourselves and it would take weeks or maybe even months — precious time spent on code that wouldn’t help us prove the hypothesis. Instead, we decided to use a powerful Javascript library.
Literally over night, we had a spreadsheet UX with all the bells and whistles.
But… and this is the really important point… a few days earlier, we would not have had any idea what our product would look like. Pixel perfect Figma designs would have sent us down the wrong path — spending days or weeks tuning a UI that wouldn’t have been relevant.
Cooking from the pantry requires a different mindset.
Day 3 — Let’s talk to some customers
Three days later, we had a full featured product ready to put in front of customers. Our first customer conversations weren’t just about getting requirements. Instead, we looked a their data sets and helped with their analysis. In less than a week, we were used GPTcsv to solve real world problems, got a glimpse into where it falls short, and put together a customer-informed roadmap.
Day 4-6 — Build some more features
We built a couple of features from our early conversations. For example, people would want to reuse prompts for different projects. So, we built “Action Column Templates” so that people could save their prompts. We also built an invite feature so that users collaborate on analysis projects with their team.
Day 6 — Move to Llama
Things were going well, but we had a dirty secret swept under the rug. We wouldn’t be able to launch. At the time, we were using OpenAI, and they have strict rate limits. We’d hit those rate limits pretty fast even with just a handful of users. This was the down side of running AI on every row of data.
So, we switched to using Llama through a cloud service provider. More on that later.
Day 9 — Payments and subscriptions with Stripe
Sawyer set these up lightning fast thanks to Stripe’s awesome docs and strong integration with Next.js.
Day 10 — Analytics with Mixpanel
We were starting to think about launch, and we didn’t want to fly blind.
Day 12 — Doh! Revenge of the rate limits
Sawyer started to do some stress testing in prep for launch. We switched to Llama to get away from rate limits, but it turns out that our Llama provider had an even lower rate limit!
Up until now, we had avoided the rate limit problem. But, it needed to be solved. Sawyer hacked for a few days and built a robust queuing platform using Google Cloud Tasks that would guarantee we stay under the rate limit.
Just like any project, we hit roadblocks along the way. Each time we hit a problem, we matched the size of the solution to the size of the problem. Rate limits are a big problem and they needed a robust solution — worth spending time getting right.
Day 16 — The marketing site
While Sawyer continued to sprint on the app, I had been working on the marketing site. We needed a home page, pricing page, marketing copy, logo and the basics like booking a demo or contacting customer support.
Again, we pulled from the pantry. Tailwind had just released Radiant, a marketing site template for SaaS products. Jackpot!
Day 18 — Tech & product debt
Our baby project was starting to get some hairs on it. Sawyer refactored parts of the code to prep for launch and added features to help people manage projects more easily.
Day 19 — Launch!
After an intense three week sprint, we launched with a post on LinkedIn. Our first users signed up and we converted our first paid subscribers. Most importantly, we hit a milestone that takes many companies months or years to reach.
The first lessons came in fast.
Day 20 — Free tier
Initially, we required a credit card to sign up for a free 7-day trial. We found out pretty quickly that people wanted to try out GPTcsv before making that sort of commitment. The feedback makes sense. Seeing is believing with Gen AI, so many products offer a free experience.
A day after launch, we added a free tier. Now, users can create 1 project with up to 1,000 rows to get a feel for how it works.
What’s next?
Since launch, we’ve looked at data daily to figure out the bottlenecks. For example, onboarding has been critical path for us. Like other AI products, GPTcsv is powerful and flexible — but it also takes some practice to get the best results. We’ve added an in-product onboarding experience, put together an onboarding email sequence, added examples prompts to the product, and improved the Help Center content.
We’ve got a lot more work to do on the path towards product/market fit, but we are well on our way.
The keys to moving 10x faster
The last month has been exhilarating. I’ve learned a lot from Sawyer and from our process. It is possible to move 10x faster. Yes, your tech stack is important. But, what’s even more important? The ideas that give you permission to walk through walls:
Cook with what’s in the pantry. Remember, the blank page is a lie. You’ll move much faster if you design your product with existing building blocks rather than from scratch. You’ll be able to focus time on the areas that really matter and outsource the commodity components.
Ruthlessly simplify. Nearly every problem can be reduced to the point where a little effort gets you most of the way there.
Use AI for everything. I am shocked at the number of people, especially engineers, who don’t use AI. Cursor can save you 10% of time on keystrokes alone.
Pick sharp tools. As a builder, you are either amplified or inhibited by your tools. Take the time to select the tools that will give you leverage — the advantages compound. This is even more important with AI. The most popular tools throw off the most training data so they have the best support in Cursor, Replit, Copilot, etc.
Speed is more about latency than velocity. In the early days, the most important metric to optimize is time from hypothesis to insight. In the last month, we’ve rarely gone heads down on something for more than a couple of days.
Build in a vacuum, launch into the void. The pre-product days are spent wandering blind in a cave. Sawyer and I had both built ivory towers, and we didn't want to do it again. We prioritized putting the product in front of customers as soon as we could.
Of course, you can’t always get away without PRDs and designs. As the team grows, processes need to evolve too. That said, the keys to moving faster are relevant no matter the team size. Teams that leverage this new AI-enabled reality will not only move faster, they’ll free themselves to focus on things speed can’t solve — the elusive task of building a product people want and getting it into their hands.
Are you ready to leave the matrix?
If you want to see this approach in action, give GPTcsv a try. It's not just a product built with this methodology — it's a tool that can help you accelerate your own data analysis and product development processes. Your feedback is exactly what we need right now.
Use promo code FRIENDS50 for 50% off your first month.
This is so cool. Like we discussed in another one of your other posts, there's no excuse not to ship something in a few days (weeks MAX) nowadays.
Outstanding post. Thank you.