Retail site selection is a problem that costs brands millions of dollars every year. Most expansion decisions are made using intuition, broker relationships, and basic demographic reports -- tools that have not meaningfully changed in decades.
After speaking with the founder of GrowthFactor, a company working on bringing data intelligence to retail real estate, I started thinking about a question: could you build a lightweight hackathon version of what a data-driven site selection tool might look like? Not a production solution, but a proof of concept that shows what is possible when you fuse public data sources with modern vector search techniques. That question became GoldenPin.
GoldenPin works by treating every retail market as a data fingerprint. Using the US Census ACS API, Google Places API, and BLS Consumer Expenditure Survey data, we build a feature profile for each zip code across 10 major US metros -- capturing median income, population density, and the number of existing competitors per retail category. Each profile is then encoded as a 384-dimensional embedding using sentence-transformers and stored in a Supabase pgvector database.
When a retailer enters their best performing store address and category, GoldenPin generates an embedding for that location and runs a cosine similarity search against all stored markets. The top 50 similar markets are then re-ranked by a demand gap score -- a normalized measure of consumer spending potential relative to existing competitor supply. The final blended score weights similarity at 60 percent and demand gap at 40 percent, surfacing markets that both resemble your proven customer base and have significant unmet demand.
Results appear as ranked, color-coded pins on an interactive Mapbox map. Clicking any pin opens a location brief generated by the Gemini API and narrated aloud by ElevenLabs, giving the user an analyst-style summary of why that market represents an opportunity.
The entire data pipeline -- from Census and Google Places API calls through feature engineering, normalization, embedding generation, and Supabase insertion -- was built and executed in a Sphinx notebook, which helped surface additional data source ideas during the ETL process.
Built With
- elevenlabs
- fastapi
- gemini
- mapbox
- postgresql
- python
- react
- sphinxai
- supabase
- tailwindcss
- typescript
- uvicorn
- vite
Log in or sign up for Devpost to join the conversation.