Infra

해커톤에서 탄생한 AI 회의 비서 ‘아임타임’

구성원들의 회의 예약 습관을 분석해 사내 서비스로 배포하기까지

이호수, 이승민·
# AI# AmazonBedrock# GoogleCalendarAPI
해커톤에서 탄생한 AI 회의 비서 ‘아임타임’
date
slug
author
status
tags(최대 3개)
summary
type
thumbnail
category
updatedAt
TL;DR
  • 사내 해커톤에서 슬랙으로 회의를 요청하는 AI 회의 비서 아임타임을 만들고, 구성원들에게 배포했습니다.
  • Amazon Bedrock의 Claude가 요청을 해석하고, Google Calendar API로 참석자와 회의실의 빈 시간을 조회해 후보를 제안합니다.
  • 실제 업무에서 드러난 말투와 대화 맥락의 해석 문제를 고치고, 일정 변경·취소와 웹 사용 흐름을 갖췄습니다.
 

들어가며

notion image
회의를 진행하면 참석자들의 시간을 맞추고, 빈 회의실을 찾는데 꽤 많은 시간을 씁니다. 겨우 시간을 맞춰도 회의실이 없으면 다시 조율해야 합니다.
이런 불편에서 탄생한 사내 회의비서 ‘아임타임’은 지난 사내 해커톤(BushCraft)에서 시작됐습니다. 호출 한 번으로 회의 시간과 빈 회의실을 제안합니다.
아임타임의 초기 개발 과정부터 해커톤 이후에 어떤 업데이트를 거쳤는지 공유합니다.

두 조건을 함께 조회하기

회의실 현황 파악

먼저 회의가 얼마나 자주 일어나는지 확인하기 위해 구글 캘린더에 연동된 회의실 예약 현황을 살펴봤습니다. 2026년 8월 기준 회의실 예약은 총 684건이었고, 예약자는 79명, 전체 사용 시간은 653시간이었습니다.
notion image
아임타임은 모두가 참석 가능한 시간과 빈 회의실을 제안하도록 설계했고, 요청은 구성원들에게 익숙한 슬랙에서 받기로 결정했습니다.

아키텍처

notion image
예약자가 슬랙에서 "다음주 스크럼 30분 잡아줘"라고 요청하면 Amazon Bedrock의 Claude가 참석자, 날짜, 시간대, 회의 길이, 회의실 조건을 해석합니다.
Claude가 요청에 필요한 도구를 선택하면 봇이 실제 API 호출을 실행합니다. 참석자와 예약자 정보는 슬랙에서, 참석자들의 빈 시간과 회의실 예약 현황은 Google Calendar API에서 조회합니다. 이를 위해 사람 검색, 빈 시간 조회, 회의실 현황 조회, 팀·채널 구성원 조회, 예약자에게 되묻기, 회의 제안 도구를 제공했습니다.
Claude는 도구의 조회 결과를 바탕으로 다음 작업을 판단합니다. 참석자와 일정 조건이 충분히 확인되면 회의 시간 후보를 제안하고, 대상이나 조건이 모호하면 예약자에게 다시 묻습니다. 예약자가 후보를 확정하면 예약 코드가 일정을 생성합니다.

빈 시간과 회의실을 함께 조회

참석자들의 일정을 먼저 맞춘 뒤 회의실을 찾는 방식은 해당 시간에 빈 회의실이 없으면 다시 일정을 조율해야 하는 문제가 있습니다. 그래서 Google Calendar API로 참석자 전원의 빈 시간과 회의실 예약 현황을 함께 조회합니다.
notion image
모두가 참석할 수 있고, 회의실도 비어 있는 시간대를 찾아 하나의 슬랙 카드로 제안하고, 예약자는 제안된 후보 중 원하는 시간과 회의실을 선택합니다.
참석자의 일정을 조회할 때는 개인정보 보호를 고려해 일정의 제목이나 내용은 가져오지 않고, 해당 시간에 일정이 있는지 여부만 확인합니다.

캘린더 수정 범위 설정하기

notion image
캘린더에는 아임웹 전체 구성원의 일정이 모여 있습니다. 모델이 요청을 잘못 해석한 채 일정을 만들거나 지우면 요청하지 않은 사람의 일정까지 영향을 줄 수 있습니다. 그래서 Claude에는 캘린더를 변경하는 권한을 부여하지 않았습니다.
예약자가 제안받은 카드에서 시간을 고르고 예약 버튼을 누르면, 예약 코드가 Google Calendar API를 호출해 일정을 생성합니다. 후보를 제안한 시점과 예약자가 일정을 확정한 시점 사이에 예약 현황이 달라질 수 있으니, 일정을 만들기 직전에 참석자나 회의실에 다른 일정이 생기지 않았는지 다시 확인합니다.

실제 요청에서 드러난 문제

해커톤 당시에는 회의 조율 흐름을 실제로 동작하는 서비스로 구현하는 데 집중했고, 구성원들의 공감을 얻어 최종 3위에 올랐습니다.
여기서 끝내지 않고, 구성원들이 실제로 업무에 적용할 수 있도록 데모를 배포했습니다.
notion image
하지만 준비한 데모에서는 발견하지 못했던 문제가 많았습니다. 사람마다 다른 말투를 파악하지 못했고, 여러 스레드에 걸친 대화 맥락을 놓치기도 했습니다. 이런 작은 불편함들이 구성원들의 이탈을 만들었습니다.
새로운 기능을 추가하는 것보다 중요한 것은 이미 구현한 기능이 의도대로 동작하게 만드는 일입니다. 구성원들이 어디서 불편을 느꼈을지 고민하며 개선했습니다.
그래서 배포 첫 주에는 실제 예약자들이 요청한 슬랙 스레드를 다시 살펴보며, 아임타임이 제대로 처리하지 못한 사례를 모았습니다.
notion image
팀 이름으로 참석자 찾기
"OOO 스쿼드 회식 잡아줘"라는 요청에는 팀원 명단을 조회할 방법이 없다는 답변이 돌아왔습니다. 예약자는 표현을 4번이나 바꿔 요청했지만 결과는 동일했습니다.
그래서 슬랙 사용자 그룹을 연결해, 팀 이름만 말해도 팀원 명단을 찾아 제안하도록 개선했습니다.
notion image
채널·스레드 맥락 이해
"이 채널 사람들", "이 스레드 사람들"처럼 명확하지 않은 참석자를 지정하면 누구를 넣어야 하는지 파악하지 못했습니다.
그래서 팀, 채널, 스레드를 구분해 요청이 온 대화의 참여자를 참석자 후보로 제안하도록 했습니다.
notion image
회의 조건과 제목 반영
15층 회의실을 요청했는데 14층 회의실을 제안해 예약자가 캘린더에서 직접 수정해야 했습니다. 요청한 것과 다른 일정 제목이 등록되기도 했습니다.
그래서 회의실의 위치와 조건, 회의 길이 등을 실제 검색 조건에 반영하고, 예약자가 지정한 일정 제목은 임의로 바꾸지 않고 그대로 쓰도록 설정했습니다.
공통 시간이 없는 경우
notion image
모두가 참석 가능한 시간이 없다면 다른 조건으로 시도하라는 안내가 전부였습니다. 그래서 제외해도 괜찮은 사람이 있을지 예약자에게 확인한 뒤 회의 시간 후보를 다시 검색하도록 했습니다.

변경과 취소까지 처리

notion image
처음에는 회의를 조율하는 첫 단계에 집중해 취소와 일정 변경이 빠져 있었습니다. 예약자가 “취소”라고 하면 회의 시간을 다시 추천했고, 자신이 만든 초대를 다시 수락해야 하는 불편함도 있었습니다.
이후 취소와 시간 변경을 추가하고 예약자만 실행할 수 있도록 했으며, 예약자 본인은 자동으로 회의 일정을 수락하도록 바꿨습니다.
일정 변경은 새 일정을 만들지 않고 기존 일정의 시간만 수정합니다. 일정을 삭제한 뒤 다시 만들면 참석자의 캘린더에서 회의가 사라졌다가 다시 나타나고, 이미 받은 수락 응답도 초기화되기 때문입니다.

웹에서 회의실 한눈에 보기

모든 예약자가 자연어로 회의를 요청하는 방식을 선호하는 것은 아닙니다. 슬랙에서는 회의실 현황을 한번에 파악하는데 한계가 있기도 합니다.
날짜와 시간을 직접 비교하며 일정을 조율할 수 있도록 웹에서도 같은 기능을 제공했습니다.
notion image
웹에서는 참석자를 선택하면 전원이 참석할 수 있는 날짜와 시간만 보여 줍니다. 예약자의 일정과 회의실 예약 현황을 한 화면에서 비교하면서 원하는 시간과 회의실을 직접 고를 수 있습니다.
notion image
현재 비어 있는 회의실과 예약이 몰리는 시간대, 회의실 이용 패턴도 제공합니다. 단순한 예약뿐 아니라 회의실 사용 현황도 함께 살펴보도록 안내합니다.

정리하며

notion image
아임타임을 만들고 운영하면서 가장 어려웠던 일은 기능 개발보다 예약자의 의도대로 동작하게 만드는 일이었습니다. 해커톤에서 준비한 시나리오대로 잘 작동하던 기능도 실제 업무에서는 다양한 표현과 대화 맥락을 만나며 예상하지 못한 문제를 드러냈습니다. 그래서 실제 요청을 하나씩 살펴보며 동작을 고쳐 나갔습니다.
notion image
배포 후 두 달 동안 아임타임으로 잡힌 회의는 슬랙 기록에서 확인한 것만 45건입니다. 한 번이라도 써 본 구성원 가운데 약 44%는 다른 날 다시 불렀습니다. 회의 조율에 든 시간을 직접 재지는 못했지만, 사람이 일일이 묻고 확인하던 과정은 이제 아임타임이 자리잡고 있습니다.
 
이호수 DevOps 같은 실수를 두 번 하지 않으려고 경험을 글로 남깁니다. 추측 대신 실측으로 EC2부터 EKS까지 안전하게 인프라를 운영합니다.
이승민A SRE Engineer 손이 떨리는 겁쟁이 SRE입니다. 끝없는 자동화를 추구합니다.

댓글