
May 14, 2026
Gemini final generation이 로 실패했을 때 단순 retry만 붙이면 쉬웠다. 하지만 Place2Page에서 더 중요한 질문은 "어떤 실패를 사용자 흐름 안에서 흡수하고, 어떤 실패를 운영자에게 드러낼 것인가"였다. 그래서 capacity 계열 오류만 좁게 분류하고, 한 번만 fallback provider로 넘기며, 성공해도 fallba…

May 15, 2026
Place2Page의 AI 카피는 문법적으로 틀리지 않았지만, 여러 장소를 보면 반복 패턴이 바로 보였다. 처음에는 , 같은 단어를 금지하면 해결될 것 같았지만 실제 문제는 단어가 아니라 근거 없는 주장에 있었다. 그래서 final HTML contract를 "더 멋지게 쓰기"가 아니라 "제공된 장소 데이터 안에서 쓸모 있게 쓰기"로 바꿨다. 요약 문제…

May 15, 2026
Place2Page의 프롬프트는 처음에는 그냥 문자열처럼 보였다. 하지만 실험이 늘어나자 진짜 문제는 좋은 문구를 찾는 것이 아니라 어떤 입력에서 어떤 후보안이 왜 이겼는지 다시 설명할 수 있는가였다. 그래서 임시로 바꾼 문구를 한 번의 요청으로 흘려보내지 않고 실험 묶음, 후보안, 판단 결과, 저장된 스냅샷, 기본값 반영으로 이어지는 기록 체계를 만들었…

May 15, 2026
AI에게 더 많은 장소 데이터를 주면 더 좋은 랜딩페이지가 나올 것처럼 보였다. 하지만 "현재 영업 중" 같은 값은 생성 시점에는 맞아도 정적 HTML로 저장되는 순간 위험한 정보가 된다. 그래서 이 문제는 prompt wording이 아니라 출력물의 수명과 맞지 않는 데이터를 payload에서 빼는 데이터 모델링 문제로 봤다. 요약 문제: AI가 만든 …

May 19, 2026
production 컨테이너에 env가 보이는데도 브라우저의 Mixpanel Session Replay 설정은 바뀌지 않았다. 처음에는 런타임 환경 변수 누락을 의심했지만, 실제 경계는 컨테이너 시작 시점이 아니라 시점이었다. 값은 runtime config가 아니라 client bundle에 inline되는 build artifact라는 점을 기준으…

May 22, 2026
Sentry에는 우리 코드가 거의 보이지 않는 가 반복해서 쌓이고 있었다. 처음에는 library cleanup noise처럼 보였지만, coroutine 이름과 경계를 따라가 보니 raw client가 생성된 event loop 안에서 닫히지 않는 lifecycle 문제였다. 해결은 큰 async 구조 개편이 아니라 client를 만든 경로에서 co…

May 22, 2026
Sentry에 SQLAlchemy timeout이 P1으로 올라왔을 때 가장 쉬운 해결은 pool size를 키우는 것이었다. 하지만 route와 timestamp를 묶어보니 문제는 DB capacity 하나로 설명되지 않았다. 첫 번째 병목은 외부 I/O 동안 너무 오래 살아 있는 DB session이었고, 후속으로 남은 timeout은 detail …

May 23, 2026
Place2Page를 진행하면서 배운 것은 개발 속도가 개인 작업 속도만으로 결정되지 않는다는 점이었다. 처음에는 내가 빠르게 정리하고 먼저 만들어두는 방식이 팀에 도움이 된다고 생각했다. 하지만 피드백을 모아보니 병목은 구현량이 아니라 일이 보이는 방식, 디자인과 제품 판단을 맞추는 타이밍, 팀원이 기다리지 않아도 되는 커뮤니케이션에 있었다. 요약 문제…

May 24, 2026
AI 기능을 개선할 때 가장 위험한 흐름은 의외로 단순하다. Place2Page에서도 비슷한 문제가 생길 수 있었다. 랜딩페이지 생성 결과는 이미 공개 가능한 수준이었지만, 장소마다 구조와 시각적 리듬이 비슷하게 모이는 경향이 있었다. 프롬프트를 몇 줄 고치면 당장은 더 좋아 보일 수 있다. 하지만 어떤 입력에서, 어떤 후보안이, 왜 더 나았는지 남지 않…

May 24, 2026
Place2Page의 랜딩페이지는 사진을 많이 넣는다고 바로 좋아지지 않았다. 처음에는 프롬프트에 "사진을 잘 활용하라"는 규칙을 더 넣으려 했지만, 실제 결과를 보니 문제는 문구가 아니라 데이터 경로였다. 사진을 먼저 분석해 라는 구조화된 metadata로 넘기자 최종 HTML 모델은 사진을 asset 목록이 아니라 hero 후보, gallery evi…