Someone at Runwise asks why the heat did not turn on last Tuesday at six. The answer exists, but it is split between the code that decides when heat should run and the building data that records what actually happened.
Finding both used to mean finding an engineer, asking them to stop what they were doing, and waiting while they translated the system into an answer. A technician in a boiler room and a salesperson on a customer call had the same problem: the company knew the answer, but the person who needed it could not reach it.
So I built Alakazam, an AI assistant in Slack. It started as a way to ask the product a question. It became a way to compare what the product should do with what a building actually did. And eventually, to prepare a fix without being able to publish one.
If I had to pick the single highest-leverage thing I did here, it was not the model or the Slack interface. It was using roughly 380 real questions to define a bounded data layer. More on that in a minute.
The questions were reaching engineers
The first problem was not missing information. It was access to information that already existed.
Product behavior lived in five repositories. Production history lived in a data warehouse. The people closest to a customer or a building rarely worked in either place, so engineers became the interface between the company and its own product.
This kind of interruption looks small because each question is small. The engineer usually knows where to look. But the person asking does not know which engineer to find, and a question with no clear owner can wait longer than the investigation itself.
Code was enough, until it wasn’t
The first version of Alakazam read our product code and explained what it found in plain English. That was enough for questions like “How does this setting work?” or “When should this alert appear?”
Then someone asked about a particular building on a particular day. The code could explain the rule, but not whether the boiler was connected, what the sensors reported, or which schedule was active. It knew what should happen. It had no idea what did happen.
It needed another sense, not another brain.
The decision that changed the projectOne agent, another source
My first instinct was to build a second agent just for data. An engineer talked me out of it.
Alakazam already understood the product and how its parts fit together. Splitting production questions into another assistant would make the person asking decide whether their question belonged to code or data—the distinction the product was supposed to handle for them.
So I gave the existing agent another source. It could now use product code to explain the rule and building data to reconstruct the event, in the same answer and the same Slack thread.
Real questions defined the data layer
The tempting version of this project gives a model broad database access and asks it to write whatever query seems useful. I did not want usefulness to depend on a plausible query being safe.
Instead, I read roughly 380 questions from real Slack conversations, grouped them by the job each person was trying to do, and turned the recurring needs into 31 reviewed data lookups. Alakazam can choose a lookup. It cannot invent database access.
- 1Read the questionsabout heat, equipment, alerts, leaks, and schedules
- 2Find the recurring jobsnot every variation in how people asked
- 3Build reviewed lookupswith known inputs and bounded results
- 4Let Alakazam choosewithout letting it write a query
The tool grew from observed questions, not imagined AI features.
The agent found problems in what it read
Building those lookups exposed something I had not set out to find. Alakazam started catching mistakes in our own assumptions about the data.
One check said there were no critical alerts when there were. Date searches looked at the wrong hours. Equipment health rankings ran in the wrong direction. Each layer above those assumptions—the product, the reviewed query, and the answer—could work as designed and still produce the wrong conclusion.
That changed how I thought about the project. It was not only making answers easier to retrieve. It was forcing old assumptions to answer new questions, and showing us where they could not.
Then people asked, “Can you fix it?”
Once Alakazam could explain a problem, the next request arrived naturally: can you fix it?
I added one more capability. When a person explicitly asks for a change, Alakazam can prepare one in the frontend repository. The edit has to pass the repository’s install, lint, typecheck, and test gates. Then it opens a pull request and stops.
A person still reads and merges the change. That is not a temporary restriction while the agent gets better. It is the product boundary that makes the capability safe to offer.
The limit is part of the product
Agent demos usually make autonomy look like a finish line. This project taught me to treat it as a budget.
Alakazam reads five repositories because broad context improves an answer. It writes to one because a requested frontend change is a narrow, reviewable task. It publishes to none because the value of skipping that review is small and the cost of a bad change is not.
The useful question was never “How much can the agent do?” It was “What is the least authority it needs to finish this person’s job?” That framing made it possible to expand the product without quietly expanding its power.
The bigger picture
What I want you to take from this is not that we built a clever agent. The most important decision was using real questions to define a bounded data layer. The 31 lookups are useful because the roughly 380 questions came first.
Agent demos usually make autonomy look like a finish line. This project taught me to treat it as a budget. Alakazam reads five repositories because broad context improves an answer. It writes to one because a requested frontend change is a narrow, reviewable task. It publishes to none because the value of skipping that review is small and the cost of a bad change is not.
And to be clear, that last limit is not a temporary restriction while the agent gets better. It is the product boundary that makes the capability safe to offer.
The open question is adoption. Alakazam can do more than most people at Runwise know to ask of it. The next work is not another capability. It is better examples, clearer discovery, and enough hands-on use for the right questions to become obvious.
Role: Product design and implementation · Collaborator: Staff engineer · Company: Runwise