## Inspiration - Relocates: open where your customers already are.

Online brands are moving offline. In 2025, digitally native brands planning physical stores began to outnumber those staying online-only (JLL via ICSC). Boll & Branch planned 10 more stores that year, and Kizik planned 15. The reason is the halo effect. ICSC found that opening a store lifts a brand's web traffic in that market by 37% on average, and by 45% for brands under 10 years old (ICSC Halo Effect).

But a store is an expensive bet, and the money goes in before a single local customer walks through the door:

  • The fit-out alone averages $155 per sq ft in the US, and $211 in Northern California (Cushman & Wakefield, 2025). That's about $310,000 for a 2,000 sq ft first store, before rent, staff or inventory. Even a 30-day pop-up typically runs $15,000–$60,000 all-in.
  • The wrong block costs you online too. In ICSC's later study, closing a store cut online sales in its trade area by 11.5% (ICSC Halo Effect III). A failed location loses the rent, the build-out and the halo.
  • It happens to well-funded brands. In 2024 Allbirds said it would close 10–15 underperforming U.S. stores, and it closed 14 in nine months (10-Q). By late 2025 it was closing its remaining full-price U.S. stores (Retail Dive).

So how do founders choose today? With foot-traffic counts and a broker's shortlist, which send everyone to the same busy, expensive streets, and with their own order data, which shows where buyers live, not which blocks share the brand's taste. None of it answers the question that decides the store: do the people on this block love what we sell? And once they've signed, they still know nobody there. There's no venue to host the launch, no café to co-promote, nobody to play opening night.

That's exactly what Qloo's taste graph knows: which blocks of a city light up for your brand, and which venues, brands and artists share your audience.

What it does

  • Connect your store. Paste a store address. Relocates reads the public Shopify catalog (categories, price band, products). Gemini names the brand, Qloo matches it, and you confirm. If your brand is too small for Qloo, look-alike brands your customers love stand in.
  • Meet your customer, per Qloo. Age and gender skew plus taste tags. For Glossier: an audience that skews under 35 and female (+0.74), and is fashion-forward, Effortless and California Style.
  • Set a goal. Pop-up, first store or event series, plus city, timing and budget.
  • Watch the Scout agent work. A live trace shows every Qloo call as the agent maps the city, scans blocks and picks partners.
  • Find your sweet spot. You get a map of the city with every Qloo-scored block shaded by taste affinity. The agent pins 3 spots, each labelled Sweet spot (top-10% taste match, outside the city's busiest 10%) or Prime (top 10% on both), and gives reasons that cite the numbers. For the Glossier demo it passed over prime Little Italy (1.00 affinity, 99th busy percentile) and chose Bloomingdale (0.91, 86th) for a pop-up budget: your crowd, before the rent.
  • Meet your local partners. Five tabs: Host it (venues with event space), Co-promote (cafés, restaurants), Guest traffic (hotels), Collab drop (brands) and Launch night (artists your audience in that city loves). Each card shows real addresses, websites and phone numbers from Qloo, its affinity score, and the agent's reason for picking it.
  • Get a foot in the door. One click drafts a personal outreach email to each partner. Relocates also generates a launch poster (Gemini image, art-directed from your Qloo taste tags), composes a 30-second in-store track (Lyria, from the music styles your audience loves) and plans your opening week around your partners.
  • Track it. An outreach pipeline (To contact → Sent → Replied → Booked) and a read-only share link for your co-founder or landlord.

Every number on screen comes from Qloo. Take Qloo away and Relocates has nothing to say.

(The demo uses Glossier's public store as an example. Glossier is not a customer.)

How we built it

The agent loop. Scout is a Gemini 3.8 Flash function-calling agent with four Qloo tools and a submit_plan tool. Each reasoning step runs on a Netlify Edge Function (/api/think). The Qloo tools run in Netlify Functions (/api/tools), and the browser passes results between them until the agent submits. A typical plan takes 4 turns: map the city, scan the 3 most promising blocks in parallel, find collab brands and launch artists, submit.

How Qloo is used. It's the decision engine at every step, not a widget:

Step Qloo call
Brand match /search with types=urn:entity:brand
Your customer /v2/insights with urn:demographics, and with urn:tag + filter.parents.types=urn:entity:brand
map_taste urn:heatmap + filter.location.query (1,300–3,200 geohash blocks per city), and again with output.heatmap.boundary=urn:entity:locality for neighbourhood polygons
scan_block urn:entity:place with filter.location=POINT(…), a 900 m radius and feature.explainability
find_collab_brands urn:entity:brand with signal.interests.entities
find_launch_artists urn:entity:artist + signal.location.query; their style tags also steer Lyria
City picker /search with types=urn:entity:locality

The sweet-spot rule. For each block $c$, Qloo returns affinity $a(c)$ and popularity $p(c)$. Let $R_a, R_p$ be their percentile ranks within the city:

$$\text{sweet}(c) \iff R_a(c) \ge 0.9 \;\wedge\; R_p(c) < 0.9 \quad\text{(ranked by } a(c) - p(c)\text{)}$$ $$\text{prime}(c) \iff R_a(c) \ge 0.9 \;\wedge\; R_p(c) \ge 0.9$$

Spots are kept at least 1.2 km apart and named by the smallest Qloo neighbourhood polygon that contains them.

Stack. React + Vite + Tailwind and Leaflet (CARTO tiles) for the app. Supabase for auth, Postgres with row-level security, and Storage for posters and tracks. Gemini 3.8 Flash for the agent and writing, Gemini 3.1 Flash Image for posters, Lyria 3 for tracks. One Glossier-in-NYC plan makes 15 Qloo calls (6 to match the brand, 2 for the customer, 7 by the agent), scores 1,288 blocks and 124 localities, and scans 120 places.

Challenges we ran into

  • The agent invented a place. When an early map call failed (Qloo caps take at 50), the agent still submitted a plan citing nyc_soho_sweet_spot, a spot that doesn't exist. Fix: the browser keeps every id the tools return, and the server rejects any submit_plan that cites anything else and sends the agent back to work.
  • The 10-second wall. Netlify cuts synchronous functions off at 10 seconds, and the turn where Gemini writes the plan took 7.7 to 10. Fix: split the agent. Reasoning runs at the edge, Qloo tools run serverless, and the browser carries the loop.
  • The sweet spot was subtler than I hoped. Among the city's top-10% taste blocks, Qloo popularity still ranges from 0.86 to 0.99. Fix: define sweet spots on percentile ranks and print the honest numbers ("0.91 affinity, 86th busy percentile") rather than inflate them.
  • Every spot was "Manhattan". Neighbourhood boundaries are multipolygons, and I sized them by their first ring, so a whole borough passed as a neighbourhood. Fix: sum the rings, drop anything over 25 km² and name by the smallest polygon. Now the spots read Bloomingdale, East Harlem, Little Italy.
  • Lyria said no. Prompts naming real artists came back PROHIBITED_CONTENT. Fix: Qloo's artist tags (Indie Folk, Melancholic, Guitar) become the prompt, and names are never sent.
  • The poster forged a logo. The first poster drew a brand-like monogram, invented "123 Mulberry Street" and doubled a word. Fix: the prompt now allows exactly three text items, no marks, no addresses and no dates.
  • The wrong brand. "Parachute Home" matched "The Home Depot". Fix: a name-similarity check, a confirmation step, and look-alike brands as a fallback.

Accomplishments that we're proud of

  • A new signal from Qloo: taste minus busyness. A broker can't see it, and an LLM on its own can't either.
  • An agent that can't make up a venue. Every place and partner it recommends cites a Qloo id that a tool actually returned.
  • Nine distinct Qloo query types working together in one decision, from demographics to geohash heatmaps to place explainability.
  • A real product, not a notebook: accounts, onboarding, workspaces, row-level security, share links and an outreach tracker.
  • Output you can act on today: real addresses and phone numbers, drafted emails, a printable poster and a playable track.

What we learned

  • Grounding is a check you run, not a prompt you write. Give the agent ids rather than names, and validate them before you accept the answer.
  • Put the slow model at the edge, the fast tools behind it, and let the client hold the loop. That design survives any platform timeout.
  • Look at the real distribution before designing the "wow". The data decided what a sweet spot could honestly mean.
  • Generative media needs per-brand guardrails. No marks, no invented facts, and someone checks the output.

What's next for Relocates

  • A Shopify app install, so real customer zip codes from orders sit beside Qloo taste: where buyers live versus where the taste lives.
  • Rent and listing data next to every sweet spot, so the gap between taste and busyness becomes dollars.
  • City comparison, to choose between Austin and Chicago before choosing a block.
  • Send and track outreach in the app, with replies flowing into the tracker.

Built With

Share this project:

Updates

Submission history