Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Shiprocket for cross-border freight, with a pre-flight checker. UK sellers book pallets to Germany, France or the Netherlands by chatting or uploading a spreadsheet; every booking gets Red/Amber issues with exact fixes, a recommended carrier with the reasoning shown, a confirmation with next steps, and a draft commercial invoice.
No login. Open the site, then either Book by chat (try the clickable example, then change a detail such as "add a pallet") or Upload a file (use "Download a sample file to try", or the case template). Click any booking row to see its full detail.
chat message ──► LLM extracts fields ─┐
├─► Booking ─► runChecks() ─► recommendCarrier() ─► buildConfirmation() ─► UI + invoice
.xlsx upload ──► parse.ts (no LLM) ───┘ (R-01…R-10 (feasibility, (status, next steps)
+ DATA checks) ranking, ETA)
Both flows produce the same Booking object and go through the same pipeline (lib/rules, lib/recommend.ts, lib/confirm.ts).
All rule results and carrier maths are deterministic TypeScript (lib/rules, lib/recommend.ts). The Gemini API (server routes only; key never reaches the browser) is used only to: extract fields from chat, write friendly replies, flag dangerous goods from free text as a backstop, and suggest HS codes (always labelled "Suggested — please confirm"). In chat the reply writer is given the engine's results and told not to contradict them. If the API is down or unconfigured, uploads still work completely (keyword-only dangerous goods, no HS suggestions) and chat shows an "assistant unavailable" banner.
090111 into 90111. Exactly 5 digits → the message says so and offers the zero-padded code to confirm. HS codes are always handled as strings.DATA-xx issues (Lyon + Germany, unsupported city, no items, orphan items, duplicate IDs, non-numeric/negative values, zero pallets, unreadable dates).05-11-2026 is 5 November). "Today" is computed at request time in Europe/London./ratesA separate mode for parcels between any two addresses, using live carrier rates from Shippo (SHIPPO_API_KEY). It does not touch the case flow above.
lib/countries.ts, lib/shippoRules.ts): declared values are in the dispatch country's currency; every rate is converted into it (ECB reference rates via frankfurter.dev) and the original quote is shown too; the checks and "what usually applies" export notes follow that country (e.g. UK EORI/export declaration, US EEI above US$2,500, EU export declaration outside the EU)..xlsx only.GEMINI_API_KEY; without it chat cannot read messages (upload is unaffected)./result/[id]) are not implemented; everything works without Supabase.cp .env.example .env.local # add GEMINI_API_KEY
npm install
npm run dev # http://localhost:3000
npm test # Vitest: rules, recommender, parser, chat merge
npm run make-sample # regenerates public/sample-test-data.xlsx (dates relative to today)
Env: SHIPPO_API_KEY (live rates), GEMINI_API_KEY, GEMINI_MODEL (default gemini-3.8-flash), GEMINI_FAST_MODEL (default gemini-3.5-flash-lite).
Reference material is in docs/ (case brief and template workbook).