옆에서 본 코골이, 수면무호흡증일 수 있는지 3분 무료진단으로 확인해요
Translation pending
HealthTypeScript · HTMLGitHub @fe1220OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
snore-checker 실험용 복제본
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
수면무호흡 환자의 약 85%가 진료를 받지 않는다. 정보는 있지만, 내 코골이가 병원에 가볼 만한 상태인지 스스로 판단하지 못해서 밴드·스프레이·각방으로 버틴다. 질문 9개에 답하면 내 코골이가 혼자 대처해도 되는지, 검사가 필요한지 판정(신호 약함 / 상담 권유 / 검사 권유)을 바로 받고, 검사가 필요하면 근처 수면클리닉의 원 페이지로 넘어가는 서비스다. 첫 질문에서 "내 코골이"와 "함께 자는 사람의 코골이" 중 하나를 고르고, 경로에 맞는 말로 묻는다. 함께 자는 사람의 코골이라면 리포트를 그 사람에게 링크로 보낼 수 있다. • 서비스 링크: https://snore-checker-lab.vercel.app • 제출 당시 버전: https://snore-check.vercel.app (원본 레포). 이 레포는 제출 뒤 메타 광고 1차 결과를 반영해 문제 정의와 화면을 다시 잡은 실험용 레포다. • 대상: 자기 코골이가 걱정인 당사자, 또는 함께 자는 사람의 코골이가 걱정인 사람. 누구에게 말을 걸지는 H1으로 검증한다 • 북극성 지표: 검사 권유 판정을 본 사람 중 병원에 연결된 비율(병원 외부 링크 클릭 또는 전화 걸기)Read the full README ↗
수면무호흡 환자의 약 85%가 진료를 받지 않는다. 정보는 있지만, 내 코골이가 병원에 가볼 만한 상태인지 스스로 판단하지 못해서 밴드·스프레이·각방으로 버틴다.
질문 9개에 답하면 내 코골이가 혼자 대처해도 되는지, 검사가 필요한지 판정(신호 약함 / 상담 권유 / 검사 권유)을 바로 받고, 검사가 필요하면 근처 수면클리닉의 원 페이지로 넘어가는 서비스다. 첫 질문에서 "내 코골이"와 "함께 자는 사람의 코골이" 중 하나를 고르고, 경로에 맞는 말로 묻는다. 함께 자는 사람의 코골이라면 리포트를 그 사람에게 링크로 보낼 수 있다.
제출 이후 변경: 크롤러가 매주 월요일 03:00(KST)에 GitHub Actions로 병원 데이터를 다시 수집해
frontend/src/data/*.json을 자동 커밋한다. 그래서 제출 뒤에도 이 저장소와 배포된 사이트의 병원 목록이 바뀔 수 있다.
| 과제 요구사항 | 어디에 있나 |
|---|---|
| 서비스가 배포된 링크 | https://snore-checker-lab.vercel.app (제출 당시 버전: https://snore-check.vercel.app) |
| 문제 정의 및 기획 과정 | 핵심 문서 표의 순서대로 읽으면 된다. 결정이 바뀐 과정은 기획 로그 |
| 주요 트러블슈팅 기록 | docs/troubleshooting.md |
| 크롤링 + 원 페이지 외부 링크 | 레즈메드 크롤링이 기본이고, 공공 데이터와 학회 목록으로 보강했다. ① 레즈메드 수면다원검사 병원찾기 337곳을 크롤링했다. 병원 카드의 "병원 정보 보기"가 레즈메드 병원 상세 페이지로 가고, 링크 337개가 모두 살아 있다. ② 레즈메드 목록만으로는 사는 시·군·구에 병원이 없는 인구가 20.4%라, 심평원 공공 데이터의 수면다원검사 실시기관을 더해 744곳으로 넓혔다(11.0%로 줄어든다). 레즈메드 좌표가 6곳 중 1곳꼴로 틀린 것도 이 데이터로 고쳤다. ③ 대한수면연구학회 목록을 크롤링해 73곳에 학회 배지를 달았다. 레즈메드 밖의 병원은 홈페이지(약 50곳, 매주 재크롤링으로 바뀐다)나 지도 검색으로 연결한다 (데이터 품질, 공급 공백) |
이 세 문서로 문제 → 해법 → 사업성이 이어진다.
| 순서 | 문서 | 목적 | 핵심 |
|---|---|---|---|
| 1 | 문제 정의 | 누구의 어떤 문제를 푸는지 | 현상은 환자의 약 85%가 진료를 받지 않는 것, 문제는 "내 코골이가 병원에 가볼 만한 상태인지 스스로 판단하지 못한다"(메인)와 경로(보조)다. 갈래를 펼친 5Why로 골랐고, 고쳐 온 과정은 문제 정의 전략에 있다 |
| 2 | 솔루션 방향 | 가설마다 무엇으로 대응하고 어떻게 확인하는지 | 가설 H1~H4마다 솔루션 단계 하나(첫 질문으로 경로 나누기, 판정, 근처 수면클리닉, 공유 링크)를 붙이고 퍼널 지표로 확인한다. 목적은 병원에 보내는 게 아니라 맞는 대처를 고르게 하는 것이다. 크롤링 요구 대응 포함 |
| 3 | 비즈니스 임팩트 | 누가 돈을 내고 왜 내는지 | 고객은 검사하는 병원이다. 병원 광고는 이미 병원을 찾는 사람에게만 닿고, 숨은 환자는 코골이를 단순 코골이로 여겨 용품을 찾고 병원은 찾지 않는다. 이 서비스는 검사 권유로 판정받은 사람을 넘긴다. 핵심 숫자는 병원 연결 1건당 비용. 진료받지 않는 환자 약 110만 명, 그중 30~60대 남성 약 78만 명. 수익은 목록 정액 광고(건당 수수료는 의료법 위반) |
| 궁금한 것 | 문서 | 핵심 |
|---|---|---|
| 무엇이 틀릴 수 있나 | 가설 검증 | H1 당사자에게 말을 거는 게 병원까지 더 잘 이어진다(1차 광고 뒤 뒤집어 검증 중), H2 판단이 안 서서 안 간다(메인), H3 경로(보조), H4 배우자 경로에서 당사자는 따라간다. 2차 광고는 경로별 결과 조회 100건에서 한쪽이 70% 이상인지로 H1을 판정한다 |
| 왜 이렇게 정했나 | 기획 로그, 문제 정의 전략 | 10월 2일 방향 재정리, 10월 3일 가설 재정리, 10월 6일 H1 재검토·문제 정의 재편·화면 설계(현재 결론) |
| 화면은 어떻게 짰나 | 화면 설계 | S1 랜딩·첫 질문(경로 고르기) → S2 질문 9개 → S3 리포트 → S4 근처 수면클리닉. 40~60대 접근성 기준 |
| 데이터와 구현은 | 아키텍처, 작업별 스펙 | DB 없이 크롤링 JSON을 커밋한다. 레즈메드 + 심평원 공공 데이터 + 학회 목록 |
| 제대로 만들었나 | 검증: 근처 수면클리닉, 접근성과 문구, 병원 데이터 | 작업마다 체크리스트와 결과, 가상 사용자 테스트 |
| 어디서 막혔나 | 트러블슈팅 | 레즈메드 데이터가 JS 문자열 안에 있음, 좌표 6곳 중 1곳 오류, 수집 차단, 메타 토큰 만료, GA4 확인, 죽은 홈페이지 링크 등 9건 |
참고: 기술 스택 근거 · 에이전트 운영 기록 · 구현 계획(작업 폴더별 plan.md, 길다)
★ = 꼭 읽을 문서
docs/
├── problem-definition.md ★ 문제 정의
├── solution-direction.md ★ 솔루션 방향
├── business-impact.md ★ 비즈니스 임팩트
├── problem-framing.md 문제 정의 전략 (5Why, 고쳐 온 과정)
├── validation.md 가설 검증
├── planning-log.md 기획 로그
├── meta-ads/ 메타 광고 유입 검증
│ ├── strategy.md 전략·결정·소재
│ ├── creatives/ 소재 이미지
│ └── results/ 결과 리포트
├── research/ 기획 문서의 근거 자료
│ ├── evidence.md 수치 원출처 (환자 수·유병률·유배우율·수가)
│ ├── benchmark.md 국내외 서비스 46건 비교
│ ├── clinic-survey.md 국내 수면클리닉 95곳 홈페이지 전수 조사
│ ├── competitors.md 기존 플레이어
│ ├── voc.md 환자·가족 후기, 아버지 인터뷰
│ ├── awareness.md 대중 인지도
│ ├── snoring.md 코골이와 수면무호흡
│ ├── snoring-surgery.md 단순 코골이 수술 근거
│ ├── business-model.md 병원 수입·의료법·광고
│ ├── marketing.md 수면클리닉 마케팅
│ ├── retention.md 진료 이후 리텐션
│ ├── crawl-targets.md 크롤링 대상
│ ├── accessibility.md 40~60대 접근성 기준 (→ work/02)
│ ├── copy-audit.md 화면 문구 감사 (→ work/02)
│ ├── data-quality/ 병원 데이터 품질 검사 (→ work/03)
│ └── supply-gap/ 시·군·구별 병원 공백 (→ work/03)
├── ux-spec.md 화면 설계 (화면 전체)
├── architecture.md 아키텍처 (데이터 흐름·계약·분석)
├── work/ 작업별 spec.md(스펙)·plan.md(구현 계획)·verification.md(검증)
│ ├── 01-clinic-list/ S4 근처 수면클리닉
│ ├── 02-a11y-copy/ 40~60대 접근성과 쉬운 문구 (+ screenshots/)
│ ├── 03-clinic-data/ 병원 데이터 보강 (+ persona-test.md 가상 사용자 테스트)
│ ├── 05-meta-report/ 메타 광고 결과 리포트 스크립트
│ ├── 08-measurement/ 판정 단계별 퍼널 측정
│ └── 09-landing-paths/ 랜딩 재설계와 당사자·배우자 경로
├── troubleshooting.md 트러블슈팅
├── tech-stack.md 기술 스택 근거
├── agent-log.md 에이전트 운영 기록
└── archive/ 범위에서 뺀 조사 (기면증·렘수면, 쓰지 않은 질문지)
기획·조사
| 작업 | 내용 | 근거 |
|---|---|---|
| 문제 정의와 재정의 | 직접 사례에서 출발해 "괴로운 사람과 병원에 갈 사람이 다르다"로 시작했다. 1차 광고와 일반 키워드 글 4,207건을 보고 배우자 전제를 빼고, 갈래를 펼친 5Why로 "스스로 판단하지 못한다"를 문제로 골랐다. 문장이 바뀐 8단계를 기록했다 | 문제 정의, 문제 정의 전략, 근거 자료 |
| 경쟁·벤치마크 | 국내외 서비스 46건을 직접 확인했다. 옆에서 본 것으로 체크해 중립 병원 목록까지 잇는 곳은 0건이었다 | 벤치마크 |
| 수면클리닉 전수 조사 | 학회 수면클리닉 95곳 홈페이지를 확인했다. 배우자에게 직접 말을 거는 곳은 0곳이었다 | 전수 조사 |
| 사업성 | 광고주(검사하는 병원)의 문제, 시장 크기, 의료법상 가능한 수익 모델을 정리했다 | 비즈니스 임팩트 |
| 공급 공백 분석 | 레즈메드 목록만으로는 시·군·구 230곳 중 124곳(인구 20.4%)에 병원이 없었다. 전체 검사기관으로 넓히면 11.0%로 준다. 군 82곳 중 78곳은 여전히 0곳이다 | 공급 공백 |
| 유입 검증 | 1차: 검색하지 않는 배우자를 데려올 수 있는지 메타 광고(8.5만 원, 소재 5개)로 쟀다(분석). 2차: 체크 완료로 최적화해 경로별·판정 단계별 퍼널로 H1·H2를 본다. make meta-report 한 번으로 메타 광고비와 GA4 퍼널을 합쳐 병원 연결(링크·전화) 1건당 비용까지 리포트로 만든다 | 메타 광고 전략 |
서비스
| 작업 | 내용 |
|---|---|
| 랜딩과 경로 | 약속("코골이, 병원에 가볼 만할까요?")과 첫 질문만 둔 랜딩. "내 코골이 / 함께 자는 사람의 코골이"를 고르면 같은 질문 9개를 경로에 맞는 말로 묻는다. 판정 기준은 같다 |
| 수면 체크 리포트 | 병일 수 있는지(3단계), 치료하면 무엇이 나아지는지, 방치하면 어떤지를 비교 막대로 보여준다. 검사 받는 법과 비용을 붙였다 |
| 리포트 공유 | 함께 자는 사람의 코골이를 체크했다면 카톡 등으로 그 사람에게 보낸다. 답은 주소의 # 뒤에만 담아 저장·전송하지 않는다 |
| 근처 수면클리닉 | 744곳을 시·도별로 보거나, 누를 때만 위치 권한을 받아 가까운 순으로 본다. 전화하기와 병원 원 페이지 링크 |
| 분석 | GA4·메타 픽셀로 경로 선택 → 체크 완료 → 병원 목록 → 병원 연결(링크 클릭·전화 걸기)을 기록한다. 경로와 판정 단계는 GA 사용자 속성으로 저장해 사람 수 기준으로 나눠 본다. 픽셀에는 둘을 ClinicClick 하나로 보낸다. 개인정보 처리방침을 붙였다 |
데이터
| 작업 | 내용 | 근거 |
|---|---|---|
| 크롤러 | 레즈메드 병원찾기와 학회 목록을 매주 GitHub Actions로 수집해 JSON으로 커밋한다. DB와 백엔드가 없다 | 아키텍처, 기술 스택 |
| 데이터 품질 | 레즈메드 좌표가 6곳 중 1곳꼴로 500m 넘게 틀린 것을 찾아 공공 데이터로 고쳤다. 상세 링크 337개가 모두 살아 있는지 확인했다 | 데이터 품질 |
| 목록 확장 | 337곳에서 심평원 수면다원검사 실시기관 744곳으로 넓히고, 학회 목록 병원 73곳에 배지를 달았다 | 공급 공백 |
품질
| 작업 | 내용 | 근거 |
|---|---|---|
| 40~60대 접근성 | 글자 16px 이상(본문 18px), 터치 영역 48px 이상, 글자 대비 7:1. 글자 130%·200%와 폭 320px에서 깨지지 않게 했다. 브라우저 측정 88개를 make gate와 CI에 넣었다 | 기준과 측정값, 스크린샷 66장 |
| 쉬운 문구 | 화면 문구 148건을 감사해 35건을 고쳤다. 코 고는 사람을 부르는 말은 경로별로 정했다(배우자 경로는 주어 없이, 필요한 곳만 "코 고는 사람") | 문구 감사, DESIGN.md 용어표 |
| 검증 | 단계마다 검증 기준을 먼저 쓰고, 구현과 다른 세션이 판정했다 | 작업별 검증 |
| 가상 사용자 테스트 | 에이전트가 40~60대 배우자, 공유받은 남편, 군 지역, 위치 권한 거부 등 페르소나 8명으로 배포본을 첫 화면부터 병원 링크까지 써봤다. 모호한 비용 문구, 중복 지도 링크를 고쳤고, 신호가 약한데 위험 막대가 나오는 문제 등 4건은 결정이 필요한 과제로 남겼다. 실제 사용자 근거는 아니다 | 가상 사용자 테스트 |
| 작업 방식 | 문서 승인 전에는 코드 수정을 훅으로 막고, 푸시 전후로 같은 게이트(타입·린트·테스트·빌드·접근성)를 돌렸다. 에이전트에게 맡긴 일과 버린 것을 기록했다 | 에이전트 운영 기록, 트러블슈팅 |
| 출처 | 쓰는 곳 | 갱신 |
|---|---|---|
| 레즈메드 수면다원검사 병원찾기 | 병원 337곳, 병원 상세 페이지 링크 | 매주 GitHub Actions |
| 건강보험심사평가원 "전국 병의원 및 약국 현황" (공공누리 제1유형) | 좌표 교정, 수면다원검사 실시기관 목록 확장 | 분기마다 수동 (절차) |
| 대한수면연구학회 수면클리닉 찾기 | 학회 목록 배지 | 매주 GitHub Actions |
Node.js 24+, pnpm이 필요하다 (corepack enable pnpm).
make setup # 의존성 설치, frontend/.env.local 생성
make dev # http://localhost:3000
make crawl # 크롤링 → frontend/src/data/hospitals.json
make meta-report # 메타 광고 + GA4 숫자 → docs/meta-ads/results/<날짜>.md (설정: reporting/.env.local)
make gate # 타입체크·린트·포맷·테스트·빌드, 크롤러 테스트, 접근성 측정
DB와 백엔드 서버 없이 동작한다. 체크 응답은 저장하거나 보내지 않고 리포트 주소의 # 뒤에만 담는다. 근거는 tech-stack.
Next.js (App Router) · Tailwind CSS v4 · shadcn/ui · Playwright + axe (접근성 측정) · GitHub Actions (크롤러, 게이트) · Vercel · GA4