Kwery

by abhirama

When I was at FreeCharge, I did a lot of data engineering. One of the recurring patterns that I saw was:
1. A new product or feature gets launched.
2. The PM wants to schedule a report for her feature.
3. The report should run at a particular frequency.
4. The PM along with others from the C-team should get this report in their inbox.

We had hundreds of reports like this at FreeCharge. We explored tools like Redash, Metabase, etc; but all these tools were geared towards creating beautiful dashboards and visualizations; report generation and report delivery through email were given a step motherly treatment. We hacked together a solution to solve this problem with bash/Python scripts, GIT, Jenkins, etc. The business analysis team wrote the query to generate the report, but they had to depend on the engineering team to schedule the report, create HTML and deliver it over email. One of the goals of the solution was to make the business and product teams self-reliant in report generation. Since the solution was stitched together using different tools that were not meant to solve this problem, it worked but had its chinks; this seeded the thoughts for Kwery in my mind.

logo

Kwery is a tool that solves the above niche problem well. It was also an attempt at building a single person lifestyle business that could supplement my regular income. I followed a lot of lean startup principles while building Kwery; made an MVP, deployed it at an organization that had the above pressing problem and then iterated from there.

With Kwery, initially, I had to take a call as to whether to make it a SAS product or an in-house deployment. I decided against the SAS route as I was not sure how many organizations would be comfortable giving complete access to their data sources to an external fledgling SAS tool. I wanted to make the onboarding process of Kwery as simple as possible. Hence, I shunned all external dependencies for Kwery, opted for an embedded database so that I could package Kwery as a single binary. The only dependency needed to run Kwery is a Java 8 runtime.

I deployed Kwery in a couple of places which use it even today. Kwery has received a lot of love from them, but I never hit the numbers that I had in mind when I started. The opportunity cost was bearing on me. I had to take a call between continuing to work on Kwery or cutting my losses and moving on; I chose the latter.

Like the old saying – Every cloud has a silver lining, I have open sourced Kwery under MIT license. It is very easy to get started with Kwery. Give it a spin, open Github issues if you face any trouble. Pull requests are very much welcome.