We have a Google sheet named neeto products and people. Here is how it looked when this blog was published.
In a later blog, we will discuss why we are building so many products without ensuring the success of even a single product. This blog is all about what we are building at neeto. We would look at the “products” part of “neeto products and people”.
In the previous article, we mentioned that at BigBinary, we were already using AceInvoice for time tracking and invoicing. We didn’t want to add any new features to AceInvoice so we decided to build nitroHelp and nitroForm. nitroHelp had three main features - chat, email-based ticketing, and knowledge base. After a few months of development, it became clear to us that nitroHelp should be broken into three different products. There was very little common between the three different features, and one look at the codebase made that very clear. We had folders like “chat”, “desk” and “KB” everywhere. We had to namespace a lot of models because common model names were taken and the unit tests took longer to run. We had to run the whole test suite even though something had changed only in, say KB area.
Soon we realized that users are not going to log into each of the products separately. So now we needed a single sign-on mechanism, and hence we built neetoAuth. neetoAuth is not a product that others can use. It’s an internal tool that manages authentication for all the neeto products.
nitroForm was also renamed to neetoForm. Working on neetoForm proved to be a lot more challenging than we had earlier estimated. neetoForm has a lot of surface area, and we needed to cover significant ground. In the beginning, neetoForm supported both the “card style” and the “long form” style. This created many design challenges. It also created engineering complexities, and we kept running into edge cases.
Finally, after months of setbacks, we decided to remove the support for “card style”. This immediately helped us deliver features at a faster pace and with more stability. At this time neetoForm is relatively stable, and our clients are happy using it.
As we were building new features we needed a way to let our users know of the new features that are being delivered. After some deliberations, we started working on neetoChangelog. Currently, neetoChangelog is working great. In fact if you signup for any of the neeto products you can click on “what’s new” to see neetoChangelog in action.
As we started building more products, we needed to worry about what the UI will look like. Some folks in the company knew Figma, so we had a couple of sessions with them to learn Figma. Folks also tried to learn Figma from online resources. We found the learning curve for Figma to be very high for our engineers. This is not a knock against Figma. Folks who are familiar with Figma love it and it's a great product. What we needed was a low-fidelity way of discussing what the interface would look like. Unlike professional UX folks, our goal was not to create a pixel-perfect design but to have a rough sketch of the UI.
After some deliberations, we decided to work on a POC to build a wireframing solution, and thus neetoWireframe came to life.
So far we had been discussing product features, execution, deployment, etc in Github issues. This meant Github issues became a very noisy place. We decided to use GitHub only for the actual issues and not for the product feature discussion. After trying out a few products for the product discussion, we settled on building neetoPlanner.
Sometime back we started working with an organization that deals with mental health-related issues. They have more than 500 counselors on their platform. Deciding which patient would see which counselor was being done using a large Excel file. We started building neetoCal in a rush and in a short span of time we got it working. We also got Stripe payment working with neetoCal. Our client is successfully receiving payments anytime a booking is made.
We have been using AceInvoice for a few years now for time tracking and invoicing. At this time, we had more than ten neeto products under development. We decided to migrate AceInvoice to neetoInvoice so that we would have a consistent set of code to maintain. Migrations are always tricky. After months and months of work, we were ready, and then one day, we migrated all the users and their data from AceInvoice to neetoInvoice. We did get a handful of issues from our customers, but overall it was a very smooth experience.
In the meantime, the time had come to conduct interviews with the folks in college for the following recruiting season. More than 600 folks responded to our call for the BigBinary off-campus interview. We checked with the existing vendors who provide technical assessment services, and the cost was coming up to be more than $20,000. So we decided to build neetoRunner. neetoRunner would be a “code assessment” tool.
It was an extremely high-pressure project since we had only a few weeks to build it. We built it, and it worked almost. We didn’t do any stress testing, and when more than 600 people started using neetoRunner at the same time, then the database started to run out of connections. While the assessment was going on, we had to upgrade the database plan on Heroku to get more connections. Other than that everything else worked fine and neetoRunner proved to be a winner.
As the products started maturing, we needed to do a better job of testing them, and thus, we formed a “QA team.” We started using third-party tools to manage “test cases”. However, we found these tools to be extremely expensive. Since these tools charge per user, we couldn’t give access to developers who don’t need to see test cases very often. We decided to build neetoTestify. Next week we would be migrating all the test cases from the third-party tool to neetoTestify, and we are very excited about it.
In August 2022, Heroku announced that free dynos would go away. We had been using Heroku review apps for all our products, and this change in plan increased our costs significantly since we are building so many products. In the future, we plan to add even more products. It means our Heroku cost will keep going up linearly.
We decided to do a quick POC to see if we can spin up something just for building the review apps for the pull requests. We named this product neetoReview. The POC worked, and slowly we migrated to neetoReview for the generation of all the review apps for all the neeto products. This was done by the end of Nov 2022. In a span of 9 weeks, we had gone from a mere idea to a complete migration off of Heroku.
neetoReview kept getting better, and in Feb 2023, we migrated all the staging applications of all the neeto products from Heroku to neetoReview. Well, now neetoReview can be used for things other than just “review apps.” So we changed the name from neetoReview to neetoDeploy.
neetoDeploy is shaping up to be a good Heroku alternative. As of this writing, all production instances are still being served by Heroku. BigBinary is primarily a Ruby on Rails and React consulting company. So building neetoDeploy was out of our comfort zone as it involves a lot of DevOps and Kubernetes skills. In the coming weeks and months, we would be discussing how we are building this Heroku alternative.
While we were building neetoChat we were wondering why we need to ask the user what they need help with. We know that no one wants to chat with a support agent. People contact support agents because they feel stuck. We thought if we could somehow see what the user was doing just before clicking on the “chat icon,” that would give us a glimpse into what the user wanted to do but could not do.
That desire to see what the user was doing before contacting the support agent led us down the path of recording users’ sessions while they are online. This resulted in a new neeto product called neetoReplay. Using neetoReplay now, any website or web product owner can see what the users are doing on their site. neetoReplay has proved to be an immensely useful tool in fixing issues we didn’t even know existed.
Monitoring the health of our APIs and workers is essential. We are building neetoMonitor to do that.
neetoSite is being built so that we can build simple websites without too much complexity.
neetoSocial is a tool we are building for providing “social media analytics” and reporting.
While building neetoDeploy, we gained experience in handling Kubernetes. Leveraging that experience, we jumped in on building neetoCI to run our unit and cypress tests. Running cypress tests is proving to be very expensive and we are hoping that switching to neetoCI would cost us a lot less.
If you made it all the way to the end of this blog, then you might be wondering why neeto is building all these products. Why neeto is building business tools (neetoChat) and developer tools (neetoDeploy). Why build all these products without ensuring the success of even a single product? These are all good questions that we have asked ourselves many times. Next week we will try to answer these questions.
Currently, only the top six products, namely neetoChat, neetoDesk, neetoKB, neetoForm, neetoInvoice, and neetoCal are available for public use. However, if you are very interested in being an early user of any other neeto product, please post a comment to this blog, tweet to us, or email [email protected].
Subscribe to this neeto blog to see what we are up to. We'll spill the beans on our out-of-this-world marketing maneuvers (we write blogs like this one). Prepare to have your jaw hit the floor as we reveal revenue numbers that make Elon Musk jealous(we might need a few more zeroes to reach "buy-an-island" status).
And when it comes to reeling in new customers, we've mastered the art of hypnotizing business folks with our mesmerizing PowerPoint presentations that make them chant "neeto!" while doing the Macarena. So buckle up, my daring friend, and hop on board the neeto rollercoaster of insanity!
Warning: Side effects may include an irrepressible desire to shout "neeto!" from the highest rooftops.Welcome to the land of outrageousness, where the mundane is banished and extraordinary reigns supreme! Let the absurdity begin as we embark on a mission to leave our mark on the world, one glorious dent at a time.