Hiring Assignment · Workflow Design · AX

StayFlow - 콘텐츠 제작 운영 관리 목업

숙소·공간 콘텐츠팀이 촬영 일정 → 사진 업로드 → 보정·검수 → 채널 게시 네 단계를 한 화면에서 관리하고, 각 단계에서 AI·자동화가 도울 수 있는 지점을 함께 보여주는 내부용 웹 목업입니다. 채용 과제로 받은 주제를 기획부터 구현·배포·설명서까지 혼자 진행했습니다.

4단계 → 6상태업무 흐름을 카드 상태로
7개 화면대시보드 · 보드 · 단계별 4종 · 수정사항
12개단계별 AX 개선 아이디어
서버 0브라우저만으로 전체 흐름 검증

콘텐츠 한 건이 카드 한 장이 되어 여섯 단계를 순서대로 지나가고, 카드마다 지금 해야 할 일이 버튼 하나로 붙어 있습니다.

실제 데모 화면 대시보드 → 마감 지연 필터 → 촬영 일정 → 사진 업로드 → 보정·검수 → 채널 게시. 필수 컷이 빠지면 다음 단계로 못 넘어가고, 세 채널이 모두 완료돼야 카드가 완료로 이동합니다.

시간을 잡아먹는 건 각 단계의 작업이 아니라 단계와 단계 사이라고 봤습니다.

01

흩어진 상태

일정은 캘린더에, 사진은 드라이브에, 검수 의견은 메신저에, 게시 여부는 각 채널에 따로 있어 "이 콘텐츠가 지금 어디까지 왔는지"를 사람이 기억으로 이어 붙여야 합니다.

02

불명확한 다음 할 일

누가 무엇을 해야 다음 단계로 넘어가는지가 문서나 구두로만 존재해서, 담당자가 바뀌거나 자리를 비우면 흐름이 멈춥니다.

03

뒤늦게 발견되는 누락

필수 컷이 빠졌거나 채널 게시가 실제와 다른 것을 검수나 게시 이후에야 알게 되어 재촬영·재작업이 생깁니다.

네 단계 업무를 여섯 개 상태로 나누고, 상태 전환 조건을 한 곳(transition())에서 강제합니다.

01촬영 예정

촬영일 · 담당자 · 마감 편집. 마감이 촬영일보다 앞서면 저장 불가

02사진 업로드

공간별 분류. 객실 · 욕실 · 외관 · 편의시설 필수 컷이 다 있어야 통과

03보정 중

사진별 수정 요청이 걸리면 여기로 되돌아옴

04검수 대기

전후 비교 · AI 사전 검수. 수정 요청이 남아 있으면 승인 불가

05채널 게시

자사 웹 · 인스타 · 블로그 완료 표시와 게시 URL 저장

06완료

세 채널이 모두 완료되면 자동 이동

콘텐츠 한 건 = 카드 한 장

숙소 하나가 카드 하나입니다. 카드를 열면 일정 · 사진 · 검수 · 게시가 탭으로 이어져 어느 화면에서든 같은 상세로 들어갑니다.

다음 할 일이 버튼 하나로

모든 카드에 지금 단계의 행동이 버튼으로 붙어 있고, 넘김 조건은 시스템이 확인합니다. 조건이 안 맞으면 무엇이 빠졌는지 알려 줍니다.

되돌리기와 작업 기록

잘못 넘긴 카드는 사유를 적고 이전 단계로 돌릴 수 있고, 모든 전환이 작업 기록에 남습니다.

위 세 화면은 전체를 보는 사람용, 아래 네 화면은 단계별 실무자용입니다.

화면하는 일눈여겨볼 곳
대시보드진행 중 · 이번 주 마감 · 마감 지연 · 완료 타일, 오늘의 촬영, 우선 확인할 콘텐츠AI가 지금 도울 수 있는 작업량을 실제 데이터에서 계산
전체 콘텐츠 보드6단계 칸반. 타일 · 드롭다운 · 검색으로 필터컬럼은 그대로 두고 카드만 걸러 병목 위치가 보임
수정사항사진별 수정 요청이 걸린 콘텐츠만 모아 재검수사이드바 숫자 = 남은 수정 요청 건수
01 촬영 일정 관리촬영일 · 시간 · 담당자 · 마감 편집, 촬영 완료 처리기간 · 담당자 필터
02 촬영 사진 업로드원본 추가(긴 변 1600px 자동 축소), 공간 분류, 일괄 지정분류 결과가 체크리스트에 반영되고 누락 후보 표시
03 보정·검수전후 비교 슬라이더, 밝기·대비 미리보기, 사진별 수정 요청, AI 사전 검수수정 요청이 남아 있으면 승인 버튼이 막힘
04 채널별 게시채널별 규격 안내, 완료 표시, 게시 URL 저장, 판매 채널 등록본 검수사진을 나중에 고치면 해당 채널에 재확인 표시

"무엇을 만들었나"보다 왜 그렇게 만들었는지가 이 과제에서 가장 신경 쓴 부분입니다.

Gate

넘김 조건은 사람이 아니라 시스템이 확인한다

단계 전환 규칙을 transition() 한 함수에 모았습니다. 화면마다 버튼은 다르지만 실제 전환은 전부 이 함수를 거치기 때문에, 필수 컷 네 종이 빠진 채로 보정을 시작하거나 수정 요청이 남은 콘텐츠를 승인하는 일이 어느 화면에서도 일어나지 않습니다.

막을 때는 그냥 막지 않고 무엇이 빠졌는지 보여 줍니다. "미확인: 객실 · 욕실"처럼요. 규칙이 한 곳에 있으니 테스트도 그 함수 하나를 상대로 씁니다 - 상태 전환 · 백업 호환 · 사진 검수 · AX 집계, Node 테스트 12개.

사진 업로드 단계 - 필수 촬영 컷 미확인 항목이 표시되고 보정 시작 버튼이 비활성화된 화면
AX

AI는 제안하고, 판단은 사람이 한다 - 자동 · 제안 · 확인 세 가지로 구분

과제 요구는 "AX 관점의 개선 아이디어를 반영하라"였습니다. AI를 붙일 곳을 나열하는 대신, 모든 AI 항목을 자동 처리(사람이 안 봐도 되는 것), AI 제안(사람이 고르는 것), 사전 점검(사람이 확인할 것만 추려 주는 것) 세 종류로 나눠 화면에 표시했습니다. 승인 · 수정 요청 · 게시 확정은 어느 경우에도 담당자가 합니다.

목업 안에서도 실제로 동작하는 것(규칙 기반 - 동선 묶기, 담당자 충돌, 필수 컷 대조, URL 재확인)과 고정 예시로만 보여 주는 것(비전·언어 모델 - 공간 분류, 결함 검출, 캡션 초안)을 화면과 설명서에서 구분해 두었습니다. "이건 되는 척"이 아니라 "이건 아직 안 됨"이 보이는 쪽이 신뢰가 간다고 봤습니다.

AI 사전 검수 결과 - 밝은 창가 영역 노출 확인 필요, 공간 자동 태그 제안이 표시되고 미리 준비된 예시 결과라는 안내가 붙어 있음
Consistency

완료 표시와 실제 게시물이 어긋나지 않게 - 게시 URL을 받아 둔다

채널 게시는 이 시스템 밖에서 일어납니다. "완료" 버튼만 두면 눌러 놓고 실제로는 안 올렸거나, 올린 뒤 사진을 고쳤는데 채널은 옛 사진 그대로인 상태를 잡을 수 없습니다. 그래서 채널마다 게시 URL을 저장하게 하고, 이후 사진에 수정 요청이 들어오면 그 채널에 "재확인 필요" 표시가 붙게 했습니다.

같은 이유로 사진별 수정 요청을 저장하면 콘텐츠는 보정 중으로 돌아가면서 채널 게시 표시가 초기화됩니다. 승인된 원본과 나가 있는 게시물이 다른 상태를 시스템이 모른 척하지 않게 하는 게 목적입니다.

채널별 게시 - 자사 웹사이트 게시 완료 표시와 게시물 URL 저장 칸
Scope

서버 없이 끝까지 - 대신 데이터를 옮길 길은 열어 둔다

과제 조건이 "서버 · DB · 로그인 불필요, 더미 데이터 목업"이었고 기간도 짧았습니다. 그래서 상태는 브라우저 localStorage에만 저장하고, 업로드한 사진도 긴 변 1600px로 줄여 브라우저에만 둡니다. 서버를 안 두는 대신 데이터 내보내기 · 불러오기(JSON)로 다른 PC나 브라우저에 그대로 옮길 수 있게 했고, 시크릿 창으로 열면 언제든 초기 상태로 돌아갑니다.

한계는 분명합니다 - 여러 사람이 같은 데이터를 보지 못합니다. 실제 도입이라면 사내 인증과 공용 저장소를 붙이는 게 첫 작업이고, 그다음 규칙 기반 자동화를 그대로 옮긴 뒤, 모델 연동은 공간 분류나 결함 검출 하나를 골라 파일럿으로 지표를 재면서 넓히는 순서를 설명서에 적었습니다.

Layout

좁은 화면에서는 한 단계만 보여 주지 않는다

6컬럼 칸반은 1100px 아래로 내려가면 컬럼이 한 개씩만 보이는 모드였는데, 그러면 병목이 어디인지 볼 수 없어서 보드의 존재 이유가 사라졌습니다. 전체 단계를 세로로 쌓고 빈 단계는 접히게 바꿨고, 상단에 단계 칩을 두어 특정 단계로 바로 이동할 수 있게 했습니다. 필터를 걸어도 컬럼 자체는 남아 있어서 "검수 대기에 1건만 남았다"가 한눈에 보입니다.

전체 콘텐츠 보드에서 마감 지연 필터를 건 상태 - 다른 단계는 0건으로 접히고 검수 대기에 1건만 남음

단계마다 "현재 업무 문제 → 개선 방식 → 이 목업에서의 범위 → 검증할 지표"를 짝지어 정리했습니다.

자동 처리 - 사람이 안 봐도 되는 것

촬영 체크리스트 생성 · D-1 알림 · 필수 컷 대조 · 수정 메모 → 보정 지시서 · 채널 규격 변환 · 게시 URL 상태 점검

이미 있는 데이터만으로 되는 규칙 기반. 목업에서 실제로 동작하는 항목이 대부분 여기 있습니다.

AI 제안 - 사람이 고르는 것

동선 묶기 · 공간 자동 분류 · 유사 컷 대표 1장 · 보정 프리셋 · 캡션 · 해시태그 · 본문 초안 · 재촬영 시점

비전 · 언어 모델이 필요한 항목. 목업에서는 분류 UI와 규격표까지 동작하고 모델 결과는 고정 예시입니다.

사전 점검 - 확인할 것만 추려 주는 것

흐림 · 노출 · 수평 검출 · 흔들림 컷 필터 · 등록본과 승인 원본 대조

검수자가 전부 눈으로 보는 대신 주의 항목만 봅니다. 최종 판단은 검수자가 합니다.

효과 수치는 아직 측정하지 않았습니다. 도입한다면 촬영 1건당 이동 시간, 재촬영 건수, 분류 소요 시간, 검수 1건당 시간, 채널당 게시 준비 시간, 게시 누락 건수를 파일럿 기간에 재어 보고 확장 여부를 정하는 것을 제안했습니다.

기획 · 구현 · 배포 · 설명서까지 한 사람이 끝냈고, 받는 쪽이 5분 안에 흐름을 따라 할 수 있게 만드는 데 집중했습니다.

Vite 8React 19TypeScriptshadcn/uiTailwind CSS 4localStorageNode 테스트 12개VercelCloudflare DNS

정적 파일(dist/) 하나라 아무 정적 호스팅에 올릴 수 있습니다. 배포는 GitHub → Vercel 자동 배포에 개인 도메인을 붙였고, 설명서는 실제 화면 캡처 10장을 넣어 HTML · PDF 두 형식으로 함께 제출했습니다.

기능 목록이 아니라 "왜 이 흐름이어야 하는가"가 설명되는 목업을 만드는 게 목표였습니다.

업무 흐름을 상태 기계로

네 단계 업무를 여섯 상태와 전환 규칙으로 옮겨, 화면이 달라도 같은 규칙이 적용되고 테스트할 수 있게 했습니다.

AI 범위를 정직하게

동작하는 것과 예시인 것, 규칙 기반과 모델 기반을 구분해 표시해서 "어디까지 진짜인가"를 받는 쪽이 판단할 수 있게 했습니다.

짧은 기간에 완결

과제 기간 안에 배포된 체험판 · 설명서 · 테스트까지 갖춰 제출했습니다.

다음 단계가 보이게

규칙 기반 → 모델 연동 → 채널 API 연동 3단계 도입 순서와 각 단계에서 잴 지표를 함께 제안했습니다.

받는 사람이 처음 열어도 5분 안에 전체 흐름을 파악하도록 설명서를 함께 만들었습니다.

제작 의도, 화면 구성, 단계별 사용법, AX 개선 아이디어 상세 표, 기술 구성과 실행 방법, 한계와 다음 단계까지 10쪽입니다. 화면 캡처는 전부 돌고 있는 체험판에서 찍었고, 숙소 · 사람 · 사진은 모두 가상 데이터입니다.

StayFlow 사용 설명서 전문 보기 제작 의도 · 화면별 사용법 · AX 아이디어 상세 · 10쪽 · 새 창 체험판 직접 열어 보기 로그인 없음 · 가상 데이터 · 입력한 내용은 내 브라우저에만 저장 코드 보기 (GitHub) Vite + React 19 + TypeScript · 상태 전환 규칙 app/projects.ts · 테스트 12개