GapProof
정리되지 않은 경험을 근거 문장과 확인된 역량으로 바꾸고, 목표 직무의 격차와 이번 주 행동까지 연결하는 AI 진로상담 지원 제품입니다.
- 단위 테스트
- 163 통과
- 브라우저 엔진
- 3종 QA
- 반응형 기준
- 4개 뷰포트
- RLS 검증
- 9/9 차단
- Next.js
- React 19
- Supabase Auth
- PostgreSQL/RLS
- Upstage Solar
- Cloudflare

01 · 문제 정의
경험은 있지만, 경력의 언어로 옮기기 어려운 사람이 있습니다.
돌봄, 아르바이트, 학업, 게임, 취미처럼 이력서 밖에 머무는 경험은 실제 행동을 포함해도 역량으로 설명하기 어렵습니다. 기존 도구처럼 적성이나 취업 가능성을 점수로 단정하지 않고, 사용자가 제공한 경험에서 확인 가능한 문장만 찾아 다음 행동으로 연결하는 제품이 필요했습니다.
02 · 핵심 흐름
자유롭게 쓰고, AI가 제안하고, 사용자가 확정합니다.
- 동의원문 처리와 익명 통계 공유를 별도로 선택합니다.
- 경험 입력정리되지 않은 문장 그대로 시작할 수 있습니다.
- 역량 후보AI가 역량 이름과 그 근거가 된 원문 인용을 함께 제안합니다.
- 사용자 확인확인·수정·거절을 직접 결정합니다. 수정하면 확인 상태가 초기화됩니다.
- 격차와 행동목표 직무와 비교해 이번 주에 실행할 한 가지 행동을 고릅니다.
- GapProof개인용 증거 카드와 상담용 Gap Brief를 서로 다른 공유 범위로 만듭니다.
03 · 구현
데모 화면 뒤에 인증·권한·실패 경로까지 연결했습니다.
인증형 SaaS
Supabase 이메일 인증과 Google·Kakao OAuth 흐름을 구현했습니다. Google은 현재 테스트 사용자 범위이며, 공개 동의 화면 승인은 남아 있습니다.
데이터 경계
9개 테이블에서 익명 접근을 차단하는 RLS 정책을 확인하고, 원문·확인 상태·결과 데이터의 책임을 분리했습니다.
AI 폴백
Solar 호출 결과와 샘플 폴백을 화면에서 명확히 구분해, 실제 분석처럼 오해하지 않도록 했습니다.
삭제와 공유
삭제 시 로컬 입력·후보·선택·결과를 함께 비우고, 개인 카드와 기관용 요약의 공유 범위를 분리했습니다.

04 · 검증
통과 숫자를 부풀리지 않고, 실패와 재검증을 함께 기록했습니다.
- 단위 테스트: 163개 통과
- 브라우저: Chromium·Firefox·WebKit 확인
- 화면: 320·375·768·1440px와 접근성 자동 점검
- E2E: 전체 실행에서 451개 통과, 5개는 머신 부하 타임아웃이었습니다. 해당 묶음의 단독 재실행은 90/90 통과했습니다.
- 보안: 비밀값 스캔 0건, 운영 테스트 잔여 데이터 0건 확인
05 · 벤치마크
잘 만든 서비스의 강점을 분석하고, 증거 중심 원칙으로 차별화했습니다.
삶의 경험에서 기술과 진로 가능성을 찾는 명료한 시작 흐름을 참고했습니다.
기술을 어디에서 사용했는지 맥락과 연결하는 방식을 참고했습니다.
주장과 검증된 자격을 구분하고 사용자가 공유 범위를 통제하는 원칙을 참고했습니다.
분석 결과를 문서로 끝내지 않고 다음 행동으로 이어주는 구조를 참고했습니다.
디자인이나 문구를 복제하지 않았습니다. GapProof의 차이는 ‘원문에 실제로 존재하는 인용 + 사용자 확인’이 함께 있어야만 증거로 취급한다는 점입니다.


06 · 현재 경계
완료한 것과 남은 것을 구분합니다.
공개 데모, 이메일·소셜 로그인, 데이터 정책과 핵심 분석 흐름은 확인할 수 있습니다. Google OAuth 공개 동의 화면 승인, 계정 삭제 완결, 다른 기기에서의 이메일 확인 흐름은 다음 운영 단계입니다.