Claude-Desktop-Erweiterung · Claude-Code-Plugin

Eine zweite und dritte Meinung, direkt in Claude.

Mit Kirat beruft Claude einen Rat mit ChatGPT und Gemini ein. Drei Modellfamilien beziehen unabhängig voneinander Position und stimmen dann ab. Die Mehrheit entscheidet, und die Gegenstimme bleibt protokolliert. Gibt es keine Mehrheit, sagt Kirat das, statt Einigkeit zu erzwingen.

Claude Desktop (macOS/Windows) und Claude Code; Cloud-Sitzungen von Claude Code mit einmaliger Einrichtung — nicht der Chat im Browser oder auf Mobilgeräten (wo es läuft)
Ihre eigenen OpenAI- und Gemini-Keys — kein Server, kein Konto bei uns
Einmalkauf — kein Abo, 256 automatisierte Tests

Explosionsansicht von Kirat Fünf gestapelte Ebenen, jede mit ihrer Funktion gezeichnet: die Tool-Oberfläche mit neun Tools, die Claude aufruft, sieben kostenpflichtig und zwei kostenlos; die Abstimmungslogik, die drei Positionen zu einem Urteil zusammenführt; der Budgetwächter mit seiner Reservierungsschwelle; die Fehlerbehandlung mit einem unterbrochenen Pfad und einem Wiederholungsweg; und die Warteschlange des Warteraums im Hintergrund. 01 Tool-Oberfläche Neun Tools für Claude 02 Abstimmungslogik Mehrheit, Stichentscheid, Limit 03 Budgetwächter Reserviert Maximum, Tageslimit 04 Fehlerbehandlung Breaker, Timeouts je Anbieter 05 Warteraum Lange Läufe: Ticket zurück ABB. 1 — EXPLOSIONSANSICHT, ALLE TEILE
01 — Das Problem

Ein Modell, ein blinder Fleck.

Selbstprüfung schmeichelt

Ein Modell, das seine eigene Arbeit prüft, findet sich selbst überzeugend. Ein zweiter Durchgang desselben Modells ist keine unabhängige Prüfung.

Mehr Runden sind nicht die Lösung

Kirat begrenzt die Debatte auf zwei Runden, im Code, nicht in einem Prompt. Ein Modell kann sich nicht über das Limit hinwegreden. Gibt es dann noch immer keine Mehrheit, wird Ihnen das mitgeteilt.

Verschiedene Familien irren unterschiedlich

Kirat stellt Claude, ChatGPT und Gemini dieselbe Frage und zeigt Ihnen, wo die Meinungen auseinandergehen — einschließlich wer widersprochen hat und warum.

02 — So funktioniert's

Drei Positionen. Eine Abstimmung. Jeder Einwand bleibt erhalten.

Abb. 2.1

Unabhängige Positionen

ChatGPT und Gemini beziehen jeweils Position, ohne die der anderen zu sehen. Claude gibt als dritte Stimme seine eigene Position ab. Kein Ankereffekt, kein Konsenstheater.

Abb. 2.2

Eine protokollierte Abstimmung

Eine Zweidrittelmehrheit entscheidet. Fallen Mitglieder aus und sind die übrigen uneins, löst ein festgelegter Domänenverantwortlicher das Patt auf. Ohne Mehrheit lautet das Ergebnis needs_human. Die Gegenstimme kommt mit dem Ergebnis zurück.

Abb. 2.3

Gebaut, um die APIs zu überstehen

Budgetwächter, Zwei-Runden-Limit, Circuit Breaker, Timeouts pro Anbieter auf Basis des gemessenen Durchsatzes, Hintergrund-Tickets für lange Läufe. Alles im Code, nicht in Prompts.

Sie fragen in normaler Sprache. Claude führt den Aufruf aus:

// ein echter Aufruf und eine echte Antwort — nichts inszeniert
kirat_vote({
  question: "Cap the coupled effort default, or leave it at maximum?",
  options: ["cap at high", "decouple", "leave as is"],
  ownPosition: { position: "cap at high", reasoning: "…", confidence: 72 }
})
→ outcome:       "completed"
  decision:      "cap at high"
  decisionPath:  "unanimous"
  rounds:        1
  votes:         openai 94, gemini 92,
                 claude 72
  cost:          $0.021

Weitere Ergebnisse: needs_human (keine Mehrheit — Sie entscheiden), domain_decision, limited, budget_exhausted. Die Konfidenzwerte sind jeweils die Selbsteinschätzung des Modells.

Abb. 2.4 — Teileliste

Neun Tools, die Claude aufruft

7 kostenpflichtig · 2 kostenlos
Pos.ToolFunktionKosten
01kirat_voteEntscheidung per Abstimmung: Jedes Mitglied bezieht Position, dann entscheidet eine Zweidrittelmehrheit, der Domänenverantwortliche oder needs_human.kostenpflichtig
02kirat_reviewCode-Review. Jeder Befund wird von der jeweils anderen Modellfamilie überprüft.kostenpflichtig
03kirat_createIhren Entwurf kritisieren, ein Mitglied entwerfen lassen oder kurze Varianten in eine Rangfolge bringen.kostenpflichtig
04kirat_brainstormDivergente Ideen in drei Spuren — im Rahmen des Briefings, benachbart, regelbrechend — anonym in eine Rangfolge gebracht.kostenpflichtig
05kirat_decideDelegierte Entscheidung bei umkehrbaren Arbeitsentscheidungen, mit Veto und Tageslimit.kostenpflichtig
06kirat_askGenau ein Mitglied fragen. Kein Rat.kostenpflichtig
07kirat_imageBildgenerierung durch beide Anbieter, bewertet von einer anonymen Jury.kostenpflichtig
08kirat_resultHintergrundjobs und letzte Ergebnisse abrufen.kostenlos
09kirat_statusBudget, Ausgaben, verfügbare Mitglieder, Einstellungen.kostenlos
Kostenpflichtige Tools nutzen Ihre OpenAI- und Google-Keys; Sie bezahlen die Anbieter direkt. kirat_image und Bildeingaben arbeiten mit Dateien auf Ihrem Computer und eignen sich daher am besten für Claude Code.
02a — Aufzeichnung

Sehen Sie dem Rat bei der Arbeit zu.

Echte Aufzeichnungen von Kirats Tools, entstanden am 13. Oktober 2026 mit der Version, die Sie kaufen. Wählen Sie ein Tool und sehen Sie dem Rat bei der Arbeit zu: unabhängige Positionen, gegenseitige Prüfungen, anonyme Rangfolgen und die Gegenstimme. Dies ist eine Aufzeichnung: Nichts, was Sie hier anklicken, ruft ein Modell auf, und nichts verlässt diese Seite.

Fünf Fragen aus verschiedenen Bereichen. Wählen Sie eine aus.

„Ich betreibe allein ein kleines B2B-SaaS. Soll ich einen Free Tier einführen?“
AUFGEZEICHNET 2026-10-13 · KIRAT_VOTE · AUFWANDSSTUFE: STANDARD · 1 RUNDE

Gesendeter Kontext: Solo-Entwickler. Rechnungstool für Freelancer, USD 19 pro Monat, 14-tägige kostenlose Testphase, 30 zahlende Kunden nach 5 Monaten. Anmeldungen kommen überwiegend über zwei Blogartikel, die bei Google ranken. Etwa 12 % der Testphasen werden zu zahlenden Kunden. Der Support kostet schon jetzt etwa 5 Stunden pro Woche. Der Entwickler hat einen Hauptjob und etwa 10 Stunden pro Woche für das Produkt.

Optionen: Free Tier einführen · Nur kostenpflichtig, Testphase auf 30 Tage verlängern · Nur kostenpflichtig, nichts ändern

gpt-5.6Konfidenz 88
Nur kostenpflichtig, nichts ändernEin Free Tier würde wahrscheinlich mehr nicht zahlende Nutzer und mehr Supportaufwand bringen, und der Support verbraucht bereits die Hälfte der verfügbaren 10 Stunden pro Woche. Eine Conversion von 12 % aus der Testphase ist respektabel, es gibt also keinen klaren Beleg dafür, dass die Länge der Testphase der Engpass ist. Behalten Sie das aktuelle Modell bei und nutzen Sie die knappe Zeit, um den Supportbedarf zu senken und die Kundengewinnung über die zwei Blogartikel hinaus auszubauen.
gemini-3.6-flashKonfidenz 90
Nur kostenpflichtig, nichts ändernBei nur 10 Stunden verbleibender Zeit pro Woche bindet der Support bereits 50% der Kapazität. Ein Free Tier würde das Support-Aufkommen durch nicht-zahlende Nutzer unkontrolliert erhöhen. Eine Conversion-Rate von 12% bei der Testphase ist bereits stark; der Engpass liegt beim Traffic, nicht beim Preismodell.
claude (dritte Stimme)Konfidenz 58
Nur kostenpflichtig, Testphase auf 30 Tage verlängernEin Free Tier bringt vor allem mehr Supportaufwand, und der macht schon jetzt die Hälfte der verfügbaren Zeit aus. Rechnungen werden monatlich geschrieben, daher kann eine 14-tägige Testphase enden, bevor ein Freelancer eine zweite Rechnung verschickt und den Nutzen sieht. Eine 30-tägige Testphase deckt einen vollen Abrechnungszyklus ab, ohne dauerhaft kostenlose Nutzer hinzuzufügen.Gegenstimme protokolliert
EntscheidungNur kostenpflichtig, nichts ändernPfadMehrheit 2:1Kosten$0.015
„Der Onlineshop unseres Kunden muss neu aufgebaut werden. Neu auf WooCommerce aufbauen oder zu Shopify migrieren?“
AUFGEZEICHNET 2026-10-13 · KIRAT_VOTE · AUFWANDSSTUFE: STANDARD · 1 RUNDE

Gesendeter Kontext: Wir sind eine kleine Digitalagentur. Der Kunde verkauft rund 1.800 Möbelprodukte in Deutschland, Österreich und der Schweiz, hat 3 Mitarbeitende und keinen eigenen Entwickler. Der aktuelle Shop ist eine selbst gehostete WooCommerce-Installation, 6 Jahre alt, mit 31 Plugins, langsamen Seiten und zwei Sicherheitsvorfällen im letzten Jahr. Der Umsatz liegt bei rund EUR 1,2 Millionen pro Jahr. Der Kunde wünscht sich weniger Wartung und weniger Notfälle; er nutzt ein lokales ERP, das Produktdaten als CSV exportiert. Budget für den Neuaufbau: EUR 25.000.

Optionen: Neu auf WooCommerce aufbauen · Zu Shopify migrieren

gpt-5.6Konfidenz 89
Zu Shopify migrierenShopify passt besser zu den Hauptzielen des Kunden: weniger Wartung, weniger Sicherheitsnotfälle und kein Bedarf an einem eigenen Entwickler. Ein Katalog mit 1.800 Produkten und ein CSV-basierter ERP-Workflow sind beherrschbar, und das Budget von EUR 25.000 sollte eine disziplinierte Migration plus die DACH-spezifische Einrichtung von Steuern, Zahlungen und Rechtlichem abdecken. Die Kompromisse sind laufende App- und Plattformkosten, weniger Flexibilität im Backend und die Notwendigkeit, den ERP-Importprozess und etwaige möbelspezifische Varianten vor der Festlegung zu prüfen. Ein Neuaufbau auf WooCommerce könnte die Flexibilität erhalten, würde aber die Verantwortung für Hosting, Updates, Plugin-Kompatibilität und Sicherheit beibehalten — genau die operative Last, die der Kunde reduzieren will.
gemini-3.6-flashKonfidenz 90
Zu Shopify migrierenOhne eigenen Entwickler, mit 3 Mitarbeitenden und einer Vorgeschichte von Sicherheitsvorfällen senkt Shopify den Wartungsaufwand und die Sicherheitsrisiken drastisch. Ein Budget von 25.000 € reicht für eine Shopify-Migration einschließlich CSV-ERP-Anbindung, während ein Neuaufbau auf WooCommerce hohe Wartungskosten und anhaltende Notfallrisiken fortschreiben würde.
claude (dritte Stimme)Konfidenz 72
Zu Shopify migrierenOhne eigenen Entwickler, mit 31 Plugins und zwei Sicherheitsvorfällen ist das eigentliche Problem des Kunden die Wartung, nicht der Funktionsumfang. Shopify nimmt Hosting, Updates und den Großteil der Sicherheitsarbeit ab; der CSV-Produktimport aus dem ERP ist Standard. Der Preis dafür sind Transaktions- und App-Gebühren und weniger Flexibilität, was bei dieser Größe weniger zählt als Stabilität.
EntscheidungZu Shopify migrierenPfadeinstimmig 3:0Kosten$0.015
„Eine Bäckerei vor Ort möchte mehr Tortenvorbestellungen. Wohin sollen die nächsten EUR 3.000 zuerst fließen?“
AUFGEZEICHNET 2026-10-13 · KIRAT_VOTE · AUFWANDSSTUFE: STANDARD · 1 RUNDE

Gesendeter Kontext: Bäckerei mit 6 Mitarbeitenden in einer deutschen Stadt mit 40.000 Einwohnern. Individuelle Torten und Vorbestellungen haben die beste Marge. Bestellungen kommen heute nur per Telefon und E-Mail herein; die Website zeigt Öffnungszeiten und ein Kontaktformular, aber nichts zum Bestellen. Das Google-Unternehmensprofil hat 4,7 Sterne aus 120 Bewertungen. Bisher keine bezahlte Werbung. Budget: EUR 3.000 für das nächste Quartal, wer den Betrieb führt, hat wenig Zeit.

Optionen: Google Ads · Eine richtige Online-Bestellseite · Gleichmäßig auf beides aufteilen

gpt-5.6Konfidenz 94
Eine richtige Online-BestellseiteZuerst den Engpass beheben: Interessenten können derzeit nicht bequem und strukturiert vorbestellen. Eine einfache, mobil optimierte Bestellseite mit Kuchenauswahl, Abholtermin, Anpassungsoptionen, Preis bzw. Anzahlung und Bestätigung nutzt die bereits starke lokale Sichtbarkeit und reduziert Telefon- und E-Mail-Aufwand. Google Ads ohne belastbaren Bestellprozess würden bezahlten Traffic auf eine schwache Conversion-Strecke schicken. Nach einigen Wochen mit messbaren Bestellungen kann ein späteres Werbebudget gezielter eingesetzt werden.
gemini-3.6-flashKonfidenz 90
Eine richtige Online-BestellseiteOhne eine digitale Bestellstrecke erzeugen Werbeanzeigen nur mehr zeitintensiven manuellen Aufwand per Telefon/E-Mail, den die Inhaberin kaum leisten kann. Zudem konvertiert das starke Google-Profil (4,7 Sterne) bereits bestehenden organischen Traffic mit einer echten Bestellseite sofort deutlich besser, bevor Geld für Ads ausgegeben werden sollte.
claude (dritte Stimme)Konfidenz 74
Eine richtige Online-BestellseiteAnzeigen lohnen sich nur, wenn aus dem Klick eine Bestellung werden kann. Im Moment muss jeder Besucher anrufen oder eine E-Mail schreiben, also würde bezahlter Traffic versickern. Eine Bestellseite mit Produktauswahl, Abholterminen und Vorauszahlung macht aus der Nachfrage, die das 4,7-Sterne-Profil bereits bringt, Bestellungen und macht spätere Anzeigen messbar.
EntscheidungEine richtige Online-BestellseitePfadeinstimmig 3:0Kosten$0.012
„Sollen wir unser Abrechnungsmodul jetzt in einen eigenen Service auslagern oder zuerst seine Grenzen innerhalb des Monolithen härten?“
AUFGEZEICHNET 2026-10-13 · KIRAT_VOTE · AUFWANDSSTUFE: STANDARD · 1 RUNDE

Gesendeter Kontext: Team aus 8 Engineers. Ein TypeScript-Monolith mit etwa 60.000 Zeilen, eine Postgres-Datenbank, mehrere Deployments pro Tag. Das Abrechnungsmodul ändert sich jede Woche und hat 5 der letzten 8 Produktionsvorfälle verursacht, meist dadurch, dass andere Module direkt lesend und schreibend auf Abrechnungstabellen zugreifen. Niemand im Team hat ein verteiltes System in Produktion betrieben. Die Unternehmensleitung will innerhalb von zwei Quartalen weniger Vorfälle.

Optionen: Abrechnung jetzt in einen Service auslagern · Zuerst die Grenzen im Monolithen härten

gpt-5.6Konfidenz 94
Zuerst die Grenzen im Monolithen härtenDie Vorfälle werden in erster Linie durch unkontrollierten Datenbankzugriff verursacht, nicht durch das Fehlen einer Netzwerkgrenze. Setzen Sie die Zuständigkeit des Abrechnungsmoduls innerhalb des Monolithen durch: direkten Tabellenzugriff entfernen, eine schmale interne API bereitstellen, Datenbankberechtigungen oder Kontrollen auf Schemaebene einführen und Contract- und Integrationstests ergänzen. Das geht den Fehlermodus innerhalb des Zeitfensters von zwei Quartalen schnell an. Eine Auslagerung jetzt würde einem Team ohne Erfahrung mit verteilten Systemen zusätzliche Komplexität bei Deployment, Observability, Retries, Datenkonsistenz und Betrieb aufbürden. Sobald Zugriffswege und Datenhoheit explizit sind, wird eine Auslagerung sicherer und kann erneut erwogen werden, falls unabhängiges Skalieren oder Deployen dann noch einen Wert hat.
gemini-3.6-flashKonfidenz 90
Zuerst die Grenzen im Monolithen härtenDie Hauptursache der Ausfälle sind direkte Datenbankzugriffe anderer Module auf Abrechnungstabellen. Das Härten von Modulgrenzen löst dieses Problem direkt auf Ebene des bestehenden Monolithen. Da das 8-köpfige Team keine Erfahrung mit verteilten Systemen hat, würde eine sofortige Auslagerung neue Risiken schaffen und das Ziel, Vorfälle innerhalb von zwei Quartalen zu reduzieren, gefährden.
claude (dritte Stimme)Konfidenz 76
Zuerst die Grenzen im Monolithen härtenDie Vorfälle entstehen, weil andere Module direkt auf Abrechnungstabellen zugreifen. Eine Aufteilung in Services würde diese Grenze ebenfalls erzwingen, bringt aber Netzwerkfehler, verteilte Transaktionen und neuen Betriebsaufwand für ein Team ohne diese Erfahrung. Eine Modul-API und klare Tabellenzuständigkeit innerhalb des Monolithen durchzusetzen, behebt die Ursache schneller und hält die Option einer späteren Auslagerung offen.
EntscheidungZuerst die Grenzen im Monolithen härtenPfadeinstimmig 3:0Kosten$0.014
„Kann in unserem systematischen Review ein einzelner LLM-Screening-Durchgang den zweiten menschlichen Screener ersetzen?“
AUFGEZEICHNET 2026-10-13 · KIRAT_VOTE · AUFWANDSSTUFE: STANDARD · 1 RUNDE

Gesendeter Kontext: Titel-und-Abstract-Screening von etwa 3.000 Datensätzen für einen systematischen Review in der Versorgungsforschung, der veröffentlicht werden soll. Aktuelles Protokoll: zwei unabhängige menschliche Screener, Konflikte werden durch Diskussion gelöst. Die Personalzeit ist knapp. Der Review folgt PRISMA, und die Gutachter der Zeitschrift werden fragen, wie gescreent wurde. Eine relevante Studie zu übersehen (falscher Ausschluss) ist schlimmer, als eine irrelevante einzuschließen.

Optionen: Ja, den zweiten menschlichen Screener ersetzen · Das LLM als zusätzlichen Screener einsetzen; Menschen lösen Konflikte · Nein, bei zwei menschlichen Screenern bleiben, ohne LLM

gpt-5.6Konfidenz 94
Das LLM als zusätzlichen Screener einsetzen; Menschen lösen KonflikteEin einzelner LLM-Durchgang sollte das unabhängige menschliche Screening nicht ersetzen, wenn falsche Ausschlüsse das Hauptrisiko sind: Die Leistung kann je nach Thema, Prompt und Modellversion schwanken, und Fehler können systematisch sein. Nutzen Sie es, um Datensätze zu priorisieren oder Unstimmigkeiten zu markieren, aber verlangen Sie, dass Menschen Konflikte auflösen und Ausschlüsse bestätigen. Dokumentieren Sie Modell, Version, Prompt, Validierungsstichprobe und Entscheidungsablauf für das PRISMA-Reporting und die Reproduzierbarkeit.
gemini-3.6-flashKonfidenz 88
Das LLM als zusätzlichen Screener einsetzen; Menschen lösen KonflikteEin Hybridansatz reduziert den menschlichen Arbeitsaufwand bei 3.000 Titeln/Abstracts erheblich, bewahrt jedoch die von PRISMA und Peer-Reviewern geforderte methodische Rigorosität. Da Falsch-Exklusionen vermieden werden müssen, stellt die menschliche Auflösung aller Diskrepanzen (bzw. ein hoch-sensitiver Prompting-Ansatz) sicher, dass keine relevanten Studien verloren gehen.
claude (dritte Stimme)Konfidenz 70
Das LLM als zusätzlichen Screener einsetzen; Menschen lösen KonflikteFalsche Ausschlüsse sind der teure Fehler, und die Trefferquote (Recall) von LLMs beim Screening schwankt je nach Thema und Prompt. Wer den zweiten menschlichen Screener ersetzt, entfernt die Kontrolle, die genau diese Fehler auffängt, und kann das gegenüber den Gutachtern der Zeitschrift kaum vertreten. Das LLM als dritten Screener hinzuzunehmen und Konflikte von Menschen lösen zu lassen, hält das Protokoll vertretbar und markiert trotzdem wahrscheinlich übersehene Studien.
EntscheidungDas LLM als zusätzlichen Screener einsetzen; Menschen lösen KonfliktePfadeinstimmig 3:0Kosten$0.019

Aufgezeichnet am 13. Oktober 2026 mit kirat_vote auf der Standard-Aufwandsstufe; jede Sitzung dauerte unter 20 Sekunden und kostete unter zwei Cent. Fragen, Optionen und Kontext wurden auf Englisch gesendet und sind hier übersetzt, die Begründungen vollständig wiedergegeben. ChatGPT und Gemini antworteten teilweise auf Deutsch (Gemini viermal, ChatGPT einmal); diese Antworten stehen hier im Original, die übrigen sind aus dem Englischen übersetzt. Bei der Frage nach dem Free Tier unterlag Claude 2:1, und sein Einwand blieb im Protokoll. Die Konfidenzwerte sind jeweils die Selbsteinschätzung des Modells.

Fünf Code-Ausschnitte aus verschiedenen Bereichen, jeweils genau so gesendet, wie sie hier stehen. ChatGPT und Gemini prüfen parallel, Claude ergänzt zwei eigene Befunde, und jeder Befund wird von der jeweils anderen Modellfamilie gegengeprüft. Nur bestätigte Befunde zählen. Wählen Sie einen aus.

AUFGEZEICHNET 2026-10-13 · KIRAT_REVIEW · AUFWANDSSTUFE: STANDARD · 14 BESTÄTIGT, 0 VERWORFEN · $0.14

Schwerpunkt: Sicherheit und Korrektheit eines Zahlungs-Webhooks

Gesendeter Code:

// routes/webhooks.js — payment webhook of a solo invoicing SaaS (Node 20, Express 4, Stripe, pg)
const express = require('express');
const { db } = require('../db');
const router = express.Router();

router.post('/webhooks/stripe', express.json(), async (req, res) => {
  const event = req.body;

  if (event.type === 'invoice.paid') {
    const invoice = event.data.object;
    const userId = invoice.metadata.userId;
    await db.query('UPDATE users SET plan = $1, paid_until = $2 WHERE id = $3',
      ['pro', new Date(invoice.period_end * 1000), userId]);
    await db.query('INSERT INTO payments (user_id, amount) VALUES ($1, $2)',
      [userId, invoice.amount_paid / 100]);
  }

  if (event.type === 'customer.subscription.deleted') {
    await db.query("UPDATE users SET plan = 'free' WHERE stripe_customer = '" + event.data.object.customer + "'");
  }

  res.sendStatus(200);
});

module.exports = router;
  1. kritisch

    Der Webhook verarbeitet den Request-Body ohne Prüfung der Stripe-Signatur. Jeder externe Aufrufer kann dadurch gefälschte `invoice.paid`- oder `customer.subscription.deleted`-Events senden und Benutzerkonten freischalten beziehungsweise herabstufen. Der JSON-Parser verwirft außerdem den für die Stripe-Signaturprüfung benötigten unveränderten Raw-Body.

    Behebung: Für diese Route `express.raw({ type: 'application/json' })` verwenden und vor jeder Verarbeitung `stripe.webhooks.constructEvent(req.body, req.headers['stripe-signature'], webhookSecret)` aufrufen. Darauf achten, dass kein globaler JSON-Parser bereits vorher auf diese Route angewendet wird; ungültige Signaturen mit 400 ablehnen.

    Zeile 6 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  2. kritisch

    Fehlende Validierung der Stripe-Webhook-Signatur. Ein Angreifer kann beliebige gefälschte Webhook-Events an diesen Endpunkt senden, um Konten unberechtigt auf Pro zu setzen oder Datenbankeinträge zu manipulieren.

    Behebung: Verwende stripe.webhooks.constructEvent() mit dem Stripe-Webhook-Secret, um die Authentizität und Integrität jedes Events zu überprüfen.

    Zeile 6 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  3. kritisch

    SQL-Injection-Schwachstelle durch direkte Verkettung von Benutzereingaben (event.data.object.customer) in den SQL-Query-String.

    Behebung: Nutze parametrisierte Abfragen wie bei den vorherigen Statements: db.query('UPDATE users SET plan = $1 WHERE stripe_customer = $2', ['free', event.data.object.customer]).

    Zeile 18 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  4. kritisch

    Der Webhook prüft die Stripe-Signatur nie, und express.json() verwirft den Raw Body, der dafür nötig ist. Jeder kann ein gefälschtes Event vom Typ invoice.paid per POST senden und ein beliebiges Konto kostenlos auf pro hochstufen.

    Behebung: Auf dieser Route express.raw({ type: 'application/json' }) verwenden und das Event mit stripe.webhooks.constructEvent(req.body, req.headers['stripe-signature'], endpointSecret) erzeugen; die Anfrage ablehnen, wenn das fehlschlägt.

    Zeile 6 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  5. hoch

    Die Customer-ID wird direkt in ein SQL-Statement eingesetzt. Ein Wert wie `' OR 1=1 --` kann die WHERE-Klausel manipulieren und sämtliche Benutzer auf den kostenlosen Plan setzen; abhängig von der Datenbankkonfiguration sind weitergehende SQL-Injektionen möglich.

    Behebung: Die Abfrage vollständig parametrisieren: `UPDATE users SET plan = 'free' WHERE stripe_customer = $1` mit `[event.data.object.customer]`. Zusätzlich das Event per Stripe-Signatur authentifizieren.

    Zeile 19 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  6. hoch

    Es gibt keine Idempotenzkontrolle. Stripe stellt Webhooks mindestens einmal zu und wiederholt sie bei Timeouts oder Fehlern. Dasselbe `invoice.paid`-Event kann deshalb mehrfach identische Zahlungseinträge erzeugen.

    Behebung: Die Stripe-Event-ID oder Invoice-ID im Zahlungsdatensatz speichern, mit einem UNIQUE-Constraint absichern und Eventverarbeitung samt Zahlung atomar als Insert/Upsert ausführen. Bereits verarbeitete Events mit 200 bestätigen, ohne die Geschäftsoperation zu wiederholen.

    Zeile 14 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  7. hoch

    Der `async`-Handler besitzt keine Fehlerweiterleitung. Express 4 fängt abgelehnte Promises aus asynchronen Route-Handlern nicht automatisch ab. Ein DB-Fehler oder ein unvollständiges `invoice.paid`-Objekt führt daher zu einer unbehandelten Promise-Ablehnung und kann unter Node 20 den Prozess beenden, statt kontrolliert eine Fehlerantwort zu liefern.

    Behebung: Den Handler mit `try/catch` versehen und Fehler an `next(err)` weitergeben oder einen Async-Wrapper einsetzen. Eingabestruktur vor dem Zugriff validieren und bei temporären Verarbeitungsfehlern kontrolliert einen 5xx-Status zurückgeben, damit Stripe erneut zustellt.

    Zeile 6 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  8. hoch

    Verwendung von express.json() für den Webhook-Endpunkt parst den Body vorab als JSON. Für die Signaturprüfung von Stripe wird jedoch der unveränderte Raw-Body benötigt.

    Behebung: Nutze express.raw({ type: 'application/json' }) anstelle von express.json() für den Stripe-Webhook-Route-Handler.

    Zeile 6 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  9. mittel

    Benutzeraktualisierung und Zahlungseintrag sind zwei unabhängig bestätigte Datenbankoperationen. Scheitert das INSERT nach erfolgreichem UPDATE, erhält der Benutzer den Pro-Plan, obwohl kein korrespondierender Zahlungsdatensatz existiert.

    Behebung: Beide Operationen zusammen mit der Idempotenzmarkierung in einer Datenbanktransaktion auf demselben Client ausführen und bei jedem Fehler vollständig zurückrollen.

    Zeile 12 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  10. mittel

    Die Verarbeitung berücksichtigt nicht, dass Stripe Events außerhalb ihrer Erstellungsreihenfolge zustellen kann. Ein verspätetes älteres `invoice.paid` kann `paid_until` zurücksetzen; ein verspätetes `customer.subscription.deleted` kann einen inzwischen reaktivierten Benutzer erneut auf `free` setzen.

    Behebung: Den aktuellen Subscription-Zustand anhand stabiler Stripe-IDs abgleichen, beispielsweise durch Abruf bei Stripe, und Zustandsübergänge beziehungsweise den letzten verarbeiteten Event-Zeitpunkt persistieren. `paid_until` mindestens nur vorwärts aktualisieren und Lösch-Events nicht blind auf den aktuellen Benutzerzustand anwenden.

    Zeile 12 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  11. mittel

    `amount_paid / 100` setzt ungeprüft voraus, dass die Währung genau zwei Dezimalstellen hat. Das ist etwa für JPY falsch. Zudem wird die Währung nicht mitgespeichert, wodurch der Betrag im Zahlungsdatensatz ohne eindeutige Einheit ist.

    Behebung: Beträge vorzugsweise unverändert in der kleinsten Währungseinheit zusammen mit `invoice.currency` speichern. Falls Hauptwährungseinheiten benötigt werden, die Umrechnung anhand der jeweiligen Währungsexponenten durchführen.

    Zeile 15 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  12. mittel

    Fehlendes Exception-Handling in einer asynchronen Express-4-Route. Bei einem Datenbankfehler oder fehlenden Feldern führt dies zu einer Unhandled Promise Rejection, die die Anwendung abstürzen lassen kann.

    Behebung: Füge einen try-catch-Block hinzu und passe Fehler an next(err) weiter oder verwende ein Utility wie express-async-handler.

    Zeile 6 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  13. mittel

    Keine Validierung auf Vorhandensein von invoice.metadata.userId. Wenn das Feld metadata oder userId fehlt oder undefined ist, schlagen die SQL-Queries fehl oder arbeiten mit ungültigen Werten.

    Behebung: Prüfe vor Ausführung der Datenbankabfragen explizit, ob invoice.metadata und invoice.metadata.userId vorhanden und gültig sind.

    Zeile 10 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  14. mittel

    Stripe wiederholt Webhooks und kann dasselbe Event mehr als einmal zustellen. Jede Zustellung legt eine weitere Zahlungszeile an, sodass Umsatzberichte doppelt zählen.

    Behebung: event.id (oder die Rechnungs-ID) mit einem Unique Constraint speichern und Events überspringen, die bereits verarbeitet wurden.

    Zeile 14 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

AUFGEZEICHNET 2026-10-13 · KIRAT_REVIEW · AUFWANDSSTUFE: STANDARD · 21 BESTÄTIGT, 0 VERWORFEN · $0.17

Schwerpunkt: Sicherheit und Korrektheit eines WooCommerce-Import-Plugins

Gesendeter Code:

<?php
// erp-import.php — custom plugin: imports the ERP's CSV export into WooCommerce (WordPress 6, WooCommerce 9)
add_action('wp_ajax_erp_import', 'erp_import');
add_action('wp_ajax_nopriv_erp_import', 'erp_import');

function erp_import() {
    global $wpdb;
    $path = $_POST['file'];
    $rows = array_map('str_getcsv', file($path));

    foreach ($rows as $row) {
        [$sku, $name, $price, $stock] = $row;
        $id = $wpdb->get_var("SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_sku' AND meta_value = '$sku'");
        if (!$id) continue;
        update_post_meta($id, '_price', $price);
        update_post_meta($id, '_regular_price', $price);
        update_post_meta($id, '_stock', $stock);
        wp_update_post(['ID' => $id, 'post_title' => $name]);
    }
    echo 'Imported ' . count($rows) . ' rows';
    wp_die();
}
  1. kritisch

    Der Import ist über `wp_ajax_nopriv_erp_import` öffentlich erreichbar; auch beim authentifizierten Hook fehlen Capability- und Nonce-Prüfungen. Dadurch können anonyme Benutzer beziehungsweise CSRF-Angriffe Produktnamen, Preise und Bestände verändern.

    Behebung: Den `nopriv`-Hook entfernen, vor jeder Verarbeitung eine geeignete Capability wie `manage_woocommerce` prüfen und die Anfrage mit `check_ajax_referer()` absichern.

    Zeile 3 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  2. kritisch

    Der Hook wp_ajax_nopriv_erp_import gewährt unauthentifizierten Besuchern Zugriff auf die Import-Funktion.

    Behebung: Den nopriv-Hook entfernen und die Berechtigung mittels current_user_can('manage_options') prüfen.

    Zeile 4 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  3. kritisch

    Der Dateipfad aus $_POST['file'] wird ungeprüft an file() übergeben, was Path Traversal und Arbitrary File Read (LFI) ermöglicht.

    Behebung: Dateiuploads über $_FILES abwickeln oder den Eingabepfad strikt auf zugelassene Verzeichnisse (z. B. wp_upload_dir()) validieren.

    Zeile 7 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  4. kritisch

    SQL-Injection-Schwachstelle, da $sku unbereinigt direkt in die SQL-Abfrage eingefügt wird.

    Behebung: Prepared Statements mit $wpdb->prepare() nutzen.

    Zeile 11 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  5. kritisch

    Der Import ist für wp_ajax_nopriv registriert, und es gibt weder eine Capability-Prüfung noch eine Nonce. Wer die Seite besucht, kann ihn auslösen und Preise, Lagerbestände und Produktnamen überschreiben.

    Behebung: Den nopriv-Hook entfernen, current_user_can('manage_woocommerce') prüfen und mit check_ajax_referer() eine Nonce verifizieren, bevor irgendetwas geschieht.

    Zeile 4 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  6. hoch

    Der vom Client gelieferte Pfad wird ungeprüft an `file()` übergeben. Damit können beliebige lesbare lokale Dateien und – abhängig von `allow_url_fopen` – externe oder interne URLs verarbeitet werden, was unerwünschte Datei-Zugriffe und Blind-SSRF ermöglicht.

    Behebung: Keine frei wählbaren Pfade akzeptieren. Nur serverseitig bekannte Upload-IDs verwenden, den kanonischen Pfad gegen ein festes Importverzeichnis prüfen und ausschließlich reguläre lokale CSV-Dateien erlauben.

    Zeile 8 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  7. hoch

    `$sku` stammt aus der CSV und wird direkt in SQL interpoliert. Ein SKU-Wert mit SQL-Metazeichen kann die Abfrage manipulieren und unter anderem eine beliebige Post-ID als Aktualisierungsziel auswählen.

    Behebung: Die Abfrage mit `$wpdb->prepare()` parametrisieren, beispielsweise mit `meta_value = %s`, oder die WooCommerce-Funktion zur Produktsuche anhand der SKU verwenden.

    Zeile 13 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  8. hoch

    `file()` lädt die komplette Eingabe in den Speicher und `array_map()` erzeugt zusätzlich das vollständige geparste Array. Ohne Größenlimit kann eine große oder endlose entfernte Ressource Speicher, Laufzeit und PHP-Worker erschöpfen; die öffentliche Erreichbarkeit verschärft dies.

    Behebung: Dateigröße und Zeilenzahl begrenzen, die Datei lokal mit `fopen()` öffnen und Datensätze streaming-basiert über `fgetcsv()` verarbeiten. Zusätzlich Rate-Limits beziehungsweise einen kontrollierten Hintergrundjob einsetzen.

    Zeile 9 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  9. hoch

    Fehlende CSRF-Absicherung (Nonce-Validierung).

    Behebung: Zu Beginn der Funktion check_ajax_referer() aufrufen.

    Zeile 6 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  10. hoch

    Der Dateipfad kommt direkt aus der Anfrage und wird an file() übergeben. Angreifende können jede Datei lesen, die der Webserver lesen kann, oder eine entfernte URL, wenn allow_url_fopen aktiviert ist.

    Behebung: Eine hochgeladene Datei über wp_handle_upload() annehmen oder nur aus einem einzigen festen Importverzeichnis lesen; niemals einen Pfad aus der Anfrage übernehmen.

    Zeile 8 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  11. mittel

    Es wird vorausgesetzt, dass jede Zeile exakt vier verwertbare Spalten besitzt. Leere oder beschädigte Zeilen liefern fehlende Werte, wodurch Warnungen entstehen und Name, Preis oder Bestand unbeabsichtigt auf leere Werte gesetzt werden können.

    Behebung: Vor der Destrukturierung Spaltenzahl und Pflichtfelder prüfen, leere Zeilen überspringen und fehlerhafte Datensätze mit einer klaren Fehlermeldung ablehnen.

    Zeile 12 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  12. mittel

    Die Kombination aus `file()` und `str_getcsv()` parst jede physische Zeile separat. Gültige CSV-Felder mit eingebetteten Zeilenumbrüchen werden dadurch in mehrere fehlerhafte Datensätze zerlegt.

    Behebung: Die CSV als Stream mit `fgetcsv()` lesen; diese Funktion verarbeitet mehrzeilige, korrekt quotierte Felder über Datensatzgrenzen hinweg.

    Zeile 9 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  13. mittel

    Preis und Bestand werden ungeprüft als beliebige Strings gespeichert. Nichtnumerische Werte, falsche Dezimalformate oder unzulässige Bestände können die Produktdaten beschädigen und zu inkonsistenten Berechnungen führen.

    Behebung: Preis und Bestand vor dem Schreiben validieren und mit WooCommerce-Helfern wie `wc_format_decimal()` und `wc_stock_amount()` normalisieren; ungültige oder fachlich unzulässige Werte zurückweisen.

    Zeile 15 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  14. mittel

    WooCommerce-Daten werden direkt als Post-Meta geändert. Dadurch werden zugehörige Zustände wie `_stock_status`, Produkt-Lookup-Tabellen und gegebenenfalls Caches nicht zuverlässig mit den neuen Preisen und Beständen synchronisiert.

    Behebung: Das Produkt über `wc_get_product()` laden, die CRUD-Methoden wie `set_regular_price()`, `set_price()` und `set_stock_quantity()` verwenden, den Bestandsstatus beziehungsweise `manage_stock` fachlich setzen und anschließend `save()` aufrufen.

    Zeile 15 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  15. mittel

    Die SKU-Suche betrachtet sämtliche Post-Metadaten und prüft weder Post-Typ noch, ob die gefundene ID tatsächlich ein WooCommerce-Produkt oder eine Variation ist. Bei doppelten oder zweckfremden `_sku`-Metadaten wird außerdem ein nicht deterministischer Treffer aktualisiert.

    Behebung: `wc_get_product_id_by_sku()` verwenden und das Ergebnis anschließend mit `wc_get_product()` sowie dem erwarteten Produkttyp validieren; doppelte SKUs als Importfehler behandeln.

    Zeile 13 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  16. mittel

    Rückgabewerte von `update_post_meta()` und `wp_update_post()` werden ignoriert. Der Import kann teilweise scheitern oder abbrechen, meldet aber dennoch die Gesamtzahl gelesener Zeilen als erfolgreich importiert.

    Behebung: Erfolg und Fehler pro Produkt erfassen, `wp_update_post(..., true)` verwenden, nur tatsächlich aktualisierte Datensätze zählen und eine strukturierte Fehlerantwort ausgeben. Für große Importe einen wiederaufnehmbaren Hintergrundjob vorsehen.

    Zeile 15 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  17. mittel

    Für jede CSV-Zeile werden mindestens eine Suchabfrage und mehrere einzelne Schreiboperationen synchron ausgeführt. Große Importe verursachen dadurch viele Datenbank-Roundtrips, können in ein Request-Timeout laufen und einen nur teilweise aktualisierten Katalog hinterlassen.

    Behebung: Den Import in begrenzten Batches als Hintergrundprozess ausführen, SKUs gesammelt auflösen und Fortschritt sowie Wiederaufnahmezustand speichern.

    Zeile 11 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  18. mittel

    file() liest die komplette Datei auf einmal in den Arbeitsspeicher, was bei großen CSV-Dateien zu Memory-Exhaustion-Fehlern führt.

    Behebung: Datei zeilenweise per fopen() und fgetcsv() streamen.

    Zeile 8 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  19. mittel

    Das Array-Destructuring setzt voraus, dass jede Zeile mindestens 4 Elemente enthält; andernfalls kommt es zu PHP-Warnings oder Uninitialized Index Errors.

    Behebung: Vor dem Entpacken mit count($row) prüfen, ob ausreichend Spalten vorhanden sind.

    Zeile 10 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  20. mittel

    Datenbankabfragen und Post-Updates erfolgen einzeln in einer Schleife (N+1-Problem), was die Ausführungszeit stark verlangsamt.

    Behebung: Import in Batches aufteilen und Abfragen/Updates bündeln.

    Zeile 11 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  21. niedrig

    Fehler von `file()` werden nicht geprüft. Bei einem fehlenden, unlesbaren oder nicht unterstützten Pfad liefert `file()` `false`, worauf `array_map()` unter aktuellen PHP-Versionen einen `TypeError` auslösen kann.

    Behebung: Öffnen und Lesen explizit prüfen, PHP-Warnungen nicht als Kontrollfluss verwenden und bei Fehlern eine passende HTTP- beziehungsweise `wp_send_json_error()`-Antwort zurückgeben.

    Zeile 9 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

AUFGEZEICHNET 2026-10-13 · KIRAT_REVIEW · AUFWANDSSTUFE: STANDARD · 14 BESTÄTIGT, 0 VERWORFEN · $0.11

Schwerpunkt: Sicherheit und Korrektheit eines Bestell- und Zahlungsablaufs

Gesendeter Code:

// routes/order.js — order endpoint of the bakery's ordering page (Node 20, Express 4, pg)
const express = require('express');
const { pool } = require('../db');
const { sendConfirmation } = require('../mail');
const router = express.Router();

router.post('/order', async (req, res) => {
  const { cakeId, pickupDate, name, email, price, note } = req.body;

  const cake = await pool.query(`SELECT * FROM cakes WHERE id = ${cakeId}`);
  if (!cake.rows.length) return res.status(404).send('Unknown cake');

  const order = await pool.query(
    'INSERT INTO orders (cake_id, pickup_date, name, email, amount, note) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id',
    [cakeId, pickupDate, name, email, price, note]
  );

  sendConfirmation(email, order.rows[0].id);
  res.redirect(`/pay?order=${order.rows[0].id}&amount=${price}`);
});

module.exports = router;
  1. kritisch

    cakeId wird direkt in den SQL-String interpoliert. Ein Angreifer kann SQL-Ausdrücke oder zusätzliche Anweisungen einschleusen und dadurch Daten lesen beziehungsweise verändern oder die Datenbank belasten.

    Behebung: Auch diese Abfrage parametrisieren, z. B. `SELECT ... FROM cakes WHERE id = $1` mit `[cakeId]`, und cakeId zusätzlich auf den erwarteten Typ prüfen.

    Zeile 10 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  2. kritisch

    SQL-Injection-Schwachstelle durch direkte Template-String-Interpolation von cakeId in der SQL-Abfrage.

    Behebung: Verwende eine parametrisierte SQL-Abfrage: pool.query('SELECT * FROM cakes WHERE id = $1', [cakeId]).

    Zeile 9 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  3. kritisch

    Clientseitige Preismanipulation möglich. Der Preis wird aus req.body übernommen und direkt gespeichert sowie verarbeitet.

    Behebung: Lese den Preis serverseitig aus der Datenbank (cake.rows[0].price) ab und vertraue nicht dem vom Client gesendeten Wert.

    Zeile 8 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  4. kritisch

    cakeId aus dem Request-Body wird in den SQL-String interpoliert: SQL-Injection.

    Behebung: Eine parametrisierte Abfrage verwenden: SELECT * FROM cakes WHERE id = $1.

    Zeile 10 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  5. hoch

    Der zu speichernde und an den Zahlungsfluss übergebene Betrag stammt vollständig aus `req.body.price`. Ein Kunde kann für einen beliebigen Kuchen einen manipulierten, negativen oder sehr kleinen Betrag eintragen.

    Behebung: Den Preis ausschließlich serverseitig aus dem ausgewählten Kuchen beziehungsweise einer unveränderlichen Preisversion ermitteln. Beim Zahlungsanbieter eine serverseitige Payment-Session mit diesem Betrag erzeugen und den erwarteten Betrag bei der Zahlungsbestätigung erneut serverseitig prüfen.

    Zeile 16 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  6. hoch

    Die Bestellung wird angelegt und eine Bestätigung versandt, bevor irgendeine erfolgreiche Zahlung nachgewiesen wurde. Abgebrochene oder absichtlich nicht bezahlte Vorgänge erscheinen dadurch als bestätigte Bestellungen und können beliebig erzeugt werden.

    Behebung: Bestellungen zunächst mit einem Status wie `pending_payment` anlegen. Erst nach einer authentifizierten, idempotent verarbeiteten Zahlungsanbieter-Benachrichtigung auf `paid` wechseln und dann die Bestätigung versenden beziehungsweise Produktion oder Reservierung auslösen.

    Zeile 19 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  7. hoch

    Fehlende Fehlerbehandlung in asynchroner Express-4-Route. Datenbank- oder Laufzeitfehler führen zu unbehandelten Promise Rejections.

    Behebung: Verwende einen try/catch-Block und leite Fehler mit next(err) weiter oder nutze ein Paket wie express-async-errors.

    Zeile 8 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  8. hoch

    Der Betrag wird vom Client übernommen (price im Request-Body), sodass ein Kunde seinen eigenen Preis festlegen kann.

    Behebung: Den Preis serverseitig aus der Zeile in cakes lesen und jeden Wert vom Client ignorieren.

    Zeile 15 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  9. mittel

    Der asynchrone Handler besitzt keine Fehlerweiterleitung. Express 4 verarbeitet abgelehnte Promises aus `async`-Handlern nicht automatisch; Datenbank- oder synchrone Mailfehler können daher zu unbeantworteten Requests und unhandled rejections führen.

    Behebung: Den Handler mit `try/catch` umgeben und Fehler an `next(err)` weiterreichen oder einen etablierten Async-Wrapper verwenden. Zusätzlich eine zentrale Fehlerbehandlung konfigurieren.

    Zeile 7 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  10. mittel

    Das Ergebnis von `sendConfirmation` wird weder awaited noch anderweitig auf Fehler behandelt. Eine Promise-Ablehnung kann unhandled bleiben; zugleich erhält der Client bereits eine Erfolgsantwort, obwohl der Mailversand fehlgeschlagen sein kann.

    Behebung: Den Versand nach bestätigter Zahlung über eine persistente Outbox beziehungsweise Job-Queue mit Wiederholungen ausführen. Mindestens die Promise awaiten und Fehler kontrolliert protokollieren beziehungsweise behandeln.

    Zeile 19 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  11. mittel

    Es gibt keinen Idempotenzschutz. Browser-Wiederholungen, Doppelklicks oder Netzwerk-Retries erzeugen jeweils eine neue Bestellung und gegebenenfalls mehrere Bestätigungen beziehungsweise Zahlungsversuche.

    Behebung: Eine Idempotency-Key- oder Checkout-Session-ID akzeptieren, sie mit einem Unique Constraint absichern und bei Wiederholungen die bereits vorhandene Bestellung zurückgeben.

    Zeile 13 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  12. mittel

    pickupDate, name, email, price und note werden ohne fachliche oder syntaktische Validierung verarbeitet. So können etwa vergangene oder ungültige Abholtermine, fehlende Kundendaten und ungeeignete Feldwerte gespeichert werden; Datenbankfehler treten zudem erst spät und unkontrolliert auf.

    Behebung: Ein Request-Schema mit Typen, Pflichtfeldern, Längenlimits und normalisierten Formaten verwenden. Abholtermine gegen Zeitzone, Vorlaufzeit und zulässige Öffnungs- beziehungsweise Kapazitätsregeln prüfen; den Preis nicht als Client-Eingabe akzeptieren.

    Zeile 8 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  13. mittel

    Asynchroner Aufruf von sendConfirmation wird weder mit await erwartet noch auf Fehler abgefangen.

    Behebung: Setze await vor sendConfirmation und behandle mögliche Fehler beim E-Mail-Versand.

    Zeile 17 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  14. niedrig

    Unvollständige Eingabevalidierung für Felder wie email, pickupDate, name und note.

    Behebung: Implementiere eine Schema-Validierung (z. B. mit Zod oder express-validator) vor der Verarbeitung der Anfragedaten.

    Zeile 8 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

AUFGEZEICHNET 2026-10-13 · KIRAT_REVIEW · AUFWANDSSTUFE: STANDARD · 16 BESTÄTIGT, 0 VERWORFEN · $0.14

Schwerpunkt: Korrektheit und Datenintegrität einer Abrechnungsfunktion

Gesendeter Code:

// billing/applyCredit.ts — billing module in the monolith (TypeScript, node-postgres)
import { pool } from '../db';

export async function applyCredit(customerId: string, invoiceId: string, creditCents: number) {
  const inv = await pool.query('SELECT total_cents, status FROM invoices WHERE id = $1', [invoiceId]);
  const balance = await pool.query('SELECT credit_cents FROM customers WHERE id = $1', [customerId]);

  const available = balance.rows[0].credit_cents;
  if (creditCents > available) throw new Error('Not enough credit');

  const newTotal = inv.rows[0].total_cents - creditCents;
  await pool.query('UPDATE invoices SET total_cents = $1 WHERE id = $2', [newTotal, invoiceId]);
  await pool.query('UPDATE customers SET credit_cents = credit_cents - $1 WHERE id = $2', [creditCents, customerId]);

  if (newTotal <= 0) {
    await pool.query("UPDATE invoices SET status = 'paid' WHERE id = $1", [invoiceId]);
  }
  return newTotal * 1.19 / 100;
}
  1. kritisch

    Fehlende Datenbanktransaktion und Zeilensperre. Bei parallelen Anfragen kann es zu Race Conditions (z. B. Double Spending von Guthaben) und unvollständigen Updates im Fehlerfall kommen.

    Behebung: Verwende einen Client aus dem Pool mit BEGIN/COMMIT und nutze SELECT FOR UPDATE, um Zeilen atomar zu sperren und zu aktualisieren.

    Zeile 5 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  2. hoch

    Die drei zusammengehörigen Updates werden nicht in einer Datenbanktransaktion ausgeführt. Schlägt die Abbuchung des Kundenguthabens oder die Statusänderung fehl, kann die Rechnung bereits reduziert sein, ohne dass das Guthaben korrekt belastet beziehungsweise der Status gesetzt wurde.

    Behebung: Einen dedizierten Client aus dem Pool beziehen und alle Prüfungen sowie Updates zwischen BEGIN und COMMIT ausführen; bei jedem Fehler ROLLBACK verwenden.

    Zeile 11 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  3. hoch

    Die Rechnung wird erst gelesen und später mit einem absolut berechneten Wert überschrieben. Zwei parallele Aufrufe können denselben Ausgangswert lesen und sich anschließend gegenseitig überschreiben; beide Guthabenabbuchungen erfolgen dennoch, während nur eine Gutschrift vollständig in der Rechnung sichtbar bleibt.

    Behebung: Die betroffene Rechnung innerhalb derselben Transaktion mit SELECT ... FOR UPDATE sperren oder den Betrag atomar per UPDATE ... SET total_cents = total_cents - $1 mit geeigneten Bedingungen ändern.

    Zeile 4 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  4. hoch

    Prüfung und Abbuchung des Kundenguthabens sind nicht atomar. Parallele Aufrufe können beide dieselbe verfügbare Deckung sehen und das Guthaben anschließend unter null reduzieren.

    Behebung: Den Kundendatensatz transaktional sperren oder ein bedingtes UPDATE verwenden, etwa UPDATE customers SET credit_cents = credit_cents - $1 WHERE id = $2 AND credit_cents >= $1 RETURNING credit_cents, und genau eine zurückgegebene Zeile verlangen.

    Zeile 8 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  5. hoch

    Es wird nicht geprüft, ob die Rechnung dem angegebenen Kunden gehört. Dadurch kann Guthaben eines Kunden auf eine beliebige über invoiceId bezeichnete Rechnung angewendet werden.

    Behebung: Rechnung und Kunde über die Eigentümerbeziehung abfragen und aktualisieren, beispielsweise mit WHERE invoices.id = $1 AND invoices.customer_id = $2; bei fehlender Übereinstimmung abbrechen.

    Zeile 4 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  6. hoch

    Der anzuwendende Kredit wird nicht auf den offenen Rechnungsbetrag begrenzt. Ist creditCents größer als total_cents, wird ein negativer Rechnungsbetrag gespeichert und überschüssiges Kundenguthaben verbraucht.

    Behebung: Nur Beträge bis zum offenen Rechnungswert zulassen oder den tatsächlich verwendeten Betrag als min(creditCents, total_cents) bestimmen und ausschließlich diesen vom Kundenguthaben abbuchen.

    Zeile 10 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  7. hoch

    Negative, nicht ganzzahlige oder nicht sicher darstellbare Werte werden nicht abgewiesen. Insbesondere erhöht ein negativer creditCents-Wert den Rechnungsbetrag und zugleich durch die Subtraktion eines negativen Werts das Kundenguthaben.

    Behebung: Vor Datenbankzugriffen Number.isSafeInteger(creditCents) && creditCents > 0 verlangen; Geldbeträge durchgehend als ganzzahlige Centwerte behandeln.

    Zeile 8 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  8. hoch

    Der gelesene Rechnungsstatus wird vollständig ignoriert. Damit kann Guthaben auch auf bereits bezahlte, stornierte oder anderweitig nicht mehr änderbare Rechnungen angewendet werden; ein bereits bezahlter Beleg kann dadurch negativ werden.

    Behebung: Zulässige Ausgangsstatus explizit definieren und atomar in der UPDATE-Bedingung prüfen, beispielsweise AND status = 'open'. Bei keinem Treffer den Vorgang abbrechen.

    Zeile 4 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  9. hoch

    Zugriff auf balance.rows[0] und inv.rows[0] ohne Vorabprüfung. Wenn ein Kunde oder eine Rechnung nicht gefunden wird, stürzt die Anwendung mit einem Unhandled TypeError ab.

    Behebung: Prüfe inv.rows.length und balance.rows.length vor dem Zugriff und wirf eine explizite Fehlermeldung.

    Zeile 8 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  10. hoch

    Fehlende Validierung für creditCents auf negative Werte. Ein negativer Wert hebelt die Prüfung (creditCents > available) aus und führt zu fehlerhaften Guthaben- oder Rechnungsanpassungen.

    Behebung: Stelle sicher, dass creditCents eine positive Ganzzahl größer als 0 ist.

    Zeile 9 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  11. hoch

    Die Lesezugriffe und die drei Updates laufen außerhalb einer Transaktion und ohne Zeilensperren. Zwei gleichzeitige Aufrufe können beide die Guthabenprüfung bestehen und dasselbe Guthaben zweimal verbrauchen, und ein Absturz zwischen den Updates hinterlässt Rechnung und Guthabenstand inkonsistent.

    Behebung: Alles in einer Transaktion auf einem einzigen Client ausführen, die Zeilen mit SELECT ... FOR UPDATE sperren und erst committen, wenn alle Updates erfolgreich waren.

    Zeile 5 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  12. hoch

    Die Funktion prüft nie, ob die Rechnung zum Kundenkonto gehört oder ob sie noch offen ist. Guthaben eines Kundenkontos kann auf die Rechnung eines anderen Kundenkontos angerechnet werden oder auf eine Rechnung, die bereits bezahlt ist.

    Behebung: Die Rechnung mit WHERE id = $1 AND customer_id = $2 AND status = 'open' abfragen und mit einem Fehler abbrechen, wenn keine Zeile zurückkommt.

    Zeile 11 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  13. mittel

    Die Existenz von Rechnung und Kunde wird nicht geprüft. Bei unbekannten IDs führen Zugriffe auf rows[0] zu Laufzeitfehlern statt zu einem kontrollierten fachlichen Fehler; außerdem werden beide Abfragen unnötig ausgeführt, bevor dies auffällt.

    Behebung: rowCount beziehungsweise rows.length für beide Abfragen prüfen und einen definierten Not-found-Fehler auslösen; die Prüfung in die Transaktion und möglichst in eine relationale Abfrage integrieren.

    Zeile 4 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  14. mittel

    Der Rückgabewert entspricht weder dem gespeicherten Centbetrag noch einer einfachen Umrechnung in die Hauptwährung: Er addiert pauschal 19 Prozent und verwendet Fließkommaarithmetik. Dadurch kann der Aufrufer einen steuerlich und rundungstechnisch anderen Wert erhalten als den tatsächlich gespeicherten Rechnungsrest.

    Behebung: Den verbleibenden Betrag in Cent unverändert zurückgeben oder einen klar typisierten Rückgabewert definieren. Falls Steuerberechnung fachlich erforderlich ist, Steuersatz und Rundungsregel aus den Rechnungsdaten beziehen und mit Integer- oder Decimal-Arithmetik berechnen.

    Zeile 17 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  15. mittel

    Verwendung von IEEE 754-Gleitkomma-Arithmetik (newTotal * 1.19 / 100) für Finanzberechnungen. Dies führt zu Präzisions- und Rundungsfehlern.

    Behebung: Rechne durchgehend in Cents mit Ganzzahlen (BigInt/Math.round) oder verwende eine Library für exakte Dezimalarithmetik.

    Zeile 18 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  16. niedrig

    Separierter UPDATE-Befehl für den Rechnungsstatus erzeugt unnötige Datenbank-Roundtrips.

    Behebung: Führe die Aktualisierung von total_cents und status in einer einzigen UPDATE-Abfrage zusammen.

    Zeile 12 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

AUFGEZEICHNET 2026-10-13 · KIRAT_REVIEW · AUFWANDSSTUFE: STANDARD · 11 BESTÄTIGT, 0 VERWORFEN · $0.09

Schwerpunkt: Korrektheit einer Screening-Auswertung für ein systematisches Review

Gesendeter Code:

# screening/agreement.py — compares two screeners' include/exclude decisions (Python 3.12, pandas)
import pandas as pd

a = pd.read_csv('screener_a.csv')   # columns: record_id, decision ('include'/'exclude')
b = pd.read_csv('screener_b.csv')

merged = a.merge(b, on='record_id', suffixes=('_a', '_b'))

agree = (merged.decision_a == merged.decision_b).mean()
p_inc_a = (merged.decision_a == 'include').mean()
p_inc_b = (merged.decision_b == 'include').mean()
expected = p_inc_a * p_inc_b + (1 - p_inc_a) * (1 - p_inc_b)
kappa = (agree - expected) / (1 - expected)

conflicts = merged[merged.decision_a != merged.decision_b]
excluded = merged[merged.decision_a == 'exclude']

print(f'Records screened: {len(a)}')
print(f"Cohen's kappa: {kappa:.2f}")
excluded.record_id.to_csv('excluded.csv', index=False)
conflicts.to_csv('conflicts.csv', index=False)
  1. hoch

    Der standardmäßige Inner Join entfernt alle record_id-Werte, die nur in einer der beiden Dateien vorkommen. Kappa und Konflikte werden dadurch nur für die Schnittmenge berechnet, ohne fehlende Screenings sichtbar zu machen. Gleichzeitig meldet „Records screened“ in Zeile 18 die Länge von a statt der tatsächlich analysierten Schnittmenge.

    Behebung: Einen Outer Join mit merge-Indikator verwenden, die ID-Mengen explizit vergleichen und fehlende Entscheidungen separat melden bzw. als Datenfehler behandeln. Für jede Kennzahl den tatsächlich verwendeten Nenner ausgeben.

    Zeile 7 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  2. hoch

    Die Eindeutigkeit von record_id wird nicht geprüft. Doppelte IDs führen beim Merge zu einem Many-to-many-kartesischen Produkt und gewichten einzelne Studien mehrfach, wodurch Übereinstimmung, Prävalenzen, Kappa und Ausgabedateien verfälscht werden.

    Behebung: Vor dem Merge in beiden Dateien record_id auf Nicht-Nullheit und Eindeutigkeit prüfen und bei Duplikaten abbrechen. Zusätzlich merge(..., validate='one_to_one') verwenden.

    Zeile 7 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  3. hoch

    Entscheidungswerte werden nicht validiert. Fehlwerte, Tippfehler, Groß-/Kleinschreibung oder weitere Kategorien werden bei der Berechnung der Include-Prävalenz implizit wie „exclude“ behandelt, während die beobachtete Übereinstimmung exakte Werte vergleicht. Damit entspricht die Berechnung nicht mehr einem binären Cohen-Kappa und kann widersprüchliche Resultate liefern.

    Behebung: decision vor der Analyse kontrolliert normalisieren und sicherstellen, dass jeder Wert genau 'include' oder 'exclude' ist. Fehlende oder unbekannte Werte als Datenfehler bzw. unvollständiges Screening separat behandeln.

    Zeile 9 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  4. hoch

    excluded enthält alle von Screener A ausgeschlossenen Datensätze, einschließlich Konflikten, bei denen Screener B „include“ entschieden hat. Solche Datensätze werden somit gleichzeitig nach excluded.csv und conflicts.csv geschrieben. Falls excluded.csv die endgültig ausgeschlossenen Treffer darstellen soll, können ungeklärte Konflikte fälschlich aus dem Review entfernt werden.

    Behebung: Ohne dokumentierte Vorrangregel nur übereinstimmende Ausschlüsse auswählen, also (decision_a == 'exclude') & (decision_b == 'exclude'). Konflikte bis zur Konsensentscheidung ausschließlich in conflicts.csv halten.

    Zeile 16 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  5. hoch

    Fälschliche Filterung der ausgeschlossenen Studien: 'excluded' berücksichtigt ausschließlich die Entscheidung von Screener A ('merged.decision_a == "exclude"'). Liegt ein Konflikt vor (Screener A schließt aus, Screener B schließt ein), wird die Studie fälschlicherweise als ausgeschlossen gewertet.

    Behebung: Ausschlüsse nur dann exportieren, wenn beide Screener übereinstimmend 'exclude' gewählt haben (z. B. '(merged.decision_a == "exclude") & (merged.decision_b == "exclude")'), oder die Konfliktklärung abwarten.

    Zeile 16 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  6. hoch

    excluded.csv enthält jeden Datensatz, den Screener A ausgeschlossen hat, einschließlich der Konflikte, in denen Screener B ihn eingeschlossen hat. Diese Datensätze fallen vor der Konfliktbesprechung heraus, und genau das ist der falsche Ausschluss, den das Protokoll vermeiden muss.

    Behebung: Nur Datensätze ausschließen, die beide Screener ausgeschlossen haben: merged[(merged.decision_a == 'exclude') & (merged.decision_b == 'exclude')]; jeden Konflikt zuerst in die Klärung geben.

    Zeile 16 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  7. mittel

    Wenn beide Screener ausschließlich dieselbe Kategorie verwenden, ist expected gleich 1 und der Nenner von Kappa gleich 0. Das Ergebnis wird NaN bzw. kann eine Division-durch-null-Warnung erzeugen; die formatierte Ausgabe „nan“ erklärt nicht, dass Kappa mathematisch nicht definiert ist. Auch eine leere analysierte Schnittmenge führt zu nicht aussagekräftigen NaN-Kennzahlen.

    Behebung: Vor der Division prüfen, ob überhaupt gepaarte gültige Entscheidungen vorliegen und ob 1 - expected größer als 0 ist. In degenerierten Fällen Kappa explizit als „nicht definiert“ ausweisen und die zugrunde liegenden Häufigkeiten berichten.

    Zeile 13 · gefunden von gpt-5.6 · bestätigt von gemini-3.6-flash

  8. mittel

    Mögliche Division durch Null bei Cohen's Kappa, wenn der erwartete Zufallswert 'expected' gleich 1 ist (z. B. wenn beide Screener für 100% der Datensätze dieselbe Kategorie wählen).

    Behebung: Vor der Berechnung abfangen, ob '1 - expected == 0' ist, und in diesem Fall einen definierten Wert (z. B. 1.0 oder NaN) zuweisen.

    Zeile 12 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  9. mittel

    Stummes Verwerfen von Datensätzen durch den Standard-Inner-Join. Wenn Screener A und Screener B unterschiedliche Mengen an 'record_id's bewertet haben, werden Unstimmigkeiten bei den bearbeiteten Studien nicht gemeldet. Zudem entspricht 'len(a)' in der Konsolenausgabe dann nicht der Anzahl tatsächlich gematchter Studien.

    Behebung: Prüfen, ob 'len(a) == len(b) == len(merged)' gilt, oder einen Outer Join durchführen, um unvollständig bewertete Datensätze explizit anzuzeigen.

    Zeile 7 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

  10. mittel

    Der Inner Merge verwirft stillschweigend Datensätze, über die nur ein Screener entschieden hat, und die ausgegebene Anzahl verwendet len(a). Nicht gescreente Datensätze verschwinden sowohl aus der Übereinstimmung als auch aus den PRISMA-Zahlen.

    Behebung: Mit how='outer', indicator=True mergen und abbrechen oder eine Meldung ausgeben, wenn einem Datensatz die Entscheidung eines der beiden Screener fehlt.

    Zeile 7 · gefunden von claude · bestätigt von gpt-5.6, gemini-3.6-flash

  11. niedrig

    Fehlende Eingabebereinigung und Behandlung von Fehlwerten in der Spalte 'decision'. Groß-/Kleinschreibung, Whitespaces oder NaN-Werte führen zu fehlerhaften Vergleichen.

    Behebung: Spaltenwerte vor dem Vergleich bereinigen (z. B. mit '.str.strip().str.lower()') und Datentypsicherheit sicherstellen.

    Zeile 9 · gefunden von gemini-3.6-flash · bestätigt von gpt-5.6

Gezeigt: jeder bestätigte Befund mit seiner Behebung, so wie die Mitglieder ihn geschrieben haben; die Begründung der Prüfer ist auf ihr Urteil gekürzt. Duplikate werden nicht zusammengeführt, ein Problem kann also mehrfach erscheinen, wenn mehrere Mitglieder es melden. Was die Mitglieder auf Deutsch geschrieben haben, steht hier im Original; was auf Englisch gesendet oder geschrieben wurde, ist hier übersetzt, Code-Kommentare ausgenommen.

Fünf Ideen-Briefings aus verschiedenen Bereichen. ChatGPT und Gemini arbeiten in drei Spuren, Claude steuert eine Idee bei, und beide Mitglieder bewerten jede Idee anonym (je 1–10, bis zu 20 Punkte). Wählen Sie eines aus.

AUFGEZEICHNET 2026-10-13 · KIRAT_BRAINSTORM · AUFWANDSSTUFE: STANDARD · 14 IDEEN · 1 RUNDE · $0.11

Thema: Ideen, wie jemand, der allein entwickelt, mehr Lesende von zwei bei Google rankenden Blogposts zu Testanmeldungen für ein Rechnungstool für Freelancer bringt

Gesendeter Kontext: Rechnungstool für Freelancer, 19 USD pro Monat, 14 Tage kostenlos testen, 30 zahlende Kundinnen und Kunden nach 5 Monaten. Anmeldungen kommen überwiegend über zwei Blogposts, die bei Google ranken (wie man eine Freelancer-Rechnung schreibt; wie man verspäteten Zahlungen nachgeht). Etwa 12 % der Testphasen werden zu zahlenden Abos. Wer das Produkt entwickelt, hat einen Hauptjob und etwa 10 Stunden pro Woche dafür. HARTE VORGABE: keine bezahlte Werbung. HARTE VORGABE: höchstens 3 Stunden pro Woche hierfür.

  1. 1

    Drei echte Versände statt der 14-Tage-Uhr

    gpt-5.6 · Regelbrecher · 18/20 Punkte (9 + 9)

    Eine Testphase erproben, die nach drei versendeten Rechnungen oder Zahlungserinnerungen endet statt nach 14 Kalendertagen. Das bricht bewusst die weiche Annahme, dass eine zeitlich begrenzte Testphase angemessen ist: Freelancer stellen in einem willkürlichen Zwei-Wochen-Fenster womöglich gar keine Rechnung, sodass die aktuelle Testphase ablaufen kann, bevor das Produkt seinen Wert bewiesen hat. Den Monatstarif zu $19 unverändert lassen und die Umwandlung von Aktivierung zu zahlendem Abo nach Kohorten vergleichen.

  2. 2

    Die Aufgabe direkt im Artikel erledigen

    gpt-5.6 · regelkonform · 17/20 Punkte (9 + 8)

    Einen kleinen Rechnungsgenerator in „Wie man eine Freelancer-Rechnung schreibt“ einbetten: Lesende geben Auftraggeber, Betrag, Fälligkeitsdatum und Zahlungsbedingungen ein und sehen dann eine fertige Vorschau. „Diese Rechnung senden oder speichern“ legt eine Testphase an, in der diese Angaben bereits geladen sind, und schließt so die Lücke zwischen Lernen und Tun. In wöchentlichen Etappen von höchstens drei Stunden bauen und den Wartungsaufwand danach nahe null halten.

  3. 3

    Den Mahn-Artikel zur Konsole fürs Eintreiben machen

    gpt-5.6 · Nachbar · 17/20 Punkte (9 + 8)

    Als Ersetzung des eingebetteten Rechnungsgenerators in einem Schritt können Lesende einen überfälligen Betrag und ein Fälligkeitsdatum eingeben und erhalten eine datierte Folge von drei Mahnnachrichten. Der Start einer Testphase speichert den Schuldner, plant die Nachrichten und öffnet den ersten Entwurf versandfertig. Das bewahrt das stärkste Muster — ein nützliches Ergebnis vor der Anmeldung — und trifft zugleich die Absicht des zweiten Posts.

  4. 4

    Den Moment der Conversion in den Kalender des Schuldners legen

    gpt-5.6 · regelkonform · 16/20 Punkte (7 + 9)

    Im Artikel über verspätete Zahlungen eine generierte .ics-Datei anbieten, mit Erinnerungen an das Fälligkeitsdatum und eskalierenden Nachfassterminen an Tag 1, 7 und 14. Jeder Kalendereintrag enthält einen Deep Link, der den passenden Mahnablauf mit vorausgefüllten Daten öffnet, und holt die Lesenden zurück, wenn der Schmerz real ist, statt während sie nur recherchieren. Das erfordert keine Erfassung von E-Mail-Adressen und kann unbeaufsichtigt laufen.

  5. 5

    Dauerhaft kostenfreier Tarif für einen Kunden statt Testphase

    gemini-3.6-flash · Regelbrecher · 16/20 Punkte (8 + 8)

    Diese Idee bricht die weiche Vorgabe der 14-Tage-Testversion und ersetzt sie durch einen Freemium-Tarif für genau einen aktiven Kunden. Freelancer nutzen das Produkt dauerhaft kostenfrei für ihren ersten Kunden und upgraden nahtlos auf die 19-Dollar-Flatrate, sobald ein zweiter Kunde hinzukommt.

  6. 6

    Lesende nach ihrem akuten Problem lenken

    gpt-5.6 · regelkonform · 14/20 Punkte (8 + 6)

    Generische Banner für die Testphase durch drei Inline-Optionen ersetzen, etwa „Ich brauche meine erste Rechnung“, „Ich stelle regelmäßig Rechnungen“ und „Ein Kunde zahlt schon zu spät“. Jede Option öffnet einen passenden Onboarding-Zustand statt derselben Startseite, und Abschnitts-IDs im Artikel können sinnvolle Voreinstellungen vorauswählen. Abgeschlossene Aktivierungen der Testphase messen, nicht nur CTA-Klicks, und pro Woche eine Route testen.

  7. 7

    Drei forensische Rechnungs-Makeovers veröffentlichen

    gpt-5.6 · regelkonform · 14/20 Punkte (8 + 6)

    Mit Erlaubnis drei anonymisierte Kundenrechnungen in statische Vorher-nachher-Fallstudien verwandeln, die genau zeigen, was sich geändert hat und warum. Jedes Makeover neben den passenden Ratschlag im rankenden Post setzen, mit einem CTA, der dieselbe korrigierte Struktur als bearbeitbare Vorlage in der Testphase öffnet. Konkrete Belege aus einem kleinen Kundenstamm können glaubwürdiger sein als allgemeine Testimonials.

  8. 8

    Lesende ihren Fortschritt zwischen beiden Posts mitnehmen lassen

    gpt-5.6 · regelkonform · 14/20 Punkte (7 + 7)

    Die von Lesenden gewählte Währung, den Rechnungsstand und das Fälligkeitsdatum lokal im Browser speichern und diesen Zustand nutzen, wenn sie zwischen den beiden Artikeln wechseln. Wer einen Rechnungsplan erstellt hat, sieht später einen kontextbezogenen Hinweis wie „Ihre Rechnung ist jetzt 3 Tage überfällig — öffnen Sie die vorbereitete Nachfass-Nachricht“, mit vorausgefülltem Onboarding für die Testphase. So entsteht eine leichtgewichtige Reise über zwei Posts, ohne Konto und ohne laufende Content-Produktion.

  9. 9

    Interaktiver Mahnschreiben-Konfigurator

    gemini-3.6-flash · regelkonform · 14/20 Punkte (7 + 7)

    Ergänzen Sie den Artikel zum Nachfassen überfälliger Zahlungen um einen Generator für abgestufte Mahnschreiben. Nach der Texteingabe wird die Vorlage generiert, kombiniert mit dem CTA, automatische Zahlungserinnerungen für zukünftige Rechnungen im Testzugang einzurichten.

  10. 10

    Sofort-Senden Magic-Link ohne vorherige Registrierung

    gemini-3.6-flash · Nachbar · 14/20 Punkte (8 + 6)

    Mutation des In-Content-Generators: Der Leser gibt Rechnungsdaten direkt im Blogartikel ein und klickt auf Rechnung jetzt sofort senden. Das System erstellt im Hintergrund nahtlos ein Test-Konto und versendet die E-Mail direkt; die Passwortvergabe erfolgt erst im Anschluss.

  11. 11

    Live-Rechnungs-Generator direkt im Blogartikel

    gemini-3.6-flash · regelkonform · 13/20 Punkte (6 + 7)

    Betten Sie ein einfaches, interaktives Formulartool direkt in den Artikel zum Schreiben von Rechnungen ein. Leser tippen ihre Rechnungsdaten ein und können das fertige PDF sofort kostenlos herunterladen. Ein prominenter Button bietet an, die Rechnung mit einem Klick digital zu versenden und den Zahlungsstatus im 14-Tage-Testzugang zu tracken.

  12. 12

    Einmalige Pay-Per-Use Mahnung statt Monats-Abo

    gemini-3.6-flash · Regelbrecher · 13/20 Punkte (6 + 7)

    Diese Idee bricht die weiche Vorgabe des reinen SaaS-Abo-Modells von 19 Dollar pro Monat. Leser des Late-Payment-Artikels können für eine einmalige Gebühr von 5 Dollar ein rechtssicheres Mahnschreiben samt Tracking-Link versenden lassen, wobei die Gebühr bei spätestem Abo-Abschluss voll angerechnet wird.

  13. 13

    Vorlage, die sich im Tool öffnet

    claude · regelkonform · 11/20 Punkte (6 + 5)

    Die Rechnungsvorlage aus dem Post als einsatzbereite Rechnung im Tool anbieten: Ein Klick öffnet ein vorausgefülltes Testkonto statt eines Datei-Downloads.

  14. 14

    Problembezogener Exit-Intent mit automatisierter E-Mail-Sequenz

    gemini-3.6-flash · regelkonform · 8/20 Punkte (4 + 4)

    Implementieren Sie ein Exit-Intent-Popup auf dem Late-Payment-Artikel, das eine Notfall-E-Mail-Vorlage für säumige Kunden gegen E-Mail-Adresse anbietet. Eine automatisierte dreiteilige E-Mail-Sequenz erklärt anschließend passiv, wie automatierte Workflows Zahlungsverzug reduzieren und verlinkt auf den Testzugang.

AUFGEZEICHNET 2026-10-13 · KIRAT_BRAINSTORM · AUFWANDSSTUFE: STANDARD · 15 IDEEN · 1 RUNDE · $0.10

Thema: Ideen, wie eine kleine Digitalagentur aus einem einmaligen Shop-Relaunch einen laufenden Betreuungsvertrag macht, den das Kundenunternehmen wirklich will

Gesendeter Kontext: Agentur mit 4 Personen. Das Kundenunternehmen verkauft etwa 1.800 Möbelprodukte in Deutschland, Österreich und der Schweiz, hat 3 Mitarbeitende und keine eigene Entwicklung, Umsatz etwa 1,2 Millionen EUR pro Jahr. Der alte, selbst gehostete WooCommerce-Shop hatte 31 Plugins und im vergangenen Jahr zwei Sicherheitsvorfälle; das Kundenunternehmen will weniger Wartung und weniger Notfälle. Ein lokales ERP exportiert Produktdaten als CSV. Budget für den Relaunch: 25.000 EUR. HARTE VORGABE: kein Lock-in; das Kundenunternehmen muss jederzeit mit allen Daten und Zugängen gehen können. HARTE VORGABE: keine Neueinstellungen in der Agentur.

  1. 1

    Budgetbruch: Betrieb vor Launch-Glanz

    gpt-5.6 · Regelbrecher · 18/20 Punkte (9 + 9)

    Diese Idee bricht gezielt die weiche Vorgabe des 25.000-EUR-Rebuild-Budgets: Angeboten werden beispielsweise 22.000 EUR für einen bewusst schlanken Launch plus 12.000 EUR für ein verbindliches erstes Betriebsjahr. Dafür entfallen Nice-to-have-Funktionen aus dem Erstprojekt; finanziert werden stattdessen Importhärtung, Restore-Proben, Monitoring und monatliche Verbesserungen. Das höhere Gesamtvolumen lohnt sich, weil der Kunde nicht erneut einen scheinbar fertigen Shop kauft, dessen reale Betriebskosten erst nach dem Launch sichtbar werden; alle Zugänge, Daten und Arbeitsergebnisse bleiben jederzeit übertragbar.

  2. 2

    CSV Product Gatekeeper

    gpt-5.6 · regelkonform · 17/20 Punkte (9 + 8)

    Vor jedem ERP-Import prüft eine automatisierte Pipeline die CSV auf fehlende Preise, Dubletten, ungültige Varianten, Bildfehler, DACH-Steuerlogik und verdächtige Bestandsänderungen. Der monatliche Retainer umfasst Regelpflege, Importüberwachung und einen verständlichen Fehlerbericht für die drei Mitarbeitenden. Das macht aus technischer Pflege einen unmittelbar geschäftlichen Nutzen: weniger falsche Produkte, Rückfragen und abgebrochene Käufe.

  3. 3

    Reliability Dividend

    gpt-5.6 · regelkonform · 17/20 Punkte (8 + 9)

    Der Kunde zahlt eine moderate Grundgebühr für Überwachung und Pflege; ein zusätzlicher Quartalsbetrag wird nur fällig, wenn vereinbarte Zuverlässigkeitsziele wie erfolgreiche Importe, getestete Wiederherstellung und Reaktionszeiten erreicht wurden. Vermeidbare, durch die Agentur verursachte Störungen erzeugen Serviceguthaben statt abrechenbarer Notfallstunden. Dieses Modell richtet die wirtschaftlichen Anreize auf Prävention aus und nimmt dem Kunden die Angst, die Agentur profitiere von Problemen.

  4. 4

    Exit-ready Care Charter

    gpt-5.6 · regelkonform · 16/20 Punkte (9 + 7)

    Der Retainer wird bewusst als Anti-Lock-in-Produkt verkauft: Monitoring, Updates, Backups, Sicherheitsprüfungen und zwei kleine Änderungen pro Monat für etwa 1.200–1.500 EUR. Sämtliche Konten liegen beim Kunden, Code und Importskripte in dessen Repository; monatlich erhält er außerdem Dokumentation, Datenexport und eine kündigungsfähige Übergabemappe. So bezahlt der Kunde für nachweisbare Betriebsfähigkeit statt für Abhängigkeit.

  5. 5

    Saisonaler Release-Zug

    gpt-5.6 · regelkonform · 16/20 Punkte (8 + 8)

    Statt beliebiger Supporttickets gibt es vier planbare Commerce-Releases pro Jahr, etwa für Gartenmöbel, Sommerschluss, Black Week und Weihnachten. Im Retainer enthalten sind je Release ein kleines UX- oder Merchandising-Paket, Regressionstests sowie die technische Pflege dazwischen. Das gibt dem Kunden sichtbare Weiterentwicklung und hält den Aufwand für die vierköpfige Agentur bündelbar.

  6. 6

    Der quartalsweise Fluchttest

    gpt-5.6 · regelkonform · 16/20 Punkte (9 + 7)

    Einmal pro Quartal stellt die Agentur einen vollständigen Export aus Produkt-, Kunden-, Bestell- und Inhaltsdaten bereit und führt in einer neutralen Testumgebung einen dokumentierten Wiederanlauf durch. Bezahlt wird damit ausgerechnet der regelmäßig bewiesene Ausstieg: Zugangsliste, Restore-Protokoll und Übergabehandbuch gehören dem Kunden. Das harte No-Lock-in-Kriterium wird so vom Einwand zum ungewöhnlichen Verkaufsargument für den Retainer.

  7. 7

    Care Charter plus Wachstumsbörse

    gpt-5.6 · Nachbar · 16/20 Punkte (8 + 8)

    Als kleine Mutation der Exit-ready Care Charter werden die enthaltenen Änderungsstunden nicht fest verplant, sondern monatlich zwischen Betrieb, Datenqualität und Conversion-Verbesserungen verschoben; ungenutztes Volumen fließt höchstens ein Quartal weiter. Ein gemeinsames 30-Minuten-Board entscheidet anhand von Risiken und Umsatzchancen über den Einsatz. Der Retainer bleibt exit-ready, fühlt sich aber weniger wie eine Versicherung und mehr wie ein flexibles externes Digitalteam an.

  8. 8

    ERP-Sync & Katalog-Sicherheits-Retainer

    gemini-3.6-flash · regelkonform · 13/20 Punkte (7 + 6)

    Die Agentur übernimmt die kontinuierliche Überwachung und Wartung der Schnittstelle zwischen der lokalen ERP-CSV und dem Onlineshop. Fehlerhafte Datenimporte, fehlende Möbel-Varianten oder falsche Preise werden automatisiert abgefangen, bevor sie live gehen. Das nimmt dem 3-köpfigen Kundenteam die operative Last der Datenpflege komplett ab.

  9. 9

    KI-gestützte Produktdaten-Enrichment-Flatrate

    gemini-3.6-flash · Nachbar · 13/20 Punkte (6 + 7)

    Mutation der ERP-Schnittstellen-Idee: Die Agentur wartet nicht nur den CSV-Import, sondern reichert die Rohdaten automatisch durch KI-Skripte um strukturierte Attribute, SEO-Texte und DACH-spezifische Lieferzeit-Hinweise an. Das spart dem Kunden manuellen Pflegeaufwand und steigert die Sichtbarkeit im Möbelmarkt ohne Agenturnachbesetzung.

  10. 10

    CI/CD-basierter Visual-Regression-Wartungsvertrag

    gemini-3.6-flash · regelkonform · 12/20 Punkte (6 + 6)

    Anstelle von riskanten Live-Updates richtet die Agentur eine Staging-Pipeline ein, die monatliche Plugin-Updates visuell und funktional automatisiert prüft. Der Kunde erhält einen monatlichen Transparenzbericht und garantierte Reaktionszeiten bei Sicherheitslücken. Dies garantiert absolute Stabilität ohne die bisherigen Notfälle.

  11. 11

    Quartalsweises Conversion- & UX-Polishing

    gemini-3.6-flash · regelkonform · 11/20 Punkte (6 + 5)

    Ergänzend zur Basiswartung beinhaltet der Retainer feste Stundenkontingente für die Optimierung von Checkout-Funktionen und Möbel-Variantendarstellungen. Die Agentur analysiert monatlich das Nutzerverhalten in der DACH-Region und setzt renditestarke Anpassungen um. So wird der Retainer vom reinen Kostenfaktor zum Umsatztreiber.

  12. 12

    Safe-Update & Instant-Rollback-Garantie

    gemini-3.6-flash · Nachbar · 11/20 Punkte (5 + 6)

    Mutation des CI/CD-Wartungsvertrags: Der Retainer fokussiert sich rein auf ein garantiertes Zero-Downtime-SLA mit automatisierter Snapshot-Wiederherstellung innerhalb von 15 Minuten bei Zwischenfällen. Das adressiert direkt die Angst des Kunden nach den zwei Sicherheitsvorfällen bei minimalem laufenden manuellen Aufwand.

  13. 13

    Umsatzbeteiligtes Growth-Paket statt Fixbudget

    gemini-3.6-flash · Regelbrecher · 9/20 Punkte (4 + 5)

    Bricht die weiche Annahme eines starren Einmal-Rebuild-Budgets von 25.000 EUR: Die Rebuild-Kosten werden auf 10.000 EUR gesenkt, gekoppelt an einen monatlichen Retainer mit kleiner Umsatzbeteiligung am Mehrumsatz. Das lohnt sich, weil der Kunde Investitionsrisiko senkt und die Agentur direkt am Wachstum des 1,2 Mio. EUR Shops partizipiert.

  14. 14

    Headless-Architecture Care Service

    gemini-3.6-flash · Regelbrecher · 7/20 Punkte (3 + 4)

    Bricht die weiche Vorgabe eines klassischen Monolithen-Setups (wie Standard-WooCommerce): Das Frontend wird vom Backend entkoppelt, wodurch Plugin-Sicherheitslücken die Website nicht mehr direkt angreifen können. Das lohnt sich, weil Notfälle strukturell eliminiert werden und der Kunde dank Open-Source-Stack und vollem Git-Zugriff jederzeit portabel bleibt.

  15. 15

    Monatlicher Betreuungsbericht auf einer Seite

    claude · regelkonform · 6/20 Punkte (4 + 2)

    Ein einseitiger Monatsbericht mit Uptime, Seitengeschwindigkeit, eingespielten Updates und verhinderten Vorfällen, damit das Kundenunternehmen sieht, wofür der Betreuungsvertrag bezahlt wird.

AUFGEZEICHNET 2026-10-13 · KIRAT_BRAINSTORM · AUFWANDSSTUFE: STANDARD · 15 IDEEN · 1 RUNDE · $0.09

Thema: Ideen, wie eine Bäckerei vor Ort über ihre neue Online-Bestellseite mehr Vorbestellungen für individuelle Torten bekommt, ohne bezahlte Anzeigen

Gesendeter Kontext: Bäckerei mit 6 Mitarbeitenden in einer deutschen Stadt mit 40.000 Einwohnern. Individuelle Torten und Vorbestellungen haben die beste Marge. Eine neue Online-Bestellseite (Tortenauswahl, Abholtermin, Vorauszahlung) geht nächsten Monat online; bisher kamen Bestellungen nur per Telefon und E-Mail. Das Google-Unternehmensprofil hat 4,7 Sterne aus 120 Bewertungen. Wer den Betrieb führt, hat wenig Zeit, daher müssen die Ideen mit höchstens 2 Stunden pro Woche auskommen. HARTE VORGABE: keine bezahlte Werbung in diesem Quartal. HARTE VORGABE: kein zusätzliches Personal.

  1. 1

    Der jährliche Geburtstags-Autopilot

    gpt-5.6 · regelkonform · 18/20 Punkte (9 + 9)

    Beim Checkout können Kundinnen und Kunden freiwillig Anlass und Monat für eine Erinnerung im Folgejahr hinterlegen. Eine automatisierte E-Mail 21 Tage vorher führt zur vorausgefüllten Bestellseite; so baut jede Bestellung einen künftigen Auftrag auf, ohne laufende Akquise und mit sauberer Einwilligung.

  2. 2

    Echte Torten-Slots statt allgemeiner Posts

    gpt-5.6 · regelkonform · 17/20 Punkte (9 + 8)

    Die Bestellseite zeigt die real verbleibenden Produktionsplätze der nächsten vier Wochen, etwa „Noch 2 individuelle Torten für Samstag möglich“. Ein wöchentlicher Google-Business-Post verlinkt direkt auf diese Ansicht; Aktualisierung und Post benötigen zusammen höchstens 20 Minuten und erzeugen glaubwürdige Dringlichkeit ohne Rabatt.

  3. 3

    Die Torte reist als eigener Werbeträger

    gpt-5.6 · regelkonform · 16/20 Punkte (8 + 8)

    Jede abgeholte Torte erhält eine kleine Karte mit „Diese Torte nachbestellen oder anpassen“ und einem QR-Code zur passenden Variante. Die Karte wird beim Anschneiden sichtbar aufgestellt, sodass genau die anwesenden Geburtstags- oder Hochzeitsgäste den Bestellweg entdecken; ein einmal erstelltes Kartenset verursacht nahezu keinen Wochenaufwand.

  4. 4

    Einmalige Torten-Sprechstunde zum Launch

    gpt-5.6 · Regelbrecher · 16/20 Punkte (8 + 8)

    Am ersten Samstag nach dem Start gibt es vier Stunden lang eine offene Torten-Sprechstunde: Gäste wählen Geschmack und Stil an Musterkarten und geben ihre Bestellung anschließend selbst über bereitliegende QR-Codes auf. Das bricht gezielt die weiche Vorgabe von maximal zwei Stunden Aufwand in dieser Woche; der Mehraufwand lohnt sich, weil dabei reale Bestellungen, beobachtete Bedienprobleme und wiederverwendbare Fotos beziehungsweise Kundenfragen gleichzeitig entstehen — ohne zusätzliches Personal oder bezahlte Werbung.

  5. 5

    Anlass-Partner statt Influencer

    gpt-5.6 · regelkonform · 15/20 Punkte (8 + 7)

    Kinder-Spielorte, Fotografen, Floristen, Hochzeitslocations und Vereinsheime erhalten jeweils einen kleinen QR-Aufsteller, der auf eine für ihren Anlass vorkonfigurierte Tortenauswahl führt. Als Gegenleistung nennt die Bäckerei diese Partner auf einer lokalen Empfehlungsseite; fünf gezielte Anfragen pro Monat reichen, Provisionen und bezahlte Reichweite entfallen.

  6. 6

    Torten-Rota für Büros und Vereine

    gpt-5.6 · regelkonform · 15/20 Punkte (8 + 7)

    Lokale Büros, Praxen und Vereine bekommen eine Seite, auf der mehrere Geburtstage oder wiederkehrende Termine gesammelt und nacheinander vorausbezahlt werden können. Einmal eingerichtete Quartals-Rotas verwandeln einzelne Anlässe in planbare Serienbestellungen; die Ansprache kann auf zwei Organisationen pro Woche begrenzt werden.

  7. 7

    Hybrid-Torten-Sprechstunde am Verkaufs-Tablet

    gemini-3.6-flash · Regelbrecher · 14/20 Punkte (7 + 7)

    Bricht gezielt die weiche Vorgabe 'Ausschließliche Online-Bestellung', indem freitags 1 Stunde Beratung im Laden angeboten wird, bei der Bestellungen gemeinsam am Tablet getippt werden. Es lohnt sich, weil unentschlossene und ältere Kunden schrittweise an das neue Online-System herangeführt werden.

  8. 8

    Bewertungen werden zur Entscheidungshilfe

    gpt-5.6 · Nachbar · 13/20 Punkte (7 + 6)

    Als kleine Rekombination des stärksten vorhandenen Materials werden zwölf aussagekräftige Sätze aus den 120 Google-Bewertungen mit passenden Tortenstilen verbunden, jeweils mit direktem Bestelllink. So werden die 4,7 Sterne nicht nur als Vertrauenssignal gezeigt, sondern helfen bei der Produktauswahl; die Seite ist nach einmaliger Einrichtung weitgehend wartungsfrei.

  9. 9

    Muster-Torten-Aufsteller mit Shop-Deep-Links

    gemini-3.6-flash · Nachbar · 13/20 Punkte (6 + 7)

    Eine physische Foto-Galerie der schönsten Torten im Verkaufsraum enthält bei jedem Bild einen spezifischen QR-Code, der genau dieses Tortenmodell vorausgewählt im Online-Shop öffnet. Mutation von Idee 1: Verknüpfung von Laden-Ausstellung mit direktem Deep-Link im Shop.

  10. 10

    Google-Profil Optimierung & automatisierte Bewertungs-Links

    gemini-3.6-flash · regelkonform · 12/20 Punkte (6 + 6)

    Das starke Google-Profil (4,7 Sterne) wird um den offiziellen 'Online bestellen'-Button ergänzt und wöchentlich mit einem Foto aktueller Torten bespielt. Bei Abholung erhalten Kunden eine Vorlage per E-Mail mit Link zur Bewertungs- und Nachbestellseite. Dauert unter 30 Minuten pro Woche.

  11. 11

    QR-Code Taster auf Kassenbons & Brot-Tüten

    gemini-3.6-flash · regelkonform · 11/20 Punkte (6 + 5)

    Auf jeden Kassenbon und Verpackungen wird ein auffälliger QR-Code gedruckt, der direkt zum Online-Tortenkonfigurator führt ('Traumtorte für Ihr Fest online planen'). Das wandelt tägliche Laufkundschaft ohne Zusatzaufwand im Verkauf in digitale Vorbesteller um.

  12. 12

    B2B-Partnerschaft mit lokalen Event-Locations

    gemini-3.6-flash · regelkonform · 11/20 Punkte (6 + 5)

    Aufsteller und Flyer mit direktem Buchungscode für die Website werden bei lokalen Restaurants, Event-Scheunen und Hochzeitsplanern platziert. Feiernde Kunden buchen ihre Torte direkt online, während die Location eine kleine Aufwandsentschädigung oder Gegenempfehlung erhält.

  13. 13

    Kita- & Schul-Geburtstagskalender

    gemini-3.6-flash · Nachbar · 10/20 Punkte (4 + 6)

    Kooperation mit örtlichen Kindergärten über Info-Flyer für Elternbeiräte, die einen festen Rabattcode für Kinder-Motivtorten enthalten. Mutation von Idee 3: Statt allgemeiner B2B-Partner wird gezielt der hochfrequente Anlass Kindergeburtstag automatisiert adressiert.

  14. 14

    Monatlicher Motivtorten-Mini-Workshop

    gemini-3.6-flash · Regelbrecher · 10/20 Punkte (4 + 6)

    Bricht gezielt die weiche Vorgabe 'maximal 2 Stunden Zeitaufwand pro Woche', da einmal im Monat ein 4-stündiger Workshop stattdfindet. Es lohnt sich, weil die Teilnehmer als Markenbotschafter fungieren, begeisterte Social-Media-Inhalte erzeugen und Folgebestellungen garantiert über den Online-Shop tätigen.

  15. 15

    Bestelllink auf jedem Tortenkarton

    claude · regelkonform · 8/20 Punkte (4 + 4)

    Einen QR-Code zur Bestellseite auf die Tortenkartons und Kassenbons drucken, damit jeder Kunde, der bereits eine Torte kauft, für den nächsten Geburtstag nachbestellen kann, ohne anzurufen.

Kirats Notiz an Claude: Beste Regelbrecher-Idee erst auf Rang 4: „Einmalige Torten-Sprechstunde zum Launch“ — sie bricht bewusst eine weiche Vorgabe. Einmal in ihrer stärksten Form durchdenken, bevor sie verworfen wird.

AUFGEZEICHNET 2026-10-13 · KIRAT_BRAINSTORM · AUFWANDSSTUFE: STANDARD · 15 IDEEN · 1 RUNDE · $0.06

Thema: Ideen, um vom Abrechnungsmodul verursachte Produktionsvorfälle innerhalb von zwei Quartalen zu reduzieren, ohne es in einen separaten Service auszulagern

Gesendeter Kontext: Team aus 8 Engineers. Ein TypeScript-Monolith mit etwa 60.000 Zeilen, eine Postgres-Datenbank, mehrmals täglich deployt. Das Abrechnungsmodul ändert sich jede Woche und hat 5 der letzten 8 Produktionsvorfälle verursacht, meist weil andere Module direkt Abrechnungstabellen lesen und schreiben. Niemand im Team hat je ein verteiltes System in Produktion betrieben. Die Leitung will innerhalb von zwei Quartalen weniger Vorfälle. HARTE VORGABE: kein Neuschreiben des Abrechnungsmoduls. HARTE VORGABE: Die Feature-Arbeit an der Abrechnung geht jede Woche weiter.

  1. 1

    Datenbank-Firewall um die Abrechnungstabellen

    gpt-5.6 · regelkonform · 17/20 Punkte (9 + 8)

    Getrennte Postgres-Rollen für die Abrechnungs- und Nicht-Abrechnungs-Codepfade des Monolithen anlegen und der allgemeinen Anwendungsrolle direkte Schreibrechte auf Abrechnungstabellen entziehen. Alle Änderungen über eine kleine Zahl geprüfter Stored Procedures oder Transaktionsfunktionen leiten und zuerst vorübergehendes Audit-Logging einführen, um Aufrufer zu finden und zu migrieren, ohne die wöchentliche Feature-Arbeit anzuhalten.

  2. 2

    Ausführbare finanzielle Invarianten

    gpt-5.6 · regelkonform · 17/20 Punkte (9 + 8)

    Eine kurze Liste von Invarianten — etwa unveränderliche finalisierte Rechnungen, ausgeglichene Ledger-Einträge, idempotente Erstellung von Belastungen und gültige Zustandsübergänge — als Datenbank-Constraints kodieren, wo das sicher ist, und andernfalls als geplante Prüfungen in Produktion. Dieselben Prüfungen in der CI gegen anonymisierte, produktionsähnliche Fixtures laufen lassen und so das Wissen aus Vorfällen in dauerhafte Stolperdrähte verwandeln statt in eine breite Ausweitung der Tests.

  3. 3

    Vorfall-Replay als Bewährungsprobe vor jedem Release

    gpt-5.6 · regelkonform · 17/20 Punkte (9 + 8)

    Die fünf Abrechnungsvorfälle mit erfassten Query-Formen und bereinigten Zeilen in deterministische Replay-Szenarien umwandeln und verlangen, dass jede Änderung an der Abrechnung sie besteht. Generative Tests ergänzen, die Wiederholungen, doppelte Events, Transaktionsreihenfolgen und Teilausfälle rund um genau diese Szenarien permutieren, und damit gezielt das Umfeld der Fehler abdecken, statt eine erschöpfende Abdeckung des Monolithen anzustreben.

  4. 4

    Die Abrechnungsgrenze im Schattenmodus durchsetzen

    gpt-5.6 · Nachbar · 16/20 Punkte (9 + 7)

    Als risikoärmere Mutation der Datenbank-Firewall die aktuellen Berechtigungen zunächst beibehalten, aber jede Abfrage, die Abrechnungstabellen berührt, mit Modul, Aufrufstelle und Transaktions-ID protokollieren. Nach vier Wochen unerwartete Schreibzugriffe zu CI-Fehlern machen und dann Modul für Modul zu Fehlern in Produktion; das ersetzt eine sofortige Umstellung der Berechtigungen durch eine gestufte Durchsetzung.

  5. 5

    Schaltzentrale für den Schadensradius der Abrechnung

    gpt-5.6 · regelkonform · 16/20 Punkte (9 + 7)

    Riskante Abrechnungsfunktionen — nicht das ganze Modul — hinter serverseitige Kill Switches und prozentuale Rollouts legen, mit Dashboards, die auf Anomalien bei Rechnungen, Zahlungen und Abgleich ausgerichtet sind. Jedes wöchentliche Feature wird mit einem getesteten Abschaltpfad ausgeliefert, sodass das Bereitschaftsteam das neue Verhalten deaktivieren kann, ohne unabhängige Monolith-Deployments zurückzurollen oder Schemamigrationen rückgängig zu machen.

  6. 6

    Postgres-Schema-Kapselung und Row Level Security

    gemini-3.6-flash · regelkonform · 15/20 Punkte (7 + 8)

    Isoliere Billing-Tabellen in ein eigenes Postgres-Schema (billing.*) und entziehe anderen DB-Rollen den direkten Schreib- und Lesezugriff. Module greifen nur über definierte SQL-Views oder gespeicherte Schnittstellen darauf zu. Das eliminiert die Hauptursache der Incidents direkt auf Datenbankebene.

  7. 7

    Contract Testing und Shadow-Pipeline für Billing-Releases

    gemini-3.6-flash · regelkonform · 15/20 Punkte (8 + 7)

    Etabliere automatisierte Consumer-Driven Contract Tests für alle Billing-Schnittstellen in der CI-Pipeline. Ergänzend laufen Billing-Änderungen für kritische Berechnungen im Shadow-Modus ohne Seiteneffekte mit automatischer Differenzprüfung in Produktion.

  8. 8

    Eine zweite Datenbank als Sicherheitsinstrument

    gpt-5.6 · Regelbrecher · 14/20 Punkte (7 + 7)

    Die weiche Annahme „eine Postgres-Datenbank“ bewusst brechen, indem eine schreibgeschützte Schattendatenbank hinzukommt, die per logischer Replikation gespeist wird, während die Abrechnung im Monolithen bleibt und die primäre Datenbank weiterhin als einzige beschrieben wird. Neue Lesezugriffe der Abrechnung und Abgleichsprüfungen gegen beide Datenbanken laufen lassen, die Ergebnisse vor der Freigabe vergleichen und die Schattendatenbank für forensische Abfragen nutzen, damit die Diagnose von Vorfällen die Produktion weder überlasten noch versehentlich verändern kann.

  9. 9

    Striktes Module-Boundary Linting und Public API Facade

    gemini-3.6-flash · regelkonform · 14/20 Punkte (7 + 7)

    Führe ein Architektur-Linting via dependency-cruiser ein, das direkte Imports von Billing-Interna in anderen Modulen im Build-Schritt verbietet. Kommunikation darf nur über ein einzelnes, typsicheres BillingFacade-Interface erfolgen, um schleichende Koppelungen sofort zu blockieren.

  10. 10

    Änderungspässe für die Abrechnung

    gpt-5.6 · regelkonform · 13/20 Punkte (7 + 6)

    Jeder Pull Request mit Bezug zur Abrechnung muss einen maschinell geprüften Pass mitführen: betroffene Tabellen, Invarianten, Migrationskompatibilität, Rollback-Pfad und eine Abfrage in Produktion, die den Zustand nach dem Deployment belegt. Ein CODEOWNERS-Gate plus ein 15-minütiges Review durch eine wechselnd für die Abrechnung zuständige Person hält den Prozess schlank genug für wöchentliche Änderungen und bündelt die Prüfung auf modulübergreifende Auswirkungen.

  11. 11

    Auto-generierte Read-Only Postgres Views für Fremdmodule

    gemini-3.6-flash · Nachbar · 13/20 Punkte (7 + 6)

    Eine Mutation der Schema-Kapselung: Statt aufwändiger API-Refactorings werden automatisch schreibgeschützte Postgres Views für externe Abfragen bereitgestellt. Fremdmodule lesen nur diese stabilen Views, während direkte Tabellenzugriffe per DB-Permissions blockiert werden.

  12. 12

    Asynchroner in-process Event-Bus für Read-Models

    gemini-3.6-flash · regelkonform · 12/20 Punkte (4 + 8)

    Anstatt dass fremde Module Billing-Tabellen direkt abfragen, sendet das Billing-Modul In-Memory Events bei Zustandsänderungen. Empfängermodule bauen sich eigene, lokale Projektionen auf. Das entkoppelt Lesezugriffe vollständig von den Billing-Tabellen ohne verteilte Systeme einzuführen.

  13. 13

    Zweiwöchiger Feature-Freeze für Billing-Kapselung

    gemini-3.6-flash · Regelbrecher · 11/20 Punkte (5 + 6)

    Bricht die weiche Vorgabe des kontinuierlichen wöchentlichen Feature-Outputs für genau zwei Wochen. Das gesamte Team konzentriert sich fokussiert darauf, DB-Koppelungen aufzutrennen. Der Einmalaufwand schafft die Basis, um Incident-Zahlen für die verbleibenden 5 Monate nachhaltig zu senken.

  14. 14

    Datenbankrolle pro Modul

    claude · regelkonform · 11/20 Punkte (6 + 5)

    Der Abrechnung ein eigenes Postgres-Schema und eine eigene Rolle geben und anderen Modulen die Schreibrechte auf Abrechnungstabellen entziehen, sodass direkte Schreibzugriffe schon im Staging scheitern, bevor sie die Produktion erreichen.

  15. 15

    Physikalische DB-Partitionierung in eine zweite Postgres-Instanz

    gemini-3.6-flash · Regelbrecher · 9/20 Punkte (3 + 6)

    Bricht die weiche Vorgabe der Ein-Datenbank-Architektur, behält aber den monolithischen Code bei. Billing-Daten ziehen in eine eigene Datenbankinstanz um, wodurch übergreifende SQL-Joins technisch unmöglich werden. Die betriebliche Komplexität bleibt minimal, da der Code monolithisch bleibt.

Kirats Notiz an Claude: Beste Regelbrecher-Idee erst auf Rang 8: „Eine zweite Datenbank als Sicherheitsinstrument“ — sie bricht bewusst eine weiche Vorgabe. Einmal in ihrer stärksten Form durchdenken, bevor sie verworfen wird.

AUFGEZEICHNET 2026-10-13 · KIRAT_BRAINSTORM · AUFWANDSSTUFE: STANDARD · 14 IDEEN · 1 RUNDE · $0.18

Thema: Ideen, wie sich der Personalaufwand für das Titel-und-Abstract-Screening von etwa 3.000 Datensätzen senken lässt, ohne die Strenge eines systematischen Reviews zu schwächen

Gesendeter Kontext: Systematisches Review in der Versorgungsforschung, zur Veröffentlichung geplant. Aktuelles Protokoll: zwei unabhängige menschliche Screener, Konflikte werden durch Diskussion gelöst. Personalzeit ist knapp. Die Gutachtenden der Zeitschrift werden fragen, wie das Screening durchgeführt wurde. Eine relevante Studie zu übersehen (falscher Ausschluss) ist schlimmer, als eine irrelevante einzuschließen. HARTE VORGABE: Die Methode muss nach PRISMA 2020 berichtbar sein. HARTE VORGABE: Die Rate falscher Ausschlüsse darf nicht steigen.

  1. 1

    Ausschluss-Schranke mit zwei Menschen

    gpt-5.6 · Regelbrecher · 18/20 Punkte (10 + 8)

    Reviewer A screent jeden Datensatz, doch die Einschlüsse und unsicheren Entscheidungen von A gehen direkt weiter; Reviewer B bewertet unabhängig nur die von A vorgeschlagenen Ausschlüsse. Ein Datensatz wird nur ausgeschlossen, wenn beide Menschen ihn unabhängig ausschließen, und jede Uneinigkeit wird automatisch weitergereicht, wodurch die meisten Konfliktbesprechungen entfallen. Das bricht bewusst die weiche Annahme des aktuellen Protokolls, dass zwei Menschen jeden Datensatz bewerten müssen; es lohnt sich, weil es Screening-Zeit spart und dabei strukturell zwar mehr falsche Einschlüsse zulässt, aber keine zusätzlichen falschen Ausschlüsse, und es lässt sich im PRISMA-Abschnitt zum Auswahlprozess einfach beschreiben.

  2. 2

    Kalibrierungssprint mit einem Grenzfall-Register

    gpt-5.6 · regelkonform · 16/20 Punkte (9 + 7)

    Eine geschichtete erste Charge unabhängig doppelt screenen, Konflikte klären und wiederkehrende Unklarheiten in kurze operative Regeln mit Positiv- und Negativbeispielen überführen. Die Regeln festschreiben, bevor es weitergeht; die Pilotentscheidungen nur behalten, wenn sich die Eignungskriterien nicht geändert haben, andernfalls neu screenen. Das erhält das doppelte unabhängige Screening und senkt zugleich den späteren Aufwand für Beratung und Konfliktklärung, und die Kalibrierung lässt sich nach PRISMA berichten.

  3. 3

    Schnelle binäre Konsole statt Mini-Datenextraktion

    gpt-5.6 · regelkonform · 15/20 Punkte (8 + 7)

    Beiden Prüfenden eine verblindete, per Tastatur bedienbare Oberfläche geben, die auf Einschluss, Ausschluss oder unsicher beschränkt ist, mit stets vollständig sichtbarem Titel und Abstract; detaillierte Kodierung und Ausschlussgründe auf die Volltextprüfung verschieben. PRISMA 2020 verlangt auf der Titel-und-Abstract-Stufe keine Gründe pro Datensatz. Der Entscheidungsprozess bleibt unverändert, doch vermeidbarer Aufwand für Lesen, Klicken und Dokumentation fällt weg.

  4. 4

    Maschinelles Ventil nur für Einschlüsse

    gpt-5.6 · Nachbar · 15/20 Punkte (9 + 6)

    Als Mutation der Ausschluss-Schranke mit zwei Menschen in einem Schritt die von A vorgeschlagenen Ausschlüsse durch einen validierten Klassifikator laufen lassen, der Datensätze nur zum Einschluss freigeben darf, niemals ausschließen; Reviewer B screent unabhängig alles, was der Klassifikator nicht freigibt. Der endgültige Ausschluss erfordert weiterhin übereinstimmende Entscheidungen von zwei Menschen, sodass ein Fehler der Maschine zwar Volltexte hinzufügen, aber keinen falschen Ausschluss erzeugen kann. Modell, Version, Eingaben, Schwellenwerte, Validierung und seine strikt auf Einschlüsse beschränkte Rolle nach PRISMA berichten.

  5. 5

    Asymmetrisches Exklusions-Screening

    gemini-3.6-flash · regelkonform · 15/20 Punkte (7 + 8)

    Ein Erstprüfer klassifiziert alle 3.000 Datensätze vollständig. Der Zweitprüfer prüft exklusiv nur diejenigen Datensätze, die vom Erstprüfer ausgeschlossen wurden, um falsch-negative Treffer abzufangen (Einschlüsse werden direkt akzeptiert). Dies halbiert den Aufwand des Zweitprüfers nahezu, hält das Risiko falscher Exklusionen extrem niedrig und erfüllt alle PRISMA-Vorgaben.

  6. 6

    Screening für ertragreiche Teilmengen umgehen

    gpt-5.6 · Regelbrecher · 13/20 Punkte (8 + 5)

    Ertragreiche Teilmengen vorab festlegen — etwa Datensätze aus einem hochspezifischen Suchblock, direkte Nachfahren bekannter geeigneter Studien oder Datensätze, die bereits in einem eng verwandten Review eingeschlossen sind — und sie alle ohne Titel-und-Abstract-Entscheidung direkt in die Volltextbeschaffung geben. Das bricht für diese Datensätze bewusst das weiche Zwei-Screener-Protokoll, kann aber die falschen Ausschlüsse nicht erhöhen, weil in der Teilmenge nichts ausgeschlossen wird; der Preis ist zusätzliche Volltextarbeit. Die Umgehungsregel und die daraus resultierenden Zahlen ausdrücklich im PRISMA-Flussdiagramm und in den Methoden zur Auswahl berichten.

  7. 7

    Priorisiertes Screening via Active Learning

    gemini-3.6-flash · regelkonform · 13/20 Punkte (5 + 8)

    Beide Human-Screener nutzen ein Active-Learning-Tool (wie ASReview), das relevante Titel/Abstracts an den Anfang sortiert. Sobald ein statistisch validiertes Abbruchkriterium erreicht ist (z. B. 500 irrelevante Treffer in Folge), wird das Screening beendet. Das Verfahren spart bis zu 70% Zeit, ist PRISMA-2020-konform dokumentierbar und wahrt durch die Algorithmus-Kalibrierung eine minimale Falsch-Exklusionsrate.

  8. 8

    Nur exakte Deduplizierung vor dem Screening

    gpt-5.6 · regelkonform · 12/20 Punkte (8 + 4)

    Nur Datensätze entfernen, deren Identität über DOI, Zugangsnummer der Datenbank oder exakten normalisierten bibliografischen Abgleich nachgewiesen ist; die Kopie mit den meisten Metadaten behalten und unsichere Beinahe-Duplikate lediglich markieren. Beide Prüfenden screenen dann jeden verbleibenden eindeutigen Datensatz unabhängig, und PRISMA weist die vor dem Screening entfernten Duplikate aus. Das senkt die Menge, ohne einen Weg zu schaffen, auf dem eine eindeutige Studie ausgeschlossen werden könnte.

  9. 9

    Mensch-KI-Kaskade mit KI-Sicherheitsnetz

    gemini-3.6-flash · Nachbar · 12/20 Punkte (5 + 7)

    Eine Mutation des asymmetrischen Exklusions-Screenings: Ein menschlicher Screener bearbeitet alle Datensätze alleine, während ein auf maximale Sensitivität getrimmtes KI-Modell exklusiv die menschlichen Exklusionen prüft. Nur bei Diskrepanzen prüft ein zweiter Mensch nach. Dies reduziert die Humankapazitäten um über 50% bei vollständiger Abdeckung.

  10. 10

    Vollautomatischer KI-Zweitprüfer

    gemini-3.6-flash · Regelbrecher · 11/20 Punkte (3 + 8)

    Bricht die weiche Vorgabe, dass zwingend zwei menschliche Personen screenen müssen. Ein Large Language Model (LLM) übernimmt die Rolle des unabhängigen Zweitprüfers mit Zero-False-Negative-Prompting. Es lohnt sich, weil die menschliche Arbeitszeit halbiert wird und LLMs bei Abstract-Screenings nachweislich hohe Recall-Raten erreichen; PRISMA 2020 erlaubt die Angabe von KI-Tools explizit.

  11. 11

    Risikoadaptiertes Single-Screening mit Konfidenz-Triagierung

    gemini-3.6-flash · Regelbrecher · 11/20 Punkte (5 + 6)

    Bricht die weiche Vorgabe des durchgängigen Doppel-Screenings für den gesamten Datensatz. Wenn der Erstprüfer eine hohe Subjekt-Konfidenz angibt und eindeutige Ausschlussgründe vorliegen, entfällt der Zweitprüfer; nur unsichere Fälle wandern ins Doppel-Screening. Dies spart bis zu 60% Personalzeit, während das Risiko verpasster Studien durch Fokussierung der Ressourcen auf Grauzonen minimal bleibt.

  12. 12

    Zuerst eine Kalibrierungsrunde

    claude · regelkonform · 11/20 Punkte (6 + 5)

    Beide Screener screenen dieselben 100 Datensätze, besprechen jeden Konflikt und schärfen die Eignungskriterien vor der Hauptrunde, sodass spätere Konflikte und erneutes Lesen abnehmen.

  13. 13

    Binarisiertes Blitz-Screening mit KI-Triage

    gemini-3.6-flash · Nachbar · 10/20 Punkte (4 + 6)

    Mutation der Active-Learning-Priorisierung: Das Team nutzt eine vereinfachte Oberfläche zur Schnell-Bewertung (nur Klicks für 'Einschluss/Unsicher' vs. 'Ausschluss'). Ein KI-Modell wertet im Hintergrund Unsicherheiten aus und schickt nur Wackelkandidaten in die vertiefte Doppelprüfung. Minimiert kognitive Last und Lesezeit pro Abstract drastisch.

  14. 14

    Deterministisches Pre-Filtering via Match-Algorithmen

    gemini-3.6-flash · regelkonform · 6/20 Punkte (3 + 3)

    Konservative Such-Filter und Skripte sortieren vorab eindeutig unpassende Treffer aus (z. B. falsches Studiendesign oder nicht-menschliche Population). Beide Screener prüfen diese automatisierten Exklusionen nur über eine repräsentative Stichprobe (z. B. 10%). Dies reduziert das manuell zu screenende Gesamtvolumen PRISMA-konform und ohne Sensitivitätsverlust.

Alle Ideen, vollständig und in der Rangfolge. Claudes eigene Idee nimmt anonym und gleichberechtigt teil. Was die Mitglieder auf Deutsch geschrieben haben, steht hier im Original; was auf Englisch gesendet oder geschrieben wurde, ist hier übersetzt.

Fünf Headlines und Titel aus verschiedenen Bereichen. Jedes Mitglied schreibt eine Variante, Claudes Entwurf nimmt teil, und beide Mitglieder bewerten alle drei anonym. Wählen Sie eine Aufgabe aus.

AUFGEZEICHNET 2026-10-13 · KIRAT_CREATE · MODUS: VARIANTEN · AUFWANDSSTUFE: STANDARD · $0.03

Briefing: Headline für die Preisseite eines kleinen Rechnungstools für Freelancer (19 USD pro Monat, 14 Tage kostenlos testen). Zielgruppe: Freelancer, die ihre Rechnungen bisher in Word oder Excel schreiben. Ziel: Die Testphase soll sich risikolos und lohnend anfühlen. Format: eine Headline, auf Englisch.

Kriterien: max. 8 Wörter · konkret, keine Superlative · nennt gesparte Zeit oder das Bezahltwerden · keine Ausrufezeichen

  1. 1

    "Get paid without Word—free for 14 days"

    gpt-5.6 · 17/20 Punkte (9 + 8)

    Spricht Word-Nutzer direkt an, stellt das Bezahltwerden heraus und macht den risikofreien Test konkret.

  2. 2

    "Send invoices in minutes. Get paid on time."

    claude · 17/20 Punkte (8 + 9)

    Der eigene Entwurf des Orchestrators.

  3. 3

    "Replace Word and Excel. Get paid days faster."

    gemini-3.6-flash · 14/20 Punkte (7 + 7)

    Den aktuellen manuellen Arbeitsablauf direkt anzusprechen, schafft einen sofortigen Kontrast und stellt die Testphase als schnelles, risikofreies Upgrade für den Cashflow dar, ohne generischen Hype.

AUFGEZEICHNET 2026-10-13 · KIRAT_CREATE · MODUS: VARIANTEN · AUFWANDSSTUFE: STANDARD · $0.02

Briefing: Headline für die Landingpage einer kleinen Digitalagentur über Shop-Relaunches für den Möbelhandel mit WooCommerce. Zielgruppe: Inhaberinnen und Inhaber mittelgroßer Möbelshops ohne eigene Entwicklung. Ziel: einen kostenlosen Shop-Check buchen lassen. Format: eine Headline, deutscher Markt, aber auf Englisch schreiben.

Kriterien: max. 10 Wörter · nennt das Problem der Lesenden, nicht die Agentur · kein Jargon wie „headless“ oder „omnichannel“ · keine Superlative

  1. 1

    "Losing furniture buyers to a slow, frustrating WooCommerce store?"

    gemini-3.6-flash · 18/20 Punkte (8 + 10)

    Zielt direkt auf den größten Frust derer, die den Shop führen — entgangene Umsätze durch einen schwachen Shop —, ohne Tech-Jargon oder selbstgefällige Agentursprache.

  2. 2

    "Is your WooCommerce shop turning furniture buyers away?"

    gpt-5.6 · 17/20 Punkte (9 + 8)

    Benennt das Kernproblem direkt und spricht den Möbelhandel ohne Jargon an.

  3. 3

    "Fewer shop emergencies, more time for your furniture."

    claude · 11/20 Punkte (7 + 4)

    Der eigene Entwurf des Orchestrators.

AUFGEZEICHNET 2026-10-13 · KIRAT_CREATE · MODUS: VARIANTEN · AUFWANDSSTUFE: STANDARD · $0.02

Briefing: Headline für die neue Online-Bestellseite der Bäckerei für individuelle Torten. Zielgruppe: Kundschaft vor Ort, die bisher telefonisch bestellt hat. Ziel: Online zu bestellen soll sich einfach und persönlich anfühlen. Format: eine Headline, deutscher Markt, aber auf Englisch schreiben.

Kriterien: max. 8 Wörter · konkret, keine Superlative · nennt die Abholung oder den Anlass · klingt nach einer Bäckerei vor Ort, nicht nach einer Kette

  1. 1

    "Your celebration cake, baked here for pickup."

    gpt-5.6 · 19/20 Punkte (10 + 9)

    Warm, konkret und persönlich: „baked here“ wirkt lokal, während „for pickup“ den Online-Ablauf unkompliziert erscheinen lässt.

  2. 2

    "Order your custom birthday cake, pick up fresh."

    gemini-3.6-flash · 16/20 Punkte (8 + 8)

    Die Headline nennt konkret Anlass sowie Abholung und vermittelt durch das Frischeversprechen lokale Handwerksqualität ohne unpersönlichen Floskeln.

  3. 3

    "Your cake, your date. Order in two minutes."

    claude · 9/20 Punkte (5 + 4)

    Der eigene Entwurf des Orchestrators.

AUFGEZEICHNET 2026-10-13 · KIRAT_CREATE · MODUS: VARIANTEN · AUFWANDSSTUFE: STANDARD · $0.02

Briefing: Titel für einen internen Engineering-Vorschlag: die Grenzen des Abrechnungsmoduls innerhalb des Monolithen härten, bevor ein separater Service in Betracht gezogen wird. Zielgruppe: 8 Engineers und die Leitung, die weniger Vorfälle wollen. Ziel: dass der Vorschlag gelesen und genehmigt wird. Format: ein Titel, auf Englisch.

Kriterien: max. 10 Wörter · benennt die Entscheidung, nicht nur das Thema · keine Buzzwords · auch ohne technischen Hintergrund verständlich

  1. 1

    "Fix billing's boundaries first, split it later if needed"

    claude · 19/20 Punkte (10 + 9)

    Der eigene Entwurf des Orchestrators.

  2. 2

    "Keep Billing Together, but Isolate It to Prevent Incidents"

    gpt-5.6 · 16/20 Punkte (9 + 7)

    Der Titel benennt die Entscheidung, die Abrechnung im Monolithen zu belassen und zugleich ihre Grenzen zu stärken, und verknüpft diese Wahl mit dem gemeinsamen Ziel, weniger Vorfälle zu haben.

  3. 3

    "Strengthen Billing Boundaries in Current App Before Splitting Service"

    gemini-3.6-flash · 13/20 Punkte (7 + 6)

    Der Titel trifft eine eindeutige Richtungsentscheidung, vermeidet unnötigen Fachjargon wie 'Monolith' für das Management und spricht das gemeinsame Ziel der Stabilität direkt an.

AUFGEZEICHNET 2026-10-13 · KIRAT_CREATE · MODUS: VARIANTEN · AUFWANDSSTUFE: STANDARD · $0.02

Briefing: Titel für ein Methodenpaper über den Einsatz eines LLM als zusätzlicher Screener in einem systematischen Review in der Versorgungsforschung. Zielgruppe: Forschende und Gutachtende von Fachzeitschriften. Ziel: präzise und zitierfähig, kein Hype. Format: ein Titel, optional mit Untertitel nach einem Doppelpunkt, auf Englisch.

Kriterien: max. 20 Wörter · nennt die Methode und das Setting · keine Aussagen, die über die Daten hinausgehen · keine Hype-Wörter wie „revolutionize“

  1. 1

    "Large Language Model–Assisted Study Selection in Health Services Research: A Method for Additional Screening in Systematic Reviews"

    gpt-5.6 · 18/20 Punkte (9 + 9)

    Der Titel benennt die Screening-Methode, den Kontext des systematischen Reviews und das Setting der Versorgungsforschung, ohne Leistung oder Nutzen zu unterstellen.

  2. 2

    "An LLM as additional screener: a prospective comparison in a health services systematic review"

    claude · 16/20 Punkte (9 + 7)

    Der eigene Entwurf des Orchestrators.

  3. 3

    "Large Language Models as Auxiliary Screeners in Health Services Research Systematic Reviews: A Methodological Evaluation"

    gemini-3.6-flash · 15/20 Punkte (7 + 8)

    Der Titel benennt Einsatzgebiet und Methodik präzise, verzichtet auf Reizwörter und wählt einen sachlichen, zitierfähigen Ton für ein wissenschaftliches Publikationsumfeld.

Headlines und Titel stehen so da, wie sie geschrieben wurden, auf Englisch, wie es die Briefings verlangten. Die Begründung in Claudes Eintrag ist Kirats eigene Kennzeichnung dafür. Was die Mitglieder auf Deutsch geschrieben haben, steht hier im Original; alles andere, was auf Englisch gesendet oder geschrieben wurde, ist hier übersetzt.

Fünf Bild-Briefings aus verschiedenen Bereichen. OpenAI und Google erzeugen je ein Bild, und beide Mitglieder bewerten beide Bilder anonym. Wählen Sie eines aus.

AUFGEZEICHNET 2026-10-13 · KIRAT_IMAGE · MODUS: VARIANTEN · QUERFORMAT · ≈ $0.17

Briefing: Hero-Bild für die Landingpage eines kleinen Rechnungstools für Freelancer: ein aufgeräumter Schreibtisch im Homeoffice am Morgen mit einem Laptop (Bildschirm abgewandt oder unscharf, keine lesbare Oberfläche), einer Tasse Kaffee und einem Notizbuch aus Papier. Natürliches Tageslicht, ruhiger dokumentarischer Fotostil, kein Text, keine Logos, keine Gesichter von Menschen.

Kriterien: wirkt wie der echte Arbeitsplatz einer freiberuflich arbeitenden Person, nicht wie ein Stockfoto-Büro · ruhig und aufgeräumt · lässt ruhige Fläche für eine Headline · kein Text, keine Logos und keine lesbaren Bildschirme

Bild von gpt-image-2: ein von hinten gesehener Laptop auf einem Holzschreibtisch in einem hellen Raum, mit einer Tasse Kaffee, einem geschlossenen Notizbuch und einem Stift, im Hintergrund Regale.
1gpt-image-2 · 18/20 Punkte (9 + 9)

gpt-5.6 · 9/10 Sehr ruhiger, glaubwürdiger Homeoffice-Arbeitsplatz mit natürlichem Morgenlicht, abgewandtem Bildschirm und viel freier Wandfläche für eine Headline. Wirkt etwas inszeniert, erfüllt den Auftrag aber nahezu vollständig.

gemini-3.6-flash · 9/10 Sehr helle, natürliche Morgenlicht-Atmosphäre. Der abgewendete Laptop löst das Bildschirm-Problem perfekt ohne künstlichen Unschärfe-Effekt. Die helle Wandfläche bietet idealen Platz für Text.

Bild von gemini-3.1-flash-image: ein Holzschreibtisch an einem Fenster mit einem aufgeklappten Laptop mit unscharfem Bildschirm, einer Tasse Kaffee auf einer Untertasse, einem Notizbuch und einem Stift.
2gemini-3.1-flash-image · 13/20 Punkte (6 + 7)

gpt-5.6 · 6/10 Gemütlich und authentisch mit unscharfem Bildschirm, jedoch stehen deutlich sichtbarer Text auf dem Notizbuch sowie handschriftliche Notizen im Bild. Zudem ist die Komposition voller und bietet weniger ruhige Headline-Fläche.

gemini-3.6-flash · 7/10 Sehr gemütliches und realistisches Setup. Allerdings wirkt der künstlich weichgezeichnete Bildschirm etwas auffällig und der gesamte Bildaufbau bietet etwas weniger ruhige Fläche für eine Headline.

AUFGEZEICHNET 2026-10-13 · KIRAT_IMAGE · MODUS: VARIANTEN · QUERFORMAT · ≈ $0.17

Briefing: Produktfoto für einen Möbel-Onlineshop: ein massiver Esstisch aus Eiche mit vier Stühlen in einem hellen, echt wirkenden mitteleuropäischen Wohnzimmer. Natürliches Tageslicht, redaktioneller Interior-Stil, kein Text, keine Logos, keine Menschen.

Kriterien: der Tisch ist eindeutig das Hauptmotiv · naturgetreue Holzmaserung und Holzfarbe · wirkt wie ein echtes Zuhause, nicht wie ein 3D-Rendering · kein Text und keine Logos

Bild von gemini-3.1-flash-image: ein Esstisch aus Holz mit vier Stühlen auf einem Teppich in einem hellen Wohnzimmer mit Pflanzen und einer Glastür zum Garten.
1gemini-3.1-flash-image · 18/20 Punkte (9 + 9)

gpt-5.6 · 9/10 Sehr glaubwürdiges, helles mitteleuropäisches Wohnambiente mit natürlichem Tageslicht, vier Stühlen und realistischer Eichenstruktur; die etwas umfangreiche Dekoration lenkt minimal vom Tisch ab.

gemini-3.6-flash · 9/10 Sehr gelungene, wohnliche Atmosphäre mit authentischem Tageslicht und realistischer Holzmaserung. Erfüllt alle Vorgaben hervorragend.

Bild von gpt-image-2: ein Esstisch aus Eiche mit vier Stühlen mit dunklen Sitzkissen in einem hellen Raum, im Hintergrund ein Sofa und ein Fenster.
2gpt-image-2 · 17/20 Punkte (8 + 9)

gpt-5.6 · 8/10 Der massive Eichentisch ist klar inszeniert, vier Stühle sind vorhanden, Holzfarbe und Maserung wirken überzeugend; insgesamt jedoch etwas zu makellos und leicht renderartig.

gemini-3.6-flash · 9/10 Der Esstisch steht klar im Fokus, das Eichenholz und die Texturen wirken äußerst natürlich und fotorealistisch. Perfekter Editorial-Stil für den Online-Shop.

AUFGEZEICHNET 2026-10-13 · KIRAT_IMAGE · MODUS: VARIANTEN · QUERFORMAT · $0.17

Briefing: Hero-Bild für die neue Online-Bestellseite einer kleinen Bäckerei vor Ort für individuelle Torten: eine fertige Geburtstagstorte auf einer Holztheke in einer hellen, echt wirkenden Familienbäckerei, abholbereit in einem schlichten Tortenkarton. Natürliches Tageslicht, dokumentarischer Fotostil, kein Text, keine Logos, keine Gesichter von Menschen.

Kriterien: wirkt wie eine echte Bäckerei vor Ort, nicht wie eine Kette oder ein Stockfoto · die Torte ist eindeutig das Hauptmotiv · lässt ruhige Fläche für eine Headline · kein Text und keine Logos im Bild

Bild von gpt-image-2: eine Geburtstagstorte mit Kerzen und gespritzten Blüten in einem geöffneten Karton auf einer Holztheke in einer hellen Bäckerei.
1gpt-image-2 · 17/20 Punkte (8 + 9)

gpt-5.6 · 8/10 Kuchen als eindeutiges Hauptmotiv, einfache Kartonbox, natürliches Tageslicht und plausibles lokales Bäckerei-Umfeld. Kein sichtbarer Text oder Logo; die ruhige Deckelfläche eignet sich für eine Headline, auch wenn das Bild etwas stark inszeniert wirkt.

gemini-3.6-flash · 9/10 Erfüllt den Auftrag optimal: Völlig frei von Text und Logos, der Kuchen steht klar im Fokus, helles natürliches Licht und eine sehr authentische Atmosphäre. Der aufgeklappte Kartondeckel bietet eine ideale ruhige Fläche für Headlines.

Bild von gemini-3.1-flash-image: eine kleine Geburtstagstorte mit einem „Happy Birthday“-Topper in einem geöffneten Karton auf einer Bäckereitheke, dahinter Kreidetafeln mit dem Angebot.
2gemini-3.1-flash-image · 7/20 Punkte (4 + 3)

gpt-5.6 · 4/10 Kuchen und Abholbox sind klar inszeniert, die handwerkliche Bäckerei wirkt glaubwürdig. Verstößt jedoch deutlich gegen „no text“: Schriftzug auf dem Kuchenaufsatz, Menůtafeln und Kassenbon; zudem fehlt ruhige Headline-Fläche.

gemini-3.6-flash · 3/10 Verstößt gegen die strikte Vorgabe 'kein Text im Bild' durch den 'HAPPY BIRTHDAY'-Stecker und die beschrifteten Tafeln im Hintergrund. Auch der Hintergrund ist etwas zu unruhig.

AUFGEZEICHNET 2026-10-13 · KIRAT_IMAGE · MODUS: VARIANTEN · QUERFORMAT · ≈ $0.17

Briefing: Titelbild für einen internen Engineering-Blogpost über das Herauslösen eines Abrechnungsmoduls aus einem Monolithen: eine abstrakte, ruhige Illustration eines klar abgegrenzten Blocks, der von einem dichten Cluster miteinander verbundener Blöcke abgesetzt ist. Flacher Stil, gedeckte Farben, kein Text, keine Logos.

Kriterien: die Idee einer klaren Grenze ist auf einen Blick erkennbar · ruhig, nicht dramatisch · funktioniert auch in kleiner Größe · kein Text und keine Logos

Bild von gpt-image-2: ein dichter Cluster aus grauen und grünen Würfeln, durch Linien verbunden, und ein einzelner grüner Würfel in einer gestrichelten Umrandung, über eine gestrichelte Linie angebunden.
1gpt-image-2 · 16/20 Punkte (9 + 7)

gpt-5.6 · 9/10 Die isolierte Einheit mit gestrichelter Umgrenzung ist sofort erkennbar und steht klar dem dichten, vernetzten Blockcluster gegenüber. Ruhige, gedeckte Farbgebung; auch klein gut lesbar. Leichte räumliche Schattierung statt konsequent flachem Stil.

gemini-3.6-flash · 7/10 Gute Darstellung des isolierten Blocks mit gestrichelter Grenze, ruhiger Stil und klare Lesbarkeit auch in kleiner Ansicht.

Bild von gemini-3.1-flash-image: links ein kleiner bildschirmartiger Kasten, durch dünne Linien mit einem dichten, verworrenen Cluster aus Blöcken verbunden.
2gemini-3.1-flash-image · 10/20 Punkte (6 + 4)

gpt-5.6 · 6/10 Abgesetztes Element und komplexes Geflecht vermitteln die Entkopplung grundsätzlich, doch die Grenze wirkt eher wie ein Bildschirmrahmen als wie eine klar definierte Modulgrenze. Das Cluster ist sehr kleinteilig und verliert bei kleiner Darstellung an Lesbarkeit; insgesamt dennoch ruhig und ohne Logos oder lesbaren Text.

gemini-3.6-flash · 4/10 Fokus liegt auf einem Tablet-Bildschirm statt einem abgetrennten Baustein, das Wirrwarr wirkt weniger strukturiert.

AUFGEZEICHNET 2026-10-13 · KIRAT_IMAGE · MODUS: VARIANTEN · QUERFORMAT · ≈ $0.17

Briefing: Titelbild für einen Konferenzvortrag über KI-gestütztes Screening in systematischen Reviews: ein ordentlicher Stapel ausgedruckter Forschungs-Abstracts auf einem Schreibtisch, einige in zwei Ablagekörbe sortiert, weiches Tageslicht, dokumentarischer Fotostil. Kein lesbarer Text, keine Logos, keine Gesichter von Menschen.

Kriterien: seriös und wissenschaftlich, kein Hype · keine Roboter oder leuchtenden Gehirne · die Idee des Sortierens ist sichtbar · kein lesbarer Text und keine Logos

Bild von gpt-image-2: ein großer Stapel ausgedruckter Abstracts auf einem Holzschreibtisch neben zwei schwarzen Ablagen mit sortierten Papieren, einem Stift und einem Notizbuch.
1gpt-image-2 · 18/20 Punkte (9 + 9)

gpt-5.6 · 9/10 Seriöse, dokumentarische Schreibtischszene mit weichem Tageslicht; zwei Ablagen und farbige Reiter vermitteln die Sortierung klar. Keine Logos oder eindeutig lesbaren Texte, keine Personen.

gemini-3.6-flash · 9/10 Sehr gut umgesetzt. Hohe fotografische Qualität im Dokumentarstil, das Sortierkonzept mit Stapeln und Ablagen ist klar verständlich, ohne lesbaren Text oder Gesichter.

Bild von gemini-3.1-flash-image: Stapel ausgedruckter Papiere und beschriftete Sortierablagen auf einem Holzschreibtisch in einem Büro, im Hintergrund eine Person, die an einem Schreibtisch arbeitet.
2gemini-3.1-flash-image · 9/20 Punkte (5 + 4)

gpt-5.6 · 5/10 Wissenschaftlicher Arbeitskontext und Sortierung sind deutlich erkennbar. Die lesbaren Ablageetiketten verletzen jedoch die Vorgabe „kein lesbarer Text“; zudem ist im Hintergrund eine Person mit erkennbarem, wenn auch unscharfem Gesicht zu sehen.

gemini-3.6-flash · 4/10 Das Motiv passt prinzipiell, jedoch ist im Hintergrund eine Person/ein Gesicht sichtbar und die Ablagen enthalten fehlerhaften, teils lesbaren Text (INCLVDED/EACLVDED).

KI-generierte Bilder, verkleinert und ansonsten unbearbeitet. Mit ≈ markierte Kosten stammen aus parallel gelaufenen Durchläufen: die eigenen Bildkosten jedes Durchlaufs plus ein gleicher Anteil an den Bewertungsaufrufen. Die Rangfolge ist eine Vorauswahl, die endgültige Wahl bleibt bei Ihnen. Was die Mitglieder auf Deutsch geschrieben haben, steht hier im Original; was auf Englisch gesendet oder geschrieben wurde, ist hier übersetzt.

02b — Erste Schritte

Zwei Keys, eine Installation, eine Frage.

Kirat ist kein Dienst, für den Sie sich registrieren. Es läuft auf Ihrem Computer (oder in Ihrer eigenen Cloud-Umgebung von Claude Code), innerhalb von Claude, mit Ihren eigenen API-Keys. Es gibt keinen Kirat-Server und kein Konto bei uns. Alles, was Sie Kirat geben, geht direkt an OpenAI und Google, über Ihre Konten — von Ihrem Computer aus oder, in Cloud-Sitzungen von Claude Code, aus Ihrer eigenen Cloud-Umgebung über den Netzwerk-Proxy von Anthropic für diese Umgebung. Wir sehen Ihre Keys und Ihre Fragen nie.

Schritt 1 · der langsame Teil

Zwei API-Keys

Ein OpenAI-API-Key und ein Google-Gemini-API-Key, beide mit aktivierter Abrechnung. Zeit kosten hier die Registrierungs- und Abrechnungsformulare der Anbieter. Ein separates Projekt beim Anbieter mit Ausgabenlimit ist eine gute Idee.

Sie haben beide Keys schon? Weiter mit Schritt 2.

Schritt 2

Installieren

Claude Desktop: Entpacken Sie den Download. Öffnen Sie Settings → Extensions → Advanced settings → Install Extension… und wählen Sie die .mcpb-Datei. Geben Sie beide Keys im Dialog ein. Desktop bringt sein eigenes Node mit, es ist also nichts weiter zu installieren.

Claude Code: Entpacken Sie den Download und verschieben Sie den entpackten Ordner kirat in Ihren Home-Ordner, sodass ~/kirat/claude-code existiert. Führen Sie dann die Befehle unten aus. Erfordert Node.js 20 oder neuer.

Cloud-Sitzungen von Claude Code: eine einmalige Einrichtung Ihrer Cloud-Umgebung, mit Einschränkungen — siehe unten.

Schritt 3

Fragen

Prüfen Sie die Installation: Nutze die Kirat-Erweiterung und rufe kirat_status auf.

Stellen Sie dann eine echte Frage: Frag den Kirat-Rat: Postgres oder SQLite? Gib auch deine eigene Position ab.

# in Claude Code, sobald ~/kirat/claude-code existiert
/plugin marketplace add ~/kirat/claude-code
/plugin install kirat@kirat
# beide Keys eingeben, wenn danach gefragt wird; später ändern mit:
/plugin configure kirat@kirat

Claude Desktop warnt, dass die Erweiterung nicht von Anthropic verifiziert ist. Diese Warnung ist bei jeder aus einer Datei installierten Erweiterung zu erwarten — siehe FAQ.

Abb. 2.5 — Wo es läuft

Prüfen Sie das vor dem Kauf.

Kirat ist ein Programm, kein Dienst. Es funktioniert nur dort, wo Claude Tools auf einem Rechner ausführt, auf dem Kirat installiert ist: auf Ihrem Computer, auf einem entfernten Rechner per SSH oder in einer Cloud-Umgebung von Claude Code, die Sie einmal einrichten.

Funktioniert in

  • Chats in Claude Desktop unter macOS und Windows Nutzt die .mcpb-Erweiterung.
  • Claude Code im Terminal oder in VS Code Nutzt das Claude-Code-Plugin. Erfordert Node.js 20 oder neuer; für die Installation wird einmalig das Kommandozeilen-Tool claude benötigt.
  • Lokale Sitzungen im Code-Tab von Claude Desktop Ebenfalls das Claude-Code-Plugin. Die .mcpb-Erweiterung ist für Chats gemacht, nicht für Sitzungen im Code-Tab.
  • SSH-Sitzungen Das Plugin, installiert auf dem entfernten Rechner.
  • Cloud-Sitzungen von Claude Code — eingeschränkt, mit einmaliger Einrichtung der Cloud-Umgebung Cloud-Sitzungen im Code-Tab, Claude Code im Web oder in der mobilen App. Einmal pro Cloud-Umgebung:
    1. Fügen Sie den Block aus dem Download (cloud/setup.sh) am Anfang des Setup-Skripts der Umgebung ein.
    2. Legen Sie Ihre beiden Keys als Umgebungsvariablen an. Wir empfehlen die Namen KIRAT_OPENAI_API_KEY und KIRAT_GEMINI_API_KEY: Sie kollidieren nicht mit dem eigenen OPENAI_API_KEY eines Projekts. Kirat akzeptiert auch OPENAI_API_KEY und GEMINI_API_KEY.
    3. Netzwerkzugriff: Steht er auf Full, ist nichts zu ändern. Andernfalls stellen Sie ihn auf Custom (in neueren Apps: Limited) mit der Standardliste für Paketmanager, plus api.openai.com und den Kirat-Download-Host.
    Lesen Sie zuerst die Cloud-Grenzen unten.

Funktioniert nicht in

  • Chat im Browser (claude.ai)
  • Chat in den mobilen Claude-Apps Claude Code in der mobilen App läuft als Cloud-Sitzung; das funktioniert mit der Cloud-Einrichtung.
  • Cowork-Aufgaben, die in der Cloud laufen
  • Netzwerke auf Ihrem eigenen Computer, die einen HTTP-Proxy erfordern Cloud-Umgebungen von Claude Code funktionieren.
  • Organisationen, die Desktop-Erweiterungen auf eine Freigabeliste beschränken Manuelle Installationen sind gesperrt; fragen Sie Ihren Admin.

Cloud-Grenzen — vor dem Kauf prüfen

  • Alle, die die Umgebung nutzen, können ihre Umgebungsvariablen lesen — auch Ihre beiden Keys. Teilen Sie die Umgebung nicht mit Personen, die diese Keys nicht verwenden sollen.
  • Das Tagesbudget gilt pro Sitzung. Jede Cloud-Sitzung startet neu, daher zählt das Tagesbudget von Kirat pro Sitzung, nicht über alle Ihre Sitzungen eines Tages hinweg. Setzen Sie Ausgabenlimits bei OpenAI und Google: In der Cloud sind sie Ihre eigentliche Obergrenze.
  • Hintergrundjobs und letzte Ergebnisse enden mit der Sitzung. Sie gehen verloren, wenn der Rechner der Sitzung beendet wird.
  • Zwei Hosts freigeben. Neben api.openai.com muss der Netzwerkzugriff der Umgebung den Kirat-Download-Host zulassen (Gemini ist durch die Standardliste abgedeckt).
  • Ein fehlgeschlagenes Setup kann zwischengespeichert bleiben. Schlägt das Setup fehl, startet die Sitzung trotzdem, nur ohne Kirat — und der fehlgeschlagene Zustand kann für neue Sitzungen zwischengespeichert bleiben, bis Sie das Setup-Skript bearbeiten (jede Änderung bewirkt, dass neue Sitzungen es erneut ausführen).

Warum die Erweiterung nie eine Cloud-Sitzung erreicht: Cloud-Sitzungen laufen auf den Servern von Anthropic, in einer Cloud-Umgebung, und können kein Programm auf Ihrem Computer erreichen — selbst wenn Claude Desktop Kirat in einer solchen Sitzung unter „+ → Connectors“ als eingeschaltet anzeigt. Eine Cloud-Sitzung hat Kirat nur, wenn ihre Cloud-Umgebung die Kirat-Einrichtung hat.

Welche Art von Code-Tab-Sitzung ist es? Die Umgebungsauswahl im Eingabefeld zeigt es: Local, SSH, WSL oder der Name einer Cloud-Umgebung. Local- und SSH-Sitzungen nutzen das Plugin; eine Cloud-Umgebung braucht die Cloud-Einrichtung.

Nicht getestet: WSL-Sitzungen und lokale Cowork-Aufgaben.

Diesen Kasten gibt es, weil der Rat ihn verlangt hat. Als er am 8. Oktober 2026 dafür stimmte, Kirat als Desktop-Erweiterung auszuliefern, war eine seiner Bedingungen, dass diese Grenzen vor dem Kauf klar sichtbar sind. Zur Entscheidung. Als er später dafür stimmte, Cloud-Sitzungen von Claude Code zu unterstützen, stellte er dieselbe Bedingung für die Cloud-Grenzen.

03 — Belege

Wir heben die Belege auf.

Behaupten kann jeder, dass ein Rat funktioniert. Hier sind echte Ratssitzungen über Kirat selbst, Messungen aus Produktivläufen und die Fehler, die das Design verändert haben.

Historische Entscheidung, August 2026. Diese Abstimmung betraf den früheren Plan: Kirat als Bauanleitung zu verkaufen. Dieser Plan hat sich später geändert, und die Gegenstimme unten hat geprägt, was danach kam.

„Sollen wir die Kirat-Bauanleitung verkaufen — und wenn ja, wie?“
2026-08-24 · RUNDE 1 VON 2 · ERGEBNIS: MEHRHEIT, NICHT EINSTIMMIG · $0.033
gemini-3.6-flashKonfidenz 85
Dafür: hybrid — kostenloser Kern, kostenpflichtige BetriebsstufeOhne bestehendes Publikum scheitert ein Launch hinter einer Bezahlschranke an der Distribution. Die verteidigbare Substanz ist nicht der Kerncode, sondern die Betriebserfahrung.
claude (dritte Stimme)Konfidenz 65
Dafür: hybrid — kostenloser Kern, kostenpflichtige BetriebsstufeDer eine nachgewiesene Erfolgsfaktor, der uns fehlt, ist ein Publikum; der eine verteidigbare Wert ist die Betriebsschicht. Der kostenlose Kern baut das Erste auf, die kostenpflichtige Stufe verkauft das Zweite.
gpt-5.6Konfidenz 88
Dagegen: gar nicht verkaufenZwei bis vier Wochen plus laufende Wartung sind ohne Entwickler-Publikum keine gute Verwendung der Zeit; kostenlose Alternativen decken den sichtbaren Kern bereits ab. Selbst das Basisszenario setzt einen ungewissen Launch und fortlaufendes Marketing voraus.Gegenstimme protokolliert

Ein Mitglied stimmte dagegen, das Produkt überhaupt zu verkaufen. Seine Begründung blieb im Protokoll, und die Gegenstimme prägte, was danach kam: Kirat ist jetzt eine installationsfertige Erweiterung, keine Bauanleitung. Genau darum geht es bei einem Rat — Sie bekommen den Einwand, nicht nur das Urteil.

04 — Stückliste

Ein Kauf. Beide Formate.

Kein Abo, keine Nutzerplätze, kein Konto bei uns. Kirat läuft auf Ihrem Computer oder in Ihrer eigenen Cloud-Umgebung; Sie mieten keinen Dienst bei uns.

Blueprint
$49
Nur Dokumente — um mit einem Coding-Agenten Ihren eigenen Rat-Server zu bauen oder anzupassen. Für die Nutzung von Kirat nicht nötig.
  • 01Die Spezifikation: strukturierte Anforderungen an die Tools
  • 02Die Architekturentscheidungen, jeweils mit ihrer Begründung
  • 03Die Abnahme-Checkliste, anhand derer ein Agent sich selbst prüfen kann
  • 04Die Benchmark-Daten hinter den Zahlen auf dieser Website

Kein Code, keine installierbare Erweiterung.

Blueprint kaufen

Einmalkauf · Zahlung über Lemon Squeezy (Merchant of Record, Verkäufer), Umsatzsteuer wird im Checkout abgewickelt · Erstattungen: siehe AGB

Die API-Nutzung bezahlen Sie direkt an OpenAI und Google, über Ihre Konten — $0.02–$0.15 pro Ratsentscheidung in unseren Messungen.

Kirat ist nichts für Sie, wenn …

  • —Sie Claude nur als Chat im Browser oder auf dem Smartphone nutzen. Kirat läuft in Claude Desktop (macOS/Windows) und Claude Code sowie in Cloud-Sitzungen von Claude Code mit einmaliger Einrichtung — nicht in diesen Chats.
  • —Sie SaaS mit Support-Hotline wollen.
  • —Sie keine API-Konten und keine Abrechnung bei zwei Anbietern wollen.
  • —Sie nur eine Handvoll Entscheidungen im Monat treffen. Zwei Browser-Tabs sind kostenlos und leisten Ihnen dann genauso gute Dienste.
  • —Sie erwarten, dass drei Modelle so viel kosten wie eines. Ratsläufe verbrauchen echte API-Tokens — $0.02 bis $0.15 pro Entscheidung in unseren Messungen.
  • —Sie eine Antwort wollen, die sicher klingt. Die Aufgabe eines Rats ist es, Ihnen die Uneinigkeit zu zeigen, und manchmal ist die Uneinigkeit die Antwort.
  • —Ihre Daten nicht an OpenAI oder Google gehen dürfen. Alles, was Sie Kirat geben, geht an beide, über Ihre Konten und zu deren Bedingungen.
  • —Ihre Organisation Erweiterungen sperrt oder einen HTTP-Proxy vorschreibt.

Sie müssen kein Entwickler sein.

Wenn Sie eine Claude-Erweiterung installieren und zwei API-Keys anlegen können, können Sie Kirat nutzen. Sie fragen in normaler Sprache; Claude ruft die Tools auf.

Und was Agenten bauen können: Kirat selbst besteht aus 11.351 Zeilen TypeScript, Quellcode und Tests, in 38 Commits — jeder Commit von einem KI-Agenten (Claude) geschrieben, keiner von Hand.

05 — Fragen

Vor dem Kauf.

Was unterscheidet Kirat von llm-council oder PAL MCP?

Sehen Sie sich zuerst beide an. llm-council ist eine Open-Source-Web-App; ihr Autor bezeichnet sie als bewusst ohne Support. PAL MCP ist ein kostenloser Open-Source-MCP-Server, den Sie über das Terminal installieren; er unterstützt viele Anbieter und hat ein eigenes Konsens-Tool. Prüfen Sie ihren aktuellen Stand. Wenn eines davon abdeckt, was Sie brauchen, nutzen Sie es.

Der Unterschied von Kirat liegt im Paket: Es wird über den eigenen Erweiterungsdialog von Claude Desktop installiert, mit Ihren Keys im sicheren Speicher des Betriebssystems, und bringt einen Budgetwächter mit Tagesobergrenze, ein Zwei-Runden-Limit, einen Stichentscheid durch den Domänenverantwortlichen, Hintergrund-Tickets, Fehlerbehandlung, 256 Tests, englische Ergebnisfelder und die Bedienung in normaler Sprache mit.

Muss ich Entwickler sein?

Nein. Wenn Sie eine Claude-Erweiterung installieren und zwei API-Keys anlegen können, können Sie Kirat nutzen. Sie fragen Claude in normaler Sprache — Frag den Kirat-Rat: Postgres oder SQLite? Gib auch deine eigene Position ab. — und Claude ruft die Tools auf.

Was brauche ich?

Claude Desktop unter macOS oder Windows. Es bringt sein eigenes Node mit, Sie installieren also nichts weiter. Oder Claude Code mit Node.js 20 oder neuer. Für Cloud-Sitzungen von Claude Code eine einmalige Einrichtung Ihrer Cloud-Umgebung (siehe unten).

Dazu ein OpenAI-API-Key und ein Google-Gemini-API-Key, beide mit aktivierter Abrechnung. Kirat läuft auch mit einem Key: Der Rat hat dann ein externes Mitglied, und jedes Ergebnis nennt den fehlenden Key.

Was kostet der Betrieb, und was verhindert eine ausufernde Rechnung?

Sie bezahlen OpenAI und Google direkt für Ihre Nutzung. In unseren Messungen kostet eine Ratsentscheidung $0.02–$0.15, abhängig von Aufwandsstufe und Eingabegröße, und dauert 8 Sekunden bis 3 Minuten. Bildgenerierung kostet etwa $0.05–$0.15 pro Aufruf.

Der Budgetwächter reserviert vor jedem Aufruf die Kosten für den ungünstigsten Fall und blockiert Aufrufe, die Ihr Tagesbudget überschreiten könnten — standardmäßig $5 pro UTC-Tag, anpassbar. Er arbeitet nach bestem Bemühen, ohne Gewähr; setzen Sie also zusätzlich Ausgabenlimits bei den Anbietern. kirat_status zeigt Budget und Ausgaben und kostet nichts.

Wohin gehen meine Daten und Keys?

Ihre Daten: Alles, was Sie Kirat geben (Fragen, Kontext, Code, Bilder), geht direkt an OpenAI und Google, über Ihre Konten und zu deren Bedingungen — von Ihrem Computer aus oder, in Cloud-Sitzungen von Claude Code, aus Ihrer eigenen Cloud-Umgebung über den Netzwerk-Proxy von Anthropic für diese Umgebung. Es gibt keinen Kirat-Server, kein Konto bei uns und keine Telemetrie. Wir sehen Ihre Keys und Ihre Daten nie.

Ihre Keys: Sie geben sie im Installations- oder Einstellungsdialog von Claude selbst ein. Claude Desktop speichert sie im sicheren Speicher Ihres Betriebssystems (macOS-Schlüsselbund, Windows-Anmeldeinformationsverwaltung). Claude Code speichert sie im macOS-Schlüsselbund; unter Windows und Linux in ~/.claude/.credentials.json, nur für Ihr Benutzerkonto lesbar. Wir empfehlen ein separates Projekt beim Anbieter mit Ausgabenlimit.

In Cloud-Sitzungen von Claude Code: Kirat läuft in Ihrer Cloud-Umgebung, und die Keys sind Umgebungsvariablen dieser Umgebung, lesbar für alle, die sie nutzen.

Auf Ihrem Computer: Kirat legt in Ihrem Home-Ordner einen Ordner .kirat an, mit dem täglichen Kostenzähler, dem Kostenprotokoll, den letzten 20 Ergebnissen (sie enthalten Ihre Fragen und Antworten), dem Protokoll delegierter Entscheidungen und generierten Bildern. Sie können ihn jederzeit löschen. Alle Kirat-Sitzungen auf dem Computer teilen ihn, Desktop und Code.

Wo funktioniert es? Desktop-Chats, Code-Tab, Browser, Smartphone, Cloud?

Kurz gesagt: Claude Desktop (macOS/Windows) und Claude Code; Cloud-Sitzungen von Claude Code mit einmaliger Einrichtung — nicht der Chat im Browser oder auf Mobilgeräten. Kirat ist ein Programm, kein Dienst. Es funktioniert nur dort, wo Claude Tools auf einem Rechner ausführt, auf dem Kirat installiert ist:

  • Chats in Claude Desktop unter macOS und Windows — mit der .mcpb-Erweiterung.
  • Claude Code im Terminal oder in VS Code sowie lokale Sitzungen im Code-Tab von Claude Desktop — mit dem Claude-Code-Plugin. Es erfordert Node.js 20 oder neuer, und für die Installation wird einmalig das Kommandozeilen-Tool claude benötigt. Die .mcpb-Erweiterung ist für Chats gemacht, nicht für Sitzungen im Code-Tab.
  • SSH-Sitzungen — mit dem auf dem entfernten Rechner installierten Plugin.
  • Cloud-Sitzungen von Claude Code (Cloud-Sitzungen im Code-Tab, Claude Code im Web oder in der mobilen App) — mit einmaliger Einrichtung Ihrer Cloud-Umgebung und mit Einschränkungen (siehe nächste Frage).

Nicht unterstützt: Chat im Browser (claude.ai) oder in den mobilen Apps sowie Cowork-Aufgaben, die in der Cloud laufen. Die Erweiterung auf Ihrem Computer erreicht nie eine Cloud-Sitzung, selbst wenn Claude Desktop Kirat dort unter „+ → Connectors“ als eingeschaltet anzeigt. Welche Art von Code-Tab-Sitzung Sie nutzen, sehen Sie an der Umgebungsauswahl im Eingabefeld: Local, SSH, WSL oder der Name einer Cloud-Umgebung.

Nicht getestet: WSL-Sitzungen und lokale Cowork-Aufgaben.

Netzwerke auf Ihrem eigenen Computer, die einen HTTP-Proxy erfordern, werden nicht unterstützt; Cloud-Umgebungen von Claude Code funktionieren. Wenn Ihre Organisation Desktop-Erweiterungen auf eine Freigabeliste beschränkt, sind manuelle Installationen gesperrt; fragen Sie Ihren Admin.

Wie funktioniert Kirat in Cloud-Sitzungen von Claude Code, und welche Grenzen gibt es?

Cloud-Sitzungen — Cloud-Sitzungen im Code-Tab, Claude Code im Web oder in der mobilen App — laufen auf den Servern von Anthropic in einer Cloud-Umgebung. Die Erweiterung auf Ihrem Computer kann sie nicht erreichen. Stattdessen richten Sie die Cloud-Umgebung einmal ein:

  • den Block aus dem Download (cloud/setup.sh) am Anfang des Setup-Skripts der Umgebung einfügen;
  • Ihre beiden Keys als Umgebungsvariablen anlegen — wir empfehlen die Namen KIRAT_OPENAI_API_KEY und KIRAT_GEMINI_API_KEY, die nicht mit dem eigenen OPENAI_API_KEY eines Projekts kollidieren (Kirat akzeptiert auch OPENAI_API_KEY und GEMINI_API_KEY);
  • Netzwerkzugriff: Steht er auf Full, ist nichts zu ändern; andernfalls auf Custom (in neueren Apps: Limited) stellen, mit der Standardliste für Paketmanager, plus api.openai.com und den Kirat-Download-Host.

Das Skript lädt genau Ihre Version von Kirat herunter, prüft ihre SHA-256-Prüfsumme und installiert sie. Es ist eine einmalige Einrichtung, kein einzelner Klick. Wir haben sie in einem Cloud-Container getestet.

Die Grenzen: Alle, die die Umgebung nutzen, können ihre Umgebungsvariablen lesen, auch Ihre Keys. Jede Cloud-Sitzung startet neu, daher zählt das Tagesbudget von Kirat pro Sitzung — setzen Sie Ausgabenlimits bei OpenAI und Google; in der Cloud sind sie Ihre eigentliche Obergrenze. Hintergrundjobs und letzte Ergebnisse enden mit der Sitzung. Neben api.openai.com muss der Netzwerkzugriff der Umgebung den Kirat-Download-Host zulassen (Gemini ist durch die Standardliste abgedeckt). Schlägt das Setup fehl, startet die Sitzung trotzdem, nur ohne Kirat — und der fehlgeschlagene Zustand kann für neue Sitzungen zwischengespeichert bleiben, bis Sie das Setup-Skript bearbeiten (jede Änderung bewirkt, dass neue Sitzungen es erneut ausführen).

Die Download-Adresse im Setup-Skript ist Teil Ihres Kaufs, wie das ZIP; veröffentlichen Sie sie nicht. Die Lizenz deckt Ihre eigenen Cloud-Umgebungen ab. Eine Cloud-Umgebung, die Sie mit anderen teilen, erfordert eine Lizenz pro Person.

Welche Modelle nutzt es? Und wenn ein Anbieter eines außer Betrieb nimmt?

Standardmäßig gpt-5.6 von OpenAI und gemini-3.6-flash von Google, mit Claude als dritter Stimme.

Modellnamen und Preise sind Einstellungen. Nimmt ein Anbieter ein Modell außer Betrieb, tragen Sie den neuen Namen und seine beiden Preise ein. Kein Update nötig.

Claude Desktop meldet, die Erweiterung sei nicht von Anthropic verifiziert. Ist das ein Problem?

Diese Warnung ist zu erwarten. Claude Desktop zeigt sie bei Erweiterungen, die aus einer Datei installiert werden, und Kirat wird aus einer Datei installiert — es ist nicht von Anthropic verifiziert oder signiert.

Wie funktionieren Updates?

Installieren Sie in Claude Desktop die neue .mcpb auf dieselbe Weise wie die erste. Ihre Keys und Einstellungen bleiben erhalten.

Kompatibilitätsupdates sind nach Möglichkeit kostenlos, aber ohne Garantie. Größere neue Versionen können separat verkauft werden.

Bekomme ich Support?

Bei Problemen mit Kauf, Download und Installation: ja, per E-Mail — die Kontaktdaten stehen im Impressum. Es gibt keine Implementierungsberatung und keine garantierte Antwortzeit.

Was erlaubt die Lizenz?

Eine Person, auf beliebig vielen eigenen Geräten und in Ihren eigenen Cloud-Umgebungen. Eine Cloud-Umgebung, die Sie mit anderen teilen, erfordert eine Lizenz pro Person. Kein Weiterverkauf und keine Weitergabe. Kirat ist proprietäre Software, nicht Open Source.

Was der Rat produziert, in Ihrer eigenen Arbeit zu verwenden, auch in kommerzieller Arbeit, ist erlaubt. Die vollständigen Bedingungen stehen in den AGB.

Wofür ist der Blueprint? Brauche ich ihn?

Für die Nutzung von Kirat brauchen Sie ihn nicht. Der Blueprint richtet sich an alle, die mit einem Coding-Agenten ihren eigenen Rat-Server bauen oder anpassen wollen.

Er enthält nur Dokumente — keinen Code, keine installierbare Erweiterung: die Spezifikation (strukturierte Anforderungen an die Tools), die Architekturentscheidungen jeweils mit ihrer Begründung, die Abnahme-Checkliste, anhand derer ein Agent sich selbst prüfen kann, und die Benchmark-Daten hinter den Zahlen auf dieser Website. Einen Bundle-Preis gibt es nicht.

Kirat — $99 für die ersten 50 Käufer (danach $149) Kirat kaufen