← 전체 프로젝트

STIA마케팅 기술 회사 · 진행 중2025–2026백엔드와 에이전트 아키텍처

전문 에이전트 20개, 사람의 승인 2번

AI는 제안할 수 있습니다. 내보내는 것은 사람만 할 수 있습니다.

AI가 전략과 아웃리치 초안을 쓰지만, 전문가와 고객이 차례로 승인해야 무엇이든 움직이는 마케팅 캠페인 플랫폼. 중간에 죽은 실행은 멈춘 곳에서 다시 이어집니다.

  • 오케스트레이션LangGraph, 4갈래 분기 후 합류
  • 사람 관문전문가 → 고객, 관문별 권한 확인
  • 모델Anthropic, OpenAI, Gemini. 조사는 Perplexity
  • 테스트테스트 함수 약 1,300개, 147개 파일

필요했던 것

마케팅 전략을 만들고 리드 아웃리치를 대규모로 돌리는 플랫폼. AI는 절대 스스로 게시하거나 누구에게 연락하지 않고, 중단된 실행은 작업을 잃지 않아야 합니다.

만든 것

전문 에이전트 20개가 갈라졌다가 다시 모이고, 관문 2개에서 멈추는 전략 파이프라인: 전문가가 검토하고, 그다음 고객이 승인합니다. 명시적 규칙으로 리드를 선별하고(누구에게 연락할지 AI가 추측하지 않음), 정보를 보강하고, CRM과 동기화하는 리드 파이프라인. LinkedIn 아웃리치 이벤트를 듣고 답장 초안을 쓰되, 사람이 승인해야 보냅니다. 모든 실행이 결정 기록과 에이전트별 비용 항목을 남깁니다.

달라진 것

고객사는 승인이 코드로 강제되고, 실행이 재개 가능하며, 모든 모델 호출에 가격표가 붙은 시스템을 갖게 됐습니다. (이 프로젝트는 진행 중이라 성과 수치는 적지 않습니다.)

기술적으로는
  • 전략 DAG는 LangGraph StateGraph. 서브에이전트마다 자기 클래스, 자기 프롬프트 모듈, 타입이 있는 Pydantic 입출력. 라우팅이 BLOCKED를 돌려주면 조건부 엣지가 고객 관문을 건너뜀.
  • 관문은 interrupt()와 관문별 호출자 권한 확인. 모든 실행이 노드별 human | logic 출처와 변경 불가 결정 기록을 남김.
  • 내구성: Firestore 체크포인터. 죽은 프로세스에서 멈춘 실행은 클래스명 + 스레드 id로 재구성. 부분 재실행을 위한 DAG 중간 진입. LangGraph는 재개 시 노드를 다시 돌리므로 승인은 first-write-wins에 멱등. 추가 전용 장부가 모든 전달 시도를 기록. 대사 재시도는 상한을 두고 그 뒤엔 데드레터.
  • 비용 통제: 토큰 추적기(에이전트별 호출별 모델, 토큰, 비용), 사용량 쿼터 → 429, 동시 캠페인 수 상한.
  • 리드 파이프라인: 규칙 기반 3단계 선별(자동 / 사람 검토 / 제외)과 리드별 사유 기록. Apollo와 Apify로 보강. HubSpot 양방향 CRM 동기화. LinkedIn 아웃리치 웹훅은 Firestore 트랜잭션에서 참조 카운트. 답장 초안은 사람이 내보내기 전까지 검토 큐에 대기.
  • LangGraph
  • Firestore
  • FastAPI
  • Anthropic
  • OpenAI
  • Gemini
  • HubSpot API