Inspiration

More data centers, chip fabs, plants and nuclear plants are being built across North America and around the world, and I keep seeing the pushback, on social media and in conversations in real life, from the people who live next to them. I built Townsworth as a bridge between those residents and the companies building the sites. Why now: demand for AI and engineering capacity keeps climbing, so there will only be more of these sites, and more towns and neighbourhoods asking what's in it for them.

Data centers, chip fabs and battery plants are landing in small towns, and towns are pushing back: local opposition blocked or delayed about $198B of data-center projects in the first half of 2026 (Data Center Watch, Q1, Q2), and seven in ten Americans oppose one in their area (Gallup, 2026-05-13). Companies do commit money to host towns, but the plan behind it is often generic: a STEM camp, a library donation, a chamber sponsorship. It could fit any town, so residents see nothing in it for them.

The result: checked against Mount Pleasant, Wisconsin, a consultant-style template has all 12 lines struck as not local. Across six towns, 74% of the partners AI alone names are institutions, against 35% of ours, and 84% of Townsworth's local partners never appear in the AI-only plans. /proof recomputes these from live Qloo calls on every load.

The name: "-worth" is the Old English word for an enclosed homestead, as in Wadsworth. Townsworth means the town's own place.

What it does

Townsworth checks a facility's community-benefits plan line by line against Qloo's data for its host town, for the company's community-affairs team.

  1. Paste or open a plan. Each line is Kept (a real local partner, a named institution, or a commitment kept as drafted), Not local (could fit any town) or Can't confirm (not found nearby; it may still exist).
  2. Struck lines get a local venue, ranked by how strongly locals favour it: "#4 of 50 places locals favour". "Why" shows the Qloo signal, the place traits the area stands out for, and which age groups favour the venue.
  3. A 3D map of the town shows the facility site, the Qloo-ranked places within 15 km and a flow from the site to each program venue. Apply the swaps and the flows redraw and the total updates; click a venue for its Qloo rank, distance and costed sessions. It opens full screen (F or Esc).
  4. A costed memo for the committee: the company's jobs, power, water and tax commitments first, each with its source; then a 24-month program costed session by session, with the rest held in reserve. CSV, calendar, HubSpot and Salesforce exports.
  5. An outreach agent (OpenAI) drafts emails to each partner, confirms it on OpenStreetMap and names the funder. Nothing is sent.
  6. Residents rank the shortlist on an anonymous ballot. The demo tally adds 120 simulated ballots to yours, and says so.

Try it in 60 seconds

How we built it

Townsworth architecture: a browser calls a Next.js app on Vercel, which calls Qloo, an OpenAI outreach agent and OpenStreetMap, and returns a committee memo, CSV and calendar exports and a resident ballot

In the order a request moves:

  1. In: a host town (six presets, or any town found with OpenStreetMap) and a draft plan.
  2. Qloo: server-side Insights calls for the town; responses are cached privately and never committed.
  3. Decide: fixed rules over Qloo fields pick partners and amounts and give each line its verdict. The model proposes; code decides.
  4. Agent: an OpenAI agent drafts outreach with tool calls; a draft that skips the funder or touches zoning, votes, politics or religion is replaced.
  5. Out: the memo, exports and the resident ballot.

Qloo in Townsworth

Qloo call What it does in Townsworth
Insights, urn:entity:place with signal.location Ranks the places within 15 km by how strongly locals favour them; partners come from this list
Insights, taste near the site vs national and big-metro lists Finds what the town stands out for; national favourites never drive an item
/v2/audiences and signal.demographics.age Checks the program reaches young adults, older residents and families with young children
Insights, urn:demographics Shows which age groups favour each partner (age only; gender is discarded)
Insights, urn:tag at the site The place traits the area stands out for, cited in each partner's "Why"
/search Looks up each venue a pasted plan names, within 25 km

Tech used

Technology What it does in Townsworth
Qloo Insights API (/v2/insights) Places ranked by how strongly locals favour them, distinct local taste, age-group checks, partner audience ages (urn:demographics) and area place traits (urn:tag)
Qloo Audiences API (/v2/audiences) Looks up the life-stage audience for the families check
Qloo Search API (/search) Finds each venue a pasted plan names, within 25 km
OpenAI gpt-5.4-mini (Vercel AI SDK) Drafts partner outreach with tool calls, splits a pasted plan into lines, and wrote the frozen AI-alone baseline. Never decides a verdict or an amount
OpenStreetMap Nominatim Finds any US or Canadian town, and confirms each partner a plan names
MapLibre GL JS + OpenFreeMap (OpenStreetMap vector tiles) The interactive 3D town map on each town page: Qloo-ranked places, the facility site and the plan's flows, redrawn as lines are swapped
Vercel Hosting, plus a 24-hour cache of each successful Qloo answer

Challenges we ran into

  • Town names resolved to the wrong place for 6 of 22 hosts we tested, so every Qloo query uses coordinates and a radius.
  • Not striking real commitments: a local-purchasing target names no partner, so a naive check would strike it. Those lines are kept as drafted.
  • Qloo's rate limit: a cold page needs about 30 calls per town, so calls are paced under 10 a second and each answer is cached; a failed call is retried, never remembered.

What we'll tell you before you find it

  • The baseline: OpenAI gpt-5.4-mini, with no Qloo access, wrote the AI-only plans for six towns; they were frozen and hashed on 2026-10-27, before measuring. Six towns and one model make the proof directional, not a study.
  • Ordering by affinity instead of distance changes only 3% of picks: Qloo's bigger effect is which places are candidates at all.
  • The ballot tally is simulated and fund figures are illustrative; no partner's willingness is confirmed. "Can't confirm" doesn't mean invented.

Accomplishments that we're proud of

  • A path from a Qloo signal to a costed, downloadable commitment, with a "Why" on every partner.
  • A frozen, hashed baseline with every number recomputed live, including the small one.

What we learned

  • AI alone knows a town's institutions; Qloo knows where the town goes. A useful plan keeps the first and adds the second.
  • A generic plan is a data problem, not a writing problem. Without knowing where a town actually goes, any plan falls back to the same STEM camp and library donation; with it, the same budget names real local places.

What's next for Townsworth

  • Show the memo to community-affairs teams and test a per-project licence.
  • Confirm partners' availability, and replace the simulated tally with consented resident input.
  • Import material commitments from developer filings for any town.

Built With

Share this project:

Updates

Submission history