Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The apps below are all local-first: data stays on your device by default, and an
- [Projects](https://leinss.xyz/projects/): full app list.

## Consulting (secondary)
- Generative-AI consulting for German Mittelstand and service companies is offered separately at https://leinss-consulting.de, building your own apps is the main focus.
- Generative-AI consulting for German Mittelstand and service companies is offered separately at https://consulting.leinss.xyz, building your own apps is the main focus.

## Contact
- Email: dev@leinss.xyz
Expand Down
6 changes: 3 additions & 3 deletions src/content/blog/de/faq-assistant-technical/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ tags: ["n8n", "rag", "kimi", "ai", "teardown", "own-your-stack"]
lang: "de"
---

> **Kurz gesagt:** Der FAQ-Assistent ist Retrieval-Augmented Generation in zehn n8n-Nodes: in einer Postgres-Wissensbasis die am besten passenden Passagen zur Frage suchen, diese Kimi K2 als Kontext geben und eine belegte Antwort zurückgeben. Der Retrieval-Schritt hält das Modell davon ab, etwas zu erfinden. Es kann nur aus dem antworten, was die Suche liefert. Das ist der Teardown der [Live-FAQ-Demo](https://leinss-consulting.de/de/blog/faq-assistent-ki-support/).
> **Kurz gesagt:** Der FAQ-Assistent ist Retrieval-Augmented Generation in zehn n8n-Nodes: in einer Postgres-Wissensbasis die am besten passenden Passagen zur Frage suchen, diese Kimi K2 als Kontext geben und eine belegte Antwort zurückgeben. Der Retrieval-Schritt hält das Modell davon ab, etwas zu erfinden. Es kann nur aus dem antworten, was die Suche liefert. Das ist der Teardown der [Live-FAQ-Demo](https://consulting.leinss.xyz/de/blog/faq-assistent-ki-support/).

Ein Chatbot, der Antworten erfindet, ist schlimmer als kein Chatbot. Der [FAQ-Assistent auf meiner Beratungsseite](https://leinss-consulting.de/de/blog/faq-assistent-ki-support/) antwortet nur aus einer Wissensbasis, die ich kontrolliere, und verweigert, wenn die Antwort nicht drinsteht. Dieses Verhalten ist Retrieval-Augmented Generation (RAG), und so ist es verdrahtet. Sie können [das Workflow-JSON herunterladen](https://leinss-consulting.de/workflows/faq-assistent.json) und jeden Node prüfen.
Ein Chatbot, der Antworten erfindet, ist schlimmer als kein Chatbot. Der [FAQ-Assistent auf meiner Beratungsseite](https://consulting.leinss.xyz/de/blog/faq-assistent-ki-support/) antwortet nur aus einer Wissensbasis, die ich kontrolliere, und verweigert, wenn die Antwort nicht drinsteht. Dieses Verhalten ist Retrieval-Augmented Generation (RAG), und so ist es verdrahtet. Sie können [das Workflow-JSON herunterladen](https://consulting.leinss.xyz/workflows/faq-assistent.json) und jeden Node prüfen.

## Die RAG-Pipeline

Expand Down Expand Up @@ -48,4 +48,4 @@ Dieser mittlere Node ist der Ort, an dem Retrieval zur *Antwort* wird. „Setze

## Warum Selbst-Hosting hier zählt

Die Wissensbasis sind Unternehmensdaten, und die Fragen der Nutzer sind oft sensibel. Speicher und Workflow auf Infrastruktur zu betreiben, die ich kontrolliere, heißt, keins von beiden verlässt meinen Server außer für den Modellaufruf selbst. Das ist der Sinn [des selbst gehosteten Stacks, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). Wenn Sie einen belegten Assistenten über Ihren eigenen Dokumenten wollen, gebaut und übergeben, mache ich das bei [Leinss Consulting](https://leinss-consulting.de/de/).
Die Wissensbasis sind Unternehmensdaten, und die Fragen der Nutzer sind oft sensibel. Speicher und Workflow auf Infrastruktur zu betreiben, die ich kontrolliere, heißt, keins von beiden verlässt meinen Server außer für den Modellaufruf selbst. Das ist der Sinn [des selbst gehosteten Stacks, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). Wenn Sie einen belegten Assistenten über Ihren eigenen Dokumenten wollen, gebaut und übergeben, mache ich das bei [Leinss Consulting](https://consulting.leinss.xyz/de/).
8 changes: 4 additions & 4 deletions src/content/blog/de/invoice-extractor-technical/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ tags: ["n8n", "claude", "ai", "automation", "teardown", "own-your-stack"]
lang: "de"
---

> **Kurz gesagt:** Der Rechnungsleser sind drei n8n-Nodes: ein Formular für den Upload, ein HTTP-Aufruf an ein Vision-Modell mit dem Rechnungsbild und ein Code-Node, der die Antwort des Modells in sauberes JSON parst. Vision übernimmt das Lesen; der Code-Node den Teil, den ein No-Code-Tool nicht kann, die Markdown-Zäune des Modells entfernen und das Ergebnis sicher parsen. Das ist der Teardown des Workflows hinter der [Rechnungs-Demo](https://leinss-consulting.de/de/blog/rechnungsverarbeitung-automatisieren/).
> **Kurz gesagt:** Der Rechnungsleser sind drei n8n-Nodes: ein Formular für den Upload, ein HTTP-Aufruf an ein Vision-Modell mit dem Rechnungsbild und ein Code-Node, der die Antwort des Modells in sauberes JSON parst. Vision übernimmt das Lesen; der Code-Node den Teil, den ein No-Code-Tool nicht kann, die Markdown-Zäune des Modells entfernen und das Ergebnis sicher parsen. Das ist der Teardown des Workflows hinter der [Rechnungs-Demo](https://consulting.leinss.xyz/de/blog/rechnungsverarbeitung-automatisieren/).

Die [Rechnungs-Demo auf meiner Beratungsseite](https://leinss-consulting.de/de/blog/rechnungsverarbeitung-automatisieren/) liest eine echte Rechnung und gibt strukturierte Felder zurück. Man vermutet einen Berg OCR-Regeln dahinter. Den gibt es nicht. Hier ist das Ganze, und Sie können [das Workflow-JSON herunterladen](https://leinss-consulting.de/workflows/n8n-invoice-cloud.json) und selbst laufen lassen.
Die [Rechnungs-Demo auf meiner Beratungsseite](https://consulting.leinss.xyz/de/blog/rechnungsverarbeitung-automatisieren/) liest eine echte Rechnung und gibt strukturierte Felder zurück. Man vermutet einen Berg OCR-Regeln dahinter. Den gibt es nicht. Hier ist das Ganze, und Sie können [das Workflow-JSON herunterladen](https://consulting.leinss.xyz/workflows/n8n-invoice-cloud.json) und selbst laufen lassen.

## Die ganze Pipeline sind drei Nodes

Expand All @@ -24,7 +24,7 @@ Das ist alles. Keine OCR-Engine, kein Template pro Lieferant, kein Regex-Zoo. Ei

Der eine echte Schritt ist ein HTTP-Request an ein Vision-Modell, die Rechnung inline als Base64-Bild übergeben. Der Prompt fragt die Felder ab, die mich interessieren (Nummer, Datum, Positionen, Summen, Steuer) als JSON. Weil das Modell Pixel liest, ist es ihm egal, ob das Layout ein sauberer PDF-Export oder ein Handyfoto einer zerknitterten Papierrechnung ist.

Welches Modell, ist eine Kostenentscheidung, keine Architekturentscheidung, und die beiden Kopien dieses Workflows unterscheiden sich genau darin. Das JSON zum Herunterladen ruft die Messages-API von Claude Sonnet 4 auf. Das Widget auf meiner Beratungsseite ruft den Vision-Endpunkt von Kimi auf meiner eigenen n8n-Instanz auf, weil es öffentlich ist und jede Einreichung Geld kostet. Es gibt außerdem eine [lokale Variante](https://leinss-consulting.de/workflows/n8n-invoice-local.json), die denselben Schritt auf Ollama zeigen lässt, sodass nichts die Maschine verlässt. In allen dreien dieselbe Form aus drei Schritten; tauschen Sie URL und Auth-Header.
Welches Modell, ist eine Kostenentscheidung, keine Architekturentscheidung, und die beiden Kopien dieses Workflows unterscheiden sich genau darin. Das JSON zum Herunterladen ruft die Messages-API von Claude Sonnet 4 auf. Das Widget auf meiner Beratungsseite ruft den Vision-Endpunkt von Kimi auf meiner eigenen n8n-Instanz auf, weil es öffentlich ist und jede Einreichung Geld kostet. Es gibt außerdem eine [lokale Variante](https://consulting.leinss.xyz/workflows/n8n-invoice-local.json), die denselben Schritt auf Ollama zeigen lässt, sodass nichts die Maschine verlässt. In allen dreien dieselbe Form aus drei Schritten; tauschen Sie URL und Auth-Header.

Die gehostete Kopie hat zusätzlich drei Nodes, die der Starter nicht hat: einen Validierungsschritt, ein IF und eine Fehlerantwort. Eine Anfrage ohne Datei bekommt so eine klare Ablehnung statt eines leeren Modellaufrufs. Das lohnt sich für alles Öffentliche, und es ist derselbe Punkt „Code besitzt den Fehlerfall", den auch der Parse-Node macht.

Expand All @@ -42,4 +42,4 @@ Nichts davon ist schwer, aber alles zusammen ist der Unterschied zwischen einer

Drei Nodes heißt fast nichts zu warten. Taucht ein neues Rechnungslayout auf, gibt es kein Template hinzuzufügen. Das Vision-Modell kann es bereits. Der einzige Code ist der Parse-Schritt, und er ist stabil, weil die Ausgabeform des Modells stabil ist. Einfach ist hier auch belastbar.

Das läuft auf meinem eigenen n8n, Teil [des selbst gehosteten Stacks, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). Wenn Sie einen solchen Leser für Ihre Dokumenttypen gebaut und an Ihr Team übergeben haben wollen, mache ich das bei [Leinss Consulting](https://leinss-consulting.de/de/).
Das läuft auf meinem eigenen n8n, Teil [des selbst gehosteten Stacks, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). Wenn Sie einen solchen Leser für Ihre Dokumenttypen gebaut und an Ihr Team übergeben haben wollen, mache ich das bei [Leinss Consulting](https://consulting.leinss.xyz/de/).
6 changes: 3 additions & 3 deletions src/content/blog/de/lead-response-technical/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ tags: ["n8n", "kimi", "ai", "automation", "teardown", "own-your-stack"]
lang: "de"
---

> **Kurz gesagt:** Der Lead-Response-Bot fährt zwei LLM-Durchläufe über eine Kontaktformular-Einsendung: Zuerst klassifiziert Kimi K2 den Lead (Absicht, Passung, Sprache) als JSON, dann nutzt ein zweiter Kimi-Aufruf diese Klassifikation, um eine personalisierte Antwort in der Sprache des Absenders zu entwerfen. n8n übernimmt Formular, Verzweigung und Versand; Code-Nodes validieren die Eingabe und parsen die Klassifikation zwischen den Durchläufen. Klassifizieren-dann-schreiben zu trennen lässt die Antwort gezielt wirken. Das ist der Teardown der [Live-Lead-Response-Demo](https://leinss-consulting.de/de/blog/kommunikation-automatisieren-menschlich-bleiben/).
> **Kurz gesagt:** Der Lead-Response-Bot fährt zwei LLM-Durchläufe über eine Kontaktformular-Einsendung: Zuerst klassifiziert Kimi K2 den Lead (Absicht, Passung, Sprache) als JSON, dann nutzt ein zweiter Kimi-Aufruf diese Klassifikation, um eine personalisierte Antwort in der Sprache des Absenders zu entwerfen. n8n übernimmt Formular, Verzweigung und Versand; Code-Nodes validieren die Eingabe und parsen die Klassifikation zwischen den Durchläufen. Klassifizieren-dann-schreiben zu trennen lässt die Antwort gezielt wirken. Das ist der Teardown der [Live-Lead-Response-Demo](https://consulting.leinss.xyz/de/blog/kommunikation-automatisieren-menschlich-bleiben/).

Eine generische Auto-Antwort ist schlimmer als eine langsame menschliche. Die [Lead-Response-Demo auf meiner Beratungsseite](https://leinss-consulting.de/de/blog/kommunikation-automatisieren-menschlich-bleiben/) liest eine eingehende Nachricht und entwirft eine Antwort, die tatsächlich darauf eingeht. Der Kniff ist, es in zwei Durchläufen zu tun, nicht in einem. Das [Workflow-JSON ist herunterladbar](https://leinss-consulting.de/workflows/blitz-antwort.json).
Eine generische Auto-Antwort ist schlimmer als eine langsame menschliche. Die [Lead-Response-Demo auf meiner Beratungsseite](https://consulting.leinss.xyz/de/blog/kommunikation-automatisieren-menschlich-bleiben/) liest eine eingehende Nachricht und entwirft eine Antwort, die tatsächlich darauf eingeht. Der Kniff ist, es in zwei Durchläufen zu tun, nicht in einem. Das [Workflow-JSON ist herunterladbar](https://consulting.leinss.xyz/workflows/blitz-antwort.json).

## Zwei Durchläufe, nicht einer

Expand Down Expand Up @@ -42,4 +42,4 @@ Dieser Parse-zwischen-Durchläufen-Node ist reines „wo Code anfängt": Zwei Mo

## Warum es auf meinem eigenen Stack läuft

Eingehende Leads sind Geschäftsdaten, und die Antwort geht unter meinem Namen raus. Die Pipeline auf Infrastruktur zu betreiben, die ich kontrolliere, heißt, Nachricht und Klassifikation bleiben bei mir, abgesehen von den Modellaufrufen, die ich zu machen wähle. Das ist die Logik [des selbst gehosteten Stacks, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). Schnelle, personalisierte Lead-Bearbeitung, für Ihre Pipeline gebaut und übergeben? Das mache ich bei [Leinss Consulting](https://leinss-consulting.de/de/).
Eingehende Leads sind Geschäftsdaten, und die Antwort geht unter meinem Namen raus. Die Pipeline auf Infrastruktur zu betreiben, die ich kontrolliere, heißt, Nachricht und Klassifikation bleiben bei mir, abgesehen von den Modellaufrufen, die ich zu machen wähle. Das ist die Logik [des selbst gehosteten Stacks, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). Schnelle, personalisierte Lead-Bearbeitung, für Ihre Pipeline gebaut und übergeben? Das mache ich bei [Leinss Consulting](https://consulting.leinss.xyz/de/).
2 changes: 1 addition & 1 deletion src/content/blog/de/listmonk-vs-mailchimp/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,4 @@ Beide versenden Kampagnen und transaktionale E-Mails, verwalten Abonnenten und S

Der ehrliche Haken: den Versand zu besitzen ist der Teil, der Engineering braucht. Listmonk selbst ist ein einzelnes Binary; es zuverlässig senden zu lassen ist DNS, ein Versandanbieter und Monitoring. Diese Lücke ist das Thema von [dem selbst gehosteten Stack, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/).

Wenn Sie einen eigenen Newsletter sauber eingerichtet haben wollen, samt Zustellbarkeit, und an Ihr Team übergeben, ist das genau die Art Arbeit, die ich bei [Leinss Consulting](https://leinss-consulting.de/de/) mache.
Wenn Sie einen eigenen Newsletter sauber eingerichtet haben wollen, samt Zustellbarkeit, und an Ihr Team übergeben, ist das genau die Art Arbeit, die ich bei [Leinss Consulting](https://consulting.leinss.xyz/de/) mache.
6 changes: 3 additions & 3 deletions src/content/blog/de/meeting-assistant-technical/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ tags: ["n8n", "claude", "whisper", "ai", "teardown", "own-your-stack"]
lang: "de"
---

> **Kurz gesagt:** Der Meeting-Bot nimmt eine Audiodatei, transkribiert sie mit Whisper und lässt dann ein Modell strukturierte Protokolle extrahieren (Entscheidungen, Aufgaben, Zuständige) gegen ein festes Schema statt als Fließtext. Ein Code-Node formatiert das zu Markdown, und n8n verschickt es. Das erzwungene Schema macht die Zusammenfassung verlässlich statt zu einer Textwand. Das ist der Teardown des [Meeting-Protokoll-Workflows](https://leinss-consulting.de/de/blog/meeting-protokoll-automatisieren/).
> **Kurz gesagt:** Der Meeting-Bot nimmt eine Audiodatei, transkribiert sie mit Whisper und lässt dann ein Modell strukturierte Protokolle extrahieren (Entscheidungen, Aufgaben, Zuständige) gegen ein festes Schema statt als Fließtext. Ein Code-Node formatiert das zu Markdown, und n8n verschickt es. Das erzwungene Schema macht die Zusammenfassung verlässlich statt zu einer Textwand. Das ist der Teardown des [Meeting-Protokoll-Workflows](https://consulting.leinss.xyz/de/blog/meeting-protokoll-automatisieren/).

„Fasse dieses Meeting zusammen" liefert einen Absatz, den niemand liest. Was Leute wirklich wollen, ist eine Liste von Entscheidungen und wer welche Aufgabe verantwortet. Der [Meeting-Protokoll-Workflow auf meiner Beratungsseite](https://leinss-consulting.de/de/blog/meeting-protokoll-automatisieren/) erzeugt genau das, und hier ist wie. Das [Workflow-JSON ist herunterladbar](https://leinss-consulting.de/workflows/meeting-protokoll.json).
„Fasse dieses Meeting zusammen" liefert einen Absatz, den niemand liest. Was Leute wirklich wollen, ist eine Liste von Entscheidungen und wer welche Aufgabe verantwortet. Der [Meeting-Protokoll-Workflow auf meiner Beratungsseite](https://consulting.leinss.xyz/de/blog/meeting-protokoll-automatisieren/) erzeugt genau das, und hier ist wie. Das [Workflow-JSON ist herunterladbar](https://consulting.leinss.xyz/workflows/meeting-protokoll.json).

**Eines vorweg, weil Sie es nachprüfen können:** Das Widget auf der Demo-Seite transkribiert derzeit nicht. Es braucht einen Whisper-Dienst, dieser Dienst läuft nicht auf der Maschine, auf der die Demos liegen, und statt eines Fehlers gibt das Widget eine Beispiel-Zusammenfassung zurück. Einen solchen Dienst aufzusetzen ist Infrastruktur, die ich für eine Demo nicht ausgegeben habe. Lesen Sie das hier also als Teardown des Workflows, der echt und herunterladbar ist, nicht als Beleg dafür, dass der Knopf durchgängig funktioniert.

Expand Down Expand Up @@ -45,4 +45,4 @@ Dieser letzte Node ist der „wo Code anfängt"-Moment: ein strukturiertes API-E

## Warum ich es selbst betreibe

Meeting-Audio ist ungefähr so sensibel, wie Unternehmensdaten werden. Transkription und Zusammenfassung durch einen Workflow auf Infrastruktur zu führen, die ich kontrolliere, hält die Aufnahme aus fremder SaaS heraus, außer für die Modellaufrufe, die ich wähle. Das ist der Fall hinter [dem selbst gehosteten Stack, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). So etwas für die Meetings Ihres Teams, gebaut und übergeben? Das mache ich bei [Leinss Consulting](https://leinss-consulting.de/de/).
Meeting-Audio ist ungefähr so sensibel, wie Unternehmensdaten werden. Transkription und Zusammenfassung durch einen Workflow auf Infrastruktur zu führen, die ich kontrolliere, hält die Aufnahme aus fremder SaaS heraus, außer für die Modellaufrufe, die ich wähle. Das ist der Fall hinter [dem selbst gehosteten Stack, den ich statt SaaS betreibe](/blog/de/self-hosted-stack/). So etwas für die Meetings Ihres Teams, gebaut und übergeben? Das mache ich bei [Leinss Consulting](https://consulting.leinss.xyz/de/).
2 changes: 1 addition & 1 deletion src/content/blog/de/mittelstand-ai/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ Das wäre Dogma, und Dogma ist teuer. Gemietete Cloud-Tools sind der richtige Ei

## Wenn Sie beim Ziehen dieser Linie Hilfe wollen

Zu entscheiden, was gehören und was gemietet sein soll, und dann die besessene Hälfte so zu bauen, dass sie dokumentiert und ans Team übergeben ist statt im Kopf einer Person eingeschlossen. Das ist die Arbeit, die ich bei [Leinss Consulting](https://leinss-consulting.de/de/) mache. Wenn Sie an diesem Punkt stehen, steht die Tür offen.
Zu entscheiden, was gehören und was gemietet sein soll, und dann die besessene Hälfte so zu bauen, dass sie dokumentiert und ans Team übergeben ist statt im Kopf einer Person eingeschlossen. Das ist die Arbeit, die ich bei [Leinss Consulting](https://consulting.leinss.xyz/de/) mache. Wenn Sie an diesem Punkt stehen, steht die Tür offen.
2 changes: 1 addition & 1 deletion src/content/blog/de/n8n-automation-stack/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,4 @@ Käme das Volumen, das es rechtfertigt: Queue-Modus mit Postgres und Redis, dami

## Wollen Sie das, aber besessen?

So einen Stack aufzusetzen (selbst gehostet, dokumentiert und so übergeben, dass er nicht im Kopf einer einzelnen Person eingeschlossen ist) ist die Arbeit, die ich bei [Leinss Consulting](https://leinss-consulting.de/de/) mache. Wenn Sie ein ähnliches Setup betreiben, vergleiche ich gern Notizen.
So einen Stack aufzusetzen (selbst gehostet, dokumentiert und so übergeben, dass er nicht im Kopf einer einzelnen Person eingeschlossen ist) ist die Arbeit, die ich bei [Leinss Consulting](https://consulting.leinss.xyz/de/) mache. Wenn Sie ein ähnliches Setup betreiben, vergleiche ich gern Notizen.
Loading