포지셔닝
Reputo는 직업 하나를 리포트 한 장으로 읽는 데서 시작합니다. 나와 맞는지 비교한 뒤, 그 일을 하는 사람과 한 시간을 함께 보내는 과정까지 한 동선으로 잇습니다. 학생과 초기 진로 탐색자가 막연히 동경하던 직업을 이해할 수 있는 준비 경로로 바꿔 주는 다국어 커리어 탐색 사이트이고, 직업 백과사전도 진로 상담 서비스도 아닙니다.
시장과 문제 정의
학생들은 직업명을 알아도 그 일이 실제로 어떤 역량과 경험을 요구하는지, 어디서부터 준비해야 하는지 알기 어렵습니다. 기존 진로 정보는 (1) 직업 사전처럼 추상적이거나, (2) 성공담 위주로 현실 감각이 빠져 있거나, (3) 유료 진학 컨설팅처럼 접근성이 떨어집니다.
Reputo는 진로 탐색의 불안을 줄이기 위해 리포트 + 매칭 + 현직 확인 을 한 흐름 안에서 이어지게 설계했습니다. 직업 하나를 끝까지 읽고, 나에게 맞는 후보를 좁히고, 그 일을 하는 사람에게 직접 확인하는 순서입니다.
핵심 타깃과 페르소나
- 중, 고등학생, 대학생, 진로 후보를 넓게 탐색하면서도 막연함이 아니라 실행 단서를 얻고 싶은 사용자
- 초기 커리어 탐색자, 특정 직무에 관심은 있지만 “지금 무엇을 먼저 준비해야 하는지” 모르는 사용자
- 보호자, 교사, 멘토 역할, 학생에게 설명 가능한 자료와 구조화된 조언이 필요한 사용자
- 학교, 학원, 학생 여러 명에게 현직 확인 기회를 묶어서 주고 싶은 기관
- 다국어권 학생, ko / en / ja / zh-cn / zh-tw 5개 언어로 같은 직업을 자기 모국어로 접근
가치 제안과 차별점
- 리포트 한 장에 여섯 축을 담습니다. 무엇이 맞고 무엇이 힘든지, 학교와 대학, 진입 단계의 로드맵, 전공과 자격, 그 일의 현실, 자격증 밖에서 결과를 가르는 역량 넷, 읽을 책과 강의까지 한 페이지에 모았습니다. 모든 직업에 무료로 공개합니다.
- 5개 언어를 단순한 번역본으로 제공하지 않습니다. 같은 글을 옮기는 대신 각 나라의 제도에 맞춰 따로 씁니다. 약사라면 한국은 약사법과 국시원, 미국은 PharmD와 NAPLEX, 일본은 6년제와 약기법을 각각 기준으로 적습니다. 회사 예시도 로케일마다 다릅니다.
- 진로 매칭은 잘하는 것과 싫은 것, 지금 상황을 편하게 적으면 맞을 만한 직업을 골라 줍니다. 화면에 뜨는 근거 문장은 해당 직업 리포트에 손으로 써 둔 것입니다. 판정하는 모델은 어느 문장을 보일지 번호로만 답합니다. 적합도를 숫자로 매기지 않으며, 적어 넣은 원문은 서버에 남기지 않습니다.
- Reality Session에서는 현직자에게 물어보고, 실제 업무를 60분 동안 해 보고, 만든 것에 피드백을 받습니다. 결과뿐 아니라 접근 방식까지 짚습니다. 운영자가 현직으로 일하는 소프트웨어 엔지니어와 창업가, 두 직업만 열어 둡니다.
- 가입하지 않아도 탐색 기록이 쌓입니다. 저장한 직업과 최근 본 직업, 로드맵 진행 상황이 브라우저에 남아 다시 방문했을 때 이어집니다. 계정은 여러 기기에서 같은 목록을 보고 싶을 때만 연결합니다.
핵심 사용자 흐름
- 분야 탐색: 기술, 비즈니스, 의료, 금융, 디자인 같은 대분류에서 시작합니다.
- 리포트 읽기: 적합, 로드맵, 공부, 현실, 역량, 자료를 한 페이지에서 이어서 읽습니다.
- 좁히기: 진로 매칭으로 후보를 고른 뒤 두 직업을 나란히 비교하고, 취업 요건에서 진입 조건을 확인합니다.
- 준비 계획: 리포트의 로드맵 항목을 체크 항목으로 옮기고, 항목마다 메모합니다.
- 현직 확인: Reality Session으로 질문하거나 60분 동안 체험하고, 제출물에 피드백을 받습니다.
사용자 흐름, 동경에서 행동까지
flowchart LR
Browse["분야 탐색
(Tech, Business, ...)"]
Report["정밀 리포트
적합 · 로드맵 · 현실"]
Match["진로 매칭
후보 좁히기"]
Plan["준비 계획
체크 · 메모"]
Real["Reality Session
질문 · 60분 체험 · 피드백"]
Browse --> Report
Report --> Match
Match --> Plan
Plan --> Real
Real -.->|다시 좁혀진 관심| Browse탐색 → 검증 → 행동 → 재탐색의 닫힌 루프. 한 번의 방문이 끝이 아니라 진로 의사결정 과정 전체를 동반.
비즈니스 모델
- Reputo Plus 구독료는 월 $5, 연 $50입니다. 구독으로 잠기는 기능은 계정에 기록을 남기는 도구뿐입니다. 준비 계획의 체크 저장, 항목 메모, 저장 목록의 계정 동기화, 진로 매칭, Reality Session 요청, 이렇게 다섯 가지입니다. 직업 가이드와 정밀 리포트, 직업 비교, 취업 요건, 로드맵, 롤모델 읽기는 구독과 상관없이 열려 있습니다. 구독이 끝나도 적어 둔 내용은 지우지 않습니다.
- 학교와 학원 묶음은 Reality Session을 기관 단위로 신청받습니다. 인원과 직업을 적어 보내면 진행 방식과 비용을 답장으로 알려 드립니다.
- 제휴와 광고는 무료 리포트 안의 책과 강의 링크, 외부 링크로 나갈 때 한 번 뜨는 안내 칸이 전부입니다.
시스템 아키텍처 (기획 결정을 시스템으로)
기획적 결정 세 가지가 시스템 구조를 결정.
1. “5개 언어 콘텐츠 매트릭스를 1인이 유지 가능해야 한다.” → 직접 작성으로는 불가능한 규모를 runner.py 오케스트레이터로 처리: 단일 Anthropic Claude API 호출(api_client.py 의 _call_claude)이 리서치, 5개 언어 본문, 추천을 단계별 프롬프트로 수행하고, content_checker.py 가 검증, image_downloader.py 가 이미지 수집, persistence.py 가 디스크 출력을 담당. 운영자는 파이프라인 입력(직업, 인물 후보) 과 출력 검수만 담당.
2. “탐색 사이트는 정적이어야 SEO 와 속도를 모두 확보.” → Hugo 정적 빌드 + Tailwind. 콘텐츠가 마크다운 + JSON 데이터로 관리되어 빌드 한 번으로 5개 언어 전체 사이트 생성. pagefind 로 클라이언트 사이드 검색 인덱싱, 서버 검색 인프라 없이 5개 언어 검색 지원.
3. “판정은 모델에게, 문장은 사람에게.” → 진로 매칭은 mrlatte 레포의 Cloud Function 이 맡되, 함수가 돌려주는 것은 어느 직업의 어느 문장을 보일지에 대한 색인뿐이다. 화면에 닿는 문장은 전부 리포트에 손으로 써 둔 5개 언어 원문이라, 지어낸 수치나 번역투가 새로 들어올 자리가 없다.
flowchart TD
Source["입력 후보
(직업 · 인물 · 분야)"]
Runner["runner.py
오케스트레이터 (CLI)"]
Claude["api_client.py
_call_claude → api.anthropic.com
(리서치 · 5개 언어 본문 · 추천)"]
Check["content_checker.py
5개 언어 누락 · 링크 검증"]
Img["image_downloader.py
외부 공개 소스 이미지 수집"]
Persist["persistence.py
디스크 출력"]
Content[("content/ · data/
마크다운 + JSON")]
Hugo["Hugo build
(5개 언어 동시)"]
PF["pagefind
(클라이언트 검색 인덱스)"]
CDN["Firebase Hosting
(project mrlatte, site reputo)
reputo.net"]
Source --> Runner
Runner --> Claude
Runner --> Check
Runner --> Img
Claude --> Persist
Img --> Persist
Persist --> Content
Content --> Hugo
Hugo --> PF
Hugo --> CDN
PF --> CDN콘텐츠 생산은 파이프라인, 사이트는 정적 빌드, 검색은 클라이언트 인덱스, 운영 비용을 모든 layer 에서 압축.
기술 결정과 트레이드오프
- 사이트: Hugo + Tailwind + PostCSS. 5개 언어 동시 빌드. 다른 워크스페이스 서비스의 Vite + React 와 다른 선택, 콘텐츠 사이트는 정적 빌드가 SEO, 속도, 다국어 운영 모두 우위
- 콘텐츠 파이프라인: Python
runner.py오케스트레이터 (api_client / content_checker / image_downloader / persistence). 단일 운영자가 5개 언어 × N 직업 매트릭스를 유지 가능하게 만든 핵심 layer - 검색: pagefind (클라이언트 사이드 검색 인덱스). 서버 없이 5개 언어 전체 검색 지원
- 데이터:
jobs.json등 구조화 데이터로 직업 / 분야 매핑, 리포트는 직업마다 JSON 한 벌. 인물은content/people/<slug>/index.{ko,en,ja,zh-cn,zh-tw}.md5개 파일로 관리 - 계정: 사이트 자체는 서버가 없는 정적 빌드로 두고, 로그인과 저장, 매칭 판정만 공유 Firebase, Firestore named DB
reputo, mrlatte Cloud Function 에 맡김 - 포기한 것: 실시간 추천 / 알고리즘 피드 (정적 사이트 강점 유지), 자체 LLM 호스팅 (외부 API 가 비용 / 품질 모두 우위), 읽기 페이월 (SEO 퍼널과 제휴 수익이 무료 리포트에서 나옴)
운영 자동화
- 콘텐츠 파이프라인: 입력 후보 큐에서 출발해 리서치와 5개 언어 본문, 추천까지 한 흐름으로 처리하고, 운영자는 검수만 합니다.
- 5개 언어 누락 검증: 어떤 페이지든 다섯 언어 파일이 모두 있어야 빌드를 통과합니다.
- 책은 실재를 먼저 확인: 새 책을 넣을 때 ISBN을 공개 서지에서 조회해 실제 인쇄본인지 확인한 뒤에만 링크를 겁니다. 없는 상품 페이지로 가는 링크를 막는 유일한 방법입니다.
- 매칭 색인 동기화: 직업이나 적합 문장을 고치면 판정에 쓰는 색인을 같은 커밋에서 다시 만듭니다. 그러지 않으면 오류도 없이 엉뚱한 문장이 뜹니다.
- 사이트 배포: main push → Hugo 빌드 → Pagefind 인덱스 →
firebase deploy --only hosting:reputo --project mrlatte자동
현재 상태와 운영 신호
- 상태: 운영 중입니다. 5개 언어를 동등하게 운영하며, 모든 직업에 무료 리포트를 제공합니다.
- 시작: 2025-09 (콘텐츠 파이프라인 구축), 2026-01 정식 출시
- 인프라: Firebase Hosting 정적 지면, 이름 붙은 Firestore DB 하나, Python 콘텐츠 파이프라인으로 구성됩니다. 진로 매칭 판정은 mrlatte 레포의 Cloud Function이 돕습니다.
- 보는 지표: 언어별 트래픽 비율, 매칭이 후보를 못 찾은 분야, 준비 계획을 이어 쓰는 비율을 봅니다.
회고와 다음 가설
- 잘 작동한 것: 파이프라인과 5개 언어, 정적 빌드를 묶어 1인 운영으로 콘텐츠 매트릭스를 유지한 구조입니다. 모델에는 판정만 시키고 문장은 사람이 쓰도록 선을 그어 둔 덕에 매칭을 진로 서비스에 올릴 수 있었습니다.
- 다시 한다면: 초기에 5개 언어를 동시에 출시해 검수 부담이 커졌습니다. 한국어와 영어를 먼저 안정화하고, 일본어와 중국어를 차례로 붙이는 편이 안전했을 것입니다.
- 다음 가설: Reality Session을 여는 직업 넓히기, 학교와 학원 묶음 판매, 매칭 문턱을 실측에 맞추기.
비슷한 결의 작업 의뢰
5개 언어 콘텐츠 매트릭스를 1인 운영으로 굴리는 구조, 판정과 저작을 나눠 모델을 쓰는 설계, 서버 없는 다국어 검색은 모두 Reputo에서 쌓은 역량입니다. 같은 결의 일이 있다면 /work-with-me나 /contact에 남겨 주세요.