DEV Community

이희진
이희진

Posted on

Comparing shop locations in Seoul by dropping map pins: three hypotheses and what I've built so far

I'm building a free side project for people scouting a location for a shop or café in Seoul. You drop a pin on the map and drag it around to compare nearby spots. No sign-up is needed. It's in public testing and currently covers only the main commercial districts in Seoul (Gangnam Station, Myeongdong, Jamsil, Jongno, Yeouido, Hongdae and a few more). The interface is in Korean.

Try it: https://street-trade-area-analysis.vercel.app/?utm_source=web_devto&utm_medium=post&utm_campaign=poc1

The three hypotheses I started from

I haven't validated these yet. I'm publishing the tool to find out if they hold.

  • People scouting a location scroll a map app, count shops one by one, and note the category, floor and opening date separately.
  • Existing commercial-area tools report statistics per administrative district or area, so the difference between two neighboring streets is hard to see.
  • The number people care about most, "how much does the shop next door sell?", means digging through scattered sources, and the basis for any figure is unclear.

What it does now

  • For a pin, it lists the shops within 100–300 m along the road (name, category, floor, distance along the road) and counts shops by category.
  • Because it works on the stretch of road around a pin instead of a whole district, you can drag the pin and compare neighboring spots directly.
  • It shows an estimated monthly sales figure per shop, based on the average for the same category and area, with the calculation basis shown.
  • You can download the result as CSV.

Data: Seoul Commercial Area Analysis Service (estimated sales), Small Enterprise and Market Service shop data, Seoul permit data, road data © OpenStreetMap contributors, map by Kakao Map.

How it works

  • Stack: a single Next.js (App Router, TypeScript) app. The data is precomputed into a read-only SQLite database (better-sqlite3), and the geometry uses turf.js: the pin is snapped to the nearest road line, a stretch of road around it is cut out (100–300 m), and the shops that front that stretch are listed.
  • Estimated monthly sales: the Seoul Commercial Area Analysis Service publishes estimated sales per commercial area and industry. They are derived from card payment amounts divided by a correction ratio (see the service's own notes). For each shop I take its area and industry (mapped from the small-business registry's category) and compute: area-industry sales total ÷ number of months ÷ number of shops in that area and industry. Every shop in the same area and industry therefore gets the same number.
  • If a shop isn't inside a commercial area, or the area has no data for its industry, it falls back to the administrative-district average and the UI labels it as such. If there's no data, it shows "cannot estimate" instead of a number.
  • Floor, shop size and brand are not factored in, and the calculation is shown in the detail panel so you can redo it by hand.

What I haven't done, and the limits

  • The sales figures are averages, not actual sales. I haven't checked how well they match real sales yet.
  • A shop is matched to a commercial area by approximate distance from the area's center, so the match at the edge of an area can be off.
  • Only the main commercial districts in Seoul are covered.
  • It opens on mobile, but the table is wider than the screen, so a desktop browser is recommended.
  • Usage events (page views, clicks, UTM referrer) are collected for analysis; details are in the privacy policy: https://street-trade-area-analysis.vercel.app/privacy

Feedback I'd like

  • Is the pin-and-drag flow clear?
  • Do the shop list and the estimates help when comparing spots?
  • What's missing?

Comments are welcome.

Top comments (0)

⌂ 换网址