Making the Most of Compose - icanmakeitbetter


At icanmakeitbetter, the mix of the Elixir language and Compose's MongoDB databases are key components of the stack that powers the company's market research platform.

Your most enthusiastic customers are often the best teachers for any company. Large companies that have tens of thousands of customers turn to surveys, email, and incentive programs – not to mention third-party market research – to understand what it is customers want. Based in Austin, Texas, started life as a traditional market research company that would run focus groups and surveys for their customers and then crunch the data. As they started to bring on more clients, they found themselves solving the same problems repeatedly and knew there had to be a another way to scale while also giving clients better tools. Five years ago, they made the switch from market research agency to a market research platform.

Bruce Tate, author of Seven Languages in Seven Weeks and co-author on Programming Phoenix, was brought into icanmakeitbetter to help build the platform. "Idea portals are good for when all you want is ideation. There are also companies that work in the survey space. There are also companies that do online chat," says Tate.

icanmakeitbetter combines all these services in a single app running on Phoenix servers and MongoDB. Their platform helps companies such as Thomson Reuters, Dell, Columbia, Whole Foods and others to build "insight" communities. Pulling together the data from surveys and joining it with customer demographic data, customer interactions and market research is complex and often out of reach of the people who are building new products and marketing programs. "Our customers wanted to be able to ask more detailed questions and keep going back to the data, then tie results together over time."

icanmakeitbetter gives their customers easy access to these tools and works with third party vendors, such as Tango Card, to offer incentives right in the app. For a company that wants to identify and reward their most loyal users, and get new ideas for campaigns, icanmakeitbetter is their one-stop-shop.

Originally built as a Rails app, icanmakeitbetter is in the process of moving much of the high-volume backend work from Rails to Elixir. "About three years ago we realized we were going to need to scale to meet customer demand." Knowing that their platform is going to be hit by hundreds of thousands of users simultaneously, they began to rethink the customer-facing portion of their app, which is why they selected Elixir.

"Elixir scales like nothing else does. It has the ability to allow us to shape our thoughts with meta-programming, just as we do with Ruby. As a functional programming language, however, we don’t have the same problems with mutability like we did with Ruby, so we can run mini-threads that sit on top of the Erlang platform so we can have tens of thousands, even hundreds of thousands of threads, and not blink an eye."

The Elixir component model makes it a breeze to do database joins. It's faster and much more efficient to work with smaller, in-memory data sets. Reporting features, for example, are "de-normalized" so they can roll up a report using the Elixir component model.

While Elixir running on a Heroku Phoenix server is relatively new to the stack, Compose-hosted MongoDB has been around from the start. "Mongo gives us great adaptability on the model side. It’s really nice to be able to introduce an attribute" without having to update the schema each time.

All this has added up to a platform that delivers value to not only their customers, but to icanmakeitbetter's researchers as well. "Eating their own dog food," their team is able to spend less time trying to get multiple tools to work together; instead, they can support three to four times the number of customers than researchers at other companies.

As for why Compose, Tate added, "We like not having to think about the production side of running our own servers. And we love the quality of the support that we’ve gotten on Compose. We really don’t have any vendors that we trust as much as we trust you. You guys have been great."

Conquer the Data Layer

Spend your time developing apps, not managing databases.