Seoul storefront acquisition risk analysis service using public commercial district and transaction data.
서울 소형 상가 매입 전, 추천보다 매입 보류 사유를 먼저 제시하는 투자 리스크 진단 서비스입니다.
공공데이터를 기반으로 가격 부담, 거래 유동성, 상권 과밀, 수요 취약도를 함께 분석하고, 대체 후보 지역까지 확인할 수 있도록 웹 화면으로 구현했습니다.
Redveil is a public, portfolio-ready web service for screening Seoul storefront acquisitions before a buyer over-commits to a deal. It turns raw transaction and commercial-district data into a decision memo: risk score, hold reason, evidence, next checks, and safer comparison candidates.
| Reviewer Question | Redveil Answer |
|---|---|
| What problem does it solve? | It helps reject or pause risky-looking storefront deals before detailed underwriting. |
| What makes it different? | It is hold-first, not recommendation-first: the first output is why to stop, compare, or verify. |
| What data does it use? | 12,074 commercial transaction records, 25 Seoul districts, 427 admin-dongs, and 1,520 trade-area demand records. |
| What is the user flow? | Review one property, run a 3-minute diagnosis, compare candidate districts, and inspect district reports. |
| How is it verified? | Unit tests, static-page checks, server/API smoke tests, browser E2E checks, responsive QA, and public URL checks. |
- Fixed validation cases cover three interpretation bands: high-risk hold, ambiguous compare-first, and conservative-review.
- The property-review flow is browser-tested from example click to saved memo persistence.
- The public payload can rebuild from local raw data or fall back to a tracked public-safe snapshot.
- Absolute local paths were removed from runnable scripts and generated dashboard links.
- Risk-model limits are documented explicitly so the score is treated as a screening signal, not investment advice.
| Item | Description |
|---|---|
| Problem | 소형 상가 매입 전, 좋아 보이는 매물의 위험 신호를 빠르게 걸러내기 어렵다 |
| Coverage | 서울 25개 구, 행정동 427개, 수요 취약 상권 1,520개 |
| Transaction Data | 상업업무용 부동산 거래 원천 데이터 12,074건 |
| Output | 리스크 점수, 매입 보류 사유, 대체 후보, 구별 리포트 |
| Product | GitHub Pages 기반 공개 웹서비스 |
| Role | 문제 정의, 데이터 수집·가공, 리스크 지표 설계, 웹 화면 구현, 문서화 전부 수행 |
- Live Site: GitHub Pages
- Repository: Seoul-Storefront-Redveil
- Portfolio Case Study: docs/PORTFOLIO_CASE_STUDY.md
- Data Sources & Update Guide: docs/DATA_SOURCES.md
- Key Flow: 매물 검토 → 3분 진단 → 후보 비교 → 구별 리포트
- Live Site: GitHub Pages
- Local Run:
pip install -r requirements.txt→python src/redveil/pipelines/export_website_payload.py→python app/server.py --host 127.0.0.1 --port 8030 - Windows Scripts:
run_site.ps1,run_site.bat,run_streamlit.ps1,run_streamlit.bat - Verification Scope: VERIFY.md
The project is designed to be reviewable without private local data. The current verification ladder is:
python -m unittest discover -s tests -p "test_*.py"
python src/redveil/pipelines/export_website_payload.py
python scripts/check_site_smoke.py
python scripts/check_review_e2e.py
python scripts/check_service_flows_e2e.py
python scripts/check_responsive_pages.py
python scripts/check_public_site.pycheck_site_smoke.py is CI-friendly and validates the local server, static pages, public payload, and core APIs. Browser checks are kept optional because they require Node.js, Playwright, and a local Chrome or Edge runtime.
- 서울 25개 구를 한 화면에서 비교하고 위험 구를 빠르게 걸러낼 수 있습니다.
- 매물 1건을 입력하면 리스크 점수, 보류 사유, 대체 후보를 바로 확인할 수 있습니다.
- 분석 결과를 문서가 아니라 공개 웹사이트로 배포해 사용 흐름까지 보여줍니다.
상가 매입 판단은 가격만으로 끝나지 않습니다.
실제 검토 단계에서는 거래량이 줄고 있는지, 이미 업종이 과밀한지, 수요가 약한 신호가 있는지, 같은 조건에서 더 나은 대체 후보가 있는지를 함께 봐야 합니다.
Redveil은 이 과정을 사용자가 바로 써볼 수 있는 공개 웹사이트 형태로 옮긴 프로젝트입니다.
서울 25개 구를 비교하고, 매물 1건을 검토하고, 보류 사유와 대체 후보를 확인하는 흐름까지 하나의 서비스 경험으로 연결했습니다.
- 상권 분석 자료는 많지만, 실제 매입 판단 언어로 번역된 서비스는 부족했습니다.
- 좋은 매물을 찾는 것보다 먼저
사지 말아야 할 신호를 빠르게 거르는 도구가 필요했습니다. - 분석 결과를 노트북이나 리포트에만 두지 않고, 사용자가 직접 탐색할 수 있는 형태로 보여주고 싶었습니다.
- 지금 검토 중인 상가를 사도 되는지 빠르게 1차 판단하기 어렵습니다.
- 구 단위 지표가 흩어져 있어
왜 위험한지까지 한눈에 이해하기 어렵습니다. - 분석 결과가 내부 자료에만 머무르면 사용자가 바로 써볼 수 없습니다.
- 서울 25개 구 리스크를 비교하는 공개 웹사이트
- 매물 1건을 입력해 리스크 점수와 보류 사유를 보는
내 매물 검토화면 - 빠른 입력으로 1차 판단을 돕는
3분 진단화면 - 여러 후보 구를 비교하는
후보 비교화면 - 구별 리포트와 프로젝트 근거 요약
- 공공데이터 수집, 가공, 점수 계산, 웹사이트 payload 생성 파이프라인
| Item | Description |
|---|---|
| Service Type | GitHub Pages로 공개 배포된 웹사이트 |
| Coverage | 서울 25개 구, 행정동 427개, 수요 취약 상권 1,520개 |
| Transaction Data | 상업업무용 부동산 거래 원천 데이터 12,074건 |
| Main Output | 리스크 점수, 보류 사유, 대체 후보, 구별 리포트 |
| Differentiation | 추천 중심이 아니라 보류 사유 중심 판단 흐름 설계 |
README_HERO.svg는 상위 위험 구, 대표 검토 메모, 대체 후보를 한 장에 정리한 소개용 보드입니다.README_EVIDENCE.svg는 수요 취약 상권과 행정동 과밀 데이터를 직접 시각화한 근거 보드입니다.- 실제 세부 화면 캡처는 dashboard/ 폴더에서 개별 파일로 확인할 수 있습니다.
- Main: https://dffxonnb-cyber.github.io/Seoul-Storefront-Redveil/
- Review: review.html
- 3-Minute Assessment: assessment.html
- Candidate Comparison: compare.html
- District Reports: districts.html
- Data Collection & Processing:
Python,pandas,requests - Frontend & Visualization:
HTML,CSS,JavaScript,Streamlit - Deployment:
GitHub Pages - Data Sources: 국토교통부 상업업무용 부동산 매매 실거래가 API, 서울시 상권분석 서비스, 소상공인시장진흥공단 상가(상권) 정보
- 저장소의 코드와 문서는 MIT License를 따릅니다.
- 공공데이터 원천의 권리와 이용 조건은 각 제공기관 정책을 따릅니다.
개인 프로젝트로 아래 범위를 전부 직접 수행했습니다.
- 문제 정의와 서비스 콘셉트 설계
- 공공데이터 수집 및 가공 파이프라인 작성
- 리스크 점수 축 설계와 결과 payload 생성
- 웹사이트 정보 구조, 카피, 프론트엔드 구현
- 문서 정리, 프로젝트 근거 요약 구성, 배포
| Path | Description |
|---|---|
data/ |
원천 데이터와 중간 산출물 관리 |
notebooks/ |
분석 노트북 |
src/ |
데이터 파이프라인과 계산 로직 |
app/ |
공개 웹사이트와 실행용 서버 |
dashboard/ |
README용 캡처 이미지와 대시보드 자산 |
docs/ |
PRD, 사용자 여정, 검증 전략, 리스크 모델 문서 |
README.md |
프로젝트 소개와 사용 안내 |
1. 의존성을 설치합니다.
pip install -r requirements.txt2. 웹사이트에 사용할 데이터를 생성합니다.
python src/redveil/pipelines/export_website_payload.py3. 로컬 서버를 실행합니다.
python app/server.py --host 127.0.0.1 --port 8030Windows에서는 run_site.ps1 또는 run_site.bat로 같은 흐름을 빠르게 실행할 수 있습니다.
4. 브라우저에서 아래 주소를 엽니다.
http://127.0.0.1:8030
http://127.0.0.1:8030/review.html
http://127.0.0.1:8030/assessment.html
http://127.0.0.1:8030/compare.html
http://127.0.0.1:8030/districts.html