I (Vivek) spent 6 years working in various parts of the data stack, from data analysis at a 1000+ person ride hailing company to research at comma.ai, where I also handled most of the metrics and dashboarding infrastructure. The problems with data, surprisingly, were pretty much the same. Developers and product managers just want answers, or want to set up a quick view of some metric they care about. They often don't know which table contains what information, or what specific secret filters need to be kept in mind to get clean data. At large companies, analysts/scientists take care of most of these requests over a thousand back-and-forths. In small companies, most data projects end up being one-off efforts, and many die midway.
I've tried every new shiny analytics app out there and none of them fully solve this core issue. New tools also come with a massive cost: you have to convince everyone around you to move, change all your workflows and hope the new tool has all features your trusty old one did. Most people currently go to ChatGPT with barely any real background context, and admonish the model till it sputters some useful code, SQL or hypothesis.This is the kind of user we're trying to help.
The philosophy of MinusX mirrors that of comma. Just as comma is working on "an AI upgrade for your car", we want to retrofit analytics software with abilities that LLMs have begun to unlock. We also get a kick out of the fact that we use the same APIs humans use (clicking and typing), so we don't really need "permission" from any analytics app (just like comma.ai does not need permission from Mr Toyota Corolla) :)
How it works: Given an instruction, the MinusX chrome extension first constructs a simplified representation of the host application's state using the DOM, and a bunch of application specific cues. We also have a set of (currently) predefined actions (eg: clicking and typing) that the agent can use to interact with the host application. Any "complex action" can be described as a combination of these action-primitives. We send this entire context, the instruction and the actions to an LLM. The LLM responds with a sequence of actions which are executed and the revised state is computed and sent back to the LLM. This loop terminates when the LLM evaluates that the desired goals are met. Our architecture allows users to extend the capabilities of the agent by specifying new actions as combinations of the action-primitives. We're working on enabling users to do this through the extension itself.
"Retrofitting" is a weird concept for software, and we've found that it takes a while for people to grasp what this actually implies. We think, with AI, it will be more of a thing. Most software we use will be "upgraded" and not always by the people making the original software.
We ourselves are focused on data analytics because we've worked in and around data science / data analysis / data engineering all our careers - working at startups, Google, Meta, etc - and understand it decently well. But since "retrofitting" can be just as useful for a bunch of other field-specific software, we're going to open-source the entire extension and associated plumbing in the near future.
Also, let's be real - a sequence of function calls rammed through a decision tree does not make any for-loop "agentic". The reality is that a large amount of in-the-loop data needed for tasks such as ours does not exist yet! Getting this data flywheel running is a very exciting axis as well.
The product is currently free to use. In the future, we'll probably charge a monthly subscription fee, and support local models / bring-your-own-keys. But we're still working that out.
We'd be super stoked for you to try out MinusX! You can find the extension here: https://minusx.ai/chrome-extension. We've also created a playground with data, for both Jupyter and Metabase, so once the extension is installed you can take it for a spin: https://minusx.ai/playground
We'd love to hear what you think about the idea, and anything else you'd like to share! Suggestions on which tools to support next are most welcome :)