스캔볼트
Source: Dev.to
개요
ScanVault는 CLI‑우선 문서 인텔리전스 플랫폼으로, 영수증, 청구서, PDF, 스크린샷, 화이트보드 사진 등 구조화되지 않은 파일을 구조화된 검색 가능한 데이터로 변환합니다. 장치 전반에 걸쳐 문서가 산처럼 쌓이지만 나중에 특정 정보를 빠르게 찾을 방법이 없는 문제(예: “그 청구서 번호가 뭐였지?” 혹은 “지난 달 여행에 얼마를 썼지?”)를 해결합니다.
아키텍처
-
전체 스택 TypeScript 모노레포
- Azure Functions 서버리스 API (Cosmos DB, Blob Storage, Azure AI Search)
- Next.js 웹 대시보드와 카테고리 관리 UI
- Commander.js CLI를 기본 사용자 인터페이스로 사용
-
공유
ai-extract패키지는 OpenAI, Anthropic, Google을 통한 추출을 추상화하고, Tesseract.js OCR을 이용한 무설정 폴백을 제공합니다. -
카테고리 시스템 및 필드 추출을 통해 다음과 같은 강력한 쿼리를 수행할 수 있습니다:
vault search "total > 50 category:finance"
Copilot CLI 영향
인프라 및 API 개발
- Azure 리소스(코스모스 DB, Blob Storage, Azure AI Search, Key Vault)를 위한 Bicep 모듈 스캐폴딩을 Copilot 제안으로 간소화하여 장황한 보일러플레이트를 감소시켰습니다.
- Azure Functions HTTP 핸들러, 인증 미들웨어, Zod 검증, Cosmos DB 쿼리를 빠르게 생성했습니다.
- 자산, 카테고리, 설정에 대한 CRUD 엔드포인트를 자동으로 생성했습니다.
검색 쿼리 파서
- Copilot이 정규식 기반 토크나이저와
category:finance status:ready total>50같은 필터에 대한 포괄적인 테스트 케이스를 구축하도록 도왔습니다.
CLI 향상
- Commander.js 명령 트리와 출력 포맷(
--json,--quiet, 테이블 모드) 구성을 가속화했습니다. - Copilot 추출 통합을 지원했습니다: 자식 프로세스 스폰, JSON 응답 파싱, 카테고리 추론을 위한 폴백 휴리스틱 구현.
웹 대시보드
- Tailwind CSS 스타일링, 접이식 섹션, 컨텍스트 메뉴, API 클라이언트 연결 등을 Copilot의 코드 제안으로 원활히 처리했습니다.
모노레포 전반(공유 Zod 스키마부터 인프라 템플릿까지)에서 Copilot CLI는 보일러플레이트 마찰을 크게 줄여, 아키텍처와 제품 결정에 집중할 수 있게 했습니다.
Copilot 추출 통합
타사 API 키가 설정되지 않은 경우, vault upload 명령은 자동으로 Copilot을 통한 커스텀 추출 스킬로 작업을 위임합니다. 이를 통해 추가 비용이나 설정 없이 바로 구조화된 필드 추출, 엔터티 인식, 자동 카테고리 지정이 가능합니다.
- 입출력 JSON 계약
- 입력: 파일(바이너리 또는 base64).
- 출력: 요약, 신뢰도 점수가 포함된 추출 필드, 명명된 엔터티, 제안된 카테고리.
CLI는 파일 컨텍스트를 Copilot에 전달하고, 구조화된 응답을 파싱한 뒤 다른 제공자와 동일한 업로드‑확인 파이프라인에 전달합니다. 따라서 검색, 내보내기, 웹 대시보드는 OpenAI, Anthropic, Copilot 중 어느 추출기를 사용하든 동일하게 동작합니다.
사용 예시
-
필터를 이용한 검색
vault search "total > 50 category:finance" -
볼트 요약
vault summarize --category finance --since 1w -
자연어 질문
vault ask --category finance --since 1w "how much did I spend last week?"
이 명령들은 실행 시 Copilot을 활용해 인덱싱된 문서에 대한 자연어 질의에 답변합니다.
저장소
https://github.com/ronak-guliani/scanvault
비디오
(가능한 경우 데모 비디오 링크)