Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证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. |