비개발자 마케터가 AI와 만든 첫 앱

Share
Bloom 앱 소개 화면과 「가장 활발하고 솔직한 AI 커뮤니티」 문구

비개발자 마케터인 내가 AI와 함께 월요일 오후에 시작해서, 27시간 만에 사내 QA를 열고 목요일 새벽 Closed Beta를 시작했다. 어떻게 만들었는지, 숫자와 삽질, 기술 스택까지 숨김없이 적어 본다.

어제 론칭 행사가 끝나고 "이걸 어떻게 만든 거냐"는 비하인드 질문을 꽤 많이 받았다. 따로 발표를 하거나 영상을 찍기엔 부담스러워서 글로 정리하기로 했다. 사실 이 글마저 지금까지의 커밋 기록, 슬랙 기록, 회의록 등을 바탕으로 AI가 다 써 줬다. 나는 "사람들이 이런 게 궁금한 것 같으니까 민감한 건 빼고, 관심 있을 만한 것 위주로 블로그 써 줘"라고 했을 뿐이다. 토씨 하나 고치지 않았다. (오히려 내가 고치면 더 이상해진다. 맨 끝 '마치며'만 내가 보탰다)

앱은 app.bloomworld.ai에서 가입할 수 있다. 가입하면 바로 대기 명단에 오르고, 순서대로 쓸 수 있게 열린다.

왜 웹앱이었고, 왜 내가 만들었나

앞선 글에 올렸듯이 Bloom 커뮤니티를 위한 웹앱을 만들었다. 앱을 만들자는 이야기는 내부에서도 나왔지만, iOS·안드로이드 심사를 받는 데 걸리는 시간도 있고 무엇보다 여기에 쏟을 리소스가 부족하다는 생각에 실천에 옮기지 못하고 있었다.

그런데 커뮤니티원분들이 정보를 더 편하게 받고 서로 더 많이 교류하고 싶다는 피드백을 정말 많이 주셨다. 그래서 가장 익숙한 모바일 앱을 만들어 보기로 했고, 우선 심사가 없는 웹앱으로 시작했다.

브라우저에서 app.bloomworld.ai를 열어 홈 화면에 추가하면 앱처럼 쓸 수 있다

문제는 누가 만드느냐였다. 고민 끝에 앱은커녕 개발도 안 해 본 비개발자 마케터인 내가 직접 해 보기로 했다. 괜히 펜대를 잡았다가 끝까지 책임지지 못해서 이도 저도 안 되는 게 가장 걱정이었다.

그래서 내가 MVP로 만든 화면과 기능을 동료들에게 먼저 보여 주고, 요즘 Opus 5.5 정도면 일주일 안에 되겠냐고 물어봤다. 너무 충분하다는 답이 돌아왔다. 오히려 여러 명이 조율하는 것보다 한 명이 처음부터 끝까지 끌고 가는 게 훨씬 효율적일 거라고 했다.

Bloom 앱 홈 화면, 다가오는 행사와 Mixer 카드가 보인다

타임라인: 월요일 오후에 시작해 목요일 새벽에 론칭

그 말을 믿고 월요일 오후에 바로 시작했다.

  • 9/28(월) 15:28 첫 커밋. 노션 PRD와 내가 만든 프로토타입 화면에서 출발
  • 9/29(화) 18:26 사내 QA 시작. 첫 커밋부터 27시간
  • 9/30(수) QA 2·3차, 피드백 100건 넘게 반영
  • 10/1(목) 새벽 Closed Beta 시작, 가드너분들께 초대장
  • 10/1(목) 저녁 론칭 행사 'Bloom App x Gardeners'

물론 자잘한 기능과 문구는 지금도 계속 고치고 있다. 그래도 속도는 매끄럽고 넣으려던 기능은 다 들어갔다. 이 정도면 LinkedIn, 리멤버, Luma, 나중에는 디스코드(서버를 얼마나 잡아먹느냐에 따라 다르겠지만)의 기능까지 다 붙일 수 있겠다는 생각이 든다.

나한테 맞는 행사를 AI가 찾아 주는 기능도 "OpenRouter 무료 모델 붙여 줘" 한마디로 그냥 해 봤다. 무료 모델 3개를 차례로 쓰고, 하나가 막히면 다음 모델로 넘어간다. 실수로라도 유료 모델은 쓰지 못하게 막아 뒀다.

숫자로 보는 첫 나흘

9/28(월) 오후부터 10/2(금) 오전까지의 기록이다.

  • 커밋: 942개 (앱 489, 서버 453)
  • 머지한 PR: 83개 (앱 43, 서버 40)
  • 서버 자동 테스트: 5,541개. 배포할 때마다 전부 통과해야 한다 (기존 Mixer 서버 테스트 포함)
  • 배포 전 통합 QA: 가입부터 체크인까지 실제 사용 흐름 30개
  • 번호 붙여 남긴 기획 결정: 124개
  • 앱 화면: 14개
  • 행사 현장 QR 버그: 신고부터 배포까지 15분 남짓
  • Closed Beta 첫날: 332명이 가입했다 (대기 명단에서 순차 입장 중)
배포 항목과 시각이 표로 정리된 Claude Code 작업 화면

개발 언어가 뭐냐는 질문

어제 한 커뮤니티원분이 어떤 개발 언어를 썼냐고 물어보셨다. 한 번도 생각해 본 적이 없다고 했다. 만드는 데는 별로 중요하지 않아서 ㅎㅎ

이참에 이 글을 쓰면서 처음으로 Claude에게 물어봤다.

  • 앱 화면: HTML·CSS·JavaScript로 만든 웹앱(PWA). 홈 화면에 추가하면 앱처럼 열린다. 내가 Claude와 그린 프로토타입 화면을 그대로 실제 화면으로 쓴다
  • 서버: Python(FastAPI) + PostgreSQL. 8월부터 Mixer를 돌리던 서버를 그대로 키웠다
  • 배포: AWS Lightsail 위 Docker, 앞단은 Cloudflare. GitHub Actions가 테스트를 통과한 코드만 올린다
  • 무중단 배포: 앱 서버 두 개를 띄워 두고 하나씩 교체한다. 그래서 행사 중에 배포해도 끊기지 않는다
  • 결제: 포트원 + 토스페이먼츠. 카드 등록 0원, Plus 월 2만 원 정기결제
  • 연동: Luma 행사 자동 가져오기, 블로그·유튜브 피드, 웹 푸시 알림
  • AI: 행사 찾기에 OpenRouter 무료 모델

PRD가 가드레일

  • 개발 전에 PRD를 노션에 최대한 꼼꼼하게 썼다. 기능을 계속 붙이다 보면 AI가 폭주해서 이것저것 만들기 쉽다. 그래서 새 기능을 만들 때마다 처음 기획 의도에서 벗어나거나 충돌하는 게 없는지 AI가 스스로 PRD와 대조하게 했다.
  • 바꿔야 하면 PRD를 먼저 고치고, 무엇을 왜 바꿨는지 번호를 붙여 기록하게 했다. 만들다 보면 나도 생각이 바뀌니까. 그렇게 쌓인 결정이 나흘 만에 124개다.
  • PRD는 배경과 목적, KPI부터 시작한다. 목표는 10월 31일까지 Mixer 신청자 1,000명이다. 첫 Mixer는 카드만 등록하면 무료고, 두 번째부터 Plus(월 2만 원, Mixer 무제한)다.
  • 8~9월에 웹으로 Mixer를 운영했을 때 170명 가까이 신청하셨다. 그때는 회차당 2만 원이었는데, 차라리 구독제가 좋겠다는 의견이 있어서 구독으로 바꿨다. 이번엔 좀 더 부담 없이 오시지 않을까 싶다.
노션에 쓴 Bloom 앱 PRD의 「왜 만드는가」 부분

토스 개발자이신 가드너분은 어떻게 이틀 만에 만들었냐고 물어보셨다. 기능보다는 그 감성(?)을 더 궁금해하시는 것 같았다. 사실 이미 좋은 레퍼런스가 많아서 거기서 영감을 받았고, 무엇을 만들고 싶은지는 꽤 명확했다.

  • Luma처럼 행사 찾고 만들기
  • Mixer 같은 소규모 큐레이션 모임 찾고 만들기
  • 리멤버처럼 서로 1촌 맺기
  • 카드 꾸미기 같은 귀여운 기능
  • 여러 행사를 AI가 주제별 태그로 나눠 주기

QA는 이렇게 했다

QA는 세 겹으로 돌렸다.

1. 밤에는 Claude 혼자. "QA 돌려" 하면 밤새 실제 브라우저로 가입, 초대장, 대기 명단, Mixer 신청과 카드 등록, 1촌 QR, 현장 체크인까지 30개 흐름을 직접 눌러 보고 스스로 고친다. 배포 전에는 서버 테스트 5,541개와 이 30개 흐름을 모두 통과해야 한다.

2. 낮에는 사내 슬랙 스레드. 동료들이 각자 폰으로 써 보고 스레드에 한 건씩 남긴다. 개발자분들은 정확하게 설명해 주셨는데, 나는 솔직히 개떡같이 썼다 ㅎㅎ Claude가 주기적으로 스레드를 읽고, 확인한 글에 초록 체크를 누르고, 고친 뒤에 현황을 올린다.

사내 슬랙에 올린 QA 안내와 피드백 스레드

3. 마지막엔 녹음. 준수 님과 1시간 동안 폰을 보면서 스샷도 안 찍고 말로만 이야기했다. 그 회의 녹음 스크립트를 통째로 주고 "우리 의견 듣고 알아서 고쳐"라고 했다 ㅎㅎ

앱 운영 점검 회의 녹음을 정리한 문서

커뮤니티원분들이 계신 디스코드에도 똑같이 했다. 피드백 채널에 글이 올라오면 Claude가 읽고 초록 체크를 누르고, 고친 다음 반영 현황을 올린다.

Bloom 디스코드에 새로 만든 앱 피드백 채널

행사 현장에서 생긴 일

어제 론칭 행사에서 앱을 시연하고, 오신 분들끼리 1촌을 맺어 보시라고 했다. 그런데 웬걸, 잘 되던 QR이 안 되는 거였다. QR을 찍었더니 로그아웃됐다는 분, QR이 촘촘해서 인식이 안 된다는 분이 한꺼번에 나왔다.

그 자리에서 Claude에게 "QR 안 되니까 고쳐 줘" 했더니 몇 분 만에 고친 코드가 올라왔고, 15분 남짓 만에 배포까지 끝났다. 예전 같으면 저녁에 개발자에게 전화해서 빨리 봐 달라고 했을 일이다. 간단한 기능이긴 했지만, AI에게 맡겨서 안 되는 건 전혀 없었다.

원인도 재밌었다. 아이폰 기본 카메라로 QR을 찍으면 홈 화면에 추가한 앱이 아니라 사파리에서 열리는데, 둘은 로그인을 따로 가진다. 실제로 로그아웃된 게 아니라 사파리가 로그인을 몰랐던 것이다.

그래서 앱 안의 'QR 스캔'으로 찍도록 안내를 바꾸고, 사파리로 열려도 앱으로 돌아가라고 알려 주게 했다. QR은 덜 촘촘하게(53칸에서 41칸으로), 더 크게 그렸다.

git도 모르는 사람이 사고 안 치는 법

  • 작업은 늘 따로 떼어서 하고, 실제 서비스에는 테스트와 QA를 통과한 것만 들어간다
  • 순서는 늘 같다. 변경 요청(PR), 자동 테스트, 통합 QA, 반영. 서버를 먼저 올리고 앱은 그다음
  • 운영 데이터는 내가 OK한 것만 바꾼다. 확인이 필요할 때는 숫자만 읽는다
  • 무엇을 왜 바꿨는지는 PRD와 작업 기록에 남긴다

초대장: 클럽하우스처럼

가입은 초기 클럽하우스처럼 초대장으로 받는다. Closed Beta라서 일부 멤버부터 순서대로 받고 싶었다. 모든 일에는 음양이 있지만, 초반에는 최대한 많은 분이 오시길 바랐다면 이제는 결이 비슷한 분들을 모아 우리만의 색깔을 만들고 싶었다.

그래서 행사에 여러 번 오셨던 분, 어제 론칭 파티에 오신 분, 가드너분들께 먼저 초대장을 드렸다. 한 분당 2~10장씩 드려서 지인분들을 먼저 초대하실 수 있게 했다. 초대장이 없는 분은 대기 명단에 올려 두시면 매주 순차적으로 입장하신다.

초대장을 받으면 이렇게 뜬다

온보딩 영상: 222에서 받은 영감

마지막으로 50초 남짓한 온보딩 영상을 만들었다. 물론 건너뛸 수 있다. 그래도 여기에는 힘을 주고 싶었다.

영감을 받은 건 다름 아닌 222라는 앱이다. 우리가 Mixer를 만들게 된 계기이기도 한, Y Combinator가 투자한 뉴욕의 앱이다. 슬로건도 멋지다. "explore serendipity".

222 앱의 앱스토어 소개 화면

마침 어제 뉴욕에 사는 친구가 잠깐 한국에 놀러 와서 Bloom 이야기를 하다가, 나한테 222를 아냐고 물어봤다. 222는 미국 번호가 있어야 가입할 수 있어서 실제 가입은 어렵고 온보딩 영상까지만 볼 수 있는데, 그 초반 영상만으로도 확 몰입돼서 관심이 생기더라. 그걸 공부하다가 이런 앱들의 가입 과정을 분석해 주는 유튜브 채널도 알게 됐다.

영감을 받은 222의 온보딩 영상
앱 안의 Mixer 「Curated Table」 신청 화면

여기서 영감을 받아 나도 영화 트레일러 같은 느낌을 주고 싶었다. 가장 중요한 건 문구였다. 처음엔 이걸 만들게 된 배경이 담긴 내 LinkedIn 글을 그대로 넣었는데, 그게 바로 시나리오가 돼서 온보딩 영상이 나왔다.

사진도 내 블로그에 있는 걸 던져 주고 알아서 쓰라고 했더니, 내가 하나도 손대지 않았는데 알아서 구성해 줬다. 처음엔 문구가 살짝 오그라들어서 이게 맞나 싶었다. 내가 좀 고쳐 보려 했는데 아이디어도 안 나오고 고칠수록 더 오그라드는 것 같아서, AI가 쓴 걸 그대로 갔다.

마치며

이번 작업의 핵심은 초반에 노션에 PRD를 꽤 상세하게 정리하고, 그걸 기반으로 개발을 시작했다는 점이었다. 그러려면 내가 만들고 싶은 것이 스스로에게 분명해야 했고, 결과적으로 내 머릿속에 있던 그림이 거의 그대로 실현됐다. 그래서 너무 벗어나지도, 아쉽게 모자라지도 않은 결과물이 나온 것 같다.

또 하나는 피드백 루프를 AI에게 맡긴 것이다. 디스코드에서는 유저 피드백을, 슬랙에서는 사내 피드백을 실시간으로 모으고, 이를 Claude가 바로 반영한다. 물론 모든 의견을 그대로 적용하지는 않는다. PRD 기준에 맞는 요청은 따로 확인 없이 바로 반영하고, 우리 기준에서 벗어나는 제안은 먼저 나에게 알림을 보내 검토를 요청한다. 무엇을 스스로 판단하고 무엇을 나에게 물을지 구분을 정말 잘하더라. 물어 오는 건 대개 기준에서 조금 벗어나지만 충분히 설득력 있는 제안들이었고, 내가 승인하면 Claude가 PRD를 업데이트하고, 적용이 끝나면 각 채널에 반영 내용을 공지한다.

디스코드 피드백 채널에서 Bloom Ops가 답하고 앱 업데이트 내용을 공지한 화면

이 흐름의 핵심은 자동화 그 자체가 아니다. 커뮤니티와 함께 build in public 방식으로 만들어 가는 과정에 있다. 구성원들의 자발적인 피드백이 모이고 서로 다른 의견과 아이디어가 섞이면서, 앱은 매일 조금씩 나아지고 새 기능이 붙고 화면과 UX가 다듬어진다. 유저 입장에서도 자기 아이디어가 실시간으로 제품에 반영되는 걸 그대로 보게 되니 점점 더 깊이 몰입하게 된다. 단순히 쓰고 떠나는 앱이 아니라, 같이 만들어 가는 공간처럼 느껴진다.

가드너가 초기 테스터 UI/UX 피드백을 정리해 올린 디스코드 글

재미있던 건 가드너분들께 앱을 가장 먼저 소개한 날의 일이다. 그게 새벽 3시쯤이었는데, 나는 당연히 자고 있었다. 내가 자는 동안 개발이 마무리되고, 가드너분들께 1:1 DM으로 초대장을 보내 피드백을 받고, 그걸 토대로 계속 고치고 있었다. 그걸 보고 '아, 마음 놓고 맡겨도 되겠다' 싶어서 정말 마음이 편했다.

AI는 정수기 같다. 정수기는 적절한 양의 물을 틀어 두면 그사이에 다른 일을 할 수 있게 해 준다. 양 조절을 제대로 못 하면 물이 너무 적게 나오거나 넘치기도 한다. 마찬가지로 AI도 적절한 양과 수준으로 요청하면 딱 맞춰서 결과물을 내주기 때문에, 그사이에 나는 다른 중요한 일을 할 수 있다. 예전에 우리 집에는 정수기가 없어서 물을 마시려면 싱크대 앞에 서서 컵을 들고 기다려야 했는데, 그 10초가 너무 아까웠다. 지금은 버튼만 누르고 다른 일을 하다가 돌아와 물을 마시니 마음이 너무 편하다. 비유가 좀 웃기긴 하지만, 내게 AI와 함께 일하는 경험은 그만큼 편안하고 든든하다.

이렇게 인생 첫 앱을 만들어 봤고, 무엇보다 만드는 게 너무 쉽고 결과물도 잘 나와서 무척 재미있었다. 앞으로 커뮤니티원분들과 자유롭게 의견을 주고받으면서 더 고도화해 가고 싶다.

앱은 app.bloomworld.ai에서 볼 수 있다. 초대장이 있으면 바로, 없으면 대기 명단에 올려 두고 순서대로 들어오면 된다. 주변에 Bloom 멤버가 있다면 초대장을 부탁해 보시길. 함께 만들어 가고 싶다면 Bloom 디스코드(discord.gg/KRvfQTNrxH)로 오면 된다.

앱의 프로필 카드 꾸미기 화면

함께 읽기


Bloom과 함께하기

Bloom은 사람과 기술이 만나는 오프라인 자리를 만듭니다. 다음 행사에서 뵙겠습니다.

Read more

참가자들로 가득 찬 펍지 성수 서바이버 홀

누군가의 민원이 1시간 반 만에 앱이 됐습니다

10월 7일 수요일 오후, 펍지 성수에서 Bloom × Lovable 빌더톤이 열렸습니다. 컨셉은 ‘AI 민원센터’였습니다. 평소 AI로 만들어 보고 싶었지만 끝내 만들지 못한 것들을 행사 1주일 전부터 Bloom 디스코드의 민원센터 채널과 신청서를 통해 받았고, 당일에는 조별 네트워킹에서 서로의 민원을 직접 접수했습니다. 이후 참가자 전원이 Lovable로 민원 하나씩을 골라 약 1시간 30분

By Bloom