차장님 — AI 중고차 검색·시세 진단
말로 찾고, 가격은 AI가 따져 줍니다.
- 역할
- 1인 개발 — 기획부터 배포·운영까지
- 기간
- 2026.06 – 2026.09 (3개월)
- 범위
- 웹 · 모바일 앱 · AI 백엔드 · DB
- 기술
- Next.js · Flutter · FastAPI + LangGraph · Supabase(PostgreSQL · pgvector) · Gemini · TabPFN

문제와 접근
기존 중고차 검색은 필터 12칸을 하나씩 채워야 시작됩니다. 제조사부터 신뢰정보까지 조건을 직접 골라야 하는 방식 대신, 원하는 조건을 말하듯 적으면 그 문장이 곧 검색 조건이 되게 했습니다.
문장은 AI가 해석하고, 결정은 코드가 합니다.
자연어 검색과 대화
매물검색 · 구매가이드 · 시세진단 · 매물비교, 네 가지 기능 중 필요한 것을 질문에서 스스로 고르고 실행한 뒤 답변 카드로 보여줍니다. "그중 두 번째 거 시세 봐줘"처럼 이어 묻는 멀티턴 대화도 검증 15건 모두 통과했습니다. 범위 밖 질문에는 모른다고 답하도록 만들었고, 검증 100건 중 예외는 1건이었습니다.
AI 시세 진단
적정가 구간은 예측 분포의 25~75% 구간으로 보여주고, 비슷한 조건의 실제 매물 등록가를 점으로 함께 표시해 근거를 눈으로 확인할 수 있게 했습니다. 이 매물은 적정가 대비 6% 높아 "다소 높음"으로 판정되는 식입니다. 비슷한 차가 3대 미만이면 판정을 보류합니다.

AI 기능을 어떻게 만들고 검증했나
시세 진단은 실매물 955대의 가격을 가리고 맞혀 보는 방식으로 검증했습니다.
| 방법 | 오차 중앙값 |
|---|---|
| TabPFN(적용) | 6.8% |
| 세대별 회귀식 | 7.3% |
| 비슷한 차 중앙값 | 8.0% |
오차 10% 이내로 맞힌 비율은 69%, 20% 이내는 93.5%였습니다.
챗봇 답변은 100건을 사람과 AI 판정기가 같은 기준으로 나란히 채점했습니다. 판정기-사람 일치율은 v2 72%에서 v3 97%로 올랐고, 이 과정에서 채점 기준(루브릭)을 4차례 고쳤습니다. 같은 100건, 같은 기준으로 다시 측정했을 때 "좋음" 판정은 62건에서 93건으로 늘었습니다.
구조
웹 · 앱 · API · DB · AI로 나눠 만들었습니다.
- 웹: Next.js
- 앱: Flutter
- API: FastAPI + LangGraph
- DB: Supabase(PostgreSQL + pgvector)
- AI: Gemini · TabPFN · 리랭커(별도 Cloud Run 사이드카로 상시 배포 — GPU 없는 CPU 추론이라 요청당 약 7초 걸리는 건 알려진 한계입니다)
작업을 17개 묶음, 99개 단위로 나눠 진행했고, 마이그레이션 39개(전진 전용), 테스트 파일 166개 · CI 잡 4개로 뒷받침했습니다.
아직 약한 곳
- 사고 이력 있는 차 오차 8.7%(무사고 대비 6.3%)
- 저가 차(1,500만 원 미만) 오차 8.1%(표본 325대)