승합차 한 대가 창고 앞에 멈춰 섭니다. 짐칸 안에는 장비를 교체한 한 기업이 기부한 노트북 50대가 실려 있습니다. 기기마다 하나뿐인 물품입니다 — 저마다의 상태, 저마다의 내력, 수리와 판매를 거치는 저마다의 경로를 지녔습니다. 순환 경제 사업장에게 이것은 지극히 평범한 화요일 아침입니다. 하지만 시중의 ERP에게는 애초에 풀려고 시도조차 하지 않는 문제입니다.

「기부받은 노트북 50대? 30초 만에 등록.」 — Kivvi는 리퍼비셔와 중고 매장의 일상을 위해 밑바닥부터 만들어졌습니다.
문제: 표준 ERP는 매입과 수량으로 사고한다
세계의 흔한 재고 관리 시스템은 모두 동일한 기본 전제에서 출발합니다. 즉, 동일한 품목을 일정 수량 매입해 보관하고, 다시 판매한다는 것입니다. 품번 4711 200개, 모두 동일하고, 모두 새것. 매입가는 알려져 있고, 마진은 계산되어 있으며, 수량이 결정적인 지표입니다.
순환 경제 사업장은 정확히 그 반대로 돌아갑니다. 상품은 주문으로 들어오는 것이 아니라 기부 또는 트레이드인으로 들어옵니다. 그것은 수량이 아니라 단일 물품의 모음입니다 — 저마다 「새것 같음」에서 「부품용」까지 고유한 상태 등급을 지닙니다. 모든 기기에는 수리 이력이 있습니다. 무엇을 테스트했고, 무엇을 교체했으며, 누가 데이터를 삭제했는지. 그리고 마지막에 중요한 것은 판매 수익만이 아니라 효과 — 몇 대의 기기가 매립지행을 면했는가 — 이기도 합니다.
이 차이는 표면적인 것이 아닙니다. 데이터 모델의 핵심 그 자체와 관련됩니다. 「수량」을 중심 지표로 다루는 시스템은 기껏해야 상태 등급을 어딘가에 텍스트 메모로 붙일 수 있을 뿐 — 그것으로 걸러 내거나, 계산하거나, 분석할 수는 없습니다. 입고를 청구서가 딸린 매입으로 이해하는 시스템에는 대가 없는 기부를 위한 필드도, 기부자가 필요로 하는 영수증을 위한 서식도 애초에 없습니다. 이 간극은 설정으로 메울 수 없습니다. 기본 전제 안에 자리 잡고 있기 때문입니다.
이 가운데 어느 것도 SAP, Odoo, 혹은 수많은 중소기업용 솔루션의 데이터 모델에는 들어맞지 않습니다. 그것들은 상태 등급도, 기부 영수증도, 개별 기기의 수명 주기도 알지 못합니다. 리퍼비싱 사업장이나 중고 매장, 리페어 카페를 운영하는 이에게는 그래서 지금까지 두 가지 선택지밖에 없었습니다. 낡은 유산을 짊어진 Perl 기반의 노장 Kivitendo, 아니면 모든 과정을 손으로 다시 짜고 데이터가 서로 연결되지 않은 수십 개의 파일 속에서 썩어 가는 스프레드시트로의 끝없는 도피입니다.
Kivvi가 다르게 하는 것
Kivvi는 기본 전제를 뒤집습니다. 중심에 있는 것은 매입이 아니라 상품의 출처와 개별 대상물입니다. 기부, 상태, 수리 경로, 효과는 나중에 덧붙여진 필드가 아니라 — 데이터 모델의 토대 그 자체입니다.

로그인 시점부터 Kivvi는 무엇이 중요한지 보여 줍니다: AI 빠른 입력, 개별 품목 관리, 기부 영수증, 스위스 QR 청구서 — 그리고 MIT 라이선스의 Open Source.
그 결과는 순환 경제를 낯선 스키마에 밀어 넣는 대신 그 언어를 구사하는 시스템입니다. 기존 ERP라면 먼저 추가 필드와 우회책, 그 옆의 외부 스프레드시트를 동원해 힘겹게 구부려야 할 지점에서 — Kivvi에서는 중고의, 유일무이한 대상물이 일반적인 경우입니다. 그리고 그것은 범용적인 상거래가 아니라 구체적인 사업장을 위해 만들어졌습니다.

Kivvi는 IT 리퍼비셔, 중고 매장, 리페어 카페, 빈티지 숍을 대상으로 합니다 — 중고의, 유일무이한 상품을 다루는 사업장입니다.
표준 ERP가 못 하는 것 — 그리고 Kivvi는 하는 것

Kivvi가 메우는 간극: 기부받은, 개별의, 수리된 상품과 관련된 모든 것.
Kivvi를 이해하는 가장 좋은 방법은 그 핵심 영역들을 한 바퀴 둘러보는 것입니다 — 그때마다 이렇게 물으면서. 그것은 무엇을 하며, 어떤 문제를 푸는가?
입고와 기부
하는 일: 입고 시 각 상품은 출처(기부 또는 트레이드인)와 상태 등급과 함께 기록됩니다. 기부의 경우 곧바로 기부 영수증을 발행할 수 있습니다.
푸는 문제: 상태 등급은 이후 모든 것이 걸려 있는 기초 정보입니다 — 가격, 수리 필요성, 판매 가능성. 그리고 표준 ERP에는 아예 마련되어 있지 않은 기부 영수증은 비영리 사업장이 매일 필요로 하는 문서입니다.
개별 품목의 수명 주기
하는 일: 각 기기는 독자적인 레코드로, 정해진 수명 주기를 거칩니다: intake → testing → repair → ready → listed → sold. 각 품목의 상태는 언제든 확인할 수 있습니다.
푸는 문제: 「200개」라는 수량 표시 대신, 사업장은 개별 대상물 하나하나가 어느 단계에 있는지 압니다. 어떤 기기도 과정에서 사라지지 않고, 어떤 상품도 눈에 띄지 않은 채 테스트의 미궁에 걸려 있지 않습니다.
수리
하는 일: 수리 주문은 기기별로 관리됩니다 — 수리 보너스, 그리고 데이터 보호에 부합하는 데이터 파기를 위한 삭제 증명서 발행을 포함합니다.
푸는 문제: 수리 이력은 기기에 붙은 채 남아 추적할 수 있습니다. 삭제 증명서는 중고 IT 하드웨어를 판매할 때 있으면 좋은 것이 아니라 신뢰와 컴플라이언스의 문제입니다.
판매
하는 일: 전체 판매 과정이 구현되어 있습니다: 견적 → 주문 → 납품서 → 청구 → 독촉.
푸는 문제: 첫 제안부터 마지막 지급 독촉까지 모든 것이 매체 단절 없이 하나의 시스템에서 진행됩니다. 병행하는 청구 도구도, 손으로 관리하는 독촉도 없습니다.

입고부터 회계까지: Kivvi는 하나의 시스템에서 전체 사슬을 포괄합니다.
스위스 회계
하는 일: Kivvi는 227개 계정으로 이루어진 중소기업용 계정 과목표, 변경 불가능한 분개장, 그리고 부가가치세(VAT) 처리를 함께 제공합니다.
푸는 문제: 회계는 데이터를 내보내야 하는 별도의 프로그램이 아니라 ERP의 필수적인 일부입니다. 변경 불가능한 분개장은 감사 안정성을 보장합니다 — 한 번 기장된 것은 기장된 채로 남습니다.
뱅킹
하는 일: Kivvi는 CAMT.053/054 은행 파일을 읽어 들여 입금을 QR 청구서와 자동으로 대조합니다.
푸는 문제: 그러지 않으면 몇 시간의 수작업이 될 입금 대조가 자동으로 이루어집니다. 지급된 청구서는 인식되고, 미결제 항목은 미결제로 남습니다 — 누군가 계좌 명세서를 청구서와 한 줄씩 대조하는 일 없이.
AI 명령 바
하는 일: AI 기반 명령 바가 자연어를 이해하고 감사된 47개 도구를 통해 그것을 실행합니다 — 빠른 입력부터 분석까지.
푸는 문제: 「기부받은 노트북 50대? 30초 만에 등록.」 — 각 필드를 하나하나 클릭하는 대신, 과업을 설명하면 Kivvi가 그것을 처리합니다. 47개 도구 각각이 감사되어 있기에, 모든 동작은 추적 가능하고 통제된 상태로 유지됩니다.
열려 있고, 연결되어 있다
데이터를 가두는 ERP는 함정입니다. Kivvi는 반대의 길을 가며, 토대부터 열린 구조로 만들어졌습니다.
**열린 REST-API(v1)**와 서명된 웹훅을 제공하여, 이를 통해 다른 시스템이 깔끔하고 안전하게 연결됩니다. 레거시 시스템에서의 전환을 위해 Kivitendo CSV 가져오기가 있습니다 — 바라던 바로 그 인터페이스가, 바로 알맞은 자리에: 낡은 Perl 세계에서 새로운 세계로 넘어가는 지점에 말입니다.
그에 못지않게 중요한 것이 라이선스입니다. Kivvi는 MIT 라이선스의 Open Source입니다. 그것이 뜻하는 바는 벤더 종속 없음, 자체 인프라에서의 셀프 호스팅, 그리고 데이터가 스위스에 머문다는 확신입니다. Kivvi를 쓰는 이는 자신의 시스템을 소유합니다 — 그 반대가 아닙니다. 특히 빠듯한 재원으로 활동하며 장기적으로 계획하는 비영리 사업장에게 이것은 결정적입니다. 성장과 함께 폭발하는 라이선스 비용도, 공급자가 제품을 중단하고 데이터를 인질로 잡을 위험도 없습니다. 소스 코드는 공개되어 있고, 인터페이스는 문서화되어 있으며, 사업장은 행동 능력을 유지합니다.
그 규모
Kivvi는 프로토타입이 아니라 완성된 시스템입니다. 가늠을 위한 몇 가지 수치입니다:
| 지표 | 값 |
|---|---|
| 문서 | 133쪽 |
| 데이터베이스 테이블 | 50 |
| 도메인 모듈 | 63 |
| AI 도구 | 47 |
| 커밋 | 616 |
| 라이선스 | MIT |
그 속내
기술적으로 Kivvi는 현대적이고 유지보수 가능한 토대 위에 서 있습니다. TypeScript로 작성된 Next.js 14 모노레포로 구축되었으며, 데이터베이스로 PostgreSQL, ORM으로 Drizzle을 사용합니다. 모든 금액에는 decimal.js가 쓰입니다 — 이로써 프랑과 라펜 단위의 반올림 오차가 배제됩니다. 스위스 QR 청구서는 SwissQRBill로 생성하여 깔끔하게 표준을 준수합니다. 이 선택은 그 자체가 목적이 아닙니다. 시스템이 올바르게 계산하고, 유지보수 가능한 상태로 남으며, 사업장과 함께 성장할 수 있도록 하기 위한 것입니다.
결론
표준 ERP는 상품이 수량으로 매입되고 동일하게 판매되는 세계를 위해 만들어졌습니다. 순환 경제는 다른 세계에 삽니다 — 기부의, 상태와 이력을 지닌 단일 물품의, 수리와 측정 가능한 효과의 세계입니다. Kivvi는 이 세계를 특수한 경우가 아니라 출발점으로 다루는 최초의 ERP입니다.
열려 있고, 스위스제이며, 당신의 것입니다. 그것이 어떤 느낌인지 알고 싶은 분은 Kivvi를 kivvi.orangecat.ch 에서 만날 수 있습니다.


