퇴근하구 (AfterWork)
퇴근하구는 “저녁 6시 40분, 지하철 승강장에 선 직장인”을 위한 강좌 추천 서비스의 PoC다. 전국 평생학습 강좌 2만 7천여 건을 매일 밤 수집·임베딩·분류하고, 게스트가 집·회사·시간대·관심사 네 가지만 입력하면 퇴근 동선 위에 놓인 강좌를 지도에 띄운다.
완성된 서비스가 아니라 가설 하나를 검증하는 PoC이고, 그래서 이 시리즈의 관심사도 기능 목록이 아니라 설계 결정의 이유다. 어디까지가 결정론적 소프트웨어여야 하고, 어디부터 임베딩이고, 어디부터 검색이고, 어디부터 생성이어야 하는가 — 그리고 그 전부를 홈 서버 한 대와 무료 티어 예산으로 매일 밤 어떻게 돌리는가.
시리즈 글
Chapter 1챗봇을 넘어서 — 퇴근길을 중심에 둔 추천 PoC반경 검색이 직장인에게 실패하는 이유, LLM 프롬프트 하나로 안 되는 이유, 그리고 "AI가 권한을 가지면 안 되는 곳"을 먼저 정한 시스템 설계. Chapter 2임베딩 하나로 분류와 검색까지학습 데이터 0건의 프로토타입 제로샷 분류, 그리고 같은 벡터를 PostGIS 타원과 한 SQL 문 안에서 결합하는 공간·의미 하이브리드 검색. Chapter 3LLM에게 권한을 덜 주기검색이 끝난 뒤 언어 모델에게 남은 유용한 일은 무엇인가 — 그리고 그 이상을 하지 못하게 막는 네 겹의 독립 메커니즘. Chapter 4매일 밤 데이터를 새로 만드는 일홈 서버 한 대와 무료 티어로 도는 야간 Airflow 파이프라인 — 쿼터를 의식하는 재시도, 소스 급감 가드, 그리고 실제로 깨진 것들. Chapter 5두 번째 클라이언트가 백엔드에 되묻는 것들앱인토스 미니앱을 붙이자 "웹앱의 구현 디테일"이던 것들 — 서버 렌더링, 쿠키 신원, LLM 엔드포인트의 무방비 — 이 전부 아키텍처 결정으로 승격됐다.