2 years ago, I decided to explore a design experiment as a passion project that centered around answering one question. “What would a data import experience look like if it got all the attention of a full product?"
Frustration played no small part in this experiment. I’ve built and re-built a file importer dozens of times over the past 15 years. But on every product I’ve ever worked on, it’s always been an afterthought. After all, there are core features to build, why invest time into a feature that’s often used once or twice by each customer? Users already expect data import; it’s not differentiating.
I began exploring major SaaS apps to see how they built their “Bulk Import” flow. What I discovered was the world’s most boring adult puzzle, with 30 step guides, and a labor-intensive process — all for people who are probably still evaluating your app.
The world’s most boring adult puzzle.
When it came to error solving, things only got worse, with unhelpful errors, emailed reports that arrive hours after importing data, and straight-up rejection of nearly perfect data sets.
I guess I won’t sign up for this then.
I used these problems as inspiration for my first set of design goals:
An elegant and simple mapping experience to connect the incoming data to the right fields so users don’t have to download a template.
Quickly column match between different files? Yes, please!
An easy way for users to see and fix issues without having to re-upload a file or wait for an asynchronous error report.
Users immediately see and fix any problems with their upload, without having to pour over the entire document.
The designs were simple but worked. I showed them to a few friends who saw the value immediately, so I built a prototype, threw together a simple SaaS backend, put up a website, and launched a Google ad targeting people looking for a CSV importer.
It was a hit! People started chatting in just to let us know how much they loved what they were seeing.
“I think you have a great tool here. I have worked in SaaS for long enough and built this mapping functionality so many times. I’ll never build a CSV importer again.”
“You need to do some more marketing by the way. I loved the way MailChimp did their file uploads and had been looking for something similar for a project I am doing. Nothing came close until I found you guys! “
“Hi, amazing platform, kudos on a job well done. I am interested in integrating this into my software, and I have a few questions? How can we discuss them”
“I’ve spent the last 24 hours looking at various different scripts to do this, and they’ve all been too much work or badly written. Needed something quick and simple and that’s what you guys have got here. 100% will be recommending you guys to other developers”
The phenomenal signal to me as a founder was that all of our early customers had self-served: they had discovered us via search or ads and signed up on their own. These weren’t simply personal connections. This was replicable.
In my excitement, I started sharing Flatfile with more friends. Those I spoke with started asking how they could help make this a real company, and before I knew it, I found myself surrounded by a small family of nearly a dozen incredibly skilled people from companies like Hubspot, Fullstory, Mailchimp, Netflix, and Envoy — all pitching in in our spare time. My passion project had become a startup.
Today we have dozens of paying (and hundreds of free) customers, we’ve proven there’s a market fit, and we’re already building the next iteration of Flatfile Portal based on what we’ve learned from the 15,000 uploaded files (and 50m uploaded records).
Our focus now is on applying this solution at scale: iterating on Portal user experience to help users easily navigate imports with millions of records, automatically resolving simple issues, and providing elegant solutions for when the user has to get involved manually.
Users know exactly why an import fails and how to fix it.
I’m excited to share what we’ve built with you, and I would love your feedback, ideas, or questions. Email me at email@example.com or chat with our team on our website. If you think this would be a good fit for your startup — let’s talk!
Here’s to more delightful solutions to common, painful problems.