Created by potrace 1.16, written by Peter Selinger 2001-2019

포트폴리오

소규모 웹사이트 개발부터 기업의 AI 전환, 대학·연구기관의 AI 연구개발 과제까지. 각 사례는 실제 소스 코드를 다시 열어 확인한 내용만 담았습니다.

의과대학 · 임상실습 교육

AI 가상환자 진료수행 시뮬레이션

AI(LLM) 기반 가상환자 진료 시뮬레이션입니다. 음성과 텍스트로 환자와 대화하듯 병력청취부터 처치·환자교육까지 진료 한 회차를 수행하면 검사 결과지가 발급되고, 자동 채점 리포트와 성찰 대화가 돌아옵니다. 영남대학교 의학교육혁신사업단의 발주로 교육 모델 연구와 시스템 개발을 함께 수행했습니다.

SENTIF
AI 가상환자 진료수행 시뮬레이션
AI 에이전트 · 약 2~3개월
SC-05 복통 사례 진료 화면. 좌측 환자 영상과 활력징후, 중앙 병력청취 대화와 발급된 진찰 소견, 우측 진찰·검사 이력
클라이언트영남대학교 의학교육혁신사업단
업종의료
기간약 2~3개월
규모5,000만~2억원
서비스AI 에이전트
의뢰 배경

진료는 연습이 필요한데, 연습 상대를 구할 수 없습니다

의과대학 학생은 실제 환자를 만나기 전에 진료의 전 과정을 연습해야 합니다. 진료 수행 능력은 CPX 같은 실기시험으로 평가되기도 하는 정규 교육 과정인데, 연습 상대인 표준화 환자는 배우와 채점 교수를 사람 수만큼 붙여야 해서 학생이 원할 때 반복할 수 없고, 같은 답안을 교수마다 다르게 채점하는 문제도 있습니다.

영남대학교 의학교육혁신사업단은 이 간극을 AI 가상환자로 메우는 교육 모델을 연구하고 있었고, 연구로 끝내지 않고 학생들이 실제 수업에서 쓸 도구까지 필요했습니다. 그래서 발주는 교육 모델 설계 연구와 시스템 개발 두 과업으로 구성됐고, 선행 조사와 전문가 타당화부터 시나리오 10종 구현과 현장 적용·운영 매뉴얼까지 같은 팀이 수행했습니다.

완성된 시스템에서 학생은 브라우저로 AI 가상환자를 진료하고, 검사를 지시하면 실제 등록된 결과지가 발급되며, 진료가 끝나면 자동 채점 리포트와 성찰 대화가 돌아옵니다. 교수는 채점 기준 설정과 결과 검토를 전용 콘솔에서 합니다. 임상 시나리오 10종이 진료과 10개를 덮습니다.

구조

응답 신뢰성 확보 구조

응답 신뢰성 확보 구조 · 4개 지점
01근거 한정
환자 프롬프트를 시나리오 데이터에서 생성해 응답 범위를 사례 안으로 고정
02검사 결과 분리
결과 발급 경로가 모델을 호출하지 않음. 대화 경로가 담아 보낸 결과 필드는 서버가 삭제
03채점 합의
같은 답안을 3회 채점해 중앙값을 취하고, 통과기준 미만 영역은 자동 강등
04교수 검토 루프
교수가 고친 채점과 지정 항목을 다음 채점 프롬프트에 되먹임
네 지점을 모두 통과한 응답만 학습자에게 전달
학습자 화면
환자 대화 · 진찰 · 검사 · 진단 · 성찰 · 성적표
주요 기능

주요 기능

FEATURE 01
음성과 텍스트로 환자와 대화하는 진료 시뮬레이션학생은 화면 속 환자에게 말을 걸거나 글로 물으며 병력청취부터 처치·환자교육까지 진료 한 회차를 그대로 수행합니다. 음성으로 진료하면 환자 음성 재생에 맞춰 감정 영상이 전환되고, 보호자가 동반하는 소아 사례는 환자와 보호자의 목소리를 나누어 냅니다. 메뉴 이름을 외울 필요 없이 진료실에서 쓰는 말 그대로 진행합니다.
FEATURE 02
엑스레이·검사 결과지 발급영상 판독지와 촬영 이미지, 혈액검사 결과지, 심전도, 청진 오디오, 진찰 사진까지. 학생이 받는 결과는 전부 교수가 등록해 둔 실제 자료에서 발급됩니다. AI가 수치나 소견을 지어낼 수 있는 경로는 구조적으로 없습니다.
FEATURE 03
등록된 자료가 없으면 없다고 답합니다교수가 그 사례에 등록해 두지 않은 검사를 학생이 지시하면, 그럴듯한 결과를 만들어 내는 대신 「이 사례에 등록된 검사 자료가 없습니다」라고 답하고 왜 없는지를 함께 안내합니다. 결과를 임의로 생성하지 않는다는 원칙이 화면에서 그대로 드러납니다.
FEATURE 04
진료가 끝나면 나오는 자동 채점 리포트종합점수와 6개 영역별 평가, 진단 정답성, 놓친 항목, 학생이 적은 판단 근거에 대한 항목별 평가가 한 장으로 나옵니다. 같은 답안을 여러 번 채점해 점수를 합의하는 방식이라 결과가 흔들리지 않습니다.
FEATURE 05
채점 결과로 이어지는 성찰 대화진료가 끝나면 채점 결과를 근거로 학생에게 되묻는 대화가 시작됩니다. 정답을 알려 주는 대신 소크라테스식 질문으로 임상 추론을 되짚게 합니다.
FEATURE 06
교수가 정하는 채점 기준시나리오마다 영역 가중치, 통과 기준, 반드시 확인해야 하는 핵심 항목을 교수가 직접 지정합니다. 진료과마다 다른 교육 기준이 그대로 채점에 반영됩니다.
FEATURE 07
코드 없이 늘어나는 사례진료과 교수가 작성하는 임상 워크시트 양식이 그대로 시스템의 입력입니다. 새 사례를 추가할 때 개발 작업이 필요 없어, 시나리오 10종이 모두 같은 방식으로 등록됐습니다.
FEATURE 08
반 단위 학습 현황 대시보드완료 세션·평균 점수·영역별 분포를 반 단위로 집계하고, 성적이 낮은 학습자를 위험군으로 표시해 개입 알림을 띄웁니다. 엑셀로 내보내 학사 업무에 씁니다.
FEATURE 09
채점 검토와 이의신청학생은 채점에 이의를 제기할 수 있고, 교수는 검토 큐에서 점수를 조정하고 코멘트를 답니다. AI 채점과 교수 채점의 일치도가 집계되어 채점 품질이 관리됩니다.
기술 상세

기술

결과 발급 경로에서 모델을 제거학생이 검사를 지시하면 LLM은 의도만 판정하고, 실제 결과는 별도 라우트가 시나리오 데이터에서 조립합니다. 이 라우트는 LLM을 호출하지 않으므로 모델이 지어낸 수치가 화면에 도달할 경로가 없습니다.
3회 채점 중앙값 합의채점은 상위 티어 모델로 같은 프롬프트를 3회 병렬 실행해 항목별 중앙값으로 합의합니다. 총점·등급은 모델이 아니라 가중치 식이 계산하고, 채점 실패 시 임의 점수를 만들지 않습니다.
3벤더 폴백 체인호출을 실시간(대화·성찰)과 심층(채점) 두 티어로 나누고, 티어마다 Google·Anthropic·OpenAI 모델을 체인으로 등록해 한 벤더가 실패하면 자동 전환합니다.
워크시트 스키마 단일 소스교수 워크시트 양식을 그대로 타입으로 옮긴 스키마 하나가 환자 프롬프트·튜터 힌트·채점 프롬프트·전 화면의 소스입니다. 사례 추가에 코드 수정이 없습니다.
음성 경로의 신뢰성 처리전사에는 시나리오별 의학용어를 주입하고 환각 판정 필터를 겹쳐 잘못된 자막이 나가지 않게 합니다. 보호자 동반 사례의 화자는 서버가 확정 이력으로 판정하며, 어긋나면 재생성하거나 요청을 실패시킵니다.
규모TypeScript 23,540행, 실앱 화면 20개, API 39개, 임상 시나리오 10종 3,116행(진료과 10개), 진찰·검사 마스터 73항목, 감정 영상 클립 32개입니다.
Next.js 15 App RouterReact 19TypeScriptSupabase (Postgres · Auth · RLS)Google GeminiAnthropic ClaudeOpenAIFish Audio S2 Pro (TTS)ExcelJSVercel

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

인사 업무 자동화 · 단계별 발주 2건

HR코치 · 인사 전문 AI 자동화 워크플로우 빌더

코드 없이 인사 업무 앱을 만들어 발행하는 인사 전문 AI 자동화 워크플로우 빌더입니다. 채용 적합도 진단, 인사평가 취합, 연차보상금·승진심의 판정 같은 앱들이 이 빌더 위에서 만들어져 운영 사이트에 올라가 있습니다.

SENTIF
HR코치 · 인사 전문 AI 자동화 워크플로우 빌더
앱·웹 개발 · 약 4개월 (2단계 합산)
리포트 구성 탭. 좌측 요소 팔레트에서 끌어다 놓으면 우측 캔버스가 실제 값으로 즉시 렌더됩니다
클라이언트케이프라임랩 (HR코치)
업종인사·채용
기간약 4개월 (2단계 합산)
규모300만~1,000만원
서비스앱·웹 개발
의뢰 배경

컨설팅 노하우는 있는데, 그것을 제품으로 만들 손이 없었습니다

케이프라임랩은 인사 컨설팅 노하우로 HR 자동화 서비스 「HR코치」를 만들려는 스타트업입니다. 역량사전과 규정 해석이라는 전문성은 있지만 개발 조직을 상시로 두지 않아, 서비스의 심장이 될 자동화를 외부에서 만들되 납품 후에는 자신들이 직접 운영하며 고칠 수 있어야 했습니다.

발주는 두 단계로 나뉘었습니다. 1단계는 수요가 가장 확실한 업무 두 개(채용 지원자의 직무적합도 진단과 부서별 인사평가 취합)를 먼저 자동화하는 것. 그 결과를 보고 이어진 2단계는, 연차보상금·퇴직금·승진심의 같은 인사 업무 앱을 기획자가 코드 없이 정의하고 발행하는 빌더와 실행 엔진입니다. 인사 업무들이 「규정에서 기준을 읽고, 개인 데이터를 읽고, 대조해 판정하고, 근거가 붙은 결과를 안내한다」는 같은 구조를 공유한다는 것이 1단계에서 확인됐기 때문입니다.

지금 운영 사이트에는 이 구조로 만든 앱 29종이 올라가 있고 그중 13종이 운영 중입니다.

구조
1단계 · 웹훅 한 번에 일어나는 일
평가 기준 생성부터 리포트 반환까지의 워크플로우
입력 · 웹훅 한 번
INPUT채용공고 문서
형식이 제각각인 파일을 그대로 투입
INPUT지원자 이력서
외부 파서 없이 워크플로우 안에서 텍스트화
공고를 기준으로 두 갈래 병렬 조회
EXTERNAL공개 직업 표준
직업 코드를 찾아 6개 항목군을 가중치와 함께 수집
INTERNAL사내 역량사전 RAG
벡터 저장소에 질의해 관련 역량만 수신
평가요소 11~12개의 기준표 확정
01LLM · 기준 생성
온도 0. 무엇으로 채점할지를 먼저 확정
02LLM · 대조 채점
항목별 원점수와 역량 레벨만 산출. 증거는 원문 인용만 허용
03코드 · 점수 계산
총점과 등급은 가중치 식으로 계산. 모델이 정하지 않음
단독 실행형 HTML 리포트
점수 · 등급 · 항목별 근거 · 추천 직무. 워크플로우가 완성해 응답에 실어 반환
2단계 · 정의 한 벌이 앱이 되기까지
앱 정의 → 발행 → 완제품 앱 실행 흐름
빌더 · 기획자가 값만 채웁니다 (탭 6개)
규정 변수
사내 규정에서 오는 기준 · 요율 · 구간
개인 변수
대상자 개인 데이터 항목
분석 로직
판정 절차를 9종 단계 블록으로 조립
리포트 서식
요소 9종 · 차트 9종을 배치
발행 · 앱 한 벌이 코드가 아니라 하나의 데이터 구조로 저장
판정 엔진
닫힌 어휘만 실행. 수식은 토큰 단위 파싱, 반올림 함수 3종 고정. 엔진 한 벌로 모든 앱을 구동
사용자문서 업로드
규정 문서 · 개인 문서에서 변수 값을 추출해 채움
사용자판정 실행
정의된 단계 순서대로 계산. 같은 입력에 같은 결과
사용자결과 리포트
화면 표시 후 PDF · 워드로 내보내기
앱 카탈로그
9개 인사 영역 · 등록 앱 29종(운영 13). 새 앱은 코드 작성 없이 정의만 추가
주요 기능

주요 기능

FEATURE 01
AI 자동화 워크플로우 빌더이 제품의 본체입니다. 기획자가 규정 변수를 표로 정의하고, 판정 로직을 블록으로 조립하고, 결과 화면을 끌어다 놓으면 인사 업무 앱 하나가 발행됩니다. 회사마다 다른 등급 체계·승진 기준은 표의 값만 바꾸면 됩니다.
FEATURE 02
예시 앱 · 채용 적합도 진단채용공고를 넣으면 직업 표준과 역량사전으로 평가 기준을 만들고 이력서를 AI가 채점합니다. 평가요소마다 이력서 원문을 인용한 근거가 붙은 리포트가 나옵니다.
FEATURE 03
예시 앱 · 인사평가 취합 분석조직명과 등급 체계, 배분 기준을 설정하고 평가 파일을 올리면 조직 단위 분석 리포트가 나옵니다.
FEATURE 04
예시 앱 · 보상·승진 판정연차보상금, 퇴직금 예상액, 경조사 지원금, 승진심의처럼 규정과 개인 데이터를 대조해 판정하는 앱들이 같은 빌더로 만들어져 인사 영역 9개에 걸쳐 운영됩니다.
FEATURE 05
규정 문서 AI 자동 추출규정 문서와 개인 데이터 문서를 올리면 앱이 정의해 둔 변수대로 표와 값이 자동으로 채워집니다. 잘못 읽힌 값만 그 자리에서 고칩니다.
FEATURE 06
리포트 구성과 PDF·워드 출력결과 화면을 요소 9종·차트 9종 팔레트로 구성하고, 완성된 리포트는 PDF·워드로 내보내 결재 문서에 그대로 붙입니다.
기술 상세

기술

결정론 실행 엔진판정 절차를 9가지 블록 유형으로만 조립하게 해 비개발자가 만든 로직도 결과를 예측할 수 있습니다. 수식은 자체 파서로 실행하고, 표 조회 실패는 0이 아니라 「값 없음」으로 남겨 잘못된 값이 하류 계산을 오염시키지 않습니다. 실행 엔진 1,007행.
앱 정의 스키마앱 한 벌을 하나의 데이터 구조로 고정해, 새 앱을 만들 때 코드가 아니라 값만 채웁니다. 변수·경로·판정 단계·리포트 요소가 각각 타입으로 정의되어 있습니다.
워크플로우가 곧 백엔드 (1단계)서버 애플리케이션 없이 워크플로우 2벌 44개 노드가 웹훅을 받아 응답까지 완결합니다. 클라이언트가 화면에서 노드를 직접 고칠 수 있는 구조를 위한 선택입니다.
작업 성격에 맞춘 모델 배치한 번의 진단에 모델을 여섯 번 호출하되 구간마다 다른 모델과 온도를 씁니다. 판단이 흔들리면 안 되는 구간은 온도 0, 문장이 자연스러워야 하는 구간만 온도를 올립니다.
규모2단계는 페이지 14개, API 13개, 판정 블록 9종 · 리포트 요소 9종 · 차트 9종, 등록 앱 29종. 1단계는 워크플로우 2벌 44개 노드, 노드 내 자바스크립트 약 1,250행.
Next.js 14 App RouterTypeScriptSupabase (Postgres · Auth)자체 실행 엔진 app-rendererGoogle GeminiRechartsPDF · DOCX 내보내기토스페이먼츠Tailwindn8n CloudPinecone Assistant (RAG)O*NET Web ServicesQuickChartReact 19 · Vite

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

중·고등 수학 학습 · 플랫폼 구축화면 비공개

앱·웹·관리자·백엔드를 함께 구축한 AI 기반 수학 문제은행

AI 기반 수학 문제은행 학습 플랫폼입니다. 학생·학부모·교사·강사·원장 5개 역할이 쓰는 앱·웹·관리자·홈페이지와 마이크로서비스 백엔드(서비스 5개)를 함께 구축했고, 사내망 문항 DB에 직결해 자산 이관 없이 서비스합니다. 시험지 제작·채점과 오답·AI추천 시험지까지 한 흐름입니다.

클라이언트수학 교육 플랫폼 기업(사명 비공개)
업종교육
기간약 4~5개월
규모5,000만~2억원
서비스앱·웹 개발
의뢰 배경

자산은 이미 있었고, 그 위에 올릴 서비스가 없었습니다

이 회사는 수학 문항과 교육과정 분류, 교재 메타데이터를 담은 문제 데이터베이스를 사내에 오랫동안 쌓아 온 교육 기업입니다. 자산은 충분한데 그것을 학생과 교사가 실제로 쓰는 서비스로 만들 제품이 없었고, 학생·학부모·학교교사·학원강사·원장 5개 역할이 한 제품을 쓰는 플랫폼을 만들려면 모바일 앱·웹앱·관리자 콘솔·홈페이지와 백엔드를 동시에 세울 팀이 필요했습니다.

조건이 하나 있었습니다. 문항 데이터베이스는 회사의 핵심 자산이라 사내망 밖으로 복제하거나 이관할 수 없다는 것입니다. 서비스는 클라우드에 두되 문항은 사내에 남긴 채 연결해야 했고, 서비스 쪽에서 문항이 훼손될 가능성은 구조적으로 없어야 했습니다.

완성된 제품군의 규모는 백엔드 Java 소스 847개에 REST 엔드포인트 494개, 모바일 앱 라우트 113개, 웹앱 96페이지, 관리자 콘솔 32페이지입니다. 1차 수능·모의고사부터 3차 커뮤니티까지 단계적 출시를 전제로 설계했습니다.

구조

클라이언트 4종과 사내망 자원의 연결

클라이언트 계층과 사내망 리소스의 연결 구조
클라이언트 접점 · 4종
모바일 앱
Flutter · 라우트 113
학생 · 학부모 · 교사 · 강사 · 원장
웹앱
Next.js · 페이지 96
앱과 동일 기능
관리자 콘솔
Next.js · 페이지 32
승인 · 심사 · 정산
홈페이지
Next.js
요금제 · 결제
비대칭 키 토큰 + 쿠키 · 3개 사이트 세션 공유
백엔드 (멀티모듈 · REST 494개)
identity
인증 194
learning
학습 186
admin
운영 70
payment
결제 36
notification
알림 8
외부에 열리지 않은 사설망 · 풀·세션 이중 읽기 전용
클라이언트 사내 리소스 · 복제하지 않습니다
문항 데이터베이스
읽기 전용으로 고정, 엔티티 매핑 미노출
유사도 판별 서비스
사내 서비스에 질의해 결과만 수신
문항 이미지 원본
사내 스토리지 직접 참조
주요 기능

주요 기능

FEATURE 01
조건을 지정하면 만들어지는 시험지시행연도·학년·시험유형 필터로 원본을 고르고 난이도·배점·문항형태 배분과 범위를 지정하면 시험지가 만들어집니다. 실제 데이터에 존재하는 조합만 선택되게 해, 되지 않는 조건을 눌러 보는 일이 없습니다.
FEATURE 02
직접 고르는 수동 선별자동 추출 대신 페이지로, 터치로, 개념명으로, 정답률로 문항을 직접 고를 수도 있습니다. 교사마다 다른 출제 방식을 네 가지 탭이 그대로 받아 줍니다.
FEATURE 03
시험지 미리보기·인쇄 출력완성된 시험지를 화면으로 미리 보고 종이로 인쇄합니다. 페이지 배치를 서버가 한 곳에서 계산해 화면과 인쇄물이 항상 같은 모양입니다.
FEATURE 04
풀고 나면 이어지는 후속 시험지채점 결과에서 오답 시험지, 약한유형 시험지, AI추천 시험지가 만들어집니다. 약한유형은 단원·개념 트리로 정답률을 보여 주고, 같은 조건이면 같은 시험지가 다시 나오도록 만들어 사후 확인이 가능합니다.
FEATURE 05
배정·발송·교재의 3채널 전달시험지를 학생에게 주는 방식을 접근권을 주는 배정, 이력과 푸시가 남는 발송, 교재로 꽂는 서가 세 가지로 나눴습니다. 반별 일괄 생성과 학부모 열람까지 학교·학원의 실제 운영 방식을 따라갑니다.
FEATURE 06
역할별 계정과 자격 심사학생·학부모·교사·강사·원장 5개 역할이 각자의 메뉴와 권한으로 같은 제품을 씁니다. 교원·학원 자격은 서류를 올려 운영자 심사를 거치고, 학부모는 자녀 시험지를 열람합니다.
FEATURE 07
사진으로 찾는 문제 검색문제를 촬영하면 일치 문항과 해설을 찾아 줍니다. 보유한 문제집을 등록하면 그 교재의 문항이 유사문제 후보로 편입됩니다.
기술 상세

기술

사내망 문제 DB 읽기 전용 직결문항 자산을 옮기지 않고 사설망으로 사내망 DB에 직접 조회합니다. 커넥션 풀과 세션 두 계층에 읽기 전용을 이중으로 걸고 쓰기 경로를 아예 노출하지 않아, 서비스가 문항을 훼손할 가능성이 구조적으로 없습니다. 회원·풀이·결제 등 신규 데이터만 클라우드에 적재하는 이원 구조입니다.
서버 단일 지면 배치 엔진앱과 웹이 각자 계산하던 페이지 분할을 해상도 무관 정수 좌표계의 서버 엔진 하나로 통일했습니다. 문항 높이는 추정하지 않고 이미지 실측 치수로 계산합니다.
결정적 규칙 기반 추천추천·배분 로직은 생성형 모델 없이 정답률 집계와 규칙 엔진으로 동작하며, 랜덤이 필요한 지점은 시드를 고정해 같은 조건에 같은 결과가 나옵니다. 생성 시점의 방식과 파라미터를 스냅샷으로 남깁니다.
인증과 권한RS256 비대칭 키 토큰으로 3개 사이트가 세션을 공유하고, 소셜 로그인 4종과 서버 재조회 본인인증을 갖췄습니다. 역할·구독 조건은 컨트롤러 단에서 일괄 적용됩니다.
발행 단위 포인트 원장포인트를 원장·잔액 캐시·감사 로그 3층으로 나누고 모든 거래에 멱등키를 걸었습니다. 잔액이 어긋나도 원장 합계로 재계산할 수 있고, 환불은 해당 발행 단위만 회수합니다.
규모백엔드 Java 847개(서비스 5 · 공통 라이브러리 8), REST 494개, 테이블 118개. 앱 Dart 341개·화면 133개·라우트 113개, 웹앱 96페이지, 관리자 32페이지.
Flutter · DartNext.js 16 · TypeScriptSpring Boot 3.5 · Java 21Gradle 멀티모듈AWS RDS(MySQL)FlywayRedis · CaffeineJWT RS256 · OAuth 4종AES-256Tesseract OCRnginx 게이트웨이Docker ComposeAWS EC2 · S3 · CloudFrontFCM

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

골프장 운영 · 가격 의사결정 지원

골프장 ERP 연동 운영·재무 관리와 AI 가격 추천 시스템

에스비레저(빅토리아CC)의 골프장 관리 ERP와 연동해 예약 관리부터 재무 관리, AI 기반 가격 추천과 추천가의 예약 플랫폼 입력 자동화까지 한 시스템에 담았습니다. 운영 도입 판단을 위한 제안·검증 단계로 구축했습니다.

SENTIF
골프장 ERP 연동 운영·재무 관리와 AI 가격 추천 시스템
AI 전환 · 약 3개월
주간 티타임 격자. 슬롯마다 판매가와 경쟁 골프장 3곳 가격, 잔여 팀 수, 그날 예보가 함께 놓입니다
클라이언트에스비레저 (빅토리아CC)
업종레저
기간약 3개월
규모1,000만~5,000만원
서비스AI 전환
의뢰 배경

7년치 데이터가 쌓여 있는데, 판단은 감으로 하고 있었습니다

에스비레저가 운영하는 빅토리아CC는 9홀 퍼블릭 골프장입니다. 하루에 팔 수 있는 티타임 수가 정해져 있으니 남는 수는 같은 슬롯을 제값에 파는 것인데, 그 판단에 필요한 재료(예약 현황, 경쟁 골프장 가격, 날씨, 연휴 달력)가 전부 다른 화면에 흩어져 있어 담당자가 머릿속에서 합치고 있었습니다.

관리 패키지 안에는 약 7년치 예약·내장·매출·회원 데이터가 쌓여 있었지만 조회 화면 밖에서 쓰인 적이 없었습니다. 의뢰는 이 데이터를 실제 경영 판단에 쓸 수 있게 만들어 달라는 것이었습니다. 데이터 기반 운영으로 전환할 수 있는지를 실제 시스템으로 검증하는 일이었고, 쓰던 시스템을 교체하거나 데이터를 옮기지 않는다는 조건이 붙었습니다.

그래서 이 시스템은 운영 도입 판단을 위한 제안·검증 단계로 구축됐습니다. 가격은 시스템이 바꾸지 않습니다. 추천가를 근거와 함께 제시하고, 담당자가 반영 처리를 눌러야 플랫폼 송출로 넘어가는 의사결정 지원 구조입니다.

구조

세 갈래 데이터가 판단에 닿기까지

세 갈래 데이터의 통합과 산출 경로
INTERNAL기존 관리 패키지
약 7년치 예약 · 내장 · 매출 · 회원
읽기 전용 3중 가드
EXTERNAL경쟁사 공개 가격
예약 플랫폼 4곳 · 플레이 45일치 일일 수집
PUBLIC기상 · 천문 정보
강수 · 기온 · 공휴일 · 일출입 공공데이터
운영 데이터 레이어
수집 · 회계 정합 규칙 적용 · 지표 산출
가격 판단
이탈 중인 시간대 탐지 · 근거 라벨과 함께 제시, 반영은 승인 후
재무 · 보고
매출 표준화 · 현금흐름 · 손익계산서 출력
고객 커뮤니케이션
등급 분류 · 문자 · 쿠폰 발송
주요 기능

주요 기능

FEATURE 01
ERP 연동 예약 관리쓰던 골프장 관리 ERP의 예약·내장 데이터를 연동해 티타임별 예약 현황, 빈자리, 당일 스케줄을 관리합니다. 7년치 운영 데이터가 이관 없이 그대로 활용됩니다.
FEATURE 02
AI 티타임 가격 추천예약 진행률, 경쟁 골프장 가격, 날씨, 공휴일을 근거로 슬롯별 추천가를 산출합니다. 왜 그 가격인지의 근거가 함께 제시됩니다.
FEATURE 03
추천가 플랫폼 입력 자동화확정한 가격을 예약 플랫폼 4곳에 자동으로 입력합니다. 플랫폼마다 차등 없음·고정액·비율로 송출가를 다르게 걸 수 있습니다.
FEATURE 04
경쟁 가격·날씨 자동 수집주요 예약 플랫폼 4곳의 45일치 티타임 가격과 기상 예보·공휴일 정보를 매일 자동으로 모읍니다. 경쟁사·플랫폼 추가는 화면에서 등록합니다.
FEATURE 05
판매 규칙 엔진임박 할인, 우천·폭염 대응, 연휴 인상 규칙을 관리자가 숫자와 on/off로 조정합니다. 발동한 규칙이 추천 근거에 표시됩니다.
FEATURE 06
재무 관리매출을 채널별로 자동 집계하고 지출을 등록받아 현금흐름과 손익계산서, 고객 이용 분석 보고서를 냅니다.
FEATURE 07
고객 관리와 문자 발송단골·신규·휴면 세그먼트를 나눠 등록 템플릿으로 문자를 발송합니다. 수신동의 확인과 발송 안전장치가 함께 동작합니다.
기술 상세

기술

읽기 전용 가드운영 DB 조회 함수가 조회 계열 구문만 통과시키고, 커넥션을 다중 구문 금지로 열어 변경 시도를 원천 차단합니다. 모든 조회에 사업장 식별 조건을 겁니다.
상주 서버 없는 수집 파이프라인작업을 데이터베이스 큐에 넣고 서버리스 함수가 원자적으로 점유해 처리하며, 실행 시간을 넘기면 스스로 다음 실행을 이어받습니다. 0건 응답으로 위장되는 차단은 실패로 판정하고, 기존 데이터는 새 수집이 성공한 뒤에만 지웁니다.
가격 반응은 관측 데이터로 식별되지 않는다는 결론화면을 만들기 전에 「얼마 내리면 얼마나 더 팔리는가」부터 확정했습니다. 미판매 슬롯의 가격 결측, 역방향 인과, 채널 전환과의 동행이라는 구조적 이유로 식별이 불가능하며, 진열가 6년치까지 확보해 층화·교차 검정으로 확인한 결론입니다. 그래서 제품은 최적 가격 계산 대신 이탈 슬롯 탐지로 정의했고, 가격 반응은 운영자가 정하는 가정 입력값으로 화면에 명시합니다.
회계 정합 규칙의 전역 고정「매출은 공급가액」을 규칙으로 정하고 매출을 다루는 12개 모듈 전체에 같은 식을 적용해, 손익계산서·매출 상세·현금흐름·가격 리포트가 서로 다른 화면에서 같은 값을 냅니다.
가격 안전장치100원 단위 반올림, 요일유형별 절대 상·하한, 단계별 인하폭 상한을 걸고, 절대 하한은 정가 이하일 때만 적용해 경계 조건에서도 인하 추천이 인상으로 뒤집히지 않습니다. 근거를 받지 못한 항목은 예시값임을 화면에 표기하고, 실연동이 없는 화면은 그 사실을 화면 안에 적습니다.
규모화면 13개와 API 라우트 39개, TypeScript 약 27,300행, 운영 데이터 조회 모듈 20종, 수집 저장소 테이블 18개, 설계 문서 42개 파일 7,110행입니다.
Next.js 14 App RouterReact · TypeScriptMySQL 원격 직결 (읽기 전용 가드)Supabase (PostgreSQL)Supabase Edge Functions (Deno)DB 작업 큐 · SKIP LOCKEDGoogle Cloud Run기상·공휴일 공공데이터Vercel

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

검도 도장 · 설치형 소프트웨어

검도온 · AI 동작 분석과 도장 운영을 한 프로그램에

AI 동작 분석으로 국가대표 영상에서 뽑은 동작별 허용 밴드를 기준 삼아 학생 자세를 채점하고, 학생 등록·반 편성·주간 시간표·회차별 출결을 다루는 도장 운영 소프트웨어와 한 프로그램 안에 넣었습니다.

SENTIF
검도온 · AI 동작 분석과 도장 운영을 한 프로그램에
앱·웹 개발 · 약 2~3개월
촬영 화면. 영상 위에 실시간 골격, 관절 각도와 죽도 검출 상태, 국면별 확정과 점수
클라이언트검도 도장 운영 사업자
업종스포츠·교육
기간약 2~3개월
규모1,000만~5,000만원
서비스앱·웹 개발
의뢰 배경

「어깨가 좀 열렸다」를 숫자로 만들고 싶었습니다

검도 도장을 운영하는 사업자의 의뢰입니다. 자세 지도는 사범의 눈과 말에 의존합니다. 「어깨가 좀 열렸다」는 지적은 사범마다 다르고, 학생과 학부모에게 남는 근거도 없습니다. 발주처는 국가대표의 모범 동작을 기준으로 학생 자세를 수치로 채점하는 프로그램이라는 구상을 가지고 찾아왔고, 이 채점 방식을 특허로 출원할 계획까지 있었습니다.

도장 현장에서 실제로 쓰이려면 분석기 하나로는 부족합니다. 사범은 학생을 가르치는 사람이자 도장을 운영하는 사람이라, 등록·반 편성·시간표·출결과 자세 지도가 하루 안에 섞여 있습니다. 그래서 도장 운영 화면과 분석 화면을 한 프로그램에 넣었고, 체육관에 인터넷이 없어도 되도록 모델과 의존성을 동봉한 설치본으로 만들어 촬영·분석·저장이 오프라인으로 됩니다.

국가대표 영상에서 허용 밴드를 뽑아 채점하는 방식은 발주처의 특허 출원을 위한 명세서 작성까지 지원했습니다.

구조

영상에서 점수와 교정 문장까지

영상에서 점수와 교정 문장까지의 처리 단계
STEP 01촬영 · 프레임 추출기준 촬영 규격으로 정렬
STEP 02신체 · 장비 추적관절 지점과 죽도 2점을 프레임마다 검출
STEP 03동작 구간 분할움직임 에너지 변화로 동작 경계를 자동 판정
STEP 04국면 정렬시간·속도를 배제하고 자세가 또렷해지는 국면끼리 대응
STEP 05채점 · 진단 생성기준 대비 이탈도를 점수와 규칙 기반 교정 문구로 환산
주요 기능

주요 기능

FEATURE 01
국가대표 영상이 만드는 채점 기준동작마다 국가대표 모범 영상을 등록하면 국면별·부위별로 「어디까지가 허용 범위인가」가 자동으로 만들어집니다. 사람이 기준표를 짜지 않고, 영상을 추가하면 기준이 다시 계산됩니다.
FEATURE 02
촬영하면 바로 나오는 점수학생을 촬영하는 동안 화면 위에 골격과 관절 각도가 실시간으로 표시되고, 동작 국면이 하나씩 확정되며 점수가 붙습니다.
FEATURE 03
무엇을 고칠지 문장으로 나오는 리포트총점만 주지 않습니다. 「오른쪽 어깨가 기준보다 45.6° 큼, 허용 ±5.2°」처럼 어느 부위가 얼마나 벗어났고 허용 폭이 얼마인지가 문장으로 나와, 사범이 무엇부터 고칠지 정할 수 있습니다.
FEATURE 04
모범 영상과 나란히 보는 코칭 화면촬영 영상과 모범 영상을 좌우로 동시에 재생하고 속도를 바꿔 봅니다. 화면 위에 펜으로 표시를 남기고 코칭 메모를 이력으로 쌓습니다.
FEATURE 05
학생별 성장 추이와 학부모 리포트측정을 거듭할수록 점수가 어떻게 움직였는지 차트로 보여 주고, 학부모에게 전달할 리포트를 따로 뽑습니다. 지도의 근거가 도장 밖으로도 전달됩니다.
FEATURE 06
도장 운영이 같은 화면에학생 명부, 반 편성, 요일 × 교시 시간표, 회차별 출결과 월별 출석률까지 운영에 필요한 것을 갖췄습니다. 홈 화면에서 오늘 수업을 보고 그 자리에서 학생을 골라 촬영으로 넘어갑니다.
FEATURE 07
주간 시간표와 출결반을 만들고 시각을 배치하면 격자 시간표가 되고, 칸을 누르면 그 반의 출결 화면으로 넘어갑니다. 출석·지각·결석이 월별 출석률로 집계됩니다.
기술 상세

기술

카메라에 무관한 자세 표현자세를 좌표가 아니라 관절 각도 10차원으로 환산해, 촬영 각도가 달라도 같은 동작이 같은 값으로 잡힙니다. 차원별 평균 차이가 그대로 「평균 몇 도 벗어났나」로 읽힙니다.
표준편차 단위로 재는 이탈도학생 자세가 모범 평균에서 표준편차의 몇 배 벗어났는지를 잽니다. 동작마다 다른 허용 오차가 자동으로 반영되고, 잘하는 쪽과 못하는 쪽을 실제로 갈라내는 부위에 가중치를 더 줍니다.
속도를 배제한 국면 정렬빠르게 치든 느리게 치든 자세가 맞으면 같은 점수가 나오도록, 동적계획법과 DTW로 시간축을 정렬한 뒤 비교합니다. 검출이 실패한 프레임은 감점이 아니라 제외로 처리합니다.
계측으로 정한 죽도 검출 해상도길고 가는 죽도는 통상의 추론 해상도에서 폭이 1~2픽셀로 줄어 검출이 성립하지 않습니다. 21개 촬영본 3,346프레임을 전수 추론해 해상도별 검출율을 계측하고 분석 해상도를 1280으로 확정, 검출율 74.8%를 확보했습니다(자체 촬영 데이터 기준). 죽도 검출 모델은 이미지 450장을 직접 라벨링해 학습했습니다.
설치형 배포FastAPI 서버를 로컬에 띄우고 네이티브 창으로 감싸 일반 프로그램처럼 쓰입니다. 모델 2종과 의존성을 동봉한 단일 설치본이며 운영 데이터는 SQLite 파일 하나라 백업이 파일 복사로 끝납니다.
규모Python 12,023행, 화면 템플릿 18개, API·페이지 라우트 78개, DB 테이블 11종. 채점 엔진은 정렬·비교 938행과 기준모델 606행입니다.
Python 3FastAPI · uvicornSQLModel · SQLiteMediaPipe PoseYOLO Pose (자체 학습)PyTorch (MPS/CUDA/CPU)OpenCV · NumPyDTW·DP 자체 구현pywebview · PyInstaller

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

의과대학 진로지도 · 발주용 기획 산출물기획 산출물 · 프로토타입

의대생 커리어패스 설계 도구 · 기획부터 동작 프로토타입까지

발주기관의 교육 설계모형을 요구사항 정의서와 피그마 화면 기획으로 옮기고, 눌러서 실제로 동작하는 프로토타입까지 함께 넘겼습니다. 발주처가 개발업체를 선정하고 통제할 수 있는 상태로 만드는 것이 과업이었습니다.

SENTIF
의대생 커리어패스 설계 도구 · 기획부터 동작 프로토타입까지
기획·설계 · 약 3개월
프로토타입 학생 홈. 의예과부터 전문의까지 5단계 학년 축과 자기이해·진로탐색·진로선택·경력쌓기 4단계 과정 축을 겹친 커리어패스 타임라인
클라이언트영남대학교 의과대학 의학교육혁신사업단
업종의료
기간약 3개월
규모1,000만~5,000만원
서비스기획·설계
의뢰 배경

연구는 끝났는데, 발주할 문서가 없었습니다

영남대학교 의과대학은 학생 진로지도를 위한 교육학 설계모형(구성요소 9개, 설계원리 9개, 상세지침 28개)을 연구로 완성해 두고 있었습니다. 다음 단계는 이 모형을 실제 시스템으로 만드는 것인데, 개발업체가 교육학 모형만 보고 화면과 기능을 만들 수는 없습니다. 모형만 넘기면 업체가 임의로 해석하고, 기능이 빠져도 「요구사항에 없었다」는 말에 대응할 근거가 없습니다.

그래서 이 계약의 범위는 구현이 아니라 발주와 검수에 쓸 문서 일습입니다. 설계모형을 요구사항 101건과 화면 12개로 번역하고, 검토자가 표가 아니라 실제로 눌러 보며 판단할 수 있는 동작하는 프로토타입까지 만들어, 발주기관이 개발업체를 선정하고 통제할 수 있는 상태를 만드는 일이었습니다.

구조

설계모형이 발주 문서가 되기까지

설계모형에서 발주 문서까지
입력 · 발주기관이 제공한 것
INPUT교육 설계모형
구성요소 9개 · 설계원리 9개 · 상세지침 28개
화면 단위 요구사항으로 번역
01요구사항정의서
총칙 8개 조항 + 기능 68 · AI 15 · 비기능 18 = 101건
02IA 화면목록
화면 12개와 화면 간 이동 정의. 요구사항 ID와 일대일 대응
03동작 프로토타입
정적 HTML 한 파일. 학생·교수자 역할 전환과 요청·승인 왕복이 실제로 동작
검토 반영 사이클
1차 관리대장 32건 · 5차 코멘트 핀 26건을 접수하고, 수정 전후를 자동 촬영해 대조 뷰어로 회신
개발업체 선정과 범위 통제에 그대로 사용
OUTPUT발주 문서 일습
「협의 확정」 항목까지 구현 의무로 고정. 산출 로직과 상세 레이아웃은 후속 문서로 위임
주요 기능

산출물

FEATURE 01
설계모형을 번역한 요구사항 101건추상적인 설계원리를 화면 단위 요구사항(기능 68건 · AI 15건 · 비기능 18건)으로 풀고, 각 항목을 화면 12개와 일대일로 번호를 맞췄습니다. 개발업체가 「요구사항에 없었다」는 이유로 기능을 뺄 수 없는 상태가 됩니다.
FEATURE 02
미확정 항목이 빠져나가지 못하는 총칙기획 시점에 세부를 정할 수 없는 항목이 기능 65건 중 19건이었습니다. 이런 항목이 「추후 협의」라는 이름으로 범위에서 빠지지 않도록, 협의 미완료를 이유로 생략할 수 없다는 총칙 8개 조항을 문서 앞에 세웠습니다.
FEATURE 03
눌러서 확인하는 프로토타입학생의 검토 요청이 교수자 화면에 접수되고, 교수자의 승인이 다시 학생 홈에 반영되는 왕복이 실제로 동작합니다. 검토자는 화면 그림을 상상하는 대신 역할을 전환해 가며 직접 눌러 봅니다.
FEATURE 04
진단·추천·매칭 화면의 확정교과·비교과·적성 검사를 한 화면에 모으는 진단, 근거와 불확실성 안내가 붙는 AI 추천, 선배·전문가 멘토링 매칭까지 12개 화면의 기능과 흐름을 프로토타입으로 확정했습니다.
FEATURE 05
검토의견 전건 반영 추적1차 검토 32건, 5차 검토 26건을 전건 접수해 처리 상태와 답변을 채워 회신했습니다. 수정 전후 화면을 나란히 놓은 대조 뷰어로 무엇이 어떻게 반영됐는지 검토자가 직접 확인합니다.
기술 상세

기술

무빌드 정적 HTML 프로토타입프레임워크와 빌드 도구 없이 1,538행 단일 파일로 만들어, 파일 하나만 열면 전체가 동작합니다. 차트는 SVG로 직접 그렸고 브랜드 자산은 파일에 내장했습니다.
단일 소스 화면 파생디자인 도구로 가져갈 화면별 HTML 11개를 통합 프로토타입에서 자동으로 잘라 생성합니다. 6판에 걸친 개정 동안 통합본과 분리본이 어긋나지 않았습니다.
수정 전후 자동 촬영 대조개정 전후 판본을 headless Chrome으로 같은 조건에서 촬영하고 코멘트 핀 좌표를 얹은 대조 뷰어를 스크립트로 생성해, 반영 결과를 글이 아니라 화면으로 보고했습니다.
규모산출 파일은 155개 21MB입니다. xlsx 산출물 11개(채워진 셀 4,907개), 통합 프로토타입 6판, 화면별 HTML 11개 4,824행, 반영 캡처 69장, 자동화 스크립트 5개입니다.
정적 HTML (프레임워크·빌드 도구 없음)인라인 CSS 변수 디자인 토큰SVG 직접 작성 차트Python 3 · openpyxlPillowheadless Chrome · PlaywrightFigma Plugin API · html.to.design

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

인바운드 여행 · 견적 자동화

일정표 이미지를 견적서 엑셀로 바꾸는 AI 견적 자동화

여행사 견적 업무의 AI 전환입니다. 일정표 이미지를 올리면 AI가 일정과 인원 조건을 읽어내고, 사내 단가 DB와 대조해 금액을 채운 뒤 기존 견적서 양식 그대로의 엑셀 파일을 만들어 줍니다.

SENTIF
일정표 이미지를 견적서 엑셀로 바꾸는 AI 견적 자동화
AI 전환 · 약 1~2개월
견적서 미리보기. 호텔 옵션별 LAND FEE 매트릭스와 Hotels·Restaurants·The Sights·Including 4개 섹션표
클라이언트세운트래블
업종여행
기간약 1~2개월
규모300만~1,000만원
서비스AI 전환
의뢰 배경

견적 한 건마다 같은 반복이 돌고 있었습니다

세운트래블은 해외 거래처의 단체 여행을 받는 인바운드 여행사입니다. 견적은 거래처가 보낸 일정표 이미지 한 장에서 시작합니다. 담당자는 그 이미지를 보면서 날짜별 호텔·식사·관광지를 옮겨 적고, 항목마다 사내 단가를 찾아 붙이고, 인원 20명일 때와 30명일 때의 금액을 각각 계산하고, 노쇼핑·밀쿠폰 같은 특수조건을 기억으로 반영해 견적서 엑셀을 채웠습니다. 건마다 같은 반복입니다.

AI로 이 반복을 없애고 싶다는 의뢰였는데 조건이 있었습니다. 거래처가 받아 보는 견적서 양식은 그대로여야 한다는 것입니다. 좌우 병렬 배치에 섹션별 행 수까지 고정된 종이 서식 그대로의 엑셀이 산출물이어야 했습니다. 그래서 산출물의 모양은 그대로 두고 그 안을 채우는 과정만 자동화하는 사내 웹 시스템으로 만들었습니다.

구조

일정표 한 장이 견적서가 되기까지

일정표 이미지 → 견적서 엑셀 · 마법사 6단계
STEP 01·02일정표 판독과 검토단가표를 최우선 추출 대상으로 지정, 인원 시나리오와 호텔 옵션까지 구조화
STEP 03특수조건 해석자연어로 적은 예외 규칙을 조건 객체로 변환
STEP 04단가 자동 매칭표기가 흔들려도 후보 3개를 단가와 함께 제시
STEP 05견적 설정인원 시나리오 × 호텔 등급, 행별 인원 개별 지정
STEP 06견적서 출력셀 좌표를 직접 지정해 기존 종이 양식을 재현
주요 기능

주요 기능

FEATURE 01
일정표 이미지 한 장을 통째로 판독이미지를 올리면 투어명·기간·인원 구간·호텔 옵션별 단가표·날짜별 호텔·식사·관광지가 한 번에 구조화됩니다. 「20+1」 같은 업계 표기도 유료 20명·무료 1명으로 해석합니다.
FEATURE 02
단가 자동 매칭판독된 항목을 사내 단가 DB와 자동으로 대조해 금액을 채웁니다. 「롯데호텔 서울」과 「롯데 호텔서울」처럼 표기가 어긋나도 후보를 단가와 함께 제시하고, 없는 항목만 그 자리에서 입력합니다.
FEATURE 03
문장으로 적는 특수조건「전 일정 노쇼핑이고 3일차 중식은 밀쿠폰으로 대체합니다」처럼 문장으로 적으면 조건이 분해되어 견적 계산에 반영됩니다. 담당자의 기억에 의존하던 조건이 화면에 남습니다.
FEATURE 04
인원 구간별 자동 계산20+1·25+1·30+2 같은 인원 시나리오별 1인당 단가가 한 번에 계산됩니다. 호텔은 방 타입·개수·박수 단위로 넣으면 옵션 소계가 실시간으로 갱신됩니다.
FEATURE 05
견적서 엑셀 출력완성된 견적을 기존 종이 서식의 배치 그대로 xlsx로 내려받습니다. 거래처가 받아 보던 양식이 유지되고, 담당자는 옮겨 담는 작업이 없습니다.
FEATURE 06
단가 DB와 견적 이력호텔·식당·관광지·차량 단가를 화면에서 직접 관리하고, 완성된 견적은 저장해 투어명·고객명으로 찾아봅니다.
기술 상세

기술

Vision 파싱과 4단계 폴백이미지·PDF를 Gemini Vision으로 구조화하되, 응답이 흔들릴 때를 대비한 4단계 폴백을 둬 마법사가 중간에 멈추지 않습니다.
자체 구현 퍼지 매칭표기 정규화 후 완전일치 → 부분포함 → 문자 일치 비율 순으로 채점해 이름과 별칭 중 최댓값을 씁니다. 외부 라이브러리 없이 60행 함수로 구현했습니다.
셀 좌표를 직접 찍는 엑셀 생성행·열 좌표를 셀 주소로 변환해 직접 기입하는 방식으로, 좌우 병렬에 섹션별 행 수가 고정된 원 서식을 그대로 재현합니다.
마이그레이션 없는 단가 DB단가 항목의 속성을 JSONB와 메타 테이블로 정의해, 지역·종류 같은 속성을 새로 추가할 때 스키마 변경이 필요 없습니다.
규모코드 2,530행, 논리 화면 11종(탭 5 + 마법사 6단계), API 핸들러 12개, DB 테이블 8개입니다.
Next.js 14 App RouterReact 18JavaScriptSupabase (Postgres · Auth · RLS)Google Gemini VisionSheetJS (xlsx)PostgreSQL JSONB · GIN

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

다수 매장 운영 · 회계 자동화

법인카드 내역을 ERP 전표로 바꾸는 자동분개 시스템

카드내역 연동을 통한 AI 계정과목 자동 분개입니다. 거래마다 계정과목을 배정하고, 간편결제 건은 주문내역을 조회해 품목 단위로 나눈 뒤, 더존비즈온 위하고에 올릴 전표 엑셀로 내보냅니다.

SENTIF
법인카드 내역을 ERP 전표로 바꾸는 자동분개 시스템
업무 자동화 · 약 1개월
거래 16건의 계정과목 배정 결과. 매핑 출처 뱃지와, 품목 분해가 필요한 간편결제 2건의 분리
클라이언트F&B 기업
업종제조·유통
기간약 1개월
규모300만원 이하
서비스업무 자동화
의뢰 배경

매달 돌아오는 카드 내역 마감이 통째로 수작업이었습니다

다수 매장을 운영하는 F&B 기업입니다. 회계 담당자는 매달 카드사에서 받은 사용내역 엑셀을 열어 두고, 가맹점명을 하나씩 보며 계정과목을 정하고, 거래마다 공급가액·부가세·미지급금 행을 손으로 나눠 적어 위하고 ERP에 올릴 전표를 만들었습니다. 특히 「쿠팡(주) 50,000원」처럼 한 줄로 남는 간편결제 건은 안에 성격이 다른 품목이 섞여 있어, 주문내역 화면을 따로 열어 확인해야 했습니다.

이 반복을 자동화하되 담당자의 작업 순서는 바꾸지 않는다는 방향으로 잡았습니다. 입력은 카드사 엑셀 그대로, 출력은 위하고 업로드 서식 그대로 두고, 그 사이의 판단과 계산만 시스템이 맡습니다. 판단이 서지 않는 건은 임의로 채우지 않고 「미분류」로 남겨 담당자 확인으로 넘깁니다. 근거 없는 전표를 만들지 않는 것이 이 시스템의 원칙입니다.

구조

카드내역 한 벌이 전표가 되기까지

법인카드 내역 → 회계 전표 변환 흐름
STEP 01카드내역 파싱헤더 행을 찾아 셀 형식을 정규화
STEP 02계정과목 배정AI 배치 매핑 1순위 · 키워드 규칙 폴백, 출처와 확신도 기록
STEP 03품목 단위 분해간편결제 건은 주문내역을 조회해 결제 1건에 대응하는 주문 집합을 탐색
STEP 04복식부기 분개 생성차변·대변 구성, 미분류 건은 수동 확인 대상으로 표시
STEP 05업로드용 엑셀 출력전표 시트 + 서식 안내 시트
주요 기능

주요 기능

FEATURE 01
카드내역 업로드카드사에서 받은 사용내역 엑셀을 서식 손질 없이 그대로 올립니다. 시스템이 헤더를 찾아 읽고, 읽을 수 없는 파일은 잘못된 전표가 되기 전에 반려합니다.
FEATURE 02
AI가 배정하는 계정과목「GS칼텍스 강남SS」는 차량유지비, 「교보문고」는 도서인쇄비입니다. 사람이 가맹점명을 보고 하던 판단을 AI가 대신하고, 거래마다 판단 근거와 확신도가 함께 표시됩니다. 검토자는 어느 건을 먼저 봐야 하는지 알 수 있습니다.
FEATURE 03
간편결제 한 줄을 품목 단위로결제 금액에 대응하는 주문을 자동으로 찾아 품목마다 계정과목을 배정합니다. 쿠팡 결제 50,000원 한 줄이 복리후생비·소모품비로 나뉜 6행 분개가 됩니다.
FEATURE 04
위하고에 바로 올라가는 전표 엑셀완성된 분개를 위하고 자동전표처리 서식 그대로의 엑셀로 내보냅니다. 내려받은 파일을 서식불러오기에 올리면 끝입니다.
FEATURE 05
회사 규칙은 화면에서 관리가맹점 키워드와 계정과목 규칙을 화면에서 등록합니다. 규칙을 고치면 AI의 판단 기준도 함께 바뀝니다.
FEATURE 06
내보내기 전 결과 집계전체 건수, 분개 완료, 미분류, 품목 분해 건수를 내보내기 직전에 확인합니다. 미분류가 남아 있으면 상단에 건수가 표시됩니다.
기술 상세

기술

헤드리스 브라우저 없는 주문내역 조회브라우저 자동화를 띄우지 않고 HTTP 요청 한 번으로 주문 데이터를 읽습니다. 실행 환경이 가볍고 대상 페이지 변경의 영향 범위가 좁습니다.
결제·주문 합산 매칭단건 일치 → 오차 허용 → 여러 주문 조합 합산 → 날짜 범위 확장 순으로 결제 1건에 대응하는 주문 집합을 찾습니다. 묶음 결제에서도 품목 분해가 이어집니다.
AI 응답의 행 대응을 ID로 고정배치 매핑에 거래 ID를 실어 보내고 응답을 ID로 되찾아 붙입니다. 모델이 행을 누락하거나 순서를 바꿔도 다른 거래의 계정과목이 섞이지 않습니다.
판정 불가 건의 명시적 처리확신이 서지 않는 건은 임의 계정 대신 「수동 분개 필요」로 남기고, AI 호출이 실패하면 등록 규칙으로 자동 전환합니다. 처리 단계는 실시간으로 화면에 흐릅니다.
규모코드 3,094행, 화면 1페이지 5탭, API 8개, DB 모델 7개입니다. 조회 자격증명은 AES-256-GCM으로 암호화 보관합니다.
Next.js 14 App RouterTypeScriptReact 18Prisma · SQLiteExcelJSGoogle GeminiServer-Sent EventsAES-256-GCM

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

보습학원 운영 · 시간표 조립

학원 운영 디지털 전환 · 지아이학원 외 2개 학원

매주 손으로 짜던 편성을 규칙 엔진이 대신합니다. 반과 학생을 한 번 등록해 두면 주차마다 시간표가 조립되고, 시험 일정에서 역산한 직전보강이 자동으로 끼워지며, 출결·피드백과 학생별 발송까지 한 흐름으로 이어집니다. 같은 도구를 다른 학원에도 공급했습니다.

SENTIF
학원 운영 디지털 전환 · 지아이학원 외 2개 학원
업무 자동화 · 약 1~2개월
학생별 주간 시간표. 시험일·공휴일 강조, 자동 삽입된 직전보강, 수업마다 짝지어진 출결·피드백
클라이언트지아이학원
업종교육
기간약 1~2개월
규모300만원 이하
서비스업무 자동화
의뢰 배경

90%가 지난주와 같은 표를, 매주 처음부터 만들고 있었습니다

지아이학원 원장은 매주 시간표를 엑셀과 메신저로 짜고 있었습니다. 지난주와 90%가 같은데도 표는 매번 새로 만들어야 했고, 시험 기간이 오면 학교마다 다른 시험 날짜를 보며 학생별 보강을 하나씩 끼워 넣었고, 완성한 시간표를 학부모에게 보내려면 캡처하거나 옮겨 적어야 했습니다. 학생을 반에서 빼면 기록이 사라져 지난달 수업 이력을 되짚을 수도 없었습니다.

이 반복을 덜어 달라는 의뢰에 대해, 알고리즘이 시간표를 대신 짜 주는 방향 대신 반 공통 일정에 학생별 예외를 덮어쓰는 조립 방식을 택했습니다. 원장이 결과를 예측할 수 있고 마음에 안 들면 그 자리에서 고칠 수 있는 구조입니다.

구조

주간 시간표 조립 구조

주간 시간표 조립 구조
입력 · 한 번 등록해 두는 것
반 · 정규수업
요일 · 시간 · 강의실
학생 배정
유효 기간을 가진 소속 이력
개인 일정
리터치 · 스터디존
학교 시험일정
학교별 시험 과목과 날짜
주차를 선택하면 규칙에 따라 조립
시간표 조립 엔진
반 공통 일정에 학생별 예외를 덮어쓰고, 시험일에서 역산한 직전보강과 방학 등원을 삽입한 뒤 재정렬
겹침 검사
같은 시간 · 같은 강의실 충돌을 경고. 저장을 막지 않음
학생별 시간표
출결과 피드백을 같은 화면에 결합
이미지 공유
화면을 이미지로 복사해 메신저로 전달 · 발송 여부 기록
주요 기능

주요 기능

FEATURE 01
주차를 고르면 조립되는 시간표반과 학생을 한 번 등록해 두면, 주차를 고를 때마다 반 공통 일정과 학생별 예외가 합쳐진 시간표가 만들어집니다. 공휴일과 학원 방학은 자동으로 표시됩니다.
FEATURE 02
시험 일정에서 역산되는 직전보강학교별 시험 날짜와 과목을 등록해 두면, 그 학교 학생의 시간표에 시험 직전 보강이 자동으로 끼워집니다. 원장이 시험표를 보며 하나씩 계산하던 일입니다.
FEATURE 03
수업 이력 조회지난 주차 시간표를 다시 열면 당시 구성이 그대로 재현됩니다. 학생이 반을 옮겨도 과거 기록이 지워지지 않아, 언제 무슨 수업을 들었는지 되짚을 수 있습니다.
FEATURE 04
날짜 단위 출결과 피드백날짜를 고르면 그날 수업 듣는 학생들이 행으로 펼쳐지고, 출석·지각·결석과 피드백을 그 자리에서 저장합니다.
FEATURE 05
메신저에 바로 붙는 시간표 이미지완성된 시간표를 이미지로 만들어 클립보드에 넣습니다. 원장이 쓰던 메신저 대화방에 바로 붙여 넣으면 되고, 누구에게 보냈는지가 기록되어 미발송 학생만 걸러 볼 수 있습니다.
FEATURE 06
지난 주 가져오기와 겹침 알림1~2주 전 시간표를 이번 주로 복사해 한두 자리만 손봅니다. 학생 시간 겹침과 강의실 중복은 알림으로 표시하되 저장을 막지는 않습니다. 학원 현장에서는 의도적인 중복 배정이 흔하기 때문입니다.
FEATURE 07
공휴일 자동 연동행정안전부 공휴일 데이터를 연 단위로 받아 시간표에 자동 반영하고, 학원 자체 방학도 같은 방식으로 표시됩니다.
기술 상세

기술

서버 계층을 걷어낸 2층 구조API 엔드포인트를 하나도 두지 않고 브라우저가 데이터베이스에 직접 질의하며, 권한은 테이블 17개 전부에 걸린 행 단위 보안 정책이 담당합니다. 단일 학원 운영에 맞춰 유지할 코드를 화면과 스키마 두 층으로 줄인 선택입니다.
열 단계 조립 파이프라인유효 배정 추리기부터 직전보강 삽입까지 열 단계로 시간표를 조립합니다. 반 단위 수업과 학생 단위 수업(리터치·학습존)을 별도 경로로 처리합니다.
유효 기간으로 보존하는 과거배정을 지우는 대신 종료일만 적어, 같은 학생이 같은 반에 기간을 달리해 여러 번 배정될 수 있습니다. 과거 주 재현이 이 구조에서 나옵니다.
화면 그대로의 이미지 출력표를 캔버스로 그려 PNG로 클립보드에 씁니다. 복사가 안 되는 환경은 파일 내려받기로 전환합니다.
규모화면 7개(+로그인)에 코드 5,664행, SQL 524행, DB 테이블 17개, 운영 매뉴얼 643행입니다.
Next.js 16 App RouterReact 19TypeScript 5Tailwind CSS 4Supabase (Postgres · Auth · RLS)html2canvas공공데이터포털 특일 정보 APIVercel

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

시니어 운동·건강관리 앱 · 자세 분석 서버

오십견 재활 운동 AI 분석과 3개 언어 건강 리포트

시니어의 오십견·어깨 재활 운동 영상을 AI로 분석해 관절 각도를 재고, 그 수치로 LLM이 건강 리포트를 자동 생성해 한국어·영어·일본어 3개 언어로 보여 줍니다. 운영 중인 앱 위에 증축했습니다.

SENTIF
오십견 재활 운동 AI 분석과 3개 언어 건강 리포트
앱·웹 개발 · 약 1~2개월
촬영 화면. 좌측에 모범 동작 영상, 우측에 사용자 영상 위로 관절 키포인트와 골격선, 상단에 남은 반복 횟수
클라이언트시니어바이브 (오후의건강)
업종헬스케어
기간약 1~2개월
규모300만원 이하
서비스앱·웹 개발
의뢰 배경

측정까지는 되는데, 그다음이 사람 손이었습니다

시니어바이브는 시니어 운동·건강관리 앱 「오후의건강」을 이미 운영하고 있는 회사입니다. 오십견·어깨 결림을 겪는 시니어가 재활 운동을 촬영해 올리면 서버가 관절 각도를 계산해 두는 데까지는 시스템이 하고 있었는데, 그 숫자를 이용자가 읽을 수 있는 리포트로 바꾸는 일은 담당자가 화면에 문장을 직접 적어 넣는 방식이었습니다. 해외 이용자를 받으려면 같은 문장을 언어별로 다시 써야 했습니다.

의뢰는 새 제품이 아니라 운영 중인 제품 위의 증축입니다. 측정 수치에서 리포트를 자동으로 생성하는 계층, 한국어·영어·일본어 3개 언어 경로, 그리고 촬영 품질을 끌어올리는 앱 내 실시간 자세 표시까지. 기존 이용자와 운영을 멈추지 않은 채 분석 스택 교체와 리포트 생성 계층을 얹었습니다.

생성된 리포트는 곧바로 이용자에게 나가지 않습니다. 담당자가 초안을 검토하고 확정하는 단계를 관리자 화면에 함께 만들어, 자동화 이후에도 품질 관리는 사람이 쥐고 있습니다.

구조

측정 수치가 리포트가 되기까지

측정 수치에서 상담 리포트까지의 생성 계층
기존 시스템 · 측정까지
EXISTING영상 · 이미지 촬영
동작별 관절 위치 추적
EXISTING수치 산출
관절 가동범위 · 좌우 비대칭 각도
여기서 멈춰 있던 흐름 · 이후는 전부 사람이 작성
신규 설계 · 리포트 생성 계층
01섹션 4개 병렬 생성
서사 · 가동범위 · 비대칭 · 통증 회피
02요약 2개 2단계 생성
앞선 섹션의 실제 문장을 입력으로 받아 논조를 맞춤
03수치는 코드가 주입
운동 횟수 · 각도 · 통증 집계는 분석 결과에서 직접 계산해 덮어씀
도구 호출로 출력 형식 강제 · 파싱과 타입과 필수 키 3중 검증
한국어 리포트 확정
구조를 벗어난 응답은 통과 불가. 한 섹션이라도 실패하면 오류로 처리
영어 · 일본어 번역
텍스트 필드만 추출해 번역, 코드값은 번역 경로에서 제외
담당자 검토 화면
초안을 다듬어 확정. 측정 완료 회원 목록에서 대상을 선택
주요 기능

주요 기능

FEATURE 01
재활 운동 영상 AI 각도 측정이용자가 앱으로 오십견 재활 운동을 촬영하면 어깨 가동범위 6항목의 좌우 각도, 자세 비대칭, 어깨 높이 차가 수치로 나옵니다. 한 번의 촬영에서 어깨와 목 측정이 함께 됩니다.
FEATURE 02
수치가 문장이 되는 AI 리포트측정 수치를 입력으로 AI가 서사·가동범위·비대칭·통증 회피·활력 점수·종합 요약 6개 섹션의 리포트를 씁니다. 리포트에 실리는 숫자는 AI가 아니라 서버 코드가 계산해, 화면의 수치가 근거를 잃지 않습니다.
FEATURE 03
같은 리포트가 3개 언어로한국어 리포트를 확정한 뒤 같은 내용이 영어·일본어로 만들어집니다. 언어마다 내용이 달라지거나 한 언어만 비는 일이 없고, 이용자는 언어 선택으로 바꿔 봅니다.
FEATURE 04
관리자 검토 콘솔측정을 마친 회원 목록과 리포트 초안을 관리자 화면에서 확인·수정·확정합니다. 확정된 리포트만 이용자에게 나갑니다.
FEATURE 05
촬영 중 실시간 자세 표시서버에 올리기 전, 카메라 화면 위에 골격과 반복 횟수가 바로 그려집니다. 쓸 수 없는 영상을 올리고 나서야 알게 되는 일이 줄어듭니다.
FEATURE 06
활력 점수와 추이리포트는 활력 점수와 지난 측정 대비 변화, 좌우 가동범위를 정상치와 나란히 놓은 표, 통증 회피 횟수의 주간·누적 집계로 구성됩니다.
FEATURE 07
비대칭 판정정면·후면·측면 각각의 측정 이미지와 각도가 나란히 놓이고, 항목마다 유지·경계·심각 구간이 게이지로 표시됩니다.
화면
측정 체험 진입 화면. 어깨 측정 시작 버튼 (세로)
촬영 안내. 화면을 가로 모드로 전환하도록 요청하는 단계 (세로)
리포트 유형 선택. 정규 보고서·ILS 보고서 중 하나를 고르는 단계 (가로)
참여자 정보 입력 1/6. 이름 입력과 개인정보 이용 안내, 6단계 진행 표시 (가로)
기기 연결. 밴드를 연결하고 운동을 시작하는 진입 화면 (가로)
리포트에 실을 대표 측정 이미지 선택. 후보 4장 그리드
기술 상세

기술

자세 추정 스택사람 검출과 자세 추정을 mmdetection·mmpose 조합으로 구성하고, 머리 방향이 필요한 목 동작을 위해 3D 얼굴 메쉬 경로를 붙여 한 번의 요청에서 어깨·정렬·목 각도가 모두 산출됩니다. 프레임별 각도는 시계열 필터로 이상치를 걷어낸 뒤 백분위수를 대표값으로 씁니다.
숫자는 코드가, 문장은 AI가섹션별 출력 형식을 도구 호출로 고정해 자유 텍스트 응답을 차단하고, 3중 검증을 통과하지 못하면 부분 리포트를 내보내지 않습니다. 운동 횟수·각도 등 수치는 서버가 직접 계산해 응답에 덮어씁니다.
번역을 생성에서 분리한 다국어한국어 리포트를 먼저 확정한 뒤 텍스트 필드만 영어·일본어로 번역해 재조립합니다. 언어 간 내용이 어긋날 구조를 만들지 않았습니다.
앱 내 온디바이스 추론경량 모델 3개(39.3MB)를 앱에 동봉하고 별도 스레드에서 돌려, 실시간 골격 표시 중에도 화면이 멈추지 않습니다.
프롬프트 실험 하네스프롬프트 수정 효과를 눈대중으로 판단하지 않도록, 고정 입력으로 전체 흐름을 재현해 버전 간 결과를 파일 단위로 비교하는 도구를 함께 만들었습니다.
규모분석기 재작성 534행, 프롬프트·스키마 9개 파일 1,387행(6개 섹션 42개 필드), 앱 Dart 39개 파일 6,372행 추가입니다.
FastAPIPython 3.11mmdetectionmmpose (HRNet-w48)FaceBoxes + TDDFAPyTorchOpenCVhampelOpenAI GPT-4o (structured output)FlutterGetXONNX RuntimeReactTypeScriptViteTanStack TableTailwindDocker (CUDA 11.8)S3 presigned URL

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

다이어트 관리 · 대화형 기록 앱

다톡이 · 대화로 남기는 AI 다이어트 기록과 3D 뜰

AI 기반 간편 다이어트 기록·분석 앱입니다. 식단·운동·체중을 검색과 선택 대신 AI 에이전트와의 대화로 남기면 28만 행 식품 데이터베이스로 영양소까지 분석되고, 그 기록이 3D 뜰의 성장으로 이어지는 게이미피케이션이 계속 남길 이유를 만듭니다.

SENTIF
다톡이 · 대화로 남기는 AI 다이어트 기록과 3D 뜰
AI 에이전트
대화 탭. 상단에 체중과 오늘 섭취·소모 칼로리, 아래로 초밥 사진 한 장이 항목별 칼로리와 총 632kcal·탄단지가 붙은 간식 기록으로 확정된 상태
클라이언트자체 서비스
업종헬스케어
규모자체 서비스
서비스AI 에이전트
시작 배경

기록을 그만두는 지점에서 시작했습니다

다이어트 앱의 기록은 대개 검색과 선택으로 이루어집니다. 음식을 검색하고 목록에서 고르고 양을 숫자로 넣는 동작이 한 끼마다 반복되며, 이 과정이 번거로워 기록이 끊기면 그 뒤의 분석도 함께 멈춥니다. 다이어트 앱이 실패하는 지점은 기능이 아니라 여기라고 봤습니다.

그래서 입력 방식을 화면이 아니라 대화로 잡았습니다. 사용자는 「아침에 토스트 먹고 저녁에 30분 뛰었고 몸무게 59.5kg」처럼 한 번에 말하면 되고, 나머지는 대화 에이전트가 알아서 나눠 기록합니다. iOS·Android 앱과 백엔드를 직접 만들어 운영하는 자체 서비스이며, 앱 내 구독 결제와 무료 사용량 제한을 갖춘 상용 구조입니다.

규모는 앱 화면 23개와 모달·오버레이 31종, Flutter 62,579행에 백엔드 46,397행, API 156개입니다. 대화는 노드 19개의 상태 그래프가 처리하고, 영양소는 28만 행 식품 데이터베이스에서 계산합니다.

주요 기능

주요 기능

FEATURE 01
사진과 한 마디로 끝나는 기록음식 사진을 보내면 항목별 칼로리와 탄단지가 붙어 저장되고, 「아침에 토스트 먹고 30분 뛰었고 59.5kg」처럼 식단·운동·체중이 섞인 한 문장도 각각의 기록으로 나뉘어 저장됩니다. 검색하고 고르고 숫자를 넣는 과정이 통째로 사라집니다.
FEATURE 02
운동 기록도 같은 대화에서러닝 앱 결과 화면을 캡처해 보내도 거리·시간을 읽어 운동 기록으로 남기고, 소모 칼로리가 계산됩니다.
FEATURE 03
기록이 없으면 먼저 말을 거는 앱어제 저녁 기록이 비어 있으면 다톡이가 먼저 말을 겁니다. 사용자가 이유를 말하면 그 맥락 위에서 다음 끼니를 제안합니다.
FEATURE 04
질문하면 근거를 갖고 답하는 대화「붕어빵이랑 계란빵 중에 뭐가 나아?」 같은 질문에 내 기록과 영양 데이터를 근거로 답하고, 결과는 비교표·차트 카드로 돌아옵니다.
FEATURE 05
기록이 자라는 3D 뜰기록 한 건마다 뜰의 가꿈온도가 오르고, 기록이 끊기면 식물이 시듭니다. 기록을 이어 갈 이유가 화면 안에 있습니다.
FEATURE 06
3일치 기록으로 만드는 분석 리포트칼로리 수지와 목표 도달 시점 예측, 식단 분석과 운동 처방을 담은 리포트가 나오고, 주간 요약은 정해진 시각에 자동 발송됩니다.
기술 상세

기술

노드 19개의 대화 에이전트LangGraph 상태 그래프가 발화에서 복수의 기록 의도를 뽑아 태스크 큐로 처리합니다. 되묻기 답변을 계속·수정·취소·주제전환 등 여섯 갈래로 분류해 대화가 막히지 않고, 상태를 DB에 저장해 앱을 껐다 켜도 이어집니다.
생성 호출을 걸러내는 영양소 계산28만 행 식품 DB를 임베딩으로 먼저 검색해 조건이 맞으면 모델을 호출하지 않고, 나머지만 배치로 묶습니다. 음식 다섯 개를 기록해도 생성 호출은 최대 1회입니다. 무료 사용자가 있는 소비자 앱의 원가 구조입니다.
3D 뜰Flutter WebView 안에서 three.js를 돌리고, 성장 단계별 3D 에셋을 서버가 골라 내려줍니다. 단계를 늘려도 앱을 다시 배포하지 않습니다.
호출 단위 비용 계측모든 생성 호출의 토큰·지연·추정 비용을 로그로 남기고, 같은 입력을 여러 모델에 돌려 보는 테스트베드를 함께 운영합니다. 모델 교체 판단 근거를 운영 중에 모읍니다.
구독과 사용량Apple·Google 영수증 서버 검증과 스토어 웹훅, 추천인 코드, 하루 30회 대화 제한을 갖춘 상용 구조입니다. 배경 작업은 Celery 태스크 19개와 주기 작업 7종이 처리합니다.
Flutter · DartWebView + three.js (GLTF · Draco · meshopt)FastAPISQLAlchemy (asyncio)PostgreSQL + pgvectorRedisCelery · Celery BeatLangGraphGoogle Gemini (생성 · 임베딩)Firebase Auth · FCMin_app_purchase (StoreKit · Play Billing)AWS RDS · S3Docker ComposeNginx

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

체성분 추정 · 운동 · 식단 관리 앱

FITA · 사진 한 장에서 시작하는 AI 피트니스 코치

사진 한 장으로 하는 AI 체성분 분석과 운동·식단 코칭 앱입니다. 체지방률·골격근량·기초대사량을 추정하고, 그 수치를 기준으로 목표 설정과 운동 기록·식단 기록·코칭 대화까지 한 앱에서 이어집니다.

SENTIF
FITA · 사진 한 장에서 시작하는 AI 피트니스 코치
앱·웹 개발
분석 결과 화면. 촬영 사진 위 분석 영역과 체중·체지방률·골격근량·FFMI 4개 지표, 지표마다 정상 범위 게이지
클라이언트자체 서비스
업종헬스케어
규모자체 서비스
서비스앱·웹 개발
시작 배경

측정을 기다리다 운동이 멈춥니다

체성분을 알려면 체성분 분석기가 있는 곳에 가야 합니다. 그래서 대부분의 사람은 몇 주에 한 번, 또는 아예 재지 않은 채로 운동합니다. 지금 몸이 어떤 상태인지 모르면 목표를 정할 근거도, 지난달과 비교할 기준선도 생기지 않습니다.

FITA는 그 측정을 스마트폰 카메라로 옮긴 앱입니다. 사진 한 장을 찍으면 자체 학습한 AI 모델이 체지방률을 추정하고 골격근량·FFMI·기초대사량·체형 분류·권장 칼로리를 함께 산출합니다. 여기서 나온 수치를 코칭 대화가 그대로 문맥으로 받아 목표와 루틴과 영양 계획을 만듭니다.

Flutter 앱, 메인 백엔드, 체성분 추론 전용 서버의 세 부분을 모두 직접 만들어 운영합니다. 앱 화면 32개, API 120개, 운동 데이터 2,978종에 영어·한국어 2개 언어를 지원하며, App Store에 출시되어 있습니다.

주요 기능

주요 기능

FEATURE 01
사진 한 장으로 나오는 체성분촬영 화면이 자세·거리 조건을 실시간으로 잡아 주고, 조건이 맞을 때 찍힌 사진에서 체지방률·골격근량·FFMI가 정상 범위 게이지와 함께 나옵니다. 결과는 직접 고칠 수 있고, 체성분 분석기 측정값을 입력하는 경로도 따로 있습니다.
FEATURE 02
내 수치를 전제로 하는 목표 설정코치가 최근 체성분을 먼저 요약해 보여 준 뒤 목적·기간·빈도를 묻고, 답을 받으면 실제 목표로 저장합니다. 막연한 다짐이 아니라 측정값에서 출발하는 목표입니다.
FEATURE 03
세트 단위 운동 기록운동 2,978종에서 고르면 직전 세션의 기록을 자동으로 불러오고, 세트마다 무게·반복을 넣으면 1RM이 계산됩니다. 세트 사이 휴식 타이머는 앱을 내려도 유지됩니다.
FEATURE 04
목표 칼로리에 맞추는 식단체성분에서 산출한 목표 칼로리와 탄단지 비율을 기준으로 그날 섭취량을 채워 갑니다. 자주 먹는 조합은 템플릿으로 저장합니다.
FEATURE 05
기록을 읽고 답하는 코치질문하면 저장된 체성분·운동·식단 기록을 모아 답하고, 체중 추이와 섭취량 그래프가 함께 붙습니다. 「6분할 말고 3분할로」 같은 수정 요청에도 이전 루틴을 유지한 채 일부만 바꿉니다.
FEATURE 06
주간 피드백과 진행 달력운동·식사·분석이 충분히 쌓인 주에만 피드백을 생성해 푸시로 보냅니다. 데이터가 없는 주에 억지 코멘트를 만들지 않습니다.
기술 상세

기술

자체 학습한 체지방률 추정 모델이미지와 BMI를 함께 입력받아 결합 비율을 샘플마다 스스로 정하는 2입력 회귀 모델입니다. 저체지방·고체지방 구간별로 따로 학습한 모델 2개를 앙상블해 양 끝 구간의 오차를 잡았습니다.
촬영 시점에 입력을 고정촬영 웹페이지가 브라우저 안에서 자세를 실시간 판정해, 조건이 맞지 않으면 셔터가 잠깁니다. 추론에 들어오는 사진의 프레이밍이 학습 데이터와 같게 유지됩니다.
모델에 넣기 전의 검증추론 앞단에서 사진을 정상·분석 중단·추정 제공의 세 갈래로 판정하고, 모델이 답할 수 있는 구간을 벗어나면 경고를 붙입니다. 무엇이 들어와도 숫자를 내는 회귀 모델의 위험을 앞단에서 막는 구조입니다.
수익화와 운영인앱 구독 2종, 양대 스토어 영수증 검증과 서버 알림 웹훅, 사용량 제한, 광고, 강제 업데이트와 운영용 관리 화면까지 상용 앱의 운영 구조를 갖췄습니다.
규모앱 화면 32개와 모달 13종, 백엔드 뷰 함수 194개에 API 120개, 운동 데이터 2,978종, 촬영 페이지 코드 3,839행입니다.
Flutter 3.7 · DartDjango 3.2 + DRFPostgreSQLuWSGITensorFlow 2.18 · Keras 3EfficientNetB5MediaPipe Pose (Python · JS)OpenCVscikit-learnGoogle GeminiFirebase (Auth · Messaging)FatSecret Platform APIStoreKit · Play BillingAdMobiOS Live Activities

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

유치원·어린이집 채용 · 양면 마켓플레이스

교집합 · 운영 중인 유치원 교사 양면 채용 플랫폼

담임·부담임·방과후를 하나의 공고 안에 자리 단위로 나눠 걸고, 교사는 자리에 지원합니다. 이력서 열람은 「지원 관계」로만 열려 기관이 자기 공고 지원자 외에는 개인정보에 접근할 수 없으며, 기록은 삭제 대신 상태 전이로 남깁니다.

SENTIF
교집합 · 운영 중인 유치원 교사 양면 채용 플랫폼
앱·웹 개발 · 약 2개월
공고 목록. 포지션 6종 필터와 지역 칩, 카드마다 마감일·기관·출퇴근 가능지역·모집 포지션 뱃지
클라이언트교집합
업종인사·채용
기간약 2개월
규모300만~1,000만원
서비스앱·웹 개발
의뢰 배경

일반 구인 사이트로는 유치원 채용이 담기지 않았습니다

교집합은 유치원·어린이집 교사 채용에 특화한 플랫폼을 만들려는 브랜드입니다. 유치원 한 곳이 새 학기에 뽑는 자리는 하나가 아닙니다. 만4세 담임 두 명, 부담임 겸 방과후 한 명, 급한 대체 한 명이 같은 시기에 필요하고, 근무시간도 급여 형태도 자리마다 다릅니다. 그런데 일반 구인 사이트는 공고 하나에 지원 하나를 전제하기 때문에, 자리 수만큼 공고를 올리거나 지원자를 뒤에서 사람이 나눠야 했습니다.

의뢰는 이 직군의 채용 방식이 그대로 담기는 플랫폼을 완제품으로 만들어 달라는 것이었습니다. 교사·기관·관리자 세 역할의 웹 애플리케이션 한 벌을 구축했고, 개발 완료 후 저장소와 데이터베이스를 클라이언트 계정으로 이관해 비개발자 운영자가 직접 운영할 수 있는 상태로 넘겼습니다. 현재 실 서비스로 운영 중입니다.

구조

포지션 단위 지원과 이력서 열람 권한 구조

포지션 단위 지원과 이력서 열람 권한 구조
JOB SEEKER교사
이력서를 한 번만 등록
INSTITUTION기관
공고 1건 안에 담임 · 부담임 · 방과후 등 포지션을 분리 게시
활성 공고 1건 · 등록 후 24시간 잠금
지원서는 공고가 아니라 포지션을 가리킵니다
포지션별 질문 응답
자리마다 급여 · 근무시간 · 자격요건 · 자체 질문이 따로
즉시 알림 발송
가입 · 지원 접수 · 지원 취소 시점에 알림톡. 발송 실패가 본 흐름을 막지 않음
열람 권한 게이트
자기 공고에 지원한 교사만 열람. 화면·서버·행 수준 보안 3중
채용 진행 관리
검토중 · 면접요청 · 합격 · 불합격 상태 관리. 삭제 대신 상태 전이로 이력 보존
주요 기능

주요 기능

FEATURE 01
자리 단위로 걸고, 자리 단위로 지원한 공고에 담임·부담임·방과후 등 자리를 최대 4종까지 나눠 걸고, 교사는 자리를 골라 지원합니다. 같은 시기에 여러 자리를 뽑아도 지원자가 자리별로 나뉘어 집계됩니다.
FEATURE 02
지원한 관계에만 열리는 이력서기관은 자기 공고에 지원한 교사의 이력서만 볼 수 있습니다. 사진·연락처가 담긴 이력서가 기관이라는 이유만으로 열리지 않고, 승인 절차 없이도 채용 속도가 유지됩니다.
FEATURE 03
한 번 쓰는 이력서교사는 이력서를 한 번만 작성하면 지원할 때마다 자동으로 첨부됩니다. 기관은 열람 화면에서 PDF로 내려받거나 그대로 인쇄합니다.
FEATURE 04
받은 지원서의 상태 관리기관은 지원서를 검토중·면접요청·합격·불합격으로 옮기고, 열어 본 건에는 확인 표시가 남습니다. 지원 취소 건도 기록으로 남아 이력이 사라지지 않습니다.
FEATURE 05
알림톡으로 오는 접수 소식교사 가입, 지원 접수, 지원 취소 시점에 카카오 알림톡이 나갑니다. 기관 담당자는 사이트를 열지 않아도 누가 어느 자리에 지원했는지 압니다.
FEATURE 06
운영자 콘솔회원·공고·지원 현황을 대시보드로 보고, 공고 숨김·복구와 회원 관리를 처리합니다. 비개발자 운영자용 11장 매뉴얼과 함께 넘겼습니다.
기술 상세

기술

세 계층에서 겹쳐 확인하는 열람 권한이력서 열람을 별도 권한 테이블이나 결제가 아니라 「우리 공고에 지원했는가」라는 관계로 판정하고, 화면·서버·데이터베이스 행 세 계층에서 같은 조건을 각각 확인합니다. 주소를 직접 쳐도 남의 이력서가 열리지 않습니다.
삭제 대신 상태 전이공고 삭제·지원 취소·재지원을 행 삭제가 아니라 상태 변경으로 처리해, 기관이 이미 받은 이력서가 사라지지 않습니다. 회원 탈퇴만은 완전 삭제합니다.
SDK 없이 구현한 알림톡 계층서명 헤더를 직접 만들어 REST를 호출하고, 발송 실패가 지원·가입 흐름을 막지 않도록 모든 시도를 이력으로만 남깁니다.
클라이언트 이관을 전제한 패키징DB 이관 SQL 5종과 스토리지 복사 스크립트, 배포 환경변수 목록을 별도로 묶어 개발사 계정에서 클라이언트 계정으로 통째로 옮겼습니다.
규모제품 화면 17종, DB 테이블 10개와 함수 10개, 마이그레이션 15벌, TypeScript 8,845행입니다.
Next.js 16 App RouterReact 19TypeScriptSupabase (Postgres · Auth · Storage · RLS · RPC)Tailwind CSS v4Solapi 알림톡 REST v4jsPDF · html2canvasVercel

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

펀드관리 시스템 · 레거시 모듈 재설계

펀드관리 시스템 개편 기획 · 레거시 역분석과 자체 협업툴

오래 운영된 PHP 펀드관리 시스템의 핵심 모듈을 코드에서부터 역분석하고, 개편안을 문서가 아니라 지금 쓰는 화면과 같은 모양의 클릭되는 프로토타입으로 만들어 검토했습니다. 그 검토를 위해 As-Is 정리·요구사항 작성·프로토타입 검토를 한 트리에서 처리하는 협업툴을 직접 만들어 발주자와 같은 화면을 보며 진행했습니다.

SENTIF
펀드관리 시스템 개편 기획 · 레거시 역분석과 자체 협업툴
기획·설계 · 약 1개월
개편안 메인 화면. 레거시 시스템과 같은 모양으로 렌더되는 클릭형 프로토타입
클라이언트미라파트너스
업종금융
기간약 1개월
규모300만원 이하
서비스기획·설계
의뢰 배경

AI 전환을 하고 싶은데, 지금 시스템부터 읽히지 않았습니다

미라파트너스는 자체 펀드관리 시스템 「미라판」을 오래 운영해 온 회사입니다. 시스템의 AI 전환을 검토하고 있었는데, 전환 이전에 현재 시스템이 정확히 어떻게 동작하는지 분석하는 것부터 막혀 있었습니다. PHP로 오래 운영되며 기능이 계속 얹힌 레거시라, 기준 하나를 바꾸면 어디까지 함께 움직이는지 전체를 아는 사람이 없는 상태였습니다.

문서로 개편안을 주고받는 방식도 원하지 않았습니다. 원하는 것을 실제 화면으로 그려 가며 눈으로 확인하면서 기획하고 싶다는 요구였습니다. 그래서 이 용역은 가장 얽혀 있는 모듈 하나를 골라 코드에서부터 역분석하고, 개편안을 지금 쓰는 화면과 같은 모양의 클릭되는 프로토타입으로 만들어 검토하고, 후속 개발팀이 그대로 구현할 수 있는 설계로 정리해 넘기는 일이 됐습니다.

계약 산출물은 요구사항 정의서 · DB 설계안 · API 명세서 · 프론트엔드 소스 4종이며, 후속 백엔드 구현은 발주자가 지정한 팀이 맡습니다.

주요 기능

산출물

FEATURE 01
코드에서 거슬러 올라간 현행 분석레거시를 화면이 아니라 코드에서부터 되짚어, 2개 도메인 22개 테이블 322개 컬럼의 ERD와 처리 흐름 5단계를 그렸습니다. 컬럼마다 어느 경로에서 값이 들어오고 갱신되는지까지 표시해, 발주처가 처음으로 자기 시스템의 전체 그림을 갖게 됐습니다.
FEATURE 02
지금 쓰는 화면이 바뀐 모습으로 보이는 프로토타입개편안을 새 디자인으로 그리면 검토자가 무엇이 달라졌는지 판단하기 어렵습니다. 레거시 시스템과 같은 색·버튼·표 모양으로 렌더되는 프로토타입을 만들어, 검토자는 「지금 쓰는 화면이 바뀐 모습」을 직접 클릭해 봅니다. 동작하는 인터랙션 25건, 등록 화면 21개입니다.
FEATURE 03
레거시 화면 위에 영역을 그려 현행을 정리이 용역을 수행할 도구를 앞단에서 직접 만들었습니다. 레거시 화면 이미지 위에 영역을 박스로 그리고 그 영역이 지금 무엇을 하는지를 동작 단위로 붙입니다. 정리된 동작은 그대로 개편 요구사항으로 승격되고, 화면 옆 패널에서 어느 영역이 어느 요구사항과 이어지는지 함께 보입니다.
FEATURE 04
요구사항을 구조화된 블록으로요구사항을 문단이 아니라 UI 스펙·밸리데이션·필수 규칙·연동 API 블록으로 나눠 씁니다. 건마다 유형과 상태 배지가 붙어 무엇이 승인됐고 무엇이 검토 중인지 목록에서 바로 갈리며, 각 건 아래에 댓글이 달려 논의가 그 요구사항에 남습니다.
FEATURE 05
화면 흐름을 같은 트리에서화면과 화면 사이의 이동을 흐름도로 그려 분기와 반복을 표시합니다. 요구사항·동작·프로토타입이 같은 프로젝트 트리 아래에 있어 발주자와 저희가 같은 화면을 보며 논의하므로 「그 표 말씀이신가요」에서 시작하는 왕복이 사라집니다.
FEATURE 06
요구사항 12건의 4단 정리요구사항마다 「지금 사용자가 겪는 것 · 관련 코드 현황 · 이렇게 바뀝니다 · 사용 시나리오」 4단으로 기술했습니다. 각 건에 대해 프로토타입이 무엇을 반영했고 무엇이 범위 밖인지 대조표로 남겨, 읽고 나서 다시 물어볼 것이 남지 않게 했습니다.
FEATURE 07
개발사가 그대로 집어 드는 핸드오프화면 Before/After, 데이터 모델, 워크플로우, 요구사항별 코드 매핑, 작업 분할 5트랙, 시작 전에 발주자가 결정해야 할 사항 9건까지 한 문서에 담았습니다. 신규 테이블은 컬럼 단위까지 정의해 후속 팀이 해석할 여지를 남기지 않았습니다.
기술 상세

기술

레거시 CSS를 한 스코프로 감싸 다시 빌드레거시 시스템의 CSS 10개 파일을 PostCSS로 읽어 선택자 전체를 단일 스코프 아래로 감싸 재빌드했습니다. 프로토타입이 검토 도구의 UI와 충돌하지 않으면서 원본 시스템과 같은 모양으로 렌더링됩니다.
이력이 남는 데이터 모델 설계확정된 과거 기록이 이후 기준 변경에 영향받지 않도록, 덮어쓰기 구조를 버전 누적 구조로 바꾸는 설계를 신규 테이블 4개의 컬럼 단위까지 정의했습니다. 기존 테이블과 연동 코드는 건드리지 않고 성립하는 매핑입니다.
검토 협업 도구한 화면에 일반·스펙·피드백 3모드를 겹쳐 동작 확인과 스펙 작성과 의견 남기기가 같은 자리에서 이뤄집니다. 납품물이 아니라 납품물을 만들기 위해 지은 도구로, TypeScript 12,835행 · 페이지 17개 규모입니다.
규모역분석 ERD 22개 테이블 322개 컬럼, 프로토타입 HTML 9개 파일 14,519행, 핸드오프 문서 Markdown 3건 1,219행 · HTML 2건 2,939행입니다.
Next.js 16 App RouterReact 19TypeScriptTailwind CSS v4Supabase (Postgres · Auth · Realtime · RLS)TanStack QueryZustandReact FlowPostCSS 기반 레거시 CSS 스코핑Vercel

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

지역 문화 브랜드 · 감성 큐레이션 서비스

참새책방 · AI 마음 상담과 도서 큐레이션

AI(LLM) 기반 마음 상담과 도서·꾸러미 큐레이션입니다. 챗봇이 손님의 이야기를 듣고 감정을 읽어 도서 3권 또는 지역 오감 꾸러미를 「마음 처방전」 한 장으로 골라 주고, 주문까지 이어집니다.

SENTIF
참새책방 · AI 마음 상담과 도서 큐레이션
AI 에이전트 · 약 1개월
마음 처방전. 대화에서 뽑은 한 줄, 읽어낸 감정 칩 4종과 분포 막대, 추천 근거 문장, 주추천 꾸러미와 함께 어울리는 꾸러미 2건
클라이언트참새책방
업종문화·리테일
기간약 1개월
규모300만~1,000만원
서비스AI 에이전트
의뢰 배경

팔 것은 있는데, 골라 주는 방법이 없었습니다

참새책방은 지역의 자원(로컬 향, 청년 연주팀, 책방)을 묶어 파는 지역 문화 브랜드입니다. 어려운 것은 상품이 아니라 고르는 방법이었습니다. 손님은 무엇이 자기에게 맞는지 모르고, 판매자는 온라인에서 취향을 물어볼 자리가 없습니다.

그래서 상품 목록을 먼저 보여 주는 대신 마음을 먼저 묻는 판매 흐름을 만들었습니다. 챗봇이 7단계에 걸쳐 손님의 상태를 듣고, 대화를 12종 감정 분포로 정리한 뒤, 그 수치로 도서와 꾸러미를 고릅니다. 결과는 상품 목록이 아니라 「마음 처방전」 한 장으로 나옵니다.

주문은 웹에서 접수하고 수령은 책방에서 이어지며, 주문 시 발급되는 QR이 오프라인의 처방 요약과 연동 콘텐츠로 연결됩니다. 결제 연동이 빠진 것이 아니라 오프라인 공간을 전제로 설계한 흐름입니다.

주요 기능

주요 기능

FEATURE 01
7단계 마음 상담챗봇이 손님의 상태를 단계적으로 듣습니다. 답이 막히는 손님을 위해 질문에 맞는 예시 답변 칩이 함께 제시되고, 본인용과 선물용 두 갈래 상담이 준비되어 있습니다.
FEATURE 02
감정 분석 기반 도서·꾸러미 추천대화를 12종 감정 분포로 분석해 도서 3권 또는 지역 오감 꾸러미를 추천합니다. 꾸러미마다 감정 가중치가 정의되어 있어 운영자가 추천 성향을 직접 조정합니다.
FEATURE 03
마음 처방전 발급읽어낸 감정 칩과 분포, 추천 근거 문장, 주추천과 어울리는 꾸러미가 처방전 한 장에 담깁니다. 왜 이 추천인지가 손님에게 그대로 보입니다.
FEATURE 04
가입 없는 주문과 QR 연동회원 가입 없이 이름과 전화 뒷자리로 주문하고, 주문 완료 시 QR이 발급됩니다. 책방에서 QR을 열면 그 손님의 처방 요약과 연동 콘텐츠가 나옵니다.
FEATURE 05
운영자 화면진단 수·주문·트랙 비율을 보는 대시보드, 주문 상태 관리, 꾸러미·감정 가중치 편집, 지역 자원을 오감별로 등록하는 화면으로 구성됩니다.
FEATURE 06
지역 자원 관리꾸러미를 채우는 지역 콘텐츠를 시각·청각·후각·촉각·마음 다섯 감각으로 나눠 등록합니다. 청각 항목은 주문 QR로 접속하면 그 처방에 맞는 소리 콘텐츠로 열립니다.
기술 상세

기술

고르는 일은 계산으로, 말하는 일만 모델로모델에게는 감정 분포만 읽게 하고 상품 선택은 가중치 계산이 합니다. 추천이 흔들리지 않고, 근거가 남고, 운영자가 조정할 수 있는 구조입니다.
감정 정의의 단일 출처감정 12종의 목록·색상·동의어 환산을 한 파일로 고정해, 화면의 감정 칩과 분포 막대가 어긋나지 않습니다. 분석이 12종 밖의 라벨을 내면 버리고 재계산합니다.
실재 도서 검증도서는 검색으로 후보를 받아 책검색 API로 실재를 확인한 뒤에만 표지·저자와 함께 노출합니다. 어느 경로에서도 존재하지 않는 책이 추천되지 않습니다.
모델이 실패해도 끝까지 가는 상담모델 호출이 실패하면 정적 시나리오 트리로 전환해 7단계를 그대로 마칩니다. 손님이 처음부터 다시 하는 일이 없습니다.
한 턴을 세 번의 호출로 분리다음 단계 판단, 메시지 생성, 예시 답변 생성을 분리해 각각 맞는 모델에 배분합니다. 예시 답변이 방금 나간 질문과 어긋나지 않습니다.
규모화면 15개, API 라우트 14개, 소스 15,918행, 상담 7단계 · 감정 12종 · 프롬프트 3파일 542행입니다.
Next.js 16 App RouterReact 19TypeScriptSupabase (Postgres · Auth · RLS)Google Gemini카카오 책검색 APIzodrechartsqrcode.reactVercel

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

미디어 렙 · 브랜드 사이트 · 문의 인테이크

3개 국어로 열리는 브랜드 사이트와 문의 관리 백오피스

해외 기업·정부기관을 상대하는 미디어 렙사의 원페이지 브랜드 사이트를 영어·한국어·중국어 3개 국어로 만들고, 사이트로 들어온 문의를 상태와 메모로 처리하는 관리자 화면까지 한 벌로 납품했습니다.

SENTIF
3개 국어로 열리는 브랜드 사이트와 문의 관리 백오피스
앱·웹 개발 · 약 1개월
서비스 섹션. 미디어 전략·컨설팅, 미디어 집행, 글로벌 에이전시 제휴, 정부·공공 2×2 카드
클라이언트미디어 대행사
업종광고·미디어
기간약 1개월
규모300만원 이하
서비스앱·웹 개발
의뢰 배경

해외 담당자가 처음 만나는 접점이 사이트 하나였습니다

이 회사는 해외 기업·정부기관·글로벌 에이전시를 대상으로 한국 미디어 집행을 대행하는 렙사입니다. 상대가 국내에 없으니 사이트가 회사를 만나는 첫 접점이자, 대부분의 경우 유일한 접점입니다. 회사를 소개하는 문서가 아니라 해외에서 처음 찾아온 담당자가 문의를 남기고 가는 입구가 필요했습니다.

그래서 8개 섹션의 원페이지에 영어·한국어·중국어 간체를 헤더에서 즉시 전환하도록 만들고, 문의는 자유 서술 대신 캠페인 유형·기간·예산·목표를 선택지로 받아 도착하는 순간 이미 분류가 끝난 상태가 되게 했습니다. 그 문의를 처리할 관리자 화면과 API 서버까지 한 벌로 납품했습니다.

주요 기능

주요 기능

FEATURE 01
헤더에서 바로 바뀌는 3개 국어영어·한국어·중국어 간체를 페이지 이동 없이 전환합니다. 본문뿐 아니라 메뉴·FAQ·문의 폼 선택지까지 세 언어로 정의되어, 중국어로 읽은 방문자도 같은 항목을 남깁니다.
FEATURE 02
받는 순간 분류가 끝나는 문의 폼캠페인 유형·기간·예산 구간·목표를 선택지로 받습니다. 담당자가 규모와 예산을 되묻는 왕복 없이 첫 회신부터 본론으로 들어갑니다.
FEATURE 03
접수부터 종결까지 남는 백오피스신규·처리중·완료 건수를 타일로 보고, 문의를 열어 상태를 바꾸고 메모를 남깁니다. 담당자가 바뀌어도 이력이 남습니다.
FEATURE 04
업무 프로세스 5단계대행 절차를 단계 타임라인으로 보여 줘, 처음 문의하는 해외 담당자가 어느 시점에 무엇을 결정하는지 먼저 확인합니다.
FEATURE 05
정부·공공 별도 섹션검토 기준이 다른 정책 커뮤니케이션·국제협력 캠페인을 별도 블록으로 분리해 배치했습니다.
FEATURE 06
스크롤 인터랙션 연출섹션 진입 리빌, 카드 순차 등장, 숫자 카운트업 등 스크롤 연출 약 25개를 섹션마다 조정해 붙였습니다.
기술 상세

기술

라이브러리 없는 3개 국어 콘텐츠 모델번역 키 파일을 분리하지 않고 콘텐츠 정의의 텍스트 필드마다 3중 객체를 두었습니다. 번역 필드 71쌍이 문안과 같은 자리에 있어 섹션 하나를 고칠 때 세 언어를 한 화면에서 수정합니다.
스크롤과 애니메이션의 프레임 동기화관성 스크롤과 스크롤 트리거를 같은 프레임 루프에서 돌게 맞춰, 위치 어긋남 없이 패럴랙스와 리빌 연출을 얹었습니다.
파일 한 개로 운영하는 백엔드데이터베이스 서버 없이 JSON 파일 저장소로 운영해 운영 부담을 최소로 잡았습니다. 저장소를 별도 모듈로 분리해 두어 규모가 커지면 데이터베이스로 교체할 수 있습니다.
규모백엔드 4파일 2,127행, 문의 API 17개(공개 7 · 인증 10), 번역 필드 71쌍, 스크롤 트리거 약 25개입니다.
React 19TypeScript 5.9Vite 7Tailwind CSS 3.4GSAP 3 + ScrollTriggerLenisRadix UINode.js · Express 4JWT · bcryptJSON 파일 저장소

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

차량용품 유통 · 주문 접수 자동화

카카오톡으로 받는 주문을 장부와 증빙으로 바꾸는 자동화

담당자가 평소 쓰던 카카오톡 대화방에 주문 내용을 올리면, 서버의 AI가 항목을 정리해 구글 스프레드시트에 적재하고, 그 데이터에서 송장 일괄 생성과 홈택스 업로드용 세금계산서 출력까지 이어집니다.

SENTIF
카카오톡 주문 자동화
업무 자동화 · 약 1개월
클라이언트차량용품 유통사
업종유통·물류
기간약 1개월
규모300만원 이하
서비스업무 자동화
의뢰 배경

주문은 늘었는데, 처리는 전부 손이었습니다

차량용품을 유통하는 이 회사의 주문은 거래처와의 카카오톡 대화방으로 들어옵니다. 담당자는 대화방의 주문을 읽어 스프레드시트에 옮겨 적고, 그 시트를 보며 택배 송장을 등록하고, 세금계산서를 따로 작성했습니다. 같은 정보가 사람 손을 세 번 거치는 구조라, 주문이 늘수록 입력에 걸리는 시간과 옮겨 적는 착오가 함께 늘고 있었습니다.

의뢰의 조건은 하나였습니다. 담당자가 새 프로그램을 배우게 하지 말 것. 그래서 화면을 만들지 않고 이미 쓰고 있는 카카오톡 대화방 자체를 입력 창구로 삼았습니다. 대화방과 서버를 연결해, 주문이 도착하는 순간부터 송장·계산서가 나오는 순간까지를 한 흐름으로 묶었습니다.

구조

메시지가 장부와 증빙에 닿기까지

카카오톡 주문이 장부와 증빙이 되기까지
STEP 01주문 메시지 수신담당자가 쓰던 대화방의 주문 텍스트가 서버로 전달
STEP 02AI 항목 정리수취인·연락처·주소·품목·수량을 열 구조에 맞게 정리
STEP 03스프레드시트 적재건별 행으로 기록, 처리 결과는 대화방 답장으로 회신
STEP 04송장·계산서 출력다량 건 송장 일괄 생성, 홈택스 업로드용 세금계산서 엑셀
주요 기능

주요 기능

FEATURE 01
카카오톡이 곧 입력 화면담당자는 받은 주문을 쓰던 대화방에 그대로 올립니다. 서버의 AI가 수취인·연락처·주소·품목·수량을 읽어 스프레드시트의 알맞은 열에 넣습니다. 입력 형식을 외울 필요가 없습니다.
FEATURE 02
답장으로 끝나는 확인저장이 끝나면 종류와 건수가 담긴 답장이 같은 대화방에 바로 올라옵니다. 접수 여부를 확인하러 스프레드시트를 열지 않습니다.
FEATURE 03
여러 건을 한 번에주문 여러 건을 한 메시지로 보내도 건별로 나뉘어 각각의 행으로 적재되고, 저장 날짜는 시스템이 자동으로 붙입니다.
FEATURE 04
송장 일괄 생성시트에 쌓인 주문에서 다량 건 송장을 한 번에 만듭니다. 택배 접수를 위해 건별로 다시 입력하지 않습니다.
FEATURE 05
홈택스 업로드용 세금계산서주문 데이터에서 세금계산서 엑셀을 만들어 홈택스에 그대로 올립니다. 계산서 발행이 별도의 작성 작업으로 남지 않습니다.
기술 상세

기술

카카오톡-서버 연동지정한 대화방의 메시지를 서버로 전달하고 처리 결과를 같은 방에 답장으로 돌려주는 왕복 경로를 구성했습니다.
AI 항목 정리정해진 양식이 없는 주문 문장에서 항목을 추출해 스프레드시트 열 구조에 맞춥니다. 사람이 읽고 분류하던 판단 구간을 AI가 대신합니다.
증빙 문서 생성적재된 주문 데이터에서 송장 다량 건을 일괄 생성하고, 홈택스 업로드 서식의 세금계산서 엑셀을 출력합니다.
카카오톡 연동PythonopenpyxlGoogle Sheets

비슷한 과제를 검토하고 계신가요

요구사항이 정리되지 않은 단계에서도 괜찮습니다. 무엇을 자동화할 수 있고 무엇이 어려운지부터 함께 정리합니다.

CONTACT

무엇을 만들지 모르셔도 됩니다

외주 개발 문의

영업일 기준 1일 이내에 회신드립니다.

SENTIF AI STUDIO
We Build Everything AI

사업자등록번호 599-77-00588 · 설립 2024.07.01
서울시 송파구 올림픽로 336, 대우유토피아 4층 C08호
info@sentif.ai
개인정보처리방침 · © 2026 SENTIF