2026-10-19 (월) 개발일지
오늘은 여러 프로젝트가 동시에 진행되면서 각각 다른 성질의 문제들을 마주쳤다. 게임 프로젝트에서는 OPIc 학습 콘텐츠 전체를 조립하는 과정에서 지시의 모호성이 어떻게 구현 결과를 틀어놓는지 배웠고, 자동이력서지원 프로젝트에서는 인증 프로세스의 타이밍 문제를 직면했으며, 사주 프로젝트에서는 1차 피드백을 어떻게 구조적으로 반영할지 정리했다.
게임 — OPIc 네 모드를 퀴즈 머신으로 통일했지만 지시가 느슨해서 필터링만 됐다
처음 지시를 내렸을 때 나는 “각 모드 버튼이 기존 퀴즈 머신으로 콘텐츠를 열게 하라” 고만 했다. 이 문장은 기술적으로는 정확했지만, 의도는 전달되지 않았다. 결과적으로 구현된 것은 퀴즈 문제집 목록을 모드별로 필터링해서 보여주는 것이었다. 즉, 사용자가 모드 버튼을 누르면 해당 모드의 문제집만 골라진 목록이 떴다는 뜻이다.
문제는 여기서 끝나지 않았다. 따라 말하기(shadowing) 팩이 보이지 않는다고 지적받았다. 로그를 뜯어보니 shadowing 데이터는 pack_parser.gd에서 의도적으로 거절되고 있었다. 왜냐하면 shadowing은 mcq나 ox 타입이 아니라 “반복할 문장” 이라는 별개의 구조이기 때문이었다. 파서는 설계상 quiz pack 만 받도록 만들어져 있었다.
지시가 “퀴즈 머신으로 콘텐츠를 연다”였기 때문에, 에이전트는 문제집 필터링으로 해석했다. 하지만 내 의도는 “모드별 화면을 따로 만들되, 각각 다른 형태의 콘텐츠를 표시하라”였다.
방향을 다시 잡았다. 네 모드 중 세 개(어휘, 예시, 판단)는 여전히 기존 quiz 화면을 쓰되, 모드 버튼에서 필터링 파라미터를 넘기는 방식 으로 정리했다. 그리고 따라 말하기는 opic.gd라는 별도 화면을 만들어 AppShell._activate()에서 직접 라우팅하도록 했다. 결과적으로 세 모드는 quiz 머신 안에서, 따라 말하기는 독립 화면에서 동작하게 됐다.
검증은 간단했다. 테스트 스위트 22개 모두 초록색이었고, 두 커밋(22d9be4, 8a22a9e) 모두 깔끔했다. 배포했다.
배운 점: 지시는 “기술 용어”로 정확해야 한다. “퀴즈 머신”이라는 단어 하나가 “목록 필터링” vs “독립 라우팅”을 가르는 분기가 될 수 있다. 다음부터는 “모드별로 다른 화면이 필요한가”를 먼저 확인해야겠다.
게임 — OPIc 콘텐츠 네 팩(어휘·예시·판단·따라말하기) 완성
어휘 팩부터 시작했다. 기존 팩들을 먼저 뜯어봤다. opic-vocab-casual.json과 opic-vocab-business.json을 열어보니 각각 14개 문항, 상황 태그가 골고루 분산돼 있었다. 답변 인덱스도 [3,4,4,3] / [4,3,4,3] 식으로 한쪽에 치우치지 않았다.
나는 같은 형식으로 14개씩 새로 썼다. 상황별 분포를 맞추려고 신경 썼다: 집-동네 3개, 가족-친구 3개, 여가-영화음악 3개, 여가-운동 3개, 쇼핑 2개. 검증 스크립트를 돌렸고 모두 통과했다.
예시 팩도 같은 방식이었다. 14개, 상황 분산, 답변 인덱스 균등. 다만 이번에는 비즈니스 팩의 답변이 1-3-0-2 사이클로 반복되고 있다는 걸 발견했다. 학생이 패턴을 외워서 게임할 수 있다는 뜻이었다. 몇 개를 섞었다.
판단 팩은 다른 구조였다. True/False 문제였다. 16개씩, casual과 business로 나눴다. 8개는 참, 8개는 거짓. 모두 고유한 프롬프트였다. 검증 통과.
따라 말하기 팩도 16개씩 만들었다. 이건 quiz 형식이 아니라 “반복할 모범 문장” 데이터였다. 24개 문장(casual 12, business 12)을 shadowing.json에 담았다. 이건 pack_parser를 우회해서 opic.gd에서 직접 로드된다.
최종 산출물:
opic-vocab-casual.json·opic-vocab-business.json— 14/14opic-example-casual.json·opic-example-business.json— 14/14opic-natural-casual.json·opic-natural-business.json— 16/16shadowing.json— 24개 문장
모든 파일이 ~/Downloads/게임/studyandgame-godot/client/data/quizzes/ 또는 client/data/opic/에 저장됐고, 검증을 마쳤다.
남은 과제: 영어가 모두 다른 에이전트에 의해 작성됐기 때문에, 내가 완전히 검증할 수 없다. 단어 선택, 문법, 한국 학습자 입장에서의 자연스러움은 원어민 검수가 필요하다.
자동이력서지원 — 인증 타이밍 문제와 codex 레이트 리미팅
푸른저축은행 지원서를 작성하던 중 인증번호 타이밍이 문제가 됐다. 인증번호를 받으면 3분 유효한데, 에이전트가 입력하는 동안 시간이 지나버렸다. 첫 번호(494778)는 만료됐다.
새 번호를 받았다. 이번엔 대기하다가 받는 즉시 입력하기로 했다. 결과적으로 푸른저축은행 지원서는 19:47에 최종 제출됐고, 마이페이지에서 ‘제출완료’로 바뀌는 걸 확인했다. 접수번호는 AP20261019974429.
다만 자격증 목록에서 NVIDIA 자격을 찾지 못해 이 항목만 빠졌다. 나머지 자격증은 모두 들어갔다.
그 다음은 슈어소프트테크, 파트리지시스템즈, 메이아이 세 곳을 연달아 제출했다. 모두 19시대에 완료됐다.
하지만 슈어소프트테크 자기소개서는 codex 검증을 아직 못 마쳤다. 초안은 ~/Downloads/자동이력서지원/out/paste/sure_q1.txt에 저장돼 있고, 공백 포함 1,993자로 목표 범위 안이다. 문제는 codex가 사용 한도에 걸렸다는 것이다. “try again later” 메시지가 떴다.
19:29 이후 한 번 더 돌려야 제출용 최종본이 된다.
8개 문항 모두 codex 검증을 마쳐야 하는데, 현재 상태는 이렇다:
- 기존 7건(prsb, fng 등): 검증 완료, 금지어 0건, 되돌린 문장 0건
- 슈어소프트테크 1건: 검증 대기 중 (레이트 리미팅)
남은 과제: 슈어소프트테크 자기소개서 검증 후 제출. 사용자 확인이 필요한 5개 문장(prsb_q1 세 문장, prsb_q3 대시보드 문장, fng_q4 QWK 비교 제안 문장)은 이미 문서에 기록했다.
사주 — 1차 피드백 반영 지원서 수정본 작성
1차 심사 피드백이 들어왔다. 핵심은 외모가 중요한데 후단에서 확인되면 매번 사주 분석을 요청할 소비자가 얼마나 될지 시장 조사를 보강하라 는 것이었다. 또 AI가 하는 일과 하지 않는 일의 구분이 명확하지 않다는 지적도 있었다.
기존 지원서(Q2·Q3-1·Q3-2·Q4-1·Q4-2·Q8)를 기반으로 수정본을 작성했다. 원칙은 “기존 문장은 최대한 유지하고, 피드백과 관련된 부분만 고치거나 덧붙인다”였다.
Q3-1 (차별점): “사진을 작게 보여준다”가 “외모는 나중에 확인한다”로 오독된 부분을 바로잡았다. 명확히 했다: “사진은 추천 단계에서 보인다. 사주는 누구를 먼저 보여줄지 정하는 기준일 뿐이다. 이용자가 사주 분석을 따로 요청하거나 매번 결제할 필요가 없다.”
Q3-2 (수익): “비용 측면에서도…”부터 “…90~160원 수준으로 유지하는 것을 목표로 하고 있습니다”까지를 교체했다. AI 역할을 명시했다:
- 규칙 엔진: 사주·궁합 계산 (AI 아님)
- AI: 해석 문장만 작성
무료와 유료의 경계를 세 갈래로 나눴다: 기본 매칭(무료) → 상세 궁합(유료 1회) → 분석 저장(월 구독).
Q4-1 (사업화): 구현 기능에 PASS 본인인증, 허위 정보 신고·보상, 관리자 처리 화면을 추가했다. 자동 테스트를 91개에서 108개로 늘렸다. ‘남아 있는 부분’에서 실명·연령 인증을 뺐다(이미 완료됨). 대신 본인인증 가맹 계약과 GPU 서버 구축을 넣었다.
Q4-2 (멘토링): ‘법률’ 섹션의 마지막 문장을 교체했다. 허위 정보 대응 기준은 마련했으니, 남은 것은 환불·청약철회 고지와 인증 정보 보관 범위에 대한 법률 검토라고 구체화했다. 맨 끝에 1차 피드백을 반영한 경험을 한 단락 추가했다.
Q8 (역량): ‘셋째’ 아래 두 문단을 교체했다. 기존의 “로컬 모델 + 고성능 모델 / 1인당 월 90~160원” 대신 “규칙 엔진 / 결제 후에만 AI / 자체 GPU 서버 고정비 / 로컬 모델 벤치마크로 검증”을 넣었다.
수정본 위치: /private/tmp/claude-502/-Users-admin-Downloads---/c0fed2b4-3b0b-4995-8231-daa441b41a57/scratchpad/창업지원서_수정본.md
제출 전 체크리스트:
- GPU 서버 월 비용: 임대 견적 기준. Q3-2와 Q4-1에 같은 값 입력
- 손익분기 결제 건수: GPU 비용 ÷ 1,330원
- PASS 본인인증 건당 단가 및 초기 목표 가입자 수
남은 과제: 숫자 채우기. GPU 서버 견적을 받으면 나머지 계산이 연쇄적으로 결정된다.
토지이음_등기부등본 — 실거래가 수집 진행 상황
data.go.kr 에서 주기적으로 받아오는 실거래가 수집이 진행 중이다. 현황은 207곳 중 135곳 완료, 72곳 남았다.
| 날짜 | 받은 시군구 |
|---|---|
| 10/15 | 27곳 |
| 10/16 | 27곳 |
| 10/17 | 27곳 |
| 10/18 | 27곳 |
| 10/19 (오늘) | 17:30 실행 예정 |
하루에 약 27곳씩 받고 있어서, 3일이 남았다. 10/19에 27곳, 10/20에 27곳, 10/21에 나머지 18곳을 받으면 완료된다.
오늘의 한줄
지시의 모호성이 구현 결과를 크게 틀어놓을 수 있다는 걸 배웠다. 기술 용어 하나가 “필터링”과 “독립 라우팅”을 가르는 분기가 될 수 있으니, 다음부터는 “어떤 형태의 출력이 필요한가”를 먼저 명확히 해야겠다.