Inspiration

I got scammed looking for a place to live when I went to study Pre College at Columbia University back in my 11th grade. I was searching from far away, with no way to see anything in person, when I found a listing that looked perfect: good photos, a friendly "landlord" who replied fast, and a price noticeably lower than everything around it. There was always a reason I couldn't visit and always a reason I had to pay quickly before someone else took it, so I sent the money. Then the replies stopped, and the apartment I thought I had never existed.

What stayed with me wasn't only the lost money but how preventable it was. Every warning sign was public. The rent was far below what the area normally costs, the person I paid wasn't the owner on record, and the pressure to pay fast, by a method I couldn't reverse, is one of the oldest tricks there is. I simply didn't have the time, the local knowledge, or anyone helping me check.

Students, newcomers and international renters go through this every day, usually while coordinating with future roommates in a group chat. New York makes it harder, because the market moves fast, application fees get sent to strangers, and scammers know you can't visit. That's why I built Keyo for the Hack the City track: to make New York's own public data work for the people most exposed to rental scams. It started with one question: what if the group chat had a roommate who checked every listing against the public record, and who could be trusted with the group's money without ever being able to overspend it?

What it does

Keyo is an AI roommate that lives in your iMessage group chat. When someone pastes a StreetEasy or Zillow link or an address and tags @Keyo, it replies with a report card built from city records. The card covers HPD violations, the owner registered with the city, years of 311 heat complaints, nearby rat inspections, the closest subway, the FEMA flood zone, and even summer surface heat measured from space. Every line cites its source, and if the group sends several listings at once, Keyo checks each one and then ranks them side by side.

Because it grew out of my own experience, Keyo watches for exactly the signs I missed: rent far below the area median, a "landlord" who isn't the registered owner, and requests for wires or gift cards. From the chat, one tap opens a satellite map of the block, and clicking the building lets you walk through the apartment in 360 while a voice guide narrates each room.

When the roommates are ready to apply, they can give Keyo spending rules in plain language, such as "pay application fees up to $20 and hold a $500 deposit for our #1." Once everyone approves with a thumbs-up, Keyo pays the application fee and escrows the deposit on the XRP Ledger on its own, strictly within those rules. Broker fees, unverified landlords and anything outside the rules are refused, and that refusal is enforced by the ledger itself rather than by a prompt.

How I built it

I designed Keyo to be evidence-first. A listing is turned into a geocoded building through NYC GeoSearch, and Keyo then gathers public data from HPD, DOB, 311, DOHMH, the MTA, FEMA and the Census. Each claim is stored together with its source, the report card shows nothing that isn't sourced, and the language model is only allowed to phrase answers to questions, never to decide a score or a payment.

For the Photon track, Keyo runs in real iMessage group chats through Photon Spectrum. It understands both a typed @keyo and a tapped iMessage mention of its contact, and it stays quiet unless someone tags it, so it doesn't interrupt normal roommate conversation.

For the TigerData track, I loaded 711,245 Manhattan 311 complaints into a TimescaleDB hypertable. Compression shrank it from 199 MB to 29 MB, and continuous aggregates power "Block Pulse," which shows a 36-month heat-complaint history for any building and ranks it against every building in its community board in about 60 milliseconds.

To add a summer view to that winter picture, I used Google Earth Engine to compute median land surface temperature from Landsat 8/9 across Manhattan. The result is an 11,182-cell grid, built in 8 seconds, that becomes a "hotter than X% of Manhattan" line on each report card and a heat layer over the satellite map.

The dashboard is a Next.js app with MapLibre satellite maps and a Pannellum 360 tour. For the ElevenLabs track, each room is narrated by an ElevenLabs voice guide whose script is built only from the building's verified facts, so the tour never says anything the data can't back up.

For the Ripple track, payments run on the XRP Ledger testnet under a design where the agent can never move money alone. The group's spending account requires two of two signatures: Keyo's agent and a separate guard service holding its own keys. Before co-signing, the guard runs 14 fixed checks, including New York's $20 application-fee cap, the FARE Act ban on tenant-paid broker fees, the group's budget, the listing's rank, duplicate payments, and an on-chain VERIFIED_LANDLORD credential (XLS-70). It then rebuilds the transaction from the database to catch any tampering. Deposits use token escrow (XLS-85) with an automatic refund after 14 days, and every payment carries an audit hash on-chain.

Challenges I ran into

The hardest decision was what not to build with AI. I built a model to predict next winter's heat complaints for each building and tested it honestly on last winter. It beat the simple rule "expect the same as last winter" by only about 5% on problem buildings, so I cut it. A renter can check a public record, but they can't check a model's guess, and that same reasoning shaped the payments: the rules are fixed checks that the ledger enforces, never an LLM's judgment.

The data also fought back. At one point Keyo reported zero heat complaints for a building the city had logged 650 complaints for last winter. I first suspected the address matching, but the real cause was that the app was pointing at the wrong database, and since then I trace every surprising number back to its source before trusting the code around it. Earth Engine was its own puzzle too, because it doesn't use API keys at all, so connecting it meant setting up a registered Cloud project, a service account and the right permissions.

Accomplishments that I'm proud of

I'm proudest that Keyo makes real autonomous payments that stay inside the rules, which is exactly what the Ripple track asks for. In my end-to-end run on XRPL testnet, it paid a $20 application fee and escrowed a $500 deposit on its own. When I slipped a fake broker-fee request into the chat, the guard blocked it. When I had the agent try to pay alone as a "rogue" agent, the ledger itself rejected the transaction with tefBAD_QUORUM.

I'm just as proud that everything Keyo says can be checked. Every number links back to NYC Open Data, FEMA, the MTA, TigerData or Landsat. Most personally, Keyo now checks the exact signs that would have stopped my own scam: the registered owner, the rent compared with the area median, and red-flag payment methods.

What I learned

I learned that "agentic" doesn't have to mean "trust the model." The most useful thing an autonomous agent can do with money is operate inside limits it can't break, so in Keyo each piece has one job. The model phrases, deterministic code scores and decides, a separate guard co-signs, and the ledger has the final word.

I also learned to meet people where they already are. Nobody wants to download another apartment app, but everyone is already in the group chat, which is why iMessage turned out to be the right home for Keyo.

On the technical side, a time-series database turned questions like "is this building getting worse?" and "is it worse than 99% of the neighborhood?" into instant queries instead of slow scans. Satellite data also complemented complaint data better than I expected: some buildings with no winter heat complaints sit on the hottest blocks in summer.

What's next for Keyo

The next step is getting Keyo into the hands of real renters. I plan to deploy it on Tiger Cloud, Vercel and Railway with a dedicated Photon line, and to pilot it with international students and university housing offices, because they're the people most likely to rent sight unseen, just as I did. From there, I want to extend complaint history and summer heat to all five boroughs, and move from testnet to real RLUSD payments once landlord verification can be issued by a trusted third party. The long-term goal is to bring Keyo to other cities with open housing data, so fewer people learn about rental scams the way I did.

Tracks

Keyo is submitted to Hack the City as its main track, because it turns New York's public data into protection for renters. It also targets four sponsor tracks. For Ripple, it makes autonomous XRPL payments within ledger-enforced guardrails. For Photon, it lives in iMessage group chats through Spectrum. For ElevenLabs, it narrates the 360 tour from verified facts. For TigerData, it turns 711k complaints into instant building histories.

Built With

Share this project:

Updates

Submission history