Apache-2.0 · TypeScript · PostgreSQL 16

Turn signed Kakao inquiries into duplicate-safe booking leads.

A runnable reference pipeline for teams evaluating travel inquiry automation. Inspect the trust boundaries, run a synthetic message, and reuse the parts that fit.

서명된 카카오 여행 문의를 검증하고 PostgreSQL 고객·예약 리드로 변환하는 실행 가능한 오픈소스 예제입니다.

Reference implementation, not a hosted service. Real CRM and Google Sheets adapters are intentionally not claimed.

Implemented path
  1. 01 · Input Kakao webhook HMAC + 256 KiB boundary
  2. 02 · Parse Typed reservation Zod + deterministic rules
  3. 03 · Store PostgreSQL 16 Identity + lease fencing
  4. 04 · Output CRM-ready lead External adapter boundary
Release v0.1.3 published CI Coverage gates enforced Database PostgreSQL 16 verified Security CodeQL on every change

Evaluate in your browser

See the booking fields before you clone anything.

Choose a checked-in synthetic Kakao message or edit it, then run the real deterministic parser locally in this page. No account, API key, server, or network request is involved.

  • Use synthetic text only. Do not paste customer messages or contact details.
  • The result tests parsing and confirmation routing, not PostgreSQL or a real CRM connection.

Processing stays in this browser. The safe result omits the input text and internal IDs.

Deterministic parser

Reservation result

Ready to parse.

Destination
Start date
Travelers
Product

Waiting for input

Select Parse locally to evaluate the synthetic message.
View safe result JSON
{}
Share an evaluation

Run the full local reference path

Take the next step with Node.js 22.

The CLI demo adds the in-memory idempotency boundary, customer creation, booking decision, and fake downstream adapters. It never sends data to a hosted service.

Terminal Node.js 22
git clone https://github.com/cstion-ai/cstion.git
cd cstion
npm ci
npm run demo
npm run --silent evaluate:parser
npm run --silent evaluate:challenge

Expected: a redacted created result, the ten-case regression report, and the frozen 48-case challenge checked against its published known-failure baseline.

Inspect before adopting

Claims link to their proof.

Implemented means code and tests exist. It does not mean the project has passed production load or live-service validation.

Verified in the repository

  • Webhook boundaryRaw-body HMAC verification, schema parsing, and body limits.
  • Duplicate safetyEvent leases, stable booking IDs, and token-fenced completion.
  • Identity ownershipDeterministic locks and conflicting-owner rejection.
  • PostgreSQL upgradeRecorded migration and concurrency scenarios on PostgreSQL 16.
  • Offline evaluationA ten-case regression gate plus a frozen 48-case challenge using the production confirmation route.

Not claimed yet

  • Production readinessStartup remains fail-closed while external adapters are fake.
  • Live CRM or Sheets syncInterfaces exist; real provider implementations do not.
  • Hosted demoThis repository provides code, not a managed customer-data service.
  • Verified adoptersNo third-party deployment is listed without permissioned evidence.
Review remaining risks

Adoption path

Evaluate it, adapt it, then tell us what happened.

Create an independent copy, keep all fixtures synthetic, and share the evaluation stage and outcome. Public reports are listed only with the reporter’s permission.