Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI phone receptionist for Aangan Studio
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Answers every call, qualifies the lead, books a consultation for good leads, and hands them to a designer with full context. Every call (qualified or not) is logged in the database (Neon Postgres), the dashboard and the CRM.
Live: https://aangan-receptionist-gamma.vercel.app · free voice demo at /talk
| Step | Component | Tool | What it does | Status |
|---|---|---|---|---|
| Trigger | Customer calls | Vaani (app.vaanivoice.ai) phone agent | Call starts, any hour | ✅ Agent created · ⏸ phone number not bought (paid) |
| Trigger (free) | Browser call | /talk page — Chrome Web Speech API + Gemini | Same agent script, spoken in the browser; free alternative to a phone number | ✅ Live |
| Input | Caller details | Vaani / /talk | Name, area, company, space type, size, budget, timeline, callback number, email, preferred slot | ✅ |
| Context | Seed data | seed/services.md, seed/qualified.md | Guide the agent and classifier. pricing.md does not exist and is refused by seed.ts | ✅ (placeholder content) |
| AI | Voice agent | Vaani (Cartesia voice, Gemini brain) | Consent notice first, qualifying questions, never quotes prices or commits | ✅ |
| Webhook | Post-call event | POST /api/webhooks/vaani?token=… | Receives call_postprocessing, stores raw event, recovers phone from call_started | ✅ Tested |
| Storage | Call log | Neon Postgres (replaced Supabase) | calls, bookings, crm_mock, webhook_events tables | ✅ |
| Processing | Classifier | Gemini (gemini-3.8-flash) | Tags qualified / unqualified + one-line reason + category, extracts fields, writes summary | ✅ |
| AI | Booking | Cal.com API v2 | Qualified + agreed: books the free slot nearest the caller's preference right after the call (Vaani can't call APIs mid-call) | ✅ Real booking tested |
| Output | Designer handoff | Resend | Email to the round-robin designer: summary, caller details, booking | ✅ (test sender → own inbox only) |
| Output | CRM | HubSpot (service key) | Every lead → contact; qualified → deal (stage: qualified / appointment scheduled) | ✅ Tested |
| Output | Dashboard | Next.js 16 on Vercel | Calls today/week/month, after-hours share, answer rate, lead quality, reasons, leads per designer, tool cost; no phone numbers or transcripts | ✅ |
| Code | Repo | GitHub (private) | Push to main → Vercel deploys | ✅ |
Phone call (Vaani) ─┐ ┌─ qualified ─→ Cal.com booking → Resend email → HubSpot deal
├─→ save to Neon → Gemini ┤
Browser call (/talk) ─┘ └─ unqualified → HubSpot contact (logged, never dropped)
↓
Dashboard (Vercel) reads Neon
Cost: ₹0 — every tool runs on a free tier. Only a real phone number would cost money (Vobiz via Vaani: ₹100 setup + ₹500/month, plus ≈₹5.60/min of Vaani call time).
seed/ services.md, qualified.md (placeholders — the ONLY files the agent/classifier may load)
samples/ 4 sample calls for the "Simulate call" button
db/schema.sql calls, bookings, crm_mock tables (Neon Postgres)
scripts/ print-agent-prompt.mts → paste output into Vaani's agent config
src/proxy.ts basic auth for dashboard + /api/test-call (DASHBOARD_PASSWORD)
src/app/page.tsx dashboard (no phone numbers or transcripts)
src/app/api/
webhooks/vaani/ post-call webhook (signature-verified in real mode)
test-call/ runs a sample through the whole flow synchronously
tools/availability/ mid-call tool: next Cal.com slots
tools/book-consultation/ mid-call tool: book a slot
src/lib/
voice/ adapter: vaani.ts (real) | mock.ts, chosen by VAANI_API_KEY
crm/ adapter: hubspot.ts (real) | mock.ts → crm_mock table, chosen by HUBSPOT_ACCESS_TOKEN
pipeline.ts save → classify → book/assign/email → CRM; each step's failure logged, call never dropped
classify.ts Gemini Flash, JSON schema output, cost from token usage
calcom.ts email.ts designers.ts seed.ts stats.ts time.ts env.ts db.ts
npm installdb/schema.sql.cp .env.example .env.local and fill in at least DATABASE_URL (Neon connection string) and GEMINI_API_KEY.npm run dev → open http://localhost:3000 → pick a sample → Simulate call.Anything left empty runs in mock/skip mode and shows as a badge on the dashboard:
Vaani → mock webhook, HubSpot → crm_mock table, Cal.com → fake bookings, Resend → logged only.
Adding the key to .env (and redeploying on Vercel) switches to the real integration; no code changes are needed.
This machine blocks Next's native compiler (Windows Application Control), so the scripts use
--webpack. That works the same on Vercel.
npm run agent-prompt → paste into the Vaani agent's system prompt. The first message is the recording-consent notice.https://<your-app>.vercel.app/api/webhooks/vaani, event call.completed. Put the signing secret in VAANI_WEBHOOK_SECRET.POST /api/tools/availability and POST /api/tools/book-consultation
(body { start, name, email, phone, call_id }), header x-tool-secret: $VAANI_TOOL_SECRET.call.completed field names, so src/lib/voice/vaani.ts reads several likely keys. Check the first real payload and adjust.| Rule | Where |
|---|---|
| Never quote prices | seed.ts allow-lists only services.md/qualified.md and refuses any pric* file; agent prompt forbids it; there is no pricing.md |
| No commitments / complaints | agent prompt (voice/agent-prompt.ts) |
| Recording consent | first line of the agent prompt (CONSENT_GREETING) |
| Unqualified leads never dropped | saveCall runs before anything else; classifier failure → needs_review; CRM sync runs for every status |
| No keys in code | everything comes from env.ts; .env* is gitignored |
DATABASE_URL + Gemini key → simulate all 4 samples, check the dashboard + crm_mockDASHBOARD_PASSWORDvaani.tsneeds_review, WhatsApp/web-form adapters producing NormalizedCall