This morning I made a trip into the city to meet Andrew Lambert, the consultant behind Lambert Consulting and the host of the Mind Yo' Business podcast, and show him what I built on Bloomington Online over the last three days. He pulled up his own business listing in our directory. It was there, but it was nearly blank. This post is a thank-you to Andrew for the work he does in our community, and an account of how we fixed his listing and then rebuilt the south side of the Courthouse Square from a pile of photographs.
Andrew started his advertising agency in 2010 and launched the Mind Yo' Business podcast in 2017. Lambert Consulting helps owners with traditional marketing, digital advertising, websites and hosting, and one-to-one consulting. The podcast has run for nine seasons and is often recorded live in front of an audience at Morgenstern Books on South Auto Mall Road. Season 9 this year has included conversations with Brian Dorsey of Meineke Car Care Centers, the team at Brightside Cafe, Jordan Davis on food and festivals in Bloomington, and Kaytee Lorentzen on the Chamber of Commerce.
The Greater Bloomington Chamber of Commerce profiled him in April as part of its Small Business Series. It describes a former professor and stand-up comedian who wanted interviews to feel like a real conversation, with very few scripted questions and room for the mistakes and pivots that most people leave out. His idea of being "selflessly selfish" is that you can chase your own success as long as you create value for the people around you, and his advice to people starting out is to be real, stay flexible and take action.
He also gives back. On his own site Andrew says he served as Marketing Director and then President of the Monroe County Autism Foundation, founded in 2011, and as an advisor and contributor to the Katie and Victor Root New Hope Scholarship at Ivy Tech Community College, which helps adult learners return to school. He is the author of Be the Lime: An Insider's Guide to College.
If you own a business in Bloomington and you haven't heard the show, start with the episodes. If you need help with your marketing or your website, he is a good person to call.
Andrew's listing in the Bloomington Online directory today.
The blank listing
When Andrew looked himself up in our directory, he found a one-line placeholder that had been generated automatically when the directory was first filled in. That is the kind of thing I have been cleaning up all week, and it was a good reminder of how many businesses are in the same position. So we fixed it. I opened Claude Code in the Terminal, told it whose listing to improve, and it read his website and the sources about him, then wrote the description, added his logo, set the categories and tags, and corrected his website address. Every sentence in it traces to something he or a reputable source has published, and the old text is backed up. His podcast's listing, which was also a placeholder, was rewritten the same way and moved to the media category where it belongs.
That is the whole method. I describe the job in plain English, the assistant does the research and the typing, and I decide what goes on the site. A written note, a link, or a photograph is enough to get it started.
From eighteen photographs to a courthouse
The part of the demonstration I enjoyed most was the photographs. The previous version of the courthouse in Bloomington 3D had a copper-green dome and a front with steps up to the doors. It was a fair miniature, but it was a guess. So I walked around the Courthouse Square and took eighteen photos: the south front, the stairs, the flower beds, the plaques, the stores across Kirkwood Avenue, and the fish on top. I gave them to Claude Code and asked it to make the model match.
The south front of the courthouse, in my photo and in Bloomington 3D.
The photos corrected the model right away. The real courthouse has no steps at its doors. The long flight of stone steps with cheek walls and green lamp posts is down at the street, and a concrete walk crosses the lawn from there. The dome is dark and ribbed, with a clock on each face of the tower and an ornate crown at the top. The model now follows all of that, along with the lettering on the building, the "Anno Domini" panel, and the group of limestone figures over the entrance.
The Courthouse Square before and after.
The details on the lawn
The photos also showed what is on the lawn, and all of it is in the map now. A state historical marker stands beside the walk with its text about the 1818 log cabin and the brick courthouse that stood here until 1906. There is the Women in Government Plaza, with its stone benches and the block carved "Sophia," and a stone marking the Center of Population. A limestone memorial to county commissioner Warren Henegar, dedicated in 2013, carries its plaque and the words "Make me an instrument of Your peace." A tall war memorial topped by a soldier stands on the south lawn. The beds along the walk are full of orange and red flowers with blue salvia.
The steps at Kirkwood Avenue, with the lamp posts, rails and flower beds.
And the fish. Its weathervane is a long slim fish with a forked tail on a pole with four arrow-tipped arms, and the dome beneath it ends in a crown of leaves and scrolls. The old model had a plump fish on a lantern, so we rebuilt it. The fish swings slowly on its pole, as a weathervane should.
The weathervane on top of the courthouse, in my photo and in the model.
Across Kirkwood Avenue
The storefronts were next. The old map had a single long brick building across from the courthouse. In reality it is six, each with its own color and character, so each one got its own front: the white building with blue-trimmed arched windows and the cream one beside it over Andrew Davis menswear and formalwear, a narrow red-brick building, the cream building with the teal cornice over Mirth and its "Browse the shops inside" sign, the tall limestone Fountain Square building with its black awning, O'Child and #skullznbunniez, and the limestone building with the oriel windows over Tivoli Fashions.
The stores across Kirkwood Avenue before and after.
These are still miniatures. The shapes and colors come from photographs taken from the lawn, so they are close but not exact, and the buildings along the rest of the Square are next.
How it works, in case you want to try it
I take photographs or write down what I want, and I put them in the Terminal where Claude Code is running.
It reads them, writes the code or the listing, and renders the result in a browser so it can check its own work.
I look at what it made, point out what's wrong, and it fixes it. Every change has a backup, so anything can be undone.
The listings follow a rule: no fact goes in unless it comes from a source I can point to.
AI makes mistakes, and today's first attempt put steps at the courthouse doors because that seemed reasonable. Photographs are what fixed it, and they are what I'd ask you for if you'd like your own business or building to look right on the map.
Visit, and say hello
Open Bloomington 3D and walk up to the courthouse from Kirkwood Avenue. Then look up Lambert Consulting and the Mind Yo' Business podcast in the directory. If you own a business, make sure your listing is correct. If it is not in the directory yet, let me know and I will add it. Thank you, Andrew, for the time and for the good work you do for Bloomington.
Two days ago there was no 3D Bloomington. Now there’s one you can fly around, from the copper fish on the courthouse to the sailboats on Lake Monroe. It’s built from real survey data, it lights up at dusk, it changes with the seasons, and every business in our directory can show up on it. Here’s what we built, where the data came from, and how it came together.
The whole board: Bloomington and the hills around it, about 12 miles across, on a fall evening.
What it is
Bloomington 3D is a model of Bloomington and the country around it: a round board about 19 kilometers (12 miles) across, centered just south of downtown, sitting on a walnut plinth like a museum diorama. The cut edge shows layers of limestone, and where the board slices through Lake Monroe you can see the water in cross-section.
It runs in any modern browser, on a phone or a computer, with nothing to install. It opens on the Courthouse Square. Drag to move, pinch or scroll to zoom, and tap anything outlined, pinned or named to read about it. Each place has a card with a short, fact-checked write-up, nearby places to wander to next, and a link you can share. For example, bloomingtononline.com/town/#griffy opens straight onto Griffy Lake.
Where the town comes from
None of the geography is drawn by hand. Every street, building, tree and creek comes from public data, and the map credits each source on screen. Here’s what’s in it.
Streets, buildings and paths: OpenStreetMap
The base layer is OpenStreetMap, the volunteer-built map of the world. It supplies the roads, the B-Line and the other trails, the creeks, parks, rail lines and building footprints. It also has the small things you notice once you zoom in: about 2,900 sidewalk segments and 4,300 other footpaths, crosswalks, bike lanes, benches, bike racks, picnic tables and parking lots, which fill up with little parked cars.
The hills: USGS elevation data
Southern Indiana isn’t flat, and the model shouldn’t be either. The terrain comes from USGS elevation data via open terrain tiles, with the hills exaggerated about two times so the ridges and hollows read at a glance, the way a museum diorama does. Buildings and trees stand at their real heights. Where OpenStreetMap doesn’t map the woods, the model fills undeveloped slopes with forest, because that’s what our hollows are.
Real building heights: 154 million laser points
This is the part I’m proudest of. Indiana was flown with lidar between 2017 and 2019 for the USGS 3D Elevation Program: an airplane sweeps a laser across the ground and records where every pulse bounces back. We streamed the 21 tiles that cover downtown, campus, Prospect Hill, Elm Heights, Bryan Park and the near west side, which is 154.6 million points, and turned them into a one-meter grid of the town.
From that grid, the model measures:
the eave and ridge height of 11,565 buildings, so roofs are the right height and the right shape
stepped roofs on bigger buildings, traced in tiers every 3.5 meters, so a building with a tall section and a low wing looks like that
towers that rise above the rest of a building
the tree canopy, so the woods and big yard trees stand where they really are
the bare ground under it all, more detailed than the terrain everywhere else
Outside that core, building heights come from Microsoft’s machine-learning estimates, published through Overture Maps, which also fills in buildings OpenStreetMap doesn’t have yet. All told, there are about 35,000 buildings on the board.
Downtown on a summer morning. Building heights and roof shapes are measured from lidar; roof colors come from the 2025 aerial photos.
Roof colors: the 2025 aerial photos
Flying over a model where every roof is the same gray is boring, and it isn’t Bloomington. So for 11,518 roofs in the core, the model samples the real color from IndianaMap’s 2025 statewide aerial imagery: the red metal roofs, the white flat roofs on campus, the weathered shingles. The same photos also lighten the ground where there’s paving and green it where there’s grass. We use the photos as data, not as a texture, so everything stays in the model’s diorama style.
36,000 real trees, and fall colors by species
The City of Bloomington keeps an inventory of its street and park trees, and IU surveyed its campus trees in 2019. Together that’s about 36,000 trees on the board, each standing where it really stands, and each with its species. So in fall:
red maples, sweetgums and red oaks turn red
sugar maples turn orange
tulip trees, ginkgos, honeylocusts and redbuds turn yellow
white oaks, beeches and sycamores go bronze
pines, spruces and cedars stay green
In spring, the redbuds and crabapples bloom pink and the dogwoods and pears bloom white. Dunn’s Woods and the campus look different from the near west side because they’re planted differently, and the model knows it. Beyond the inventories, trees follow the lidar canopy in the core and the landcover everywhere else.
The Old Crescent and Dunn's Woods in fall. Campus trees come from IU's tree inventory and change color by species.
The city’s own maps
From the City of Bloomington’s open data we use:
Historic districts and neighborhood boundaries: outlines like Prospect Hill and Elm Heights are the city’s own.
The bikeways layer.
The historic buildings survey: houses it rates as historic get an older-house look in Elm Heights and Prospect Hill.
The public art inventory: 42 outdoor works, each with the city’s photo, artist, year and medium. A “Public art” walk visits them in order, starting at the Square.
And BloomingtonOnline itself
Our own content is on the map too:
Things to Do guide: 67 places, linked both ways.
Neighborhoods guide: the north, east, south and west sides of town.
The business directory: more on that below.
Light, time and the seasons
By default the model runs on live Bloomington time. The sun is where the real sun is, calculated for our latitude down to the minute, daylight saving time included. Watch it long enough and the shadows swing across the Square, the sky warms at golden hour, the street lamps come on, and the windows downtown light up after dark.
Live mode also follows the calendar, and the four season buttons let you jump ahead:
Spring: the redbuds and dogwoods bloom.
Summer: sailboats on Lake Monroe, paddlers on Griffy, and fireflies at dusk.
Fall: the species colors, with leaves drifting down.
Winter: snow on the roofs, wet streets and moonlit fields.
Some details only show up at the right moment. The farmers’ market tents are on Showers Common on Saturday mornings from April through October. From the Friday after Thanksgiving through December, the Canopy of Lights glows over the Square at night.
The Canopy of Lights over the Square, shown from the Friday after Thanksgiving through December.
You can also link to a moment. Adding ?season=winter&time=18:30#square to the address opens on the Canopy of Lights at dusk, which is handy for stories.
Hand-built landmarks
Data gets you most of the way. A few places deserved to be modeled by hand:
The courthouse: its dome and windowed drum, the copper fish weathervane, and window rows that light up at night.
Campus: the Sample Gates, the Rose Well House, Kirkwood Observatory’s dome, Showalter Fountain, the IU Auditorium’s front and the field at Memorial Stadium.
Downtown: the Buskirk-Chumley’s marquee and the sawtooth roof of the old Showers plant, now City Hall.
The Little 500 track.
Grout piles: heaps of waste limestone blocks along the rims of the quarries.
Older brick blocks within a few minutes’ walk of the Square get storefronts, awnings, arched upper windows and limestone cornices.
Ways to explore
A first look: a guided tour of the highlights.
Fly-alongs: rides along the B-Line, Kirkwood and out to Clear Creek. Nine more stay low: on foot down Fourth Street, College Avenue, Walnut, Third Street and 10th Street through campus, and by bike along the 7-Line, Cascades, Jackson Creek and the Karst Farm Greenway. The low routes were checked against the lidar so the camera clears every roof and treetop.
Low view: drops you to about 10 meters, looking down the street toward the horizon. Smaller places link to Google Street View when you want the real photos.
Circling: pick a place and the view slowly circles it, like Google Earth after a search.
Home, Back and the compass: Home takes you back to the Square, Back to your last view, and the compass to north, then straight down.
Save a picture: the camera button saves the current view as an image, credit included.
The business directory, on the map
This is where the model stops being a pretty picture and becomes part of BloomingtonOnline:
Every business on its building. More than 1,900 directory listings now have a See it on the 3D map button. The model places each one on its actual building, matched by name and address against OpenStreetMap and Overture, instead of rough estimates from street address ranges. Businesses just past the edge of the board get a pin on the rim pointing their way.
Categories as layers. The chips under the search box show one kind of business at a time: Food & drink, Coffee, Bakeries, Bars & nightlife, Pizza, Shops, Arts & entertainment, and Fitness & recreation. More has every directory category. Category pages in the directory link to their view on the map, so coffee is one tap away.
Search the whole directory. Type a name and any business on the board comes up.
Rich business cards. Each card has the business’s photo, its categories and specialties, the address (linked to Google Maps), tap-to-call phone, website and social links. A Flag this listing link reaches our correction form.
My places. Tap Save on any place or business, here or on its directory page, and it goes into your own list on the map. You can share the whole list with a link.
Locals love this. A heart on every business. Votes add up, and Most loved shows the favorites on the map.
With the Coffee layer on, every coffee shop is a pin. Gather's card shows its photo, address, phone, website, social links and categories, live from the directory.
Putting the directory on a map also showed us where the directory needed work. Over the years, several bulk imports had added some businesses two or three times. So we built a review page, went through every suspected duplicate, and merged 194 duplicate listings into the right ones. Nothing was lost: phone numbers, photos, categories and tags were combined, and every old address now redirects to the listing that stayed. The directory now warns us when a new listing looks like one we already have.
How it was built
I built Bloomington 3D with Claude Code, Anthropic’s AI coding agent, working as a two-person team: I set the direction, judged the results and knew the town, and Claude wrote the code, chased down the data and tested everything before it went live. Every feature went through the same loop:
Ask. I’d describe what I wanted in plain words: “add Third Street too”, “the category selectors are being cut off”, “let’s make a camera icon for saving the view”.
Build. Claude found the right data or wrote the code, often several pieces at once.
Test. Every change was checked in a real browser, on desktop and phone sizes, before it shipped. That included flying the camera down the new fly-alongs and clicking through the new buttons.
Ship. A one-command deploy publishes the new version to the site, keeping the old one for an instant rollback, and every change is saved in version control. As of this writing there are 146 of them.
A few principles held the whole way through:
Facts first. Every claim on a place card traces back to a source on a fact sheet, and the copy was fact-checked twice. If something couldn’t be verified, it stayed out. That’s why the cards don’t say why the courthouse has a fish: nobody knows for sure.
Open data, credited. Every source is credited on the map. There’s no paid mapping service, no API key, and no recurring cost.
Private by default. Update, Oct 14: the map now uses anonymous Google Analytics to count what people tap, search for and share, so we can fix what is confusing. It collects no names or email addresses, and your saved places still stay on your own device. Tapping the heart on a business also runs a quick background check from Cloudflare (the same one our contact form uses). Your saved places stay on your own device.
Works on a phone. The model picks a lighter quality level on phones, runs slower when nothing’s moving to save battery, and offers lighter graphics if things get choppy. It scores 100 for accessibility on Google’s Lighthouse test.
Two days, start to now
Day one (Sunday).
Early afternoon: the first version, OpenStreetMap streets and buildings on terrain, with a tilt-shift look that makes it feel like a miniature.
Next two hours: three art-direction passes, then night lighting, seasons, the guided tour, landmarks, boats, storefronts and performance tuning for phones.
About 3 p.m.: it went live on the site.
Next hour: the lidar heights, roof colors, real trees, city outlines, public art and the first directory integration.
Evening: the Things to Do guide, the low fly-alongs, circling, directory pins on their buildings and category layers. It also got its name. It had started life as “Bloomington in miniature”, which I didn’t love.
Finding things: the search bar with category chips, and friendlier controls (Home, Back, double-tap to zoom, first-visit tips).
Links and history: working browser Back and Forward, and shareable links that stay tidy.
Directory features: richer business cards, My places, Locals love this, and pins for businesses just past the edge.
Directory cleanup: the duplicate merge.
A lot of the best changes came from simply using it. On day one I noticed the business pins weren’t quite on their buildings. The directory’s locations were estimates from street address ranges, often 20 to 100 meters off, so we matched every listing to its actual building instead. Coming in from a directory listing, I noticed the address bar kept the old business’s name. The browser’s Back button didn’t walk back through places. The category chips were cut off on a phone. Each of those took minutes to fix once I’d noticed it.
Griffy Lake at sunset in fall.
Where it goes from here
After two days, Bloomington 3D includes:
about 35,000 buildings and 36,000 real trees
50 written-up places, 67 Things to Do and 42 works of public art
a dozen fly-alongs
more than 1,900 businesses
four seasons and a sun that keeps real time
It’s also a living thing, and that’s the exciting part. A few ideas on the list:
a “show where I am” button
events on the map
live weather
more guided tours drawn from our guides
your saved places following you from device to device
But the best next steps will come from you. Take it for a spin, find your street, and save your favorite spots. Then tell us what you’d like to see, what’s missing, or what we got wrong. If a business is on the wrong building or out of date, use Flag this listing on its card. We read every one.