Inspiration

Opening a second location is a big, blind bet: weeks of tours, and a six-figure build-out decided from an empty room. Meanwhile empty storefronts hurt neighborhoods, and U.S. office vacancy hit a record 21%.

What it does

The owner types one sentence: "Second bakery in Houston, about 20 seats, under $6k a month, needs parking." An AI agent then:

  • Searches about 2,300 real vacant spaces that have a 3D scan.
  • Narrows them down by size, rent and neighborhood: parking, nearby businesses, residents, transit.
  • Looks inside the best ones using the 360° photos.
  • Furnishes the real 3D tour with ovens, counters and tables, and makes a photo of "this is your bakery".
  • Does the money math: rent, build-out cost, expected revenue, months to break even. Every number has a source.
  • Listens to feedback. Say "fewer seats, closer to transit" and it re-plans.

It also works for offices: "25-person team in downtown LA". There it places desks and reports cost per desk per month instead of break-even.

How we built it

  • A LangChain Deep Agent with 5 subagents (scout, inspector, designer, stager, analyst) that writes its plan to files and re-plans on feedback.
  • A local DuckDB database built from CoStar's 8 datasets, Matterport's room outlines and 360° photos, - Vexcel parcels, aerials and car detection, and OpenStreetMap transit.
  • Layout planning with geometry checks; a 3D tour in Matterport's viewer; a Next.js app with a live agent panel

Challenges we ran into

  • Many "retail" scans were really apartments (181 of them), so we checked every scan with Matterport's room types.
  • Scans are often of the building, not the suite, so we match them to the suite and say which is which.
  • We had to work out Matterport's axis convention and Vexcel's API by testing them directly.

Accomplishments that we're proud of

Every number cites its source. The 3D placement is in a real scan, not a mock-up. One engine handles two business types.

What we learned

  • Matterport Model API (GraphQL): This was the most powerful data we used. Each scan gives real room outlines with doors and windows marked, ceiling heights, Matterport's room labels ("Kitchen", "Bathroom") and 360° photos, so we could place furniture inside a real room instead of a guessed rectangle.
  • Vexcel API: The aerial photos and parcel outlines worked well, and the quickstart got us going fast. The surprise was the object-detection endpoint: we count the cars in a space's parking lot, so "has parking" becomes something we measured instead of a listing claim.
  • CoStar data kit: It gave us realistic listings: rent, size, broker, nearby businesses and residents.
  • Amazon Bedrock: We use Bedrock for all our AI, and the Bedrock API key made setup fast. Lessons:
    • Running 6 image inspections in parallel hit rate limits quickly, so we added fewer parallel calls and retries.
    • The image model we planned to use, Nova Canvas, had reached end of life, so we switched to Stability AI's inpainting on Bedrock. It also suits our job better, because it changes only the masked area and leaves the walls and floor alone.
  • DuckDB: One local database file holds every listing, room, photo and neighborhood fact. Queries over all the data take milliseconds, and the demo runs with no internet. The only problem was a file lock when two processes opened the database at once, which we solved with read-only connections and retries.
  • OpenStreetMap (Overpass API): It's free and quick to query, and it gave us transit stops for "closer to transit" requests.

What's next for Abny

Owners scan their own space with Matterport's phone app; more business types; a broker hand-off.

Built With

  • amazon-bedrock(claude-sonnet4.6)
  • costar-data
  • duckdb
  • fastapi
  • langchain-deep-agents
  • matterport-model-api-and-showcase-sdk
  • next.js
  • openstreetmap
  • python
  • vexcel-api
Share this project:

Updates

Submission history