Feature Monkey — Journey so far 🎉
Feature Monkey is a unified platform to collect, analyze, and act on customer feedback. Feature Monkey helps turn feedback into features while sharing the product development journey with the users. Think of it as Reddit or hacker news but for user feedback.
How it started
Gautham and I have been making products together since we were in college 👶. Our usual trajectory was to come up with a problem we are facing and build a solution to it in the next hackathon. After validating our idea in the hackathon, we would spend the coming week polishing it to be more like a product and launching it off on Product hunt 🚀. We would do all sorts of promotions, post everywhere, and most of the time we were successful to get decent traction. But always after that 1–1.5 week of hype, it was all gone and we had no idea how to get users to actually use it even though we have positive testimonies 😵💫.
That's when we decided to build Feature Monkey 🐵. Following the usual cycle, we made it in 2 weeks for the coming Product Hunt No Code makers festival.
Adding code to No code
To our surprise, even after 1 year, there was a decent amount of traffic 📈. This made us think that people actually want something like Feature Monkey and that’s when we decided to start building Feature Monkey.
We started making it in the “best suited” tech stack for the problem, graphql, and react it was. Eventually after 1 month of learning graphql and not building anything we migrated to Django, learning for the future to always build MVP in the tech stack you know.
Currently, our main service is in Django, with Postgres and Redis for cache. And our machine learning service is written in fast API. Our frontend is in jquery and the website is written in gatsby and tailwind.
We were soon joined by Sarvagya who would take charge of frontend 🧚♂️.
We were now 3 people working on Feature Monkey, so we started having weekly planning meetings where we used to assign ourselves tasks to be done over the coming week 🧳.
We were following what we were vouching for, building what users want. We initially shipped with the bare minimum which was just a board to add feedback, upvote, and notify users. With time we added custom domain, SSO login, board privacy, tags, roadmaps, vote on behalf, custom form and topics, internal comments, accent color all based on user feedback.
Till now we were focusing more on building basic features expected from a product like Feature Monkey 👩💻.
To figure out the pain points with already existing products/solutions for managing feedback, we started asking three questions whenever we used to get on a call with potential users:
- how are they managing feedback currently?
- What do they love the most in the way they are managing feedback currently?
- What is the really hard part in the way they are managing feedback?
⚗️ Tag using ML
Everyone had 1 thing in common when it comes to managing feedback that was classifying it into topics. We were having topic classification but only the admin of the board could do that. We added automatic tagging with zero-shot learning. This would help to have the classification upfront, but this wasn't solving the issue as sometimes it would tag it in the wrong topic. That's when we realized the most simple way is to let the author of the post select topic. We made a non-mandatory field for selecting topics and if something still stays untagged we tag it with the help of ML
🔑 SSO Login
For every interaction on Feature Monkey users should be logged in, this is done to prevent the board from getting spanned. But then there are cases when the user is logged in to the website and from there he navigated to Feature Monkey. In this case, as Feature Monkey is another service the users need to login again which is introducing another step. To prevent this we introduce SSO login. SSO login once enabled by the organization, allows Feature Monkey to get user information from the organization itself and mark the user as logged in.
For this, we are using HS256. When SSO is not enabled the user gets directed to a link for eg: yourcopany.fm.com, but when the organization has enabled SSO login, the user gets directed to yourcompany.fm.com/hash.
Both Feature Monkey and organization have a key only known by both of them. This hash is basically all user info + all the info hashed using key send with it. When the request comes to Feature Monkey, we take all information, generate a hash using the key we have, and if both of them match we allow login.
👘 Custom Fields
Since the beginning Feature Monkey had a title and description field in the feedback form, and name, email for the profile fields of the user. But sometimes there were requirements like knowing the role of the user in org in case using for internal feedback or a field for priority of post in the feedback form.
To overcome this we added custom fields. We made two models, custom post field and custom post field value
Custom post field has a name, required, and type of field, while custom post field value actually stored the value of the field all linked together with foreign keys.
👁 Board Privacy
One of the use cases of Feature Monkey is to use it for internal and employee feedback. For this, we added board privacy in Feature Monkey. Board can either be made public or private and be accessed by only people from a certain organization.
🥽 Knows Unknows
Feature Monkey serves as a platform to put Feature request/bug reports, which essentially makes it to be a platform that people visit only if they have any of the above two. We knew about another group of people who are interested in product updates/journeys but don't have any feature or bug report. For this, we integrated the roadmap into Feature Monkey. A roadmap is a visual representation telling what is planned, in process, and released. This helped products to share their roadmaps with their users directly from feature monkey. Every time they change the status of any posts, roadmaps get updated
Design updates over time
Over time Sarvagya worked on improving how the website and product look like. The more he updated the website the more it started looking like a product 😻. Here are some screenshots for comparison 👇
This time we were looking to make money from a product, hence started marketing to actually gain paying users
We started posting a lot more about what we are doing over Twitter to make people feel they are a part of the process. It worked like a charm and helped us get a lot of feedback, and some initial users ✨.
We even made posters over Figma to describe features and some memes :P
We initially focused on small scale companies but after some conversations concluded it is not the startups that are having problems managing feedback, but it is companies at a certain scale actually 👀.
We reached a lot of PMs over slack and understood that gaming and crypto have the most use case of such a product as in both these domains decisions drive by what customers want.
Shobhit wrote blogs to generate and Twitter threads to generate content.
We still lag with some must-have features some of which include:
- Pop-up widget — this is a required feature because a product-like feature monkey is used to do a very definite task while being on the product itself. And going on another link causes some friction, which does lead to some dropouts.
- Merge post — this would allow merging together two different posts to aggregate comments and upvotes
- Changelog — this would allow products to tell about releases in a concise way to its users.
Till now we always made products, but never really tried to make them into money-making products. With Feature Monkey we got our hands wet with how to do customer interaction, how to make what people want and not to make just because we find it cool or challenging enough, on top of all we learned how to sell.
There are two types of products, painkillers, and vitamins. Feature Monkey comes under the latter, which makes it very difficult to sell. Everyone feels the problem of managing feedback at times, but it is not something they would be willing to pay for immediately.
Just building what users want works well when we want to add feature updates to an already existing product. But it doesn't work when we want to build a product. There is this saying that, if you would have asked people if they are willing to pay for a box which they can put in their pocket and listen to music, nobody would have agreed. Or the other way nobody ever would have asked for a box to play music from. We as users tend to think about improvements around already existing features, not change them from the ground up or completely unrelated features.
I got on a lot of calls with potential customers and buyers. As I was actively giving interviews for jobs, I would talk in length about Feature Monkey, which sometimes would end up in scheduling a Feature Monkey demo rather than a next interview round.
After working on Feature Monkey for more than a year, we became profitable in August 2020 💖✨. At the time of writing this blog, we have over 3800 users, 340 organizations, and 2500 posts 🎒.
Thank you for reading. If you like the article give it a clap 👏
Do consider Buying me a Coffee https://www.buymeacoffee.com/ananya, If you loved the article.
I am Ananya Agrawal. I am currently working as a software engineer at Gojek. I am working on building Feature Monkey a customer feedback tracker that can be used for feature request tracking, internal feedback, public roadmap, etc.
Reach out to me over https://twitter.com/AgrawalAnanyaa.