마케팅 팀은 함께 일합니다. 이제 STRATUM도 그렇습니다.
50명 미만의 사용자로 알파 단계에서 팀 협업 기능을 출시했습니다. 고객들이 이미 팀으로 일하고 있었기 때문입니다—연간 80시간 이상을 소모하는 스크린샷과 복사-붙여넣기 우회 방법으로.
"아직 알파인데 왜 팀 기능을 만드세요?"
좋은 질문입니다. 사용자가 50명도 안 됩니다. 대부분의 SaaS 창업자라면 팀을 생각하기 전에 100명에 도달하는 데 집중할 것입니다.
하지만 알파 사용자들을 관찰하면서 깨달은 것은: 그들이 혼자 일하고 있지 않다는 것이었습니다. 마케팅 디렉터는 CEO에게 스크린샷을 공유하고 있었습니다. 에이전시 대표는 AI 출력물을 WhatsApp에 복사-붙여넣기하고 있었습니다. 창업자는 아내에게 이메일을 전달하고 있었습니다.
광고업계에서 18년을 일한 저에게 이것은 놀라울 게 없어야 했습니다. 마케팅은 절대 솔로 활동이 아닙니다. 저는 에이전시 전체 층이 Slack 스레드, 이메일 전달, "그거 스크린샷 좀 해줄 수 있어요?" 요청의 혼란스러운 조합으로 운영되는 것을 봐왔습니다. 팀이 실제로 협업하는 방식이고—고통스럽습니다. 알파에서 같은 패턴이 나타나는 것을 보고, 무시할 수 없었습니다.
그래서 팀 협업을 구축했습니다. 알파에서. "더 현명한" 창업자들은 기다렸을 것입니다. :P
출시한 것, 왜 이렇게 만들었는지, 그리고 그 과정에서 배운 것을 소개합니다:
1. 모든 사람에게 적절한 접근 권한 — SME와 에이전시 팀이 실제로 일하는 방식을 위해 설계된 15개 역할, 에이전시를 위한 클라이언트 수준 격리
2. 왔다 갔다 없이 함께 일하기 — 승인, 댓글, 작업, 알림이 "내 메시지 봤어?" Slack 스레드를 대체
3. 신입이 즉시 생산적 — 초대 → 역할 배정 → 바로 일하기. 3일이 아니라 30초.
출시된 것, 팀에 왜 중요한지, 그리고 작동하게 만든 결정들을 소개합니다.
---
"로그인 공유하면 돼"의 실제 비용
이 기능들 이전에, 팀들은 STRATUM을 이렇게 사용하고 있었습니다:
옵션 A: 자격 증명 공유 (보안 악몽)
- 모두 같은 로그인 사용
- 누가 무엇을 했는지 알 수 없음
- 한 사람이 비밀번호를 변경하면, 모두 잠김
옵션 B: 별도 계정 (비싸고 분산)
- 각 사람이 별도로 결제
- AI 출력물이 다른 계정에 존재
- "그 전략 내보내서 보내줄 수 있어?"
옵션 C: 스크린샷과 붙여넣기 (현실)
- 한 사람이 AI 에이전트를 실행
- 팀원에게 스크린샷 또는 복사-붙여넣기
- 컨텍스트가 사라지고, 포맷이 깨지고, 아무도 작업을 발전시킬 수 없음
이 중 어느 것도 진정한 협업이 아닙니다. 우회 방법일 뿐입니다.
비즈니스 비용? 한 에이전시 대표가 하루에 20분을 AI 출력물을 도구 간에 옮기는 데 사용하는 것을 봤습니다—이메일 전달, Google Docs에서 재포맷, 원본 대화를 볼 수 없는 팀원에게 컨텍스트 재설명.
연간 80시간 이상. 한 사람. 한 팀에서.
---
기능 1: IT 골칫거리 없이 모든 사람에게 적절한 접근 권한 부여
에이전시 측에서 18년을 보낸 후, 마케팅 팀이 어떻게 일하는지 정확히 알고 있습니다: 다른 사람들이 다른 것에 대해 다른 접근 권한이 필요합니다.
시니어 전략가는 클라이언트 A와 B에서 일합니다. 주니어 분석가는 소규모 계정에서 배우고 있습니다. 프리랜서 크리에이티브는 배정된 클라이언트만 다룹니다. 그리고 절대 아무도 보지 않아야 할 클라이언트 데이터를 봐서는 안 됩니다.
이것은 비용 통제에 관한 것이 아닙니다 (물론 중요하지만). 팀이 실제로 운영되는 방식에 관한 것입니다.
두 가지 권한 모델: SME vs 에이전시
3인 스타트업과 15인 에이전시가 완전히 다른 워크플로를 가지고 있다는 것을 꽤 일찍 배웠습니다. 하나의 권한 모델로 강제하면 엉망이 되었을 것입니다 — 기업용 도구들이 이렇게 하는 것을 봤는데, 결국 소규모 팀은 복잡성에 빠지고 대규모 팀은 충분한 통제력이 없게 됩니다. 그래서 두 가지 별도 모델을 구축했습니다.
SME 역할 (5개 역할)
더 간단한 계층 구조를 가진 중소기업용:
| 역할 | 에이전트 접근 | 캠페인 접근 | 팀 관리 |
|------|-------------|-----------------|-----------------|
| 소유자 | 8개 전체 에이전트 | 전체 접근 (생성, 편집, 실행, 보관) | 초대, 관리, 제거 |
| 마케팅 디렉터 | 전략, 페르소나, 콘텐츠, 퀵윈 (4개) | 캠페인 생성, 편집, 실행 | 팀 보기만 |
| 마케팅 매니저 | 실행, 콘텐츠, 퀵윈 (3개) | 캠페인 생성, 편집, 실행 | 없음 |
| 분석가 | 성과 인텔리전스 (1개) | 보기만 | 없음 |
| 뷰어 | 없음 (읽기 전용) | 보기만 | 없음 |
왜 이 다섯 개인가요? SME 마케팅 팀에서 실제로 본 역할을 매핑했습니다. 모든 것을 하는 소유자. 전략을 세우는 디렉터. 실행하는 매니저. 측정하는 분석가. 무슨 일이 일어나는지만 봐야 하는 VA나 회계사.
에이전시 역할 (10개 역할)
복잡한 팀 구조로 여러 클라이언트를 관리하는 에이전시용:
| 역할 | 에이전트 접근 | 클라이언트 범위 | 주요 권한 |
|------|-------------|--------------|-----------------|
| 소유자 | 9개 전체 에이전트 | 모든 클라이언트 | 전체 통제, 청구 |
| 관리자 | 9개 전체 에이전트 | 모든 클라이언트 | 팀 관리, 청구 제외 |
| 전략가 | 8개 에이전트 (고객 성공 제외) | 모든 클라이언트 | 전략, 캠페인 |
| 어카운트 매니저 | 9개 전체 에이전트 | 배정된 것만* | 자기 클라이언트에 대한 전체 접근 |
| 캠페인 매니저 | 퀵스타트, 콘텐츠, 캠페인 (3개) | 모든 클라이언트 | 실행 중심 |
| 분석가 | 성과 인텔리전스 (1개) | 모든 클라이언트 | 분석, 내보내기 |
| 크리에이티브 | 콘텐츠 (1개) | 모든 클라이언트 | 콘텐츠 제작만 |
| 클라이언트 뷰어 | 없음 | 배정된 것만* | 클라이언트에 대한 읽기 전용 |
| 프리랜서 | 콘텐츠 (1개) | 배정된 것만* | 제한된 범위, 임시 |
| 뷰어 | 없음 | 모든 클라이언트 | 모든 곳에서 읽기 전용 |
클라이언트 범위 역할
이 에이전시를 위한 게임 체인저입니다. 어카운트 매니저를 클라이언트 A에 배정하면, 클라이언트 B의 데이터를 문자 그대로 볼 수 없습니다. "UI에서 숨김"이 아니라—데이터베이스 수준에서 강제됩니다.
클라이언트 배정 관리
에이전시 팀의 경우, 팀 관리 페이지에 각 팀원이 어떤 클라이언트에 접근할 수 있는지 한눈에 알려주는 클라이언트 접근 열이 표시됩니다. 팀원의 액션 메뉴를 클릭하여:
- "모든 클라이언트" 접근 부여: 새 클라이언트가 자동으로 보이게 됨
- 특정 클라이언트 배정: 정확히 어떤 클라이언트를 볼 수 있는지 선택
- 언제든 배정 업데이트: 클라이언트 명단이 변화하면 접근 권한 변경
즉, 클라이언트 A의 어카운트 매니저는 직접 시도하더라도 클라이언트 B의 대시보드, 캠페인, AI 출력물을 문자 그대로 볼 수 없습니다. 필터링은 UI가 아니라 데이터베이스 수준에서 발생합니다.
새 팀원 온보딩 시: 초대할 때 같은 흐름에서 역할과 클라이언트 범위를 함께 선택합니다. 별도 단계 없음. 접근 제한을 잊을 일 없음.
권한 인식 UI
이것이 실제로 사용하기 좋게 만드는 것입니다: UI가 역할에 맞게 적응합니다.
팀원을 초대할 수 없으면, 팀 설정이 보이지 않습니다. 클라이언트에 접근할 수 없으면, 대시보드에 그 클라이언트가 나타나지 않습니다. 에이전트를 실행할 수 없으면, 명확한 표시와 함께 잠금 상태로 나타납니다.
옵션을 클릭했는데 에러만 받는 일은 더 이상 없습니다. "이것을 볼 수 있는데 왜 아무것도 할 수 없지?" 혼란도 없습니다.
에이전시 디렉터에게: 크리에이티브들은 깔끔하고 집중된 인터페이스만 봅니다—자기 도구만. 교육 감소, 실수 감소.
창업자에게: 뷰어 역할의 VA는 단순화된 대시보드를 봅니다. 압도되지 않고 필요한 것을 찾고 복사할 수 있습니다.
37개의 세분화된 권한 (직접 설정할 필요 없음)
이 역할 뒤에는 37개의 개별 권한이 있지만—수동으로 설정할 필요는 없습니다. 각 역할은 마케팅 팀이 실제로 일하는 방식에 따라 사전 설정되어 있습니다:
| 카테고리 | 왜 중요한가 |
|----------|----------------|
| AI 에이전트 (9) | 크리에이티브가 실수로 잘못된 클라이언트에서 전략 에이전트를 실행할 수 없음 |
| 캠페인 (6) | 분석가는 보고를 위해 캠페인을 볼 수 있지만, 실수로 보관할 수 없음 |
| 클라이언트 (5) | 소유자와 관리자만 새 클라이언트를 추가할 수 있음—실수로 데이터 확산 없음 |
| 분석 (3) | 모두 기본 통계를 볼 수 있음; 분석가만 원시 데이터 내보내기 가능 |
| 문서 (3) | 민감한 업로드 보호—VA는 보기만 가능, 삭제 불가 |
| 조직 (4) | 청구 접근은 소유자로 제한—"누가 우리 요금제 변경했어?" 놀라움 없음 |
| 팀 (3) | 매니저가 소유자 승인 없이 친구를 초대할 수 없음 |
| 워크스페이스 (2) | 모든 사람이 새로 만들지 않고도 워크스페이스를 정리 |
| 관리자 (2) | 시스템 기능은 무엇을 하는지 아는 사람에게만 제한 |
각 역할은 업무에 필요한 것만 정확히 얻습니다—그 이상도 이하도 아닙니다. 역할을 한 번 설정하면; 권한은 자동으로 따라갑니다.
---
기능 2: 스크린샷과 Slack 스레드 추적 그만하기
이것은 제가 가장 개인적으로 투자한 기능입니다. 권한은 누가 무엇을 할 수 있는지 통제하지만, 협업은 어떻게 함께 일하는지 — 제 경험상, 왔다 갔다가 실제로 하루를 잡아먹습니다. 에이전시 측에서 20년을 이 문제를 겪어왔습니다 :D
공유 캠페인 & AI 출력물
이전 모델: 내 캠페인. 내 AI 출력물. 내 사일로.
새 모델: 조직 범위 협업.
전략가가 Persona Agent를 실행하면, 그 페르소나는 개인 계정이 아니라 조직에 속합니다. 이제 카피라이터가:
- 스크린샷 요청 없이 페르소나 확인 가능
- Content Agent를 실행할 때 참조 가능
- 처음부터 시작하지 않고 발전시킬 수 있음
분석가가 경쟁 분석을 생성하면, 마케팅 디렉터가 전달된 PDF를 통해서가 아니라 직접 검토할 수 있습니다.
승인 워크플로
콘텐츠는 단순히 만들어지는 것이 아닙니다—게시 전에 검토되고 승인됩니다.
| 워크플로 | 요청자 | 승인자 | 사용 사례 |
|----------|-----------|-------------|----------|
| SME 캠페인 런칭 | 매니저 | 디렉터 → 소유자 | 캠페인에 대한 2단계 승인 |
| SME 콘텐츠 게시 | 매니저 | 디렉터 | 콘텐츠에 대한 단일 승인 |
| 에이전시 캠페인 런칭 | 캠페인 매니저 | 전략가 → 소유자 | 클라이언트 작업에 대한 2단계 |
| 에이전시 콘텐츠 (클라이언트) | 크리에이티브 | 어카운트 매니저 | 클라이언트 범위 승인 |
| 프리랜서 작업 | 프리랜서 | 어카운트 매니저 | 외부 기여자 검토 |
작동 방식:
1. 크리에이티브가 콘텐츠를 완성 → "승인 요청" 클릭
2. 어카운트 매니저가 알림 받음 → 컨텍스트 내에서 검토
3. 승인, 거부, 또는 메모와 함께 변경 요청
4. 크리에이티브가 결정 알림 받음
5. 변경 요청 시 → 수정 후 재제출 (라운드 추적)
"클라이언트 A 카피에 대한 내 이메일 봤어?" Slack 스레드는 이제 그만.
댓글 & @멘션
Slack 스레드에서 사라지지 않고—출력물에서 직접 AI 생성 작업을 논의하세요.
- 스레드 댓글 — 모든 캠페인, 출력물, 페르소나에
- @멘션 — 특정 팀원에게 알림
- 해결 추적 — 무엇이 처리되었는지 확인
- 클라이언트 범위 — 에이전시의 경우 프리랜서는 배정된 클라이언트의 댓글만 볼 수 있음
작업 배정
SME 마케팅 디렉터에게: 스프레드시트에서 누가 무엇을 하는지 추적하지 마세요. 출력물에서 직접 콘텐츠 제작, 검토, 캠페인 작업을 배정하세요—팀은 작업 대기열을, 여러분은 상태를 확인합니다.
에이전시 어카운트 매니저에게: 클라이언트 결과물을 트랙에 유지하세요. 클라이언트 범위 내에서 작업을 배정하고, 우선순위와 마감일을 설정하고, 무언가 막혔을 때 즉시 확인하세요.
작동 방식:
- 작업 유형: 콘텐츠 제작, 검토, 분석, 캠페인 설정
- 우선순위 레벨: 낮음, 보통, 높음, 긴급
- 마감일 — 마감 임박 알림
- 연결된 리소스: 작업이 특정 캠페인이나 출력물에 연결—"어떤 문서 말하는 거야?" 없음
- 상태 추적: 할 일 → 진행 중 → 검토 → 완료
역할 계층이 깔끔하게 유지—어카운트 매니저는 클라이언트 범위 내에서, 디렉터는 팀에게, 소유자는 누구에게나 배정 가능.
실시간 알림: 주의가 필요한 것을 놓치지 마세요
바쁜 마케팅 디렉터와 에이전시 대표에게: 5분마다 Slack을 확인하며 누군가 필요한지 궁금해하지 마세요. STRATUM이 정확히 언제 행동이 필요한지 알려줍니다:
- 누군가 승인을 요청 → 즉시 알림
- 승인 요청이 해결됨 → "봤을까?" 궁금해하지 않아도 됨
- 댓글에서 @멘션 → 관련 대화가 찾아옴
- 작업이 배정됨 → 작업 대기열에 표시
- 마감일 임박 → 늦기 전에 경고
알림은 앱에서 실시간으로 나타나고, 놓치면 이메일 요약으로 전달됩니다.
---
기능 3: 신입이 3일이 아닌 30초 만에 생산적
이전: 새 팀원? 프로세스:
1. 별도로 가입
2. 저에게 이메일을 보내서 수동으로 조직에 추가
3. 데이터베이스에서 역할 배정
4. 로그인... 작동할 수도?
현재:
1. 설정 → 팀 → 초대
2. 이메일 입력, 역할 선택
3. 링크 클릭, 비밀번호 설정
4. 접속 완료. 올바른 권한으로. 즉시.
30초가 중요한 이유
새 분석가를 온보딩하는 마케팅 디렉터: 3일이 아닌 첫날부터 생산적입니다.
프리랜서 크리에이티브를 추가하는 에이전시 대표: IT 티켓 없음, 기다림 없음, "내일 처리할게" 없음.
VA를 데려오는 창업자: Slack 메시지를 보내는 시간에 뷰 접근 권한 부여.
이것을 가능하게 한 기술적 선택
대부분의 플랫폼은 이메일 확인 흐름을 사용합니다: 초대 → 확인 이메일 → 링크 클릭 → 비밀번호 설정 → 또 다른 확인 → 마침내 로그인.
저는 중복 확인을 건너뛰었습니다. 초대 이메일을 받았다면, 이미 이메일 주소 소유를 증명한 것입니다. 왜 두 번 증명해야 하나요?
초대 링크는 안전하고, 서버에 저장되며 (누군가 조작할 수 있는 URL 매개변수가 아님), 7일 후 만료됩니다. 수락하면 모든 것이 한 단계로 진행됩니다:
1. 계정 생성
2. 올바른 조직에 추가
3. 역할 권한 배정
실패하면, 아무것도 생성되지 않습니다. 반쯤 완성된 계정 없음. 누락된 권한 없음. "초대했는데 아무것도 안 보여요" 지원 티켓 없음.
---
심층 방어: 데이터 격리를 구축한 방법
이 섹션이 대부분의 독자에게 필요한 것보다 기술적일 수 있다는 것을 알고 있지만, 보안에 대해 어떻게 생각하는지 투명하게 하는 것이 중요하다고 생각합니다 — 특히 클라이언트 데이터를 맡기고 있는 에이전시 사용자에게. 아직 비공개 알파이지만, 아키텍처에서 수순을 건너뛰지 않았습니다. 데이터 격리는 처음부터 구축되었습니다 — 나중에 덧붙인 것이 아닙니다. 레이어드 접근 방식은 다음과 같습니다:
레이어 1: 데이터베이스 수준 강제 (Row Level Security)
권한은 애플리케이션 코드에서만 확인되지 않습니다—Postgres Row Level Security (RLS)를 사용하여 데이터베이스 자체에서 강제됩니다. 모든 쿼리가 자동으로 조직별로 필터링됩니다. 분석가는 다른 조직의 데이터를 볼 수 없습니다. 왜냐하면 데이터베이스가 반환하지 않기 때문입니다—애플리케이션이 무엇을 요청하든.
클라이언트 범위 역할의 경우, 두 번째 RLS 정책이 배정된 클라이언트로 필터링합니다. 클라이언트 A의 어카운트 매니저는 직접 API 요청을 만들더라도 클라이언트 B의 데이터에 접근할 수 없습니다.
레이어 2: 애플리케이션 수준 권한 검사
UI는 같은 권한 규칙을 존중합니다. 클라이언트에 접근할 수 없으면, 대시보드에 나타나지 않습니다. 에이전트를 실행할 수 없으면, 버튼이 비활성화됩니다. 내비게이션, 버튼, 페이지 모두 같은 권한 소스를 확인합니다—UI는 보여주지만 API는 거부하는 불일치 없음.
레이어 3: 원자적 트랜잭션
초대 수락과 같은 중요한 작업은 단일 데이터베이스 트랜잭션으로 진행됩니다. 계정 생성, 조직 추가, 역할 배정, 클라이언트 접근 설정—모두 함께 성공하거나 모두 함께 실패합니다. 반쯤 완성된 상태 없음. 고아 레코드 없음.
레이어 4: 서버 측 비밀
초대 세부사항 (조직, 역할, 클라이언트 배정)은 서버에 저장되며 보안 토큰으로 참조됩니다. 초대 URL에는 토큰만 포함됩니다—실제 권한이 데이터베이스에 있기 때문에 조작해도 다른 접근 권한이 부여되지 않습니다.
---
알파 투명성: 이 레이어들을 의도적으로 구축했지만, 소규모 팀이고 STRATUM은 아직 발전 중입니다. 알파 동안 보장할 수 있는 것과 없는 것에 대한 전체 내용은 개인정보 보호정책과 이용약관을 참조하세요.
---
왜 알파에서 이것을 만들었나
솔직한 답: 팀 기능을 나중에 추가하는 것은 잔인하기 때문입니다.
출시 후에 멀티테넌시를 추가하려고 하는 회사들을 봐왔습니다. 악몽입니다. 모든 테이블에 새 컬럼이 필요합니다. 모든 쿼리에 새 필터가 필요합니다. 모든 권한 검사를 다시 작성해야 합니다. 데이터 마이그레이션이 무섭습니다.
STRATUM은 2일차부터 조직 범위 데이터로 구축했습니다 (그것은 다른 게시물의 이야기입니다). 아키텍처는 팀을 위해 준비되어 있었습니다. 기능만... 만들면 되었습니다.
50명의 사용자로 팀 기능을 구축한다는 것은:
- 빠른 반복: 출시하고, 피드백 받고, 몇 달이 아닌 며칠 안에 수정
- 실제 사용 패턴: 상상했던 것이 아닌 팀이 실제로 어떻게 협업하는지 확인
- 마이그레이션 위험 없음: 깨뜨릴 기존 팀 워크플로 없음
대안—1,000명의 사용자를 확보한 후 "서프라이즈, 이제 팀을 위해 전체 워크플로를 재구성해야 합니다"라고 하는 것—이 더 나쁘게 보였습니다.
지금 사용해 보세요
팀 기능은 모든 STRATUM 사용자에게 제공됩니다.
기존 사용자라면:
1. 설정 → 팀으로 이동
2. "팀원 초대" 클릭
3. 30초 만에 온보딩 확인
새로 오셨다면:
stratum.chandlernguyen.com에서 알파 액세스를 요청하세요. 요청에 "팀 협업"을 언급하세요—저는 아직 "모든 사용자와 대화하는" 단계이고, 이 기능이 팀에 어떻게 맞는지 안내해 드리고 싶습니다.
---
파격적인 베팅
알파에서 팀 기능을 만드는 것은 파격적입니다. 대부분의 조언은 말합니다: 사용자를 먼저 확보하고, 협업은 나중에 추가하라.
하지만 팀은 마케팅이 실제로 작동하는 방식입니다. 마케팅 디렉터는 혼자 전략을 만들지 않습니다. 에이전시 대표는 혼자 클라이언트 계정을 운영하지 않습니다. 협업은 좋으면 좋은 기능이 아닙니다—작업이 이루어지는 방식입니다.
처음부터 팀을 위해 만드는 것은 STRATUM이 여러분과 함께 성장한다는 것을 의미합니다. 혼자 시작하고, 준비되면 첫 번째 팀원을 초대하고, 플랫폼을 바꾸지 않고 전체 에이전시 팀으로 확장하세요.
이 베팅이 틀릴 수도 있습니다. 하지만 알파 사용자들이 공유 부족을 스크린샷과 복사-붙여넣기로 우회하는 것을 보면서... 틀린 것 같지는 않습니다.
결국, 제품을 만드는 것은 실제 사람들의 실제 문제를 해결하는 것입니다 — "1,000명의 사용자를 확보할 때까지 기다리라"는 플레이북을 따르는 것이 아닙니다. 성장 차트의 숫자를 쫓기보다 50명의 사용자가 지금 실제로 필요한 것을 만들겠습니다.
마케팅 팀 (또는 에이전시)을 운영하고 계시다면, 오늘날 협업을 어떻게 처리하는지 정말로 듣고 싶습니다. "스크린샷과 붙여넣기" 진영인가요? "로그인 하나 공유" 진영인가요? 더 나은 것? 알려주세요 — 아직 배우는 중이고 모든 대화가 이것을 더 잘 만드는 데 도움이 됩니다.
감사합니다,
Chandler
DIALØGUE도 만들고 있습니다 — "팀을 위해 일찍 만들기" 같은 생각을 AI 팟캐스트 생성에 적용하면 어떻게 되는지 궁금하시다면 확인해 보세요.


















