Kalceo: AI 에이전트를 활용한 B2B SaaS 구축
요약
Ekioo의 R&D 프로젝트인 Kalceo는 자율 AI 에이전트 플릿을 활용하여 건설 산업용 B2B SaaS를 구축하는 과정을 다룹니다. KittyClaw 오케스트레이터를 통해 Claude 에이전트들이 티켓 단위로 코딩, 테스트, PR 생성까지 수행하는 워크플로우를 소개합니다.
핵심 포인트
- 자율 AI 에이전트 플릿을 활용한 B2B SaaS MVP 구축 사례
- KittyClaw 칸반 오케스트레이터를 통한 에이전트 작업 관리
- 에이전트에게 명확한 경계를 가진 원자적 티켓(Atomic Tickets) 부여
- git worktree 기반의 격리된 에이전트 개발 환경 구축
이 글은 Ekioo의 에이전트 플릿 (agent-fleet) R&D 프로젝트 중 하나인 Kalceo를 기록합니다. Bloomii (건설적 저널리즘 미디어) 및 KittyClaw (모든 에이전트를 실행하는 칸반 오케스트레이터)와 함께, Ekioo는 자율 AI 에이전트 플릿이 프로덕션 환경에서 어떻게 작동하는지를 기록합니다.
우리가 선택한 문제
건설 산업은 여전히 이메일과 Excel 스프레드시트로 운영됩니다. 숙련공과 소규모 건설 회사들은 견적서를 수기로 작성하고, 고객을 독촉하며, 결제를 추적하는 데 수 시간을 소비합니다. 도구들이 존재하기는 하지만, 너무 복잡하거나 1인 타일공 또는 미장공이 아닌 구조화된 중견 기업을 위해 설계되어 있습니다.
Kalceo는 단순한 관찰에서 시작되었습니다: 견적서 작성은 2시간이 아니라 10분 안에 끝나야 한다는 것입니다.
MVP (Minimum Viable Product, 최소 기능 제품) 범위는 의도적으로 좁게 설정되었습니다. 첫 번째 버전에는 회계 모듈, 은행 연동, 전자 서명이 포함되지 않습니다. 오직 견적서 생성, 이를 송장(invoice)으로 변환, PDF 생성, 그리고 고객에게 이메일 발송 기능만 포함됩니다. 첫날부터 유용하게 사용할 수 있는 최소한의 기능입니다.
티켓에서 프로덕션까지
Kalceo는 Ekioo.com 자체와 동일한 인프라로 구축되었습니다: 오케스트레이션 칸반으로서의 KittyClaw, 그리고 티켓을 하나씩 처리하는 전문화된 Claude 에이전트 플릿입니다.
MVP 범위를 정하는 작업은 가공되지 않은 기능 목록에서 시작하여, 이후 원자적 티켓 (atomic tickets)으로 정제되었습니다. 각 티켓은 정밀한 범위를 가집니다: "견적 입력 양식 생성", "HTML 템플릿에서 PDF 생성", "Brevo를 통해 이메일로 견적서 발송". 모호한 것도, 여러 기능에 걸쳐 있는 것도 없습니다. 에이전트는 명확한 경계가 있을 때 잘 작동합니다.
각 기능의 워크플로우는 다음과 같습니다:
<!-- Ticket box -->KittyClaw
Ticket Todo
→ assignee
Dispatch
Lain / Automation
→ launch agent
Claude Agent
programmer
qa-tester
content-writer
PR → Review
Owner merge
→ Production
Kalceo MVP — 티켓당 워크플로우 (per-ticket workflow)
각 에이전트는 자신만의 격리된 git worktree에서 작동합니다. 에이전트는 브랜치를 생성하고, 기능을 코딩하고, 커밋(commit)한 뒤, PR(Pull Request)을 생성합니다. 소유자(나)가 이를 리뷰하고 머지(merge)합니다. 에이전트의 작업이 완료되면, 해당 티켓은 KittyClaw에서 리뷰(Review) 상태로 이동합니다.
에이전트들이 구축한 것들
몇 주에 걸쳐, 에이전트 군단은 MVP의 핵심을 만들어냈습니다:
- 인증 (Authentication) — 회원가입, 로그인, 계정 관리
- 서비스 카탈로그 (Service catalog) — 각 기업이 자신만의 재사용 가능한 견적 항목(quote line items)을 생성
- 견적 생성 (Quote creation) — 항목 추가, 합계 계산 (세전/VAT/전체 포함), 상태 관리 (초안, 확정, 발송, 수락, 거절)
- 브라우저 인쇄를 통한 PDF 내보내기 (PDF export) (서버에서 생성된 인쇄용 HTML 페이지)
- Word에서 편집하기 위한 DOCX 내보내기 (DOCX export)
programmer 에이전트는 대부분의 백엔드 기능(JavaScript, Cloudflare Workers + D1)을 처리했습니다. qa-tester 에이전트는 통합 테스트(integration tests)를 작성하고 합계 계산 과정에서 발생한 여러 버그, 특히 소수점 수량이 포함된 항목의 반올림 문제를 잡아냈습니다.
잘 작동한 것과 수정해야 했던 것
잘 작동한 것:
에이전트들은 경계가 명확한 작업에서 탁월한 성능을 보입니다. 티켓에 명확한 범위(예: "Quote Razor 컴포넌트로부터 PDF 생성")를 부여하면, 종종 단 한 번의 왕복(round-trip)만으로 작업이 완료됩니다. 에이전트는 기존 코드를 읽고, 기존 방식과 일관된 구현 방안을 제안하며, 테스트 가능한 결과물을 만들어냅니다.
격리된 worktree 구조는 병렬화(parallelization)를 단순화했습니다. 두세 개의 기능이 서로 간섭 없이 동시에 진행될 수 있었습니다.
수정해야 했던 것:
에이전트(Agents)는 때때로 부수 효과(side effects)를 놓치곤 합니다. 특히 복잡한 비즈니스 로직에서 더욱 그렇습니다. 합계 계산이 가장 명확한 사례입니다. 첫 번째 패스(pass)에서는 정수 수량에 대한 반올림을 올바르게 처리했지만, 소수점 수량(예: 1.5 단위 × 단가)에서 몇 센트의 오차로 세전 합계가 틀리게 나오는 미묘한 버그가 있었습니다. qa-tester가 이를 포착했고, programmer가 이를 수정했습니다. 하지만 이는 왜 인간의 검토(human review)가 여전히 필수적인지를 잘 보여줍니다.
기능 간의 UI 회귀(regressions) 문제도 있었습니다. 한 에이전트가 컴포넌트를 추가하면, 다른 에이전트가 레이아웃을 수정하고, 그 과정에서 어느 에이전트도 테스트하지 않은 구석진 곳의 CSS가 깨지는 식입니다. 저희는 간단한 규칙을 도입했습니다. 모든 PR(Pull Request)은 리뷰(Review) 단계로 넘어가기 전에 영향을 받는 페이지의 스크린샷을 반드시 포함해야 합니다.
Kalceo의 현재 상태
MVP(Minimum Viable Product)는 kalceo.fr에서 라이브 상태입니다. 프랑스 건설 산업의 기술자 및 소규모 기업을 대상으로 한 페이스북 캠페인이 몇 주 동안 진행되었습니다.
초기 피드백은 문제를 확인해 줍니다. 가입한 사용자들은 실제로 여전히 엑셀(Excel)이나 워드(Word)로 견적서를 관리하는 건설 분야의 개인 사업자 또는 소규모 기업들입니다. 이들이 보고하는 주요 마찰 지점은 기존 카탈로그를 가져오는(importing) 과정이며, 이는 V2를 위한 명확한 개선 사항으로 식별되었습니다.
나머지 백로그(backlog)는 두 가지 축에 집중되어 있습니다: 자동 고객 후속 조치(견적서 발송 후 응답이 없을 경우 X일 후에 리마인더 이메일 발송)와 회계 내보내기(인기 있는 프랑스 회계 소프트웨어와 호환되는 형식으로 내보내기)입니다.
이것이 변화시키는 것
Kalceo는 개인 프로젝트로서 존재할 수 없었을 것입니다. 적어도 이 정도의 기간 내에는 말이죠. 기능 구현이 불가능해서가 아니라, 백그라운드 작업(인증(auth), 데이터 모델(data models), PDF 생성, 이메일, 테스트, 배포)의 총합을 파트타임으로 처리하려면 수개월이 걸렸을 것이기 때문입니다.
이 에이전트 군단(fleet)과 함께라면 방식이 달라집니다. 여러분은 티켓의 범위를 정하고(scoping), PR(Pull Request)을 검토하며, 무엇이 MVP(Minimum Viable Product)에 포함될지 결정하는 데 시간을 보냅니다. 백그라운드 작업은 위임됩니다. 이것이
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기