Tugulab Blog.

A Product Development Journey of How I Created Fluidtable and Failed

It was the beginning of the year. Early in 2019. I had finally found a satisfying side project to work on: a spreadsheet in which you…
author avatar


It was the beginning of the year. Early in 2019. I had finally found a satisfying side project to work on: a spreadsheet in which you could write javascript code. You would be able to make programs out of a spreadsheet.
Without asking myself too many questions, I just started to work on it for the pure joy of it.

Then it came the point in which I started to dream about people using it to build cool stuff. More and more I thought about it, more it seemed feasible. So, I decided. I resigned from my job and I started to work on it full-time. And the first thing I had to do was to talk to potential users.

“This is so much talking…”. I spent two weeks talking with every person using a spreadsheet to understand what for. I spent time talking with people in the no-code movement. I also spent time with web hacky engineers who made a lot of quick things.

I quickly realised that my JS-powered-spreadsheet was a bit too technical for the no-code folks, but not flexible enough for hacky engineers. With spreadsheet users, things were a bit less black and white. They used to do a lot of different things. Some used spreadsheets for accounting, others to visually organise information, others to create complex analysis and everything in the between. Not good. I had to dig deeper in some of those verticals.

After hours and hours spent on the phone with spreadsheet users, I narrowed it down to people working with data. Data analysts, business analysts and data scientists. These people receive data from a colleague, inside a report or as a database dump. Then, they have to analyse it, make some discoveries and create a report of some kind.

Talking with them some more, I understood that a big part of the data jobs is preparing the data to be analysed. The datasets they receive are sometimes copy-pasted from some other report. Sometimes data is hand filled. So the data is not necessarily consistent. 
Let’s say in a dataset column there are stock prices. They expect to always find a valid USD price. But sometimes it is a negative number, sometimes it is a “Null” text, sometimes it is missing. They have to decide what to do in these cases, manage the problem and create a new error-free dataset. For example, they could decide that all negative and string entries in this column are invalid and they need to be replaced with zero. Or maybe they decide to remove the entire row.

All these actions, right now, are performed by hand with search-and-replace inside Excel. Or writing Python scripts with extensive copy-and-paste from the internet.

“This is my opportunity!”. I can make this process easier, more productive and generally better. I’ve found it, I thought.

So, by now I probably already spent 25 hours on the phone talking with a lot of people and I feel I have a pretty clear idea of what I have to do. I started sketching the user journey to import and export a dataset; user journey to visually apply “Cleaning rules” to clean and fix the values inside a dataset and preview the changes.

Then wireframing all the different screens and their states. Then I improvised myself a visual designer and with Sketch, I applied what I learned throughout the years. Quite a good result, I thought.
Finally, I spent a good deal of time writing code to make all these sketches into a working product. I have been ruthless in trying to cut everything that I thought was not essential to test the core value I wanted to deliver to these data analysts. A month goes by and I am ready to launch and test.

“It is April and the weather starts to be good.”. I am ready. I silently launch. It is exciting for me, irrelevant to everyone else. Then back on the phone. I do some user testing session with people I previously spoke and with some new. In a week I understand that there are pretty big usability issues. Ok, I implement a better user journey for the “Apply a Cleaning Rule and preview the result”. The next calls were still quite negative about it. So, I simplify. I focus on the main use case.

“Cool now in the interview they understand how to use the product.”. The feedback is starting to get positive. But this cleaning rule is missing. And also that one. Ok, I add this and that. Now my users can switch from their not so great solution to my awesome one. Build, ship and interview again. Feedback gets better, but the metrics say still a pretty clear and grim story. Zero usage…

Ok, let’s look for bottlenecks. Here and there. Although, it seems that people are giving it a pretty good try. But they never come back. Ok, maybe they’ve not understood how powerful this thing is. So, let’s work some more on the documentation, real-life examples and onboarding features. Sketch, code, ship. Still nothing…

“Talk with some more user.”. Make some more user testing sessions. The feedback is good. This solution is better from the status quo. But it’s not 10 times better. I don’t have a silver bullet. I need it to make them switch from their current solution.

“Oh, yeah! Automation!”. Instead of asking them to do 10 steps to clean a particular data column, I achieve the same result with 3 steps. I can automate a few things. I try to validate this assumption in the next calls. It seems a promising path.

“Ok, this is the time”. I invest 2–3 weeks in sketching, coding and shipping… I am tired by now. But I am finally here. The automation works well. The user experience of the product is really good. The communication is clear. I am even quite proud of the visual design I made. They are a good result for a developer. But the thing I am most proud of is that I’ve been able to build and test so many things in so little time.

“Now, it’s the time of the truth…”. I pick up the phone again. And make some more user testing sessions. I do probably other 7 calls. There is no need of talking with more users. The response is quite clear. It did not move the needle. Not a bit…

“I am tired, I just want to go to sleep”. Over the next few weeks, I have tried some spinoff of the technology to apply to a single problem, like Sentiment Analysis. But needless to say that it did not work too.

It’s now the end of the summer. I’ve invested a lot of months, a lot of savings and missed income. But that does not matter. What matter to me right now is that I still have not been able to make a sustainable business. Not even a really small one. And I have no more ideas or energy.

This is how I failed in creating Fluidtable.

And I am not going to draw conclusions and tell you what I learned. I find it quite useless. I will tell you what are the implications for my morale though. It is bad. It cripples your confidence in your abilities. It smashes the ambition. It makes me wary of telling again about my visions, ideas and projects to my family and friends. I feel like I’ve let them down.

This is not my first product or startup. It is ten years that I have been trying to create a successful business. And this is just how I failed the last one. What scares me is that with every new failure, I feel I am less and less likely to create something successful. I am losing ambition, confidence and to blindly believe in a powerful vision. Which is exactly what you need to be a leader and a founder.

Something good will come out of this, but for now, I have to deal with yet another failure.

A big thanks to Simone and Mattia for all the help during this year. You are good friends.