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.
Translation pending
FallFlow sammelt automatisch die fehlenden Informationen, fordert Dokumente an und bereitet neue Kundenfälle für Energieberater vor.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @ozdenselimcan-progOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
AI Intake & Operations für Energieberater. Von der ersten Kundenanfrage zum vollständig vorbereiteten Beratungsfall – automatisch. FallFlow ist kein CRM und kein allgemeiner Chatbot. Es übernimmt genau den Teil zwischen Anfrage und Beratung: Kundenanfrage → KI erkennt Angaben → fragt nur Fehlendes → sammelt Dokumente → prüft Vollständigkeit → fasst nach → legt die Fallakte an → Berater übernimmt. Next.js 16 (App Router, proxy.ts), React 19, TypeScript strict, Tailwind CSS 4, Supabase (Auth + Postgres + RLS + Storage), Zod. KI über eine OpenAI-kompatible API, ausschließlich serverseitig.Read the full README ↗
AI Intake & Operations für Energieberater. Von der ersten Kundenanfrage zum vollständig vorbereiteten Beratungsfall – automatisch.
FallFlow ist kein CRM und kein allgemeiner Chatbot. Es übernimmt genau den Teil zwischen Anfrage und Beratung:
Kundenanfrage → KI erkennt Angaben → fragt nur Fehlendes → sammelt Dokumente → prüft Vollständigkeit → fasst nach → legt die Fallakte an → Berater übernimmt.
Next.js 16 (App Router, proxy.ts), React 19, TypeScript strict, Tailwind CSS 4, Supabase (Auth + Postgres + RLS + Storage), Zod. KI über eine OpenAI-kompatible API, ausschließlich serverseitig.
npm install
npm run dev # http://localhost:3000
Ohne Supabase-Variablen läuft die App im Demo-Modus (Daten im Arbeitsspeicher, Seed „BA Engineering & Consulting“ mit 7 Fällen). Ohne AI_API_KEY extrahiert ein regelbasierter Mock Angaben aus Freitext. Nützliche URLs: /demo (komplette Demo, läuft im Browser), /dashboard, /dashboard/intake, /dashboard/inbox, /widget/demo (echter Website-Chat gegen die API), /upload/demo-upload-weber (Kunden-Upload).
| Konzept | Umsetzung |
|---|---|
| Intake-Status | NEW → QUALIFYING → WAITING_FOR_CUSTOMER → COMPLETE → READY_FOR_REVIEW → CONVERTED (types.ts, Logik in checklist.ts) |
| Completeness Score | Anteil erfüllter Pflichtpunkte in % = Pflichtangaben (Fragen-Builder) + Pflichtdokumente. Dynamisch aus den Falldaten berechnet, nie manuell gesetzt. |
| Dokumentenbedarf | Grundriss immer; Energieausweis bei Beratungsleistungen (nicht beim Energieausweis selbst); Fotos optional (documentRequirements). |
| Lead-Readiness | Reiner Prozessstatus: Unvollständig / Fast vollständig (≤ 2 fehlen) / Vollständig (100 %) / Bereit zur Bearbeitung. Keine Kaufwahrscheinlichkeit. |
| Statusregeln | COMPLETE = alle Pflichtangaben da, Pflichtdokumente fehlen noch oder wurden erst angefordert. READY_FOR_REVIEW = Angaben da und alle Pflichtdokumente tatsächlich hochgeladen. Ein laufendes Gespräch ohne Aktivität > 30 Min. wird als WAITING_FOR_CUSTOMER angezeigt (abgeleitet, nicht gespeichert). |
| Dynamischer Frage-Flow | conversation.ts: jede Nachricht wird ausgewertet (KI oder Regeln), bekannte Angaben übernommen, nur relevante fehlende erfragt (isRelevant). Keine Beratung, nichts erfunden. |
| Automatik | case-ops.ts refreshCase: Score, Status, Zusammenfassung, automatische Dokumentenanforderung, Follow-up-Planung nach jeder Änderung. |
Siehe .env.example.
| Variable | Zweck |
|---|---|
NEXT_PUBLIC_APP_URL | Öffentliche URL (Upload-Links, OAuth-Redirects, Widget-Snippet) – in Produktion nicht localhost |
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase; wenn gesetzt → Produktivmodus |
SUPABASE_SERVICE_ROLE_KEY | Nur serverseitig: Widget, Kunden-Upload, Datei-Speicher, Cron |
AI_API_KEY, AI_MODEL, AI_BASE_URL | OpenAI-kompatibles Modell (optional; Extraktion und Zusammenfassung) |
CRON_SECRET | Schützt /api/cron/follow-ups (Vercel-Cron, siehe vercel.json) |
GOOGLE_*, MICROSOFT_* | E-Mail-OAuth (vorbereitet) |
STRIPE_* | Abrechnung (vorbereitet) |
case_documents, follow_ups, Kanal-Metadaten, privater Bucket case-documents, neue Standardfragen; migriert bestehende Daten).NEXT_PUBLIC_APP_URL, Redirect URL …/auth/callback.Sicherheit: RLS auf allen Tabellen (is_member/has_role). Kundendateien liegen in einem privaten Bucket ohne Policies für anon/authenticated – Zugriff nur per Service Role: Upload über /api/upload/[token], Download nur angemeldet über /api/documents/[id] (Company-gefiltert, Content-Disposition: attachment, nosniff).
src/lib/data/ – Store-Interface mit memory.ts (Demo) und supabase.ts (RLS).src/lib/intake/ – checklist.ts (rein, auch im Browser), engine.ts (Kundennachricht → Fall), case-ops.ts (Refresh, Dokumentenanforderung, Follow-ups), router.ts + identity.ts (eingehende Nachrichten Kunde/Fall zuordnen), follow-ups.ts, notes.ts, attention.ts, messages.ts.src/lib/ai/ – Gesprächslogik, Zod-validierte Extraktion und Zusammenfassung mit regelbasiertem Fallback.src/lib/integrations/ – E-Mail-Adapter; outbound.ts liefert nur delivered: true, wenn wirklich versendet wurde.src/lib/documents/storage.ts – Upload-Validierung (Magic Bytes, 10 MB, PDF/JPG/PNG/WebP) und Speicher.npm run lint
npm run typecheck
npm run build && npm start