Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기LolaDesk is an AI-powered front desk for salons, spas, and med spas. Lola answers phone calls, replies across Instagram, SMS, and WhatsApp, books appointments into Square/Mindbody/Vagaro/Fresha, and surfaces revenue opportunities like overdue rebookings and schedule gaps — all from one dashboard. Multi-tenant.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A multi-tenant SaaS where a salon owner runs their entire front desk through Lola — an AI that answers calls (in her real, custom ElevenLabs voice), texts, books appointments, and surfaces revenue opportunities. Built to be sold direct and listed on Square, Mindbody, Vagaro, and Fresha.
This is not a static demo. Every salon is a row in Supabase, isolated by Row Level Security, with their own phone number, services, persona, integrations, and conversation history.
Browser (static HTML/CSS/JS, no build step)
↓
Vercel serverless functions (api/*.js)
↓
Supabase (Postgres + Auth) Telnyx (voice + SMS + numbers) ElevenLabs (Lola's voice)
↓ ↓ ↓
tenants · clients · conversations inbound calls/texts route to every spoken word, on
· messages · calls · bookings · /api/telnyx-voice and calls AND in the
usage_events · integrations /api/telnyx-sms by called # dashboard, same voice
| File | Purpose |
|---|---|
index.html | Marketing homepage — what loladesk.com serves at /. |
onboarding.html | Setup wizard — salon details → connect platform → services → Lola's personality → plan → live. Calls /api/auth/signup and /api/onboard. |
dashboard.html | The dashboard — what each salon logs into daily. Reads real data via /api/data. Lola can be talked to two ways: tap-to-talk, or enable "always listening for Lola" for hands-free, ambient wake-word activation (mic stays passively open; nothing is sent to the AI brain until her name is said). |
clients.html, calls.html, inbox.html, bookings.html, revenue.html, team.html, numbers.html, marketing.html, settings.html, agents.html | Interior dashboard pages, each tenant-scoped via /api/data. |
login.html | Returning owner sign-in. |
book.html | Public booking page — the same engine Lola uses on the phone, for clients who book on the web. Any URL ?t=SLUG works; it's a thin host for booking-widget.js. |
landing.html | Alternate marketing page (not currently linked from main nav). |
api/)| Path | What it does |
|---|---|
auth/signup.js, auth/login.js, auth/session.js | Supabase Auth — creates the owner's account + their tenant row + 14-day trial. |
onboard.js | Saves tenant details; if a website URL is given, the Marketer agent analyzes it and pre-fills services/positioning. |
telnyx-voice.js | Real phone calls. Telnyx hits this on every call. Resolves tenant by called number, asks Lola's brain, speaks the reply in her real ElevenLabs voice via <Play> (falls back to a generic <Say> only if ElevenLabs fails), persists the conversation. |
telnyx-sms.js | Real texts — SMS and WhatsApp. Same tenant resolution + memory, plus STOP/HELP/START keyword compliance (10DLC) handled before Lola's AI ever sees the message. Telnyx WhatsApp payloads (type: WHATSAPP) route through this exact pipeline; webhooks/whatsapp.js is a thin alias onto it. |
telnyx-numbers.js | Search & buy phone numbers; auto-attaches voice + SMS on purchase. This is a recurring revenue line (see TELNYX-SETUP.md). |
telnyx-agents.js | Experimental, not yet wired to live calls. Provisions a 7-agent team (Lola + 6 specialists) directly inside Telnyx's own AI Assistant product, as an alternative architecture to the custom TeXML+Claude loop above. No phone number currently routes to it — agents.html's "copy Telnyx config" button exports this for manual import if you want to experiment with it. |
lola-tools.js | The skill layer (check availability, book, quote pricing, capture leads, escalate) — what Lola's brain calls into to actually do things. |
lola.js | Proxy the dashboard's browser-side chat uses to talk to the LLM without exposing API keys. |
speak.js, lib/elevenlabs.js | Lola's real voice — shared between the dashboard chat and phone calls so she sounds identical everywhere. The dashboard's app.js calls speak.js for both tap-to-talk replies and ambient wake-word replies (see dashboard.html's "always listening for Lola" toggle). |
voice-audio.js, lib/tts-cache.js | Serves the synthesized ElevenLabs audio at a URL Telnyx's can fetch. |
python3 -m http.server 8080
# open http://localhost:8080/index.html — the marketing site
# open http://localhost:8080/dashboard.html — straight to the dashboard (demo data without env vars)
The api/*.js files are Vercel serverless functions and won't run under the plain Python server — use vercel dev for those, or just deploy to a Vercel preview to test the full stack.
The booking system is open and embeddable. Any salon — on LolaDesk or not — can put Lola's booking flow on their own site with one script tag. It uses the same /api/public-booking engine as her voice, so web, phone, and dashboard bookings share one conflict-free calendar.
<!-- Inline flow (service → team → time → details → confirmed) -->
<script src="https://www.loladesk.com/booking-widget.js"
data-tenant="YOUR-SLUG"
data-accent="#ccff00"
data-mode="inline"></script>
<!-- Or modal mode: a floating "Book now" button opens the flow -->
<script src="https://www.loladesk.com/booking-widget.js" data-tenant="YOUR-SLUG" data-mode="modal"></script>
The widget is a single file (booking-widget.js), vanilla JS, Shadow DOM (never fights the host site's CSS), no build step. book.html is the canonical standalone host. Sync works the other way too — LolaDesk ingests any salon's existing booking system via the connector contract. See CONNECTORS.md for how to add Square/Vagaro/Mindbody/Boulevard/Fresha/Google Calendar — or any new system — in three steps, with the conformance suite in tests/connector-contract.test.mjs.
See DEPLOY.md for the Git → Vercel flow, SUPABASE-SETUP.md for the database, TELNYX-SETUP.md for voice/SMS, and .env.example for the full list of environment variables this code actually reads — keep that file in sync if you add a new process.env.X anywhere.
Each salon is a row in the tenants table (see schema.sql), identified by the phone number they're assigned. Every inbound call or text resolves its tenant by the called number, loads that salon's services/persona/hours/integrations, and Lola responds accordingly — fully isolated from every other salon via Postgres Row Level Security plus tenant-scoped queries in application code.
To onboard a new salon: they sign up (onboarding.html → /api/auth/signup), pick a number (numbers.html → /api/telnyx-numbers), and Lola is live on that number immediately — no code changes, no redeploys.
api/lib/elevenlabs.js)<Play>data.js | Unified read API every dashboard page calls — tenant-scoped, with a small demo dataset fallback so the UI is never blank during setup. |
billing/checkout.js, billing/portal.js, billing/webhook.js, lib/stripe.js | Stripe subscriptions — Checkout, customer portal, and a signature-verified webhook that activates/suspends tenants. |
oauth/connect.js, oauth/callback.js, lib/connectors/*.js | OAuth to Square, Boulevard, Vagaro, Mindbody, Fresha, Shopify, Google Calendar. Tokens are encrypted at rest (lib/crypto.js) — never stored in plaintext. Vagaro/Mindbody/Fresha show as "Coming soon" until their partner credentials are set (see .env.example). |
lib/db.js | The shared Supabase client + every multi-tenant helper (tenant resolution, client/conversation/booking writes, usage logging, encrypted integration storage). Everything else imports from here. |
lib/llm.js | The only LLM client — Telnyx Inference with Moonshot Kimi-K2.6. Resilient retry on empty responses. |
lib/auth.js | Supabase Auth helpers (create user, sign in, verify bearer tokens). |
marketer.js, agent-variables.js, notifications.js | Supporting agents/utilities — site analysis, templated prompt variables, in-app notifications. |