AI 에이전트로 6개월간 1인 기업을 운영하며 얻은 10단계 프레임워크 (그리고 실패했던 지점들)
I have run a one-person company on AI agents for 6 months. Here is the 10-part framework that fell out of it (and everywhere it broke).
핵심 요약
AI 에이전트를 활용해 마케팅부터 영업까지 1인 기업을 자동화하며 겪은 시행착오와 실전 프레임워크를 공유합니다.
컨텍스트 관리 — 기업 운영 데이터를 코드처럼 파일로 관리하여 AI가 전체 맥락을 파악하게 함
에이전트 라우팅 — 루트 파일과 부서별 폴더 구조를 통해 에이전트가 업무를 스스로 배분하게 함
승인 큐 시스템 — 모든 외부 발송은 자동화가 아닌 인간의 승인을 거쳐 리스크를 방지함
피드백 루프 — 수정 사항을 플레이북에 즉시 반영하여 에이전트의 업무 정확도를 점진적으로 개선함
지난 6개월 동안 나는 1인 기업을 거의 전적으로 AI 에이전트만 써서 운영해왔다. 그것도 딱 하나의 git 저장소 안에서 말이지. "AI가 내 이메일이나 써주는" 수준이 아니다. 마케팅, 영업, CRM, 콘텐츠, 아웃리치까지, 실제 운영 업무 전부를 말하는 거다.
처음부터 무슨 프레임워크를 만들려고 했던 건 아니다. 그냥 잡무에서 벗어나고 싶었을 뿐이지. 근데 조용히 잘 돌아가는 것들이 쌓이고, 그만큼 또 제대로 터져나가는 일들을 겪다 보니 자연스럽게 대략적인 틀이 잡히더라. 총 10단계다. 아래에 각 단계마다 뭐가 잘 버텼고 어디서 박살 났는지 적어놨다. 사실 어디서 박살 났는지가 진짜 읽을만한 내용 아니겠냐. 이거 올리는 이유는 내 생각에 구멍 좀 내달라는 거니까, 너도 비슷한 거 만들고 있으면 내가 어디서 틀렸는지 좀 알려줘라.
1. 회사의 모든 걸 AI가 읽을 수 있는 곳에 둬라 (코드로 된 컨텍스트)
AI를 10개나 되는 SaaS 탭에 연결하는 짓은 그만둬라. AI는 버튼 클릭질은 더럽게 못해도 파일 읽고 쓰는 건 기가 막히게 잘한다. 그러니까 회사를 이미 AI가 잘 노는 곳, 즉 하나의 저장소 안에 있는 평범한 파일들로 옮겨라. 부서마다 폴더 하나씩 파고. 잘 버틴 점. AI가 브라우저 탭 10개 띄워놓고 멍청하게 굴다가, 회사 전체를 텍스트로 읽고 쓸 수 있게 된 순간부터 진짜 일을 하기 시작했다. 박살 난 점. 폴더가 비대해지면 기억력이 썩어 들어간다(요즘은 이걸 컨텍스트 로트라고 부르더라). 컨텍스트는 필요할 때마다 불러와야 한다. 회사 전체를 창에 다 때려 박고 기도 메타 하지 마라.
2. 라우팅 두뇌: 루트 파일 하나, 플레이북이 담긴 부서별 폴더
각 폴더에는 누구한테 팔 건지, 말투는 어떤지, 규칙은 뭔지, 어떤 툴을 건드릴 수 있는지 적힌 평범한 영어로 된 플레이북(CLAUDE.md)이 들어있다. 루트 파일이 업무를 배분한다:
TASK: "find leads and email them"
|
root CLAUDE.md (the router)
|
opens the playbooks that own the task
v
sales/CLAUDE.md + crm/CLAUDE.md (plain-English rules)
|
agent becomes that department head
|
does the work
|
writes the result back into the repo
|
next task starts with more context, not zero
잘 버틴 점. 어설픈 특화 봇 여러 마리보다 잘 쓴 플레이북을 가진 범용 에이전트 한 마리가 훨씬 낫다. 부서 간 업무도 알아서 라우팅 된다. 박살 난 점. 진짜 복잡하고 단계가 많은 병렬 작업은 범용 에이전트 혼자서는 감당 못 한다. 그럴 때만 서브 에이전트를 쓰는데, 멀티 에이전트를 돌리면 토큰 값이 15배는 깨지니까 그만한 가치가 있을 때만 써라.
3. 핵심 워크플로우를 건드리는 툴은 직접 만들고, 모든 플랫폼은 적대적으로 대하라
돈 내고 쓰던 내부 SaaS를 작은 앱들로 다 다시 만들었다. 각각 데이터베이스 하나랑 브랜드 키트 하나씩만 읽게 했다. 실제 브라우저 세션을 돌리는 링크드인 클라이언트, 인스타그램용 CLI, 터미널에서 제어하는 구글 워크스페이스 같은 것들 말이다. 그래야 에이전트가 워크플로우 안에서 회의를 잡거나 이메일을 보낼 수 있으니까.
플랫폼이랑 직접 부딪히는 툴을 만들면서 진짜 뼈저리게 배웠다. 초반에 에이전트가 소셜 플랫폼에서 작업을 너무 빨리 몰아서 처리하다가 계정 정지 먹었다. 당연한 결과지. 그래서 지금은 코드에 일일 제한(연결 20건, DM 40건, 프로필 조회 80건)을 딱 걸어놨다. 사람 속도로 움직이게 하고, 메시지 전송 전후의 요소 개수를 세서 전송 여부를 확인한다. 작성 로직이 조용히 두 번이나 바뀌어서, 아무것도 안 보냈는데 성공했다고 뻥을 치더라고. 워크플로우 툴은 직접 소유하고(세션 하나씩, 통합 비용 제로), 배관(DB, 이메일, 결제, 호스팅, 리드 데이터)은 빌려 써라. 제한은 프롬프트가 아니라 코드에 걸어라. 그리고 플랫폼이 띄우는 "성공" 메시지 절대 믿지 마라. DOM이 실제로 바뀌었는지 확인하고 나서야 일을 끝냈다고 해라. 플랫폼 말만 믿고 빨리빨리 움직인 거. 둘 다 계정 정지당하거나 거짓말에 속기 딱 좋다.
사람들이 제일 많이 빼먹는 부분인데, 이게 마법의 핵심이다. 회사는 몇 가지 상시 흐름을 통해 세상을 인식한다:
inboxes ----\
CRM --------\
rankings ----> SCOUT (nightly) --> one brief: what moved, what needs you
competitors-/
feeds ------/
HN / Instagram / X / a FB community --> digesters --> scored signal + ideas
LinkedIn + FB inbox --> hourly monitors --> new reply? --> queue + phone ping
buyer-relevant posts --> signal farming (read + like only, 3x/day) --> lead pool
all of it --> STRATEGIST --> the day's few highest-leverage moves
Scout는 밤새 모든 걸 훑어보고 짧은 보고서 하나를 써내지(가역적인 CRM 동기화만 수행하고, 절대 직접 전송은 안 함). Digesters는 내가 일일이 스크롤 할 엄두도 안 나는 Hacker News, Instagram 릴스, X, 그리고 Facebook 커뮤니티에서 알짜 정보를 캐내. Hourly monitors는 내 LinkedIn이랑 Facebook 받은 편지함을 감시하다가 새 답장이 오면 바로 내 폰으로 쏴주지. Signal-farming 루프는 구매자랑 관련 있는 게시물을 하루에 세 번씩 읽고 좋아요를 누르면서, 반응하는 사람들을 따로 모아. 잘된 점. 어둠 속에서 일어나는 일은 없어. 나는 텅 빈 피드 대신, 이미 요약된 세상을 마주하며 하루를 시작해. 망한 점. Signal-farming의 한계인데, 이건 좀 뼈아팠어. 비즈니스 콘텐츠에 공개적으로 반응하는 놈들은 구매자가 아니라 죄다 판매자더라고. 파이프라인을 깨끗하게 정리해도 실제 구매자는 거의 0에 수렴했어. 결국 내가 파는 거랑 똑같은 거 파는 놈들만 모아놓은 꼴이었거든. 풀(pool)을 읽되, 리드(lead) 숫자는 믿지 마.
5. 자동 조종이 아니라 부조종사: 승인 대기열 하나, 그 뒤에 대기 중인 제안자들
에이전트가 만든 건 그 어떤 것도 지 혼자 나가는 법이 없어. 제안자들(아웃리치, 육성, 백링크, SEO, 콘텐츠 재활용, 커뮤니티 답글)이 하나의 대기열에 초안을 넣으면, 내가 데스크톱이나 폰으로 검토해. 명확하게 '적용' 버튼을 눌러야만 전송되는 구조야.
proposers (outreach / nurture / backlinks / SEO / repurpose / community ...)
| draft, never send
v
APPROVAL QUEUE (one Postgres table)
|
cockpit on desktop + your phone
| approve / edit / reject
v
apply step --> actually sends / posts / commits
|
writes the event back to the CRM (full attribution)
잘된 점. 이게 레버리지 효과가 제일 커. 에이전트가 물량을 처리하고, 나는 판단만 해. 승인은 5초면 끝나는 탭 한 번이고, 적용된 모든 작업은 기록에 남으니까 깜깜이로 처리되는 일이 없지. 망한 점. 처음에 설계를 허술하게 해서 몇몇 작업이 대기열을 우회하게 뒀어. 그게 전부 다 구멍이 됐는데, 공교롭게도 바로 다음 두 포인트가 그 내용이야.
6. 초안은 발송이 아니다, 모든 대기열에는 실시간 소비자가 필요하다
관심 있는 잠재 고객이 긍정적인 반응을 보였어. 시스템이 35분 만에 꽤 괜찮은 답장 초안을 써놨는데, 파이프라인 어디에도 Gmail 초안을 읽어가는 놈이 없어서 3일 동안 그대로 방치됐지. 또 다른 내부 대기열(내가 에이전트한테 작업을 던지는 역방향 대기열)은 승인된 작업 31개가 일주일 동안 아무것도 실행되지 않은 채 쌓여 있었어. 잘된 점. 모든 아웃바운드는 하나의 대기열을 거치게 하고, 대기열을 만들 때는 반드시 그 대기열을 소비하는 놈, 깊이를 확인할 수 있는 방법, 그리고 백로그 알람까지 한 세트로 묶어서 배포해. 망한 점. 대시보드에는 "초안 작성됨"이나 "어딘가로 라우팅됨"이나 둘 다 "완료"로 떴거든. 실행 중인 소비자가 없는 대기열은 아예 없는 것보다 못해. 작동하고 있는 것처럼 보이니까 더 위험하지.
7. 지켜볼 수 있는 일정으로 돌려라: 러너 루프
자율성이란 건 그냥 예의 바른 스케줄러일 뿐이야. 로컬 루프 하나가 몇 분마다 깨어나서, 예정된 제안자들을 실행하고, 대기열을 비우고, 하트비트(작동 신호)를 찍어.
tick --> fire the due proposers --> drain the queues --> stamp a heartbeat
^ |
|_________________ job ledger + health surface ___________|
잘된 점. 하트비트 파일, 작업별 원장, 그리고 루프가 죽거나 작업이 계속 실패하면 빨간불이 들어오는 상태 체크 기능. 제안자가 먹통이 되면 나는 러너부터 확인해. 망한 점. 여기서 발생한 모든 실패는 조용히 묻혔는데, 이게 제일 최악이야. 러너가 죽어도 며칠 동안 아무도 몰랐거든. 매주 실행되는 작업이 특정 조건에서 계속 실패했는데, 알림도 없이 매번 재시도만 반복하다가 하루에 에이전트 세션을 100개 넘게 날려 먹었어. 실패 마커를 남기거나 재시도를 멈추는 로직이 없었으니까. 작동하는 걸 직접 눈으로 확인하지 않은 안전장치는 안전장치가 아니라 그냥 추측일 뿐이야.
8. 가역성의 원칙: 되돌릴 수 없는 작업은 막고, 일방통행 래칫은 제거하라
두 번의 삽질, 원인은 똑같았음. 첫 번째는 레포지토리의 구버전 체크아웃 상태에서 돌아가던 봇이 충돌을 일으키더니, 강제로 deploy 브랜치를 이전 상태로 되돌려버린 거임. 이미 제대로 된 수정 사항이 실제 결제까지 처리한 지 37분이나 지났는데, 라이브 가격 정보가 롤백되면서 메인 결제창이 박살 났지. 두 번째는 콘텐츠 품질만 따지고 정작 내 고객인지 아닌지는 신경 안 쓰는 자동 팔로우 기능이었음. 이게 몇 달 동안 돌아가면서 계정 481개를 팔로우했는데, 그중 330개는 내 고객도 아니었음. 덕분에 내 피드는 관련성 0%인 게시물로 도배됐지. 잘 버틴 것들. 에이전트는 제안만 하고, 결정은 확정적 게이트(deterministic gates)가 내림. 사람이 직접 승인 안 하면 되돌릴 수 없는 작업은 절대 배포 안 함. 봇은 작업하기 전에 무조건 pull부터 하고, 메인 브랜치에 강제 푸시(force-push)는 절대 금지. 자동 추가(팔로우, 구독, 등록, 태그) 기능은 무조건 품질 검사, 주기적인 정리, 그리고 블랙리스트가 있어야 함. 그래야 정리가 자동으로 원상복구 되는 꼴을 안 보지. 박살 난 것들. 위험은 나쁜 코드에서 오는 게 아님. 세상 돌아가는 꼴도 모르는 에이전트가 나대거나, 정리 기능 없이 추가만 하는 자동화가 문제지. 푸시가 거절됐다는 건 네가 뒤처졌다는 뜻이지, 더 세게 밀어붙이라는 뜻이 아님.
9. 취향 루프를 닫아라: 이게 진짜 성장을 만드는 핵심이다
모든 작업에 두 가지 규칙을 둠. 작업하면서 바로 문서화할 것(작업이 뭔가를 만들거나 바꾸거나 망가뜨리면, 끝나기 전에 해당 플레이북을 업데이트할 것). 모든 거절 사례를 기록할 것(내가 초안을 거절하거나 수정하면, 그 이유를 해당 초안을 만든 플레이북에 다시 적어둘 것).
you reject or edit a draft
|
the reason is written back into the playbook that made it
|
the next draft of that kind starts from your last correction
|
edits-per-draft fall week over week
|
near-zero categories earn more autonomy
잘 버틴 것들. 카테고리별로 초안당 수정 횟수를 측정하는데, 이게 매주 줄어들고 있음. 이 수치가 떨어지는 게 바로 "자동화 툴 좀 쓴다"는 수준과 "내가 없어도 회사가 매주 조금씩 더 날카로워진다"는 수준의 차이임. 박살 난 것들. 쓰기만 하고 아무도 안 읽는 신호는 아무짝에도 쓸모없음. 내 댓글 에이전트가 일주일 동안 따뜻한 답글을 4개나 받았는데도 후속 조치를 하나도 안 하더라고. 왜냐? 참여 로그를 읽어주는 놈이 없었거든. 모든 신호는 소비자가 있어야 함. 안 그러면 그냥 헛수고만 더 들어가는 쓰레기 데이터일 뿐임.
10. 진짜 병목은 구축이 아니라 결정하고 배포하는 거다
이건 진짜 쪽팔린 부분임. 시스템이 구축을 너무 편하게 만들어주니까 배포를 안 하게 되더라. 최악일 땐 초안이 54개인데 배포는 1개였음. 전체적으로 보면 콘텐츠 슬롯 294개를 계획했는데 배포는 31개뿐이었지. 우선순위를 눈에 보이게 하려고 레이어까지 따로 만들었는데, 추적하던 목표 9개는 시스템이 돌아가는 내내 한 번도 안 움직였음. 잘 버틴 것들. 배포 안 된 것들이 선을 넘으면 시스템을 배포 모드로 전환할 것. 그리고 일일 루프의 단위를 내 아이디어가 아니라 진짜 희소 자원인 '내 클릭(taps)'으로 계산할 것. 스카우트(Scout)와 전략가(Strategist)는 나한테 더 읽을 거리를 주는 게 아니라, 결정할 짧은 리스트를 주려고 존재하는 거임. 박살 난 것들. 원치 않는 일을 더 크게 만들려고 기계만 구축한 꼴이지. 우선순위 레이어가 목표를 하나도 못 움직인 건, 인지 문제가 아니라 그냥 내가 원하지 않았기 때문임. 그래서 다 지워버렸음. 뭔가를 눈에 보이게 하려고 소프트웨어를 만들기 전에, 그게 진짜 안 보이는 건지 아니면 그냥 하기 싫은 건지부터 확인해라. 소프트웨어로 해결할 수 있는 건 둘 중 하나뿐임.
지금 내 위치, 그리고 너한테 바라는 것
6개월 차 프레임워크는 이 정도임. 첫 유료 고객도 딱 이 세팅으로 잡았음. 구독 서비스 10개 정도를 해지하고 내가 직접 소유한 툴로 바꿨고, 사용량 기반의 배관(plumbing)만 남겨둠. 모든 성공은 9번, 취향 루프에서 나옴. 모든 삽질은 배포 경로가 없는 작업이나, 세상 돌아가는 꼴도 모르는 에이전트가 저지른 짓에서 나옴.
스스로 성장하는 회사는 기계가 물량을 처리하고, 네가 취향을 결정하고, 그 취향을 기록해서 기계가 매주 너를 조금씩 덜 필요하게 만드는 곳임. 그냥 굴러가기만 하는 회사는 타이핑만 자동화해놓고, 모든 결정과 모든 조용한 실패를 다 끌어안은 채 그걸 '레버리지'라고 부르는 곳이고.
내가 제일 확신이 안 서는 부분은 두 가지임. 1인 기업을 넘어설 때도 이 '단일 제너럴리스트 모델(2)'이 먹힐지, 그리고 취향 루프(9)가 진짜 수렴하는지 아니면 쉬운 수정 사항이 다 떨어지면 정체될지.
그러니까 찔러봐라. 너도 실제 비즈니스에 에이전트 돌리고 있다면, 이 10가지 중에 뭐가 틀렸고 내가 놓치고 있는 11번째는 뭔지 말이야.
추신: 다이어그램을 ASCII로 만든 건 의도적인 거임. 브랜드 로고 떡칠한 "AI 아키텍처" 뭉텅이 같은 거 또 보게 만들 생각 없었거든.
주요 댓글
r/ai_agents
AI 에이전트를 활용한 1인 기업 운영 경험에 대해 실질적인 피드백과 성과 측정의 중요성을 논하는 토론이 이어지고 있습니다.
17
그냥 좀 요약해주면 안 됨?
"내가 이 편지를 길게 쓴 건 짧게 쓸 시간이 없었기 때문이다." - 블레즈 파스칼
9
뼈 맞았네. 10초 요약 버전: 회사 전체를 AI가 읽을 수 있는 곳에 두고, 모든 걸 초안으로 작성하게 한 뒤, 판단이 필요한 20%만 승인하고, 모든 수정 사항을 기록해서 다음 주에는 AI가 나를 덜 찾게 만드는 거임. 나머지 글은 그 문장에 도달하기까지 내가 뭘 말아먹었는지 설명하는 내용임.
2
"자율성은 매너 좋은 스케줄러일 뿐이다"라는 말이 마음에 드는데, 무슨 뜻임? 자동화를 말하는 거임, 아니면 에이전트 루프를 말하는 거임? 에이전트 루프를 추적하려고 뭘 쓰고 있음?
-2
둘 다인데, 그 둘을 나누는 게 중요함. 스케줄러는 일부러 멍청하게 만듦: 몇 분마다 깨어나서 어떤 작업이 예정되어 있는지 묻고, 실행하고, 큐를 비우고, 하트비트를 찍는 로컬 루프임. 지능 같은 건 전혀 없음. 에이전트 루프는 스케줄러가 실행하는 것들이고, 모델이 실제로 추론하는 곳이 바로 거기임.
추적하는 건 내가 처음에 잘못했던 부분임. 아주 지루한 세 가지를 씀: 루프 자체가 살아있는지 확인하는 하트비트 파일, 작업마다 실행될 때마다 기록하는 작업 원장 행(시작됨, 완료됨, 실패함 등...)
아니 사실 거짓말이었음 미안. AI가 답장하는 거 맞는데, 실제로 돌아가고 있는 코드 기반으로 답하는 거라 진짜임.
1
네가 쓸 시간도 아까운 거라면, 우리가 읽을 시간은 왜 가치 있는 건데?
1
통찰은 전부 실행 중인 레포에 저장되는데, 그게 에이전트가 공유하거나 답변하는 게 무슨 상관이죠? 어차피 승인/거절은 제가 직접 하는데요. 수동으로 했어도 똑같은 정보를 줬을 겁니다.
2
사람들이 알아차린 걸 보면 분명 차이가 있긴 하네요. 진지하게 받아들여지고 싶다면 직접 쓰는 수고를 좀 하세요.
1
AI가 썼다는 걸 알고도 세 번이나 다시 읽어봤는데, 도무지 무슨 말인지 모르겠네.
내가 파악하기로는, 그냥 오픈클로(openclaw) 스타일의 크론 잡(cron job)을 써서 작업을 예약하는 것 같아. 이 평범한 자동화 워크플로우를 엄청나게 난해하고 실제 공감할 만한 맥락은 하나도 없게 써놨어.
무슨 작업을 하냐고? 글쓴이의 AI가 쓴 글에 따르면:
작업: "잠재 고객을 찾아서 이메일을 보내라"
0
추론에는 어떤 모델을 쓰고 있음?
-1
판단이 필요한 건 뭐든 Claude를 쓰고(초안 작성, 결정, 전략가 역할), 대량으로 처리해야 하는 건 싸고 빠른 모델을 사전 필터로 씀. 커뮤니티 모니터가 가장 명확한 예시임: 결정론적 폴링으로 새 게시물을 찾고, 싼 모델이 그중 관련 있는 게 있는지 분류한 뒤, 그제야 진짜 Claude 세션을 돌려서 초안을 작성함. 그래서 아무것도 없는 걸 보려고 좋은 모델에 돈을 쓰지 않는 거임. 모니터링이라는 게 대부분 그런 거니까.
로컬 Whisper가 전사를 담당함. 그건 /bin/z...
4
당신 회사가 파는 제품이나 서비스가 뭔가요? 고객은 몇 명이고요? 매출은 얼마나 되나요?
3
오늘 이렇게 훌륭하고 가치 있는 정보를 공유해주셔서 정말 감사합니다.
-1
읽어주셔서 감사합니다. 실패를 통해 배우는 과정이 비용이 많이 들었으니, 다른 분들에게라도 도움이 되었으면 좋겠네요.