2026-05-05-ann-arbor-queryless-demo
Meeting Title: Queryless AI for City of Ann Arbor Date: May 5 Meeting participants: Maira Aidarbekova, Sfirke, Jchase, Joao Demenech, Nikola Mladenovic
Transcript:
Them: Hey, Hola. Hola.
Me: I'm kinda nervous.
Them: Wow. Hello?
Me: Great to see you.
Them: Yeah. Good to see you
Me: How you been?
Them: Pretty good. How are things at Tatopian?
Me: Great. Okay. Will we
Them: I think so.
Me: Okay. We're waiting for Jacob. Right? Okay.
Them: I think so. Yeah. Let's give him a couple of
Me: Okay.
Them: Since we have a minute, yesterday the open data portal was briefly knocked out by a expired SSL certificate. And then it got renewed. Like, we I noticed and then you know, before I could say anything, you all fixed it.
Me: Yes. So our SRE team reached out to us, and basically was supposed to renew automatically, and that happen. So they just did it manually. Now they're checking why it didn't
Them: Okay.
Me: do it. Know, on on its Yep.
Them: Sounds good. We have our own tools to monitor our site certificates and so I I had been getting a couple of emails being like, watch out. The certificate's about to So if I get those again, I'll pass them along.
Me: Okay. Yeah. That'd be great. Thank you. Yeah. But the portal has been pretty stable. Right?
Them: Yeah?
Me: Mhmm. Okay.
Them: Yeah. It's it's kinda settled down. You know, I'm not getting a lot of questions about it. I think we made such a big push to add everything that, hasn't been a lot of new content to put on there. So it's all been fine. Do you know I can't remember if we added our Google Analytics tracking. Now I kinda think we did, but maybe I just looked at the stats on it. Do you know?
Me: Ya,
Them: Okay.
Me: sure we did. I remember some, you know, Slack threads about it.
Them: Me too. So let me
Me: Mhmm.
Them: Me too. So let me actually use that. And I'll message Jake and see if he's coming.
Me: Okay.
Them: Oh, no. He's Oh, no. He's not coming. Okay. So we can just get started.
Me: Okay. Yeah. I forgot to mention that I'm transcribing this meeting Are you okay with that?
Them: Sure. I think that's fine.
Me: Can just stop it. Okay.
Them: Okay. Sure. Then let's
Me: But I can stop it if you if you mind, you know.
Them: stop it. I think in in just to share context, the guidance we've gotten from the city's legal department has been staff should certainly not be transcribing any meetings with AI, and it'd be better if you can ask
Me: Okay. Yep.
Them: external partners to also stop that. So thank you for asking. I really appreciate that.
Me: Mhmm. Mhmm. Den. Okay. So, yeah, thank you for you know, making time to meet with us. And before we dive in, I just wanted to introduce my colleagues. So you all in Joao. He worked on building the portal, and he's also the main the the lead lead developer QueryList AI, the product that we're gonna talk about. And then there's Nicola, is one of, the key PMs at Daytopian. And he's kind of taking over the project because I'm kind of stepping out of it because of
Them: Okay.
Me: restructuring. Yeah. So let me just share my screen because I have this slide deck, for me to you know, not forget what I'm talking about. So, yep, Query List AI. We have noticed across the portals that we There's a common trend where people, they visit the portals. They search, filter, download some data, but the main work of the analysis, like, hard analysis, is done somewhere else. Right? So we were thinking of ways to change that, and we've come up with Quereless AI So it's a, kind of a data specialist that helps people, analyze and, you know, makes data more accessible. Okay. So, basically, as I said, it the data portals have been treated as static libraries where they're just you know, people don't actually understand the known technical people don't get to, you know, use the data that they have that you have on your on your portal. And we want to I'm sorry. We want to change this approach, and we want users to shift from search and download to ask and discover. So Querles AI can, make the portal a living consultant. Okay. Yep. So there are several things that are special about Querlys AI. First thing is that, we Querlys AI is able to connect to the portal's assets, the datasets, in multiple formats and, your users are able to talk to this data in plain English using natural language. There are also other language that are, supported, by the way. Yeah. And this way, they can create charts, summaries, reports, They can join different datasets and cross reference data. So it's it's really cool in that way. And, also, as as a framework, it's omnichannel, which means that they can query data with the web interface, or it can be through messengers like WhatsApp and or and Telegram. So that means that basically, we can deliver, Coalesce AI to the place where your users are already, like, asking questions. Yeah. Okay. And there are two things that stand out. So, basically, first is it's fully managed. So we are already hosting the portal. Right? So we can we maintain the upgrade and make sure that, the product stays operational all the time. There is zero technical debt, like, innovation with zero technical debt. And then second thing is, support affection. Although, I don't think that this applies in this case because you said that you haven't been getting any questions. So, it's just most of our clients, they say, you know, users email us with questions about specific datasets, and, CuraList AI can potentially help like, reduce this manual burden on people on the staff, right, on on on the team. So they don't… They can ask all those questions Querless AI, and it it's not just, you know, it's not a support bot, but more like a data specialist bot in this case. And finally, we believe in technical sovereignty. We believe in open source. So there's a bring your own LLM approach. So that means any model that has been approved internally by the city can be Gemini, ChatGPT, a private model. It can be connected. And, also, we know that AI evolves super fast and there's a new model every day. So you don't have to stay tethered to one. And miss out on, you know, all the updates. And, yeah, so I'm gonna keep this introduction brief, and I just want to hand over to Joao. He's a developer of, Query Less. And, yeah, he's gonna show how Query Less interacts with real data from your portal and how people can get professional insights using Quereles. Joel, over to you.
Them: Thank you. Yeah. So for this demo, we created this the full PortoGS portal with three datasets from your portal. These are CSV datasets. We have the monthly solid waste totals. PFAS sampling data, and the rainfall at city operated rain gauges. Yep. And in this default template, we have queryless enabled. That's why you can see this faulty action button here. And if I click on that, it opens up this chat. The chat is always visible even if I navigate to other pages. As you can see here, just below the first message, whenever I change my the page, it's actually updating. So the model has context about what the user is browsing. So I'm gonna go go back to the home page here, and now I'm gonna ask question to try to find a dataset that I know is there. So I'm gonna ask, are there any datasets about waste? And the AI is connected to this, a Sequium API. So whenever you ask about datasets and so on, it's it's clearing the API. Instead of hallucinating any sort of response. So in this case here, it responded saying that it found one dataset, and it's providing a link to the dataset. And as you can see, this link is internal because it's aware of the routing structure, in this portal. I click on the link. Maybe at this point, I could explore the metadata click on preview, and take a look at the data. And here, I could continue the conversation. As you can see, Cordless knows that we are browsing this this dataset. So now I could start asking questions about the actual data. So since this is the solid waste dataset, we could ask, for example, Can we ask it? Let's ask it. What was the how did 2025 compare to prior years? So how did 2025 compare to prior years? Yeah. With in terms of trash tonnage. In terms of trash tonnage. I'm just wondering, could there be, like, some ambiguity in the column names? Is that is there a column that we should prioritize here? Yes. Can we try it with this, like, this way first, the way a user might? And then if it crack if it can't find it, then we'll give it more help. Like, for a more authentic I'm sorry I'm sorry to, like, make your live demo like, worse. No. No worries. That's that's a that actually makes it more interesting. Because it has to assume one of the columns. Right? So it's saying, yeah, let me pull the data. 2025 saw less trash compared to prior years, and here's a breakdown. Animal tonnage So 2025, 700. 2024, 800. 800. Yeah. Okay. So according to the the AI here, it's down around 13%. And, no, we could ask it how it calculated then. So let's just see what it's saying here. Yeah. So 2026 date is partial. So I it from the comparison. So how did you calculate that? And I think that's something that you can verify whether it's right or not. Right? Yeah. So it's providing the SQL query And yeah. So it's selecting calendar year, which is one of the columns. Yeah? And it's summing the net tone annual
Me: Ajá.
Them: Yeah. It's neat. It got so it is correct about the trend and the the but wrong about the totals for the reason that it it kinda, like, figured it out at the end there. Where it's like, we are repeating an annual total every month. It's an oddly structured dataset. So it's right. That's why the numbers look large. It's the full year tonnage repeated for each month record. That's right. So, yeah, tell it to use the unique monthly totals instead. The monthly? Yeah. With the last line, it says it says, like, want me to recalculate differently, e g, unique monthly totals. That's what we want. Yeah. Yeah. I see what you mean because each row has this aggregated value for the whole year, and it's summing summing up that value. Right? Yep. Exactly. Yeah. So what do we have for twenty twenty five six six.
Me: Okay.
Them: Can you go back up to the query? Yeah. I could ask the for the query again. Here. Tell it this table contains
Me: Uh-huh.
Them: different material types, and it needs to filter for Table contains different material types. Filter for trash. Because there is a column
Me: Again,
Them: like, the the category. Yep.
Me: Ajá.
Them: Recycling. Okay. Trash. Yes. Alright. That 46867. Great. That's what I have on my dashboard here. So we got there.
Me: Ok.
Them: I see. Cool. Sorry. I hijacked your thing. So go let me give you the controls here. No. No. This, this is actually great. This is great reasoning. I would say that there there are ways to provide more context about the dataset so that it will likely get it right first time. It didn't really figure out that it was being aggregated in this annual column here. Right? Could be either, like, either, like, a dataset level description that we can inject in the context so that the AI can figure this out without your without the user having to figure out if it did something wrong. Right? And, yeah, also, we we it has, like, this sort of memory system we could could try it out here I was gonna say, you know how, like, when you tell Claude, like, you got that wrong when you're coding and it's like, oh, I'm I'll note that in memories. Yeah. Like, if you had, like, a per dataset memory, would be and then it would, like, fetch that. Would be interesting feature. So we can try it out. I'm I'm not a 100% sure it's it's gonna work. But we we can try. So can you can you memorize that the actually, I should ask if it it gets the mistake it did. Right? So do you get
Me: I think think
Them: get the it did with the net tone angle. The value was aggregated, and is 85. The bullet. Hopefully, it understands it this way. So then I can ask it to save that, and I can start a new session and see if it 's gonna save that. Yeah. I made a fundamental mistake It's it's already the full year total for each record by submitting across all roles. Okay. Numbers. If you can, please, give me, memorize, this this? Can you memorize this? Yeah. So save this to memory with the specific mistakes. I mean, net White was wrong. Correct approach. Okay. Let's try it out and see. Yeah, if this works out. Because this this every time we the page, it starts a new session. So let's ask the same question here. And, also, it didn't consider the category type. Right? Mhmm. Because we we sent specifically trash. But let's see if it fixes it here. Yeah. So this time Yeah. So that's right. Yep. Looks correct now. Right? And it it even applied to the trash the category Mhmm. I think. Yeah. Was great. So yeah. But, Steve, I think you wouldn't want to think about the edge cases for all the datasets. Sure. Sure. Sorry. Yeah. I got down the wait. So let's go back I know we just got, like, ten minutes left, and then I have another one after this. So No. No. No. But I I mean, like, we we can think of ways to provide more context. So, hopefully, you don't have to actually do like this reasoning for dataset. You know? But yeah. So next, yeah, what I wanted to show you is that it can generate charts like this one, and they are interactive. We could also ask for a shareable report. So it's it's gonna create a report that is host hosted, and you can share that with other users. Yeah. Let's just see that. Yeah. There we go. So sharing this link, we can click on that. And yeah, it it has interactive visualizations, has a table. And you you could ask for more visualizations in here. So this this could be shared. Yeah. Well, it's that's basically what I wanted to show you. Do do you have any other questions? I mean, probably a lot, but but more like curiosity. I I've been, like, building and maintaining some chatbots here within the city. And so they're more, like, infrastructure type questions, are totally
Me: Okay.
Them: probably, like, too much for this. I mean, the only one is have you I think I tagged Mara in something on LinkedIn that someone in New York was doing.
Me: Missed that, like, like, two or three weeks. Sorry.
Them: No. No problem. So I'll have No problem. Joel, have you seen there's, like, someone who works in open data in New York City who's put together something like this. And if you haven't seen it, it would be good food for thought. See how other folks are doing it. And then I know city of Boston has been making a, like, bragging about how they rolled out a MCP server for their open data catalog. And their idea is, like, well, that way your agent can work with our data. I actually like, I don't think anyone anyone's agent is ready to work with our data. So I think that is ahead of where we need to be, and what you're talking about seems more interesting. But I wanted to point out as, like, a couple things that I see. On the radar. In this space.
Me: Yep.
Them: Mhmm. Yeah.
Me: The links after the meeting. Sorry. Go ahead.
Them: Yeah. Please share that with me. I'm gonna take a look as soon as possible.
Me: So, yeah, we can we probably can share the link to this demo portal. So, Sam, maybe you can take it to your team. You can play around with it. Just ask some questions and see if you like it. And maybe we could you know, schedule a follow-up
Them: Yeah.
Me: to discuss further.
Them: Yeah. We would love to play around with it. You're still sharing your screen, so we're getting, like, the the infinite mirror here.
Me: Oh, yes.
Them: Okay. Thanks. Let me copy this. This link. Yeah. I mean, my I I'll have to think about this. So because I think both my reaction is like I don't know that I would want us to lead the way with this technology. Right now, I don't think we have a lot of users. And so the potential upside to this and we don't have a lot of good raw data sets to make sense of. So the like, the New York and Boston ones, I think they have a lot more on their portal. Which credit to them. And so then, like, they're showing queries, like, you know, why what was behind that big spike in three one one calls about noise, last month? And then the they're able to figure out, like, oh, it's because there are helicopter flights to this one particular event. We don't have the data that would make the upside big, and I I it feels like there's a little downside if you know, invariably, it's imperfect like we saw with the trash. You know? Like, we're able to correct it, but there's gonna be stuff where the data we upload has a strain structure, and so it's gonna serve the wrong result to someone. It feels a little bit like the promise of self-service BI, which like, the city thought you know, that topic has been around for
Me: Mhmm.
Them: years and years. And don't you know, will AI make it possible to have self-service BI? Like, maybe I could definitely, like, point my users at the data warehouse with an AI front end to write queries, but then it's gonna have the same problem as that where I'm like, ah, I know the deal with that table, and you don't know this. And the the AI is gonna be overconfident. So but at the same time, I wouldn't be surprised if this was every open data portal in five years or ten years. You know? So it I think it's really smart that you're building the product, and you have to get it wrong before you get it right, and then you keep making it better. And then eventually, everyone has it. And it's like, of course, we have this. Why would you ever go look at the raw data? So it'll I really appreciate the demo. It looks like a great product. That's, like, all the things I'm sitting with now.
Me: Ok. Well, thank you. I do wanna thank you for the walk walk through.
Them: Yeah. That's that's great feedback, by way. Thank you very much.
Me: Yeah. Okay. Well, just gonna email you then in a couple weeks' time, maybe.
Them: Yeah. That sounds good. And I'll I'll this back to the team and and have them kick the tires on it too.
Me: Sounds great.
Them: Thank you so much for the demo. Nice work.
Me: You, Sam.
Them: Thank you. Yep. Thank you very much.
Me: Yep.
Them: Bye bye.