작업물을 불러오는 중…
FakeClients
AI가 가짜 외주 클라이언트가 되어 조건에 맞는 브리프를 던지고, 대화로 요구를 조정하고, 제출물에 점수를 매기는 연습용 데스크톱 앱. 포트폴리오용 실전 감각이 필요한데 진짜 클라이언트가 없어서 만들었다. 착수 12일차, 완성품이 아니라 MVP가 도는 단계다.
스크린샷
왜 만들었나
포트폴리오를 준비할 때 제일 아쉬운 건 "진짜 클라이언트가 없다"는 점입니다. 혼자 정한 주제로 혼자 만족하고 끝내니, 요구가 바뀌고 마감에 쫓기고 피드백을 받는 실제 외주 흐름을 연습할 데가 없었습니다.
브리프를 던져 주는 생성기는 이미 있지만, 제가 원한 건 브리프 한 장이 아니라 받아 든 뒤의 과정이었습니다. 그래서 LLM이 조건에 맞춰 매번 다른 브리프를 생성하고, 대화도 하고, 제출물에 피드백까지 주는 쪽으로 직접 만들었습니다. 지금은 완전 무료입니다.
만드는 흐름
분야(로고·웹·일러스트·UI/UX·개발·게임 등 15종)·업종·난이도·예산·마감·클라이언트 성격·국가 성향을 지정하면(전부 무작위도 가능) LLM이 이메일 형식의 브리프를 만듭니다. 목록에 없는 분야·세부 과제는 직접 입력할 수도 있습니다. 입력한 명칭은 지시가 아니라 데이터로만 취급해 프롬프트에 넣고, 그 분야의 실제 외주 시장 관례에 맞게 해석해 작성하도록 지시합니다. 이후 카카오톡 말풍선 형태로 클라이언트와 대화하며 요구사항을 되묻거나, 난이도에 따라 "마감을 당길 수 있냐" 같은 이벤트 메시지가 끼어들기도 합니다. 결과물을 제출하면 분야별 평가 기준(브리프 충족도·완성도·창의성 + 분야 전용 기준)으로 점수를 매겨 승인하거나 재수정을 요청합니다. 의뢰는 보관함에 쌓이고, 통계 화면에서 완료 건수·평균 점수·분야별 완료 추이를 볼 수 있습니다.
API 키 대신 CLI 로그인
LLM 연결은 API 키가 아니라 Claude Code CLI(구독 로그인)를 기본으로, Codex CLI(ChatGPT 로그인)를 선택할 수 있게 했습니다. 둘 다 연결해 두면 브리프·피드백처럼 무거운 호출과 대화·요약처럼 가벼운 호출에 서로 다른 모델을 쓰고, 한쪽 사용량이 소진되면 다른 쪽이 자동으로 전담합니다. API 키를 붙이는 구조는 코드에 남겨는 두었지만(추후 공개 서비스 전환 대비) 지금은 쓰지 않습니다. 구독 사용이라 추가 과금이 없다는 뜻이기도 합니다.
서버가 없다
1단계는 순수 로컬 툴입니다. 서버 없이 이 PC가 LLM CLI와 환율 API(실시간 조회, 실패 시 마지막 캐시로 폴백)에만 직접 붙습니다. 보관함·대화·설정 같은 사용자 데이터는 실행 파일 옆 user_data/에 JSON으로 쌓이고, 경로도 바꿀 수 있습니다.
배포 전 개인정보 검사
실행 파일만 배포하고 소스는 공개하지 않기로 했는데, PyInstaller로 묶은 exe 안에는 빌드한 PC의 흔적(계정명·홈 경로·git 설정)이나 user_data/, settings.json 같은 개인 파일이 실수로 섞여 들어갈 수 있습니다. 그래서 배포 전에 exe 내부(압축된 바이트코드까지 풀어서) 소스 코드 잔존 여부와 개인 식별자를 기계로 검사하고, 하나라도 걸리면 배포를 멈추게 했습니다. 다른 작업물(SteamAchieve)에서 사람이 눈으로만 봐서 놓쳤던 실수를 반복하고 싶지 않았습니다.
지금 상태
2026-09-17에 시작해 이제 12일째입니다. 분야 목록에 없는 것을 직접 입력하는 기능(v0.3.0)을 새로 넣었고, 브리프 생성·대화·제출/피드백·보관함/통계·설정까지 한 바퀴는 돌지만, 실행 파일 배포만 공개했고 소스 저장소는 비공개로 유지합니다. 파이썬 49개 파일 약 11,700줄에 테스트 25개 파일 약 9,000줄(585건 통과)입니다.


