BusiStreet is an autonomous AI agent: give it a business and a city and it plans its own investigation across Google Maps, Census and OpenStreetMap data, but the AI never does the math; our code does. It runs serverless on Cloudflare’s edge, built so a multi-minute agent works on short-lived requests and can’t run up the bill

Inspiration

Opening a small business usually starts with signing a lease, and that decision is often made on gut feel. The data that could inform it already exists: who lives nearby, what competitors are already there, how walkable the street is, and what the rent does to your monthly numbers. But it's scattered across Google Maps, the U.S. Census and spreadsheets most first-time owners never build. We wanted one tool that does the legwork and answers a simple question before anyone puts money down: "Will this spot work, and what could break it?"

What it does

BusiStreet stress-tests a business location before you sign a lease.

  1. Describe your business: type, budget, rent, staff and prices. Leave blank anything you don't know; we fill in a labeled default.
  2. An AI agent investigates the area. Given a business and a city, it plans its own investigation. It scans the city for promising areas, pulls real nearby businesses from Google Maps, neighborhood data from the U.S. Census, and walkability from OpenStreetMap, then scores up to three spots.
  3. Stress-test before you sign. For each spot you get:
    • a Location Suitability Score (0–100) with every factor and weight shown
    • a Financial Feasibility rating (Promising / Risky / Not viable) built on your real numbers
    • a Failure Simulator showing what a slow season, a rent hike or a new competitor does to your monthly result, with sliders that recalculate instantly
    • a Simulated Neighborhood Panel: 30 simulated residents per area, built from that tract's real Census numbers, who react to your business versus the real competitors nearby. You can change one thing (say, the price) and ask again. It's clearly labeled as a simulation, and it never changes a score or a dollar figure.

Every number links back to its source, and missing data is never counted in your favor.

How we built it

  • Frontend: React 19, Vite, Tailwind CSS v4 and React Router, with Leaflet / Google Maps for the maps.
  • Backend: a single Cloudflare Worker serves both the React app and the /api/* backend on our own domain, deployed automatically from GitHub.
  • Database & auth: Supabase (Postgres with Row Level Security, Auth and Realtime). Investigation progress streams to the browser live.
  • AI: Claude (Anthropic) with tool use. The agent has 11 tools, including a city-wide grid scan, competitor search, Census demographics, walkability, scoring, financial feasibility, failure scenarios and a final report. The JSON schemas Claude sees are generated from the same zod schemas the backend enforces.
  • Data: Google Places API (New) and Geocoding, U.S. Census ACS 5-year (tract + county), and OpenStreetMap Overpass.
  • Core principle: "Claude decides, code calculates." Claude chooses where to look, which tools to call and writes the explanations. Every score, dollar figure and simulation result comes from deterministic TypeScript in a shared engine that runs in both the browser and the Worker, so the simulator sliders match the backend exactly.
  • Testing: Vitest, including an end-to-end agent run with every external service mocked.

Challenges we ran into

  • Running a multi-minute AI agent on serverless. An investigation takes a few minutes, but serverless requests are meant to be short. We save the agent's state in Postgres between steps, so each request runs exactly one agent turn. A lease stops two tabs from running the same step, and refreshing the page picks up where it left off.
  • Keeping the AI from making up numbers. Language models can slip on arithmetic and invent figures. We drew a hard line: the AI never produces a dollar amount. Its scenario assumptions are validated against allowed ranges before any math runs.
  • Making a simulated panel honest. It's easy for simulated "people" to look like real survey results. We had to:
    • say "simulation" before any number appears
    • give every option the same fields, marking missing facts as "unknown"
    • flag explanations that claim prices nobody supplied
    • re-ask the same profiles with the options reordered and show how many answers changed
    • show any batch that fails validation as missing instead of filling it in
  • Controlling cost. A public site calling paid AI and maps APIs could get expensive fast. We added per-route rate limits, per-user and global daily caps in an append-only usage log, and hard limits on agent turns and tool calls.
  • A deploy bug: right after a deploy, the site briefly loaded without its CSS. A missing stylesheet was answered with the HTML page instead, and that wrong response got cached for a year. We fixed it by returning a real 404 for missing asset files.

Accomplishments that we're proud of

  • A working, deployed product on our own domain (busistreet.us) that investigates real places with real data.
  • An AI agent that runs a complete investigation on its own, with hard limits on what it can do and how long it can run.
  • A financial engine where every number is reproducible and the math is shown: revenue, costs, break-even and stress scenarios.
  • A Simulated Neighborhood Panel designed around trust: it shows where to look and never makes the decision for you.
  • Security built in from the start: Row Level Security on every table, sign-in verified on the server, secrets kept out of the browser, and third-party text always rendered as plain text.
  • 53 automated tests covering the finance engine, scoring, the panel and a full mocked agent run.

What we learned

  • Give the AI the judgment calls and give the math to code. That split is what makes the results trustworthy and testable.
  • Being honest is a design problem. Labels, denominators, "unknown" values and showing how many answers changed between runs matter as much as the model's output.
  • Serverless changes how you design long-running work. Saving state and advancing one step at a time made the agent resumable and easy to debug.
  • Deploys and caching have sharp edges. A one-line header rule can turn a few seconds of deploy lag into a site that stays broken for that visitor.
  • Missing data should lower confidence, not raise scores.

What's next for BusiStreet

  • Finish in the background: move the agent loop into Cloudflare Workflows so investigations complete even after the tab is closed.
  • Better foot-traffic data: confidence is capped at "medium" today because foot traffic is estimated. Real foot-traffic data would raise it.
  • Check the panel against real people: compare simulated reactions with real local surveys to measure where the simulation holds up and where it doesn't.
  • UI polish: a shorter homepage, collapsible report evidence and less repetition of scores.
  • Shareable reports: export a clean PDF that owners can bring to a landlord, lender or partner.

Built With

Share this project:

Updates

Submission history