← Writing

Case study · 17 October 2026

Your agent reports a broken streetlight

Vloora built a working 311 service for a fictional city and connected an AI assistant to it. The resident approves every report before it reaches the city.

A resident tells their assistant that the streetlight in front of 700 Cedar St has been out for a week. The assistant writes the report, and the resident approves it on their phone. Two days later the city repairs the light and the resident confirms it.

The city is called Tallmere. Its 311 service uses the open standard that Chicago and San Francisco publish, so the assistant could report to a real city the same way.

Why 311

People already report potholes and broken lights to 311 by phone, app and web form, and city staff work through those reports in a queue. AI assistants will soon file reports for people too. Cities need each of those reports to arrive once, from a person who meant to send it, about a problem the city can fix.

In this demo the assistant can read the city's records at any time. Every report it files goes through the person first and carries the rules it followed.

How a report moves

  1. The assistant checks the city's open reports near the address. When a neighbor has already reported the same pothole, the assistant follows that report and tells the person where it stands.
  2. The assistant writes the report and sends it to Stenodisc, the app on the person's phone.
  3. The person reads the report on their phone: what it says, where it goes, what the assistant checked and when the request expires. They approve or decline.
  4. The city receives the approved report with a receipt, and staff see the receipt in their queue.
  • Approval screen for a streetlight report at 700 Cedar St, written by Claude, with the checks it passed and buttons to approve or decline.
    The approval screen
  • The streetlight report's history, from the assistant's proposal to the resident's confirmation, with the city's report number 4200.
    The report's history
  • The Passbook listing every job the assistant handled, including the disputed branch, the confirmed streetlight and the power outage sent to the utility.
    The Passbook
Tallmere 311 staff queue. Reports filed through Stenodisc carry a green badge reading Approved by a person, with a receipt number.
The city's staff queue. Reports from assistants carry a green receipt badge.

Six situations

We ran six situations with a scripted assistant, connected the way Claude or ChatGPT connects to outside tools. A second script tapped the buttons on the phone and moved the city's clock forward.

Where each one happened

Each number marks a situation in the list below. The dashed circles show the 150 meter area the assistant checks around reports the city already has open.

Front StOak StCedar StHarbor StMill StSpruce St1st Ave2nd Ave3rd Ave4th Ave5th Ave6th Ave7th Ave8th Ave9th Ave10th Ave11th Ave12th Ave150 m12345666
FrontOakCedarHarborMillSpruce1st3rd5th7th9th11th150 m12345666
  • Sent to the city
  • Kept with the person
  • Open city report
  • 150 m check area
  1. "There's a huge pothole at Oak and 5th."

    The city already had this pothole as report #4100. The assistant followed that report and told the person.

    Following #4100
  2. "The streetlight in front of 700 Cedar St has been out for a week."

    The person approved the report and the city filed it as #4200. Two days later the city repaired the light and the person confirmed it.

    Filed as #4200
  3. "The power is out on our whole block at Harbor and 2nd."

    Tallmere Power and Light handles outages, so the assistant gave the person the utility's outage line and app.

    Sent to the utility
  4. "Someone tagged the wall at 300 Front St."

    The city had an open graffiti report at the same address, for the bus shelter. The assistant explained that this report was for the library wall. The person read the warning and declined.

    Declined by the person
  5. "The signal at Mill and 3rd is stuck on red."

    The approval request expired after 24 hours.

    Expired
  6. "A branch is down at 200 Mill St, the trash was missed at 900 Spruce St, and someone dumped a couch at 400 Harbor St."

    The person approved the branch and the missed pickup. The couch would have been the fourth report that day, over the limit of three, so the assistant held it. The city closed the branch report while the branch was still on the sidewalk, and the person disputed the closure.

    Filed as #4203 and #4206

A warning about a likely duplicate

In the fourth situation the assistant still proposed the report and gave its reason. The person saw the city's open report, its distance and the assistant's explanation on one screen, then declined.

Approval screen for a graffiti report at 300 Front St with a warning that the city already has open report 4107 at the same address, and the assistant's explanation.
The duplicate warning

When the city closes a request

Two reports, hour by hour

Hours count from filing, using the city's timestamps. Blue marks are things the person did. White marks are things the city did.

0 h12 h24 h36 h48 hStreetlight700 Cedar St, #4200Approved and filedCrew assignedClosed by cityConfirmed fixedBranch200 Mill St, #4203Approved and filedClosed by cityStill broken: disputed
0 h12 h24 h36 h48 hStreetlight700 Cedar StApproved andfiledCrew assignedClosed bycityConfirmedfixedBranch200 Mill StApproved andfiledClosed bycityStill broken:disputed

The streetlight became Confirmed when the resident checked it, two hours after the city marked it repaired.

The city closed the branch report after a day. The resident walked past, saw the branch still on the sidewalk and tapped Still broken. The record keeps both entries, the city's closure and the resident's dispute, each marked with who said it.

History of the branch report at 200 Mill St ending in Disputed: the city closed it as cleared and the person reported the branch still there.
The resident disputes the city's closure

The rules the assistant follows

  • Assistants can report problems with streets and city property: potholes, streetlights, signals, graffiti, missed pickups, dumping and fallen trees.
  • Noise complaints and reports about a neighbor's car go back to the person, who can call 311 directly.
  • Power outages and water main breaks go to the utility that handles them, and the assistant gives the person the number to call.
  • Before writing a report, the assistant checks for an open report of the same kind within 150 meters.
  • The person approves every report. A request expires 24 hours after the assistant sends it.
  • Each person can file three reports a day.
  • Every report carries a receipt: the request code, who approved it, when, and which checks it passed.

The result

The scripted run passed all 20 of its checks. The demo is set up to run on Cloudflare, where every visitor gets their own city and Passbook and can connect their own assistant to try the six situations.

Related writing

Tallmere's 311 service follows the Open311 GeoReport v2 standard ↗.