이번 달 지출 흐름을 참고용으로 정리했어요.
“영수증은 버려지지만,
기록은 남아야 하니까.”
반려동물이 아파 병원에 다녀오면, 영수증은 쉽게 버려지지만 기록은 오래 필요합니다.
PetLog는 복잡한 동물병원 영수증을 보호자가 이해하기 쉬운 지출 기록으로 정리하고, 병원 안내를 받은 복약·재진·회복 체크 내용을 함께 기록할 수 있도록 돕습니다.
PetLog는 진단이나 처방을 제공하는 서비스가 아닙니다. 의료 판단을 대신하는 AI가 아니라, 보호자가 병원비와 지출 기록을 더 쉽게 이해하도록 돕는 기록 도구입니다.
PetLog는 반려동물 병원비를 단순히 기록하는 것을 넘어, 보호자가 이해하기 어려웠던 영수증을 정리 가능한 데이터로 바꾸는 데 집중합니다.
진료비, 검사비, 처치비, 약제비처럼 항목은 많지만 보호자가 한눈에 이해하기 어려운 경우가 많습니다.
진료 후 복약, 재진, 회복 체크 안내를 들었지만 시간이 지나면 놓치기 쉽습니다.
여러 마리를 키우는 경우 어떤 아이에게 어떤 비용이 발생했는지 따로 관리하기 어렵습니다.
단순 금액 기록만으로는 이번 달 지출 흐름이나 병원비 비중을 파악하기 어렵습니다.
“PetLog는 이 문제를 AI 초안 정리, 보호자 확인, 반려동물별 기록 저장 흐름으로 해결합니다.”
PetLog 프로젝트의 기획부터 화면 설계, DB 구조 설계, AI 연동 및 프론트엔드/백엔드 전체 기여도
보호자의 진료 여정을 분석하여 AI 초안 자동 정리 → 자체 검증 엔진 → 사용자 최종 검토 → 확정 저장으로 이어지는 Human-in-the-loop 데이터 동선을 기획하고 설계했습니다.
모바일 PWA 환경에 맞춰 영수증 촬영/업로드 유도 화면, 직관적인 항목 검증/수정용 모달 인터페이스, 그리고 시인성 높은 월간 지출 보고서 대시보드를 디자인했습니다.
React 19 및 TypeScript를 적용하여 가계부 장부 리스트, 영수증 텍스트 스캔 및 실시간 인터랙션 레이어, 모바일 PWA 환경 구성을 직접 전담하여 구현했습니다.
Google Gemini API를 연동하여 이미지 내의 병원비 데이터를 구조화된 JSON 형태로 가공하고, 프롬프트 엔지니어링을 통해 비정상 텍스트 파싱 오류를 최소화하도록 설계했습니다.
Firebase Firestore NoSQL 스키마를 최적화해 다견/다묘 보호자가 각 반려동물별로 지출 데이터와 일정을 분리하여 관리할 수 있도록 독립 서브 컬렉션을 구축했습니다.
Vercel 클라우드 서비스를 활용하여 프론트엔드 정적 빌드 배포를 셋업하고, 실시간 실데이터 흐름 및 Firebase 연동 정상 동작 여부를 직접 전담하여 검증했습니다.
PetLog의 핵심 사용자는 병원비를 기록하고 싶지만, 영수증과 케어 내용을 따로 관리하기 어려웠던 보호자입니다.
숫자로만 남는 지출을 보호자가 이해할 수 있는 기록으로 바꿉니다.
PetLog는 AI 분석 결과를 바로 저장하지 않습니다.
검증과 보호자 확인을 거친 데이터만 기록으로 남깁니다.
영수증 정보를 초안으로 추출합니다.
금액, 세금, 할인, 카테고리를 검증합니다.
보호자가 직접 확인하고 수정합니다.
확정된 데이터만 안전하게 저장합니다.
항목 합계와 최종 결제금액을 비교합니다.
부가세와 할인 정보를 구분해 오분류를 줄입니다.
AI 결과는 참고용이며, 최종 기록은 사용자가 확정합니다.
PetLog는 테스트 영수증을 기반으로 금액, 세금, 할인, 저장 흐름을 반복 검증하며 데이터 신뢰도를 높였습니다.
분석 결과와 저장 데이터가 어긋날 수 있음
사용자 확인 후 확정 데이터만 저장
부가세와 할인이 혼동될 수 있음
taxInfo와 discountInfo를 분리
AI 분석 실패 시 흐름이 중단될 수 있음
Fallback과 수기 입력 흐름 제공
“AI 결과를 그대로 믿는 구조가 아니라, 테스트와 검증을 통해 보호자가 확인 가능한 기록으로 바꿨습니다.”
AI 초안은 저장 전 검증 엔진을 거칩니다. 검증 엔진은 금액 정규화, 세금/할인 분리, 카테고리 보정, 오인 방지 필터링을 수행한 뒤 사용자 확인이 필요한 `draft` 상태로 반환합니다.
function validateReceiptDraft(aiDraft) {
// 1. 금액 정규화 및 총액 검증
const normalizedAmount = normalizeAmount(aiDraft.amount);
// 2. 세금 정보 교차 체크 (과세/면세/부가세 합계 확인)
const taxChecked = validateTaxInfo({
taxableAmount: aiDraft.taxableAmount,
taxFreeAmount: aiDraft.taxFreeAmount,
vat: aiDraft.vat,
finalAmount: normalizedAmount,
});
// 3. 할인 금액 및 텍스트 분석 결과 검토
const discountChecked = validateDiscountInfo({
discountText: aiDraft.discountText,
finalAmount: normalizedAmount,
});
// 4. 진단/처방 오인 방지 키워드 필터링 (Safety Guard)
const safeInsight = filterDiagnosticTerms(aiDraft.insight);
return {
...aiDraft,
amount: normalizedAmount,
taxInfo: taxChecked,
discountInfo: discountChecked,
insight: safeInsight,
requiresUserConfirmation: true,
status: "draft",
};
}
React 기반 화면 위에 Firebase와 Gemini API를 연결하고, 보호자 확인 흐름을 더해 실제 사용 가능한 기록 구조를 만들었습니다.
사용자가 확인하고 수정하는 인터페이스를 제어합니다.
영수증 이미지에서 항목과 금액 초안을 자동으로 추출합니다.
추출된 항목의 총액, 세금, 할인, 카테고리를 검증합니다.
사용자별 기록, 인증 상태, 영수증 이미지 저장소를 관리합니다.
기획 정리, 오류 분석, 코드 개선, 테스트 점검 과정에서 AI 도구를 활용했지만, 최종 판단과 구조 결정은 직접 수행했습니다.
ChatGPT로 문제 정의, 화면 흐름, 발표 문구 정리
Antigravity로 코드 수정, 컴포넌트 정리, 오류 개선
실제 테스트 결과를 기준으로 직접 수정 방향 결정
AI가 제안하고, 개발자가 검토하며, 실제 테스트로 확정했습니다.
PetLog의 AI는 영수증과 지출 기록을 정리하는 보조 도구입니다. 진단이나 처방이 아닌, 보호자가 확인할 수 있는 초안을 만드는 데 집중합니다.
병원명, 날짜, 항목, 금액을 읽어 초안을 만듭니다.
진료, 검사, 약제, 처치 등 보호자가 이해하기 쉬운 카테고리로 분류합니다.
복약, 재진, 회복 체크처럼 기록해둘 수 있는 항목을 후보로 보여줍니다.
PetLog는 AI가 의학적 판단을 하지 않도록 역할, 분석 대상, 출력 형식, 금지 조건을 프롬프트에 명확히 설정했습니다.
보호자가 이해하기 쉬운 지출 기록 초안을 만드는 역할
영수증 이미지의 병원명, 날짜, 항목, 금액 중심 분석
JSON 형태로 구조화해 화면과 검증 로직에 연결
진단, 처방, 치료 판단 문구 생성 금지
“동물병원 영수증 이미지를 분석해 주세요.
목표는 진단이나 처방이 아니라, 보호자가 확인할 수 있는 지출 기록 초안을 만드는 것입니다.
다음 정보를 추출해 주세요:
- 병원명
- 결제일
- 총 결제금액
- 항목명
- 항목별 금액
- 지출 카테고리
주의:
- 질병을 예측하지 마세요.
- 치료 필요 여부를 판단하지 마세요.
- 처방이나 복약 지시를 생성하지 마세요.
- 결과는 보호자가 확인해야 하는 참고용 초안입니다.”
영수증을 촬영하면 항목과 금액을 초안으로 정리합니다.
아이별로 병원비와 생활 지출을 나누어 관리할 수 있습니다.
매달 우리 아이를 위해 어디에 지출했는지 한눈에 보여드려요.
영수증은 복잡해도,
기록은 쉬워야 하니까.
* AI 분석은 참고용이며 진단·처방을 제공하지 않습니다.
"병원 갔다 오면 영수증 어디다 뒀는지 맨날 까먹었는데, 이제 찍으면 바로 정리되니까 너무 편해요."