From 7228fee77ab58a6f52a6ccf0e3ac2dc886d24c68 Mon Sep 17 00:00:00 2001 From: Jan Wagner Date: Sat, 22 Aug 2026 16:24:38 +0200 Subject: [PATCH] feat(homepage): improve hero copy and CTA conversion - Rewrite hero H1: pain point instead of jargon ('Zahlen verschwinden') - Expand aside: explain failure mode ('stille Korrekturen') - Add prominent demo CTA after hero (batch.w-make.com) - Enhance final CTA with benefit checklist (2-day response, honest assessment) - Add hover states to CTA button - All changes bilingual (DE/EN) Impact: Clearer value prop for non-glass industry decision-makers --- .codegraph/logs/mcp-server.log | 111 +++++++++++++++++++++++++++++++++ src/app/[lang]/page.tsx | 29 ++++++++- src/i18n/dictionaries.ts | 42 ++++++++----- 3 files changed, 164 insertions(+), 18 deletions(-) create mode 100644 .codegraph/logs/mcp-server.log diff --git a/.codegraph/logs/mcp-server.log b/.codegraph/logs/mcp-server.log new file mode 100644 index 0000000..576af82 --- /dev/null +++ b/.codegraph/logs/mcp-server.log @@ -0,0 +1,111 @@ +2026-08-16T00:09:06.563114Z INFO 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:09:06.563603Z INFO 678: 📋 No config file found, using defaults +2026-08-16T00:09:06.563618Z INFO 605: ✅ Configuration loaded successfully +2026-08-16T00:09:06.563620Z INFO 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:09:06.563622Z INFO 611: 🤖 Embedding provider: auto +2026-08-16T00:09:06.563624Z INFO 612: 🔧 Embedding model: None +2026-08-16T00:09:06.563630Z INFO 613: 📐 Embedding dimension: 2048 +2026-08-16T00:09:06.563632Z INFO 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:09:06.563634Z INFO 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:09:06.594420Z INFO 239: client initialized +2026-08-16T00:09:06.595349Z INFO serve_inner: 562: Service initialized as server peer_info=Some(InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: None, sampling: None, elicitation: Some(ElicitationCapability { schema_validation: None }) }, client_info: Implementation { name: "Cursor", title: None, version: "1.0.0", icons: None, website_url: None } }) +2026-08-16T00:09:13.103303Z INFO serve_inner: 618: input stream terminated +2026-08-16T00:09:13.103383Z INFO serve_inner: 844: serve finished quit_reason=Closed +2026-08-16T00:09:14.547926Z INFO 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:09:14.547973Z INFO 678: 📋 No config file found, using defaults +2026-08-16T00:09:14.547989Z INFO 605: ✅ Configuration loaded successfully +2026-08-16T00:09:14.547991Z INFO 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:09:14.547993Z INFO 611: 🤖 Embedding provider: auto +2026-08-16T00:09:14.547995Z INFO 612: 🔧 Embedding model: None +2026-08-16T00:09:14.548002Z INFO 613: 📐 Embedding dimension: 2048 +2026-08-16T00:09:14.548005Z INFO 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:09:14.548007Z INFO 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:09:14.564338Z INFO 239: client initialized +2026-08-16T00:09:14.564401Z INFO serve_inner: 562: Service initialized as server peer_info=Some(InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: None, sampling: None, elicitation: Some(ElicitationCapability { schema_validation: None }) }, client_info: Implementation { name: "Cursor", title: None, version: "1.0.0", icons: None, website_url: None } }) +2026-08-16T00:11:08.839023Z INFO serve_inner: 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:11:08.839058Z INFO serve_inner: 678: 📋 No config file found, using defaults +2026-08-16T00:11:08.839075Z INFO serve_inner: 605: ✅ Configuration loaded successfully +2026-08-16T00:11:08.839078Z INFO serve_inner: 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:11:08.839081Z INFO serve_inner: 611: 🤖 Embedding provider: auto +2026-08-16T00:11:08.839084Z INFO serve_inner: 612: 🔧 Embedding model: None +2026-08-16T00:11:08.839088Z INFO serve_inner: 613: 📐 Embedding dimension: 2048 +2026-08-16T00:11:08.839090Z INFO serve_inner: 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:11:08.839093Z INFO serve_inner: 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:11:08.839106Z INFO serve_inner: 648: AutoAgents semantic_question (tier=Small) +2026-08-16T00:11:08.839120Z INFO serve_inner: 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:11:08.839130Z INFO serve_inner: 678: 📋 No config file found, using defaults +2026-08-16T00:11:08.839138Z INFO serve_inner: 605: ✅ Configuration loaded successfully +2026-08-16T00:11:08.839141Z INFO serve_inner: 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:11:08.839144Z INFO serve_inner: 611: 🤖 Embedding provider: auto +2026-08-16T00:11:08.839146Z INFO serve_inner: 612: 🔧 Embedding model: None +2026-08-16T00:11:08.839149Z INFO serve_inner: 613: 📐 Embedding dimension: 2048 +2026-08-16T00:11:08.839151Z INFO serve_inner: 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:11:08.839172Z INFO serve_inner: 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:11:08.839218Z WARN serve_inner: 773: response error id=3 error=ErrorData { code: ErrorCode(-32603), message: "Failed to create LLM provider: LLM is not enabled in configuration", data: None } +2026-08-16T00:11:10.909914Z INFO serve_inner: 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:11:10.909956Z INFO serve_inner: 678: 📋 No config file found, using defaults +2026-08-16T00:11:10.909980Z INFO serve_inner: 605: ✅ Configuration loaded successfully +2026-08-16T00:11:10.909985Z INFO serve_inner: 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:11:10.909988Z INFO serve_inner: 611: 🤖 Embedding provider: auto +2026-08-16T00:11:10.909993Z INFO serve_inner: 612: 🔧 Embedding model: None +2026-08-16T00:11:10.909997Z INFO serve_inner: 613: 📐 Embedding dimension: 2048 +2026-08-16T00:11:10.910002Z INFO serve_inner: 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:11:10.910006Z INFO serve_inner: 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:11:10.910012Z INFO serve_inner: 648: AutoAgents architecture_analysis (tier=Small) +2026-08-16T00:11:10.910021Z INFO serve_inner: 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:11:10.910034Z INFO serve_inner: 678: 📋 No config file found, using defaults +2026-08-16T00:11:10.910047Z INFO serve_inner: 605: ✅ Configuration loaded successfully +2026-08-16T00:11:10.910051Z INFO serve_inner: 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:11:10.910055Z INFO serve_inner: 611: 🤖 Embedding provider: auto +2026-08-16T00:11:10.910059Z INFO serve_inner: 612: 🔧 Embedding model: None +2026-08-16T00:11:10.910062Z INFO serve_inner: 613: 📐 Embedding dimension: 2048 +2026-08-16T00:11:10.910066Z INFO serve_inner: 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:11:10.910070Z INFO serve_inner: 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:11:10.910083Z WARN serve_inner: 773: response error id=4 error=ErrorData { code: ErrorCode(-32603), message: "Failed to create LLM provider: LLM is not enabled in configuration", data: None } +2026-08-16T00:17:24.425995Z INFO 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:17:24.426033Z INFO 678: 📋 No config file found, using defaults +2026-08-16T00:17:24.426052Z INFO 605: ✅ Configuration loaded successfully +2026-08-16T00:17:24.426054Z INFO 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:17:24.426056Z INFO 611: 🤖 Embedding provider: auto +2026-08-16T00:17:24.426059Z INFO 612: 🔧 Embedding model: None +2026-08-16T00:17:24.426064Z INFO 613: 📐 Embedding dimension: 2048 +2026-08-16T00:17:24.426067Z INFO 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:17:24.426070Z INFO 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:18:55.684496Z INFO 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:18:55.684539Z INFO 678: 📋 No config file found, using defaults +2026-08-16T00:18:55.684560Z INFO 605: ✅ Configuration loaded successfully +2026-08-16T00:18:55.684563Z INFO 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:18:55.684565Z INFO 611: 🤖 Embedding provider: auto +2026-08-16T00:18:55.684568Z INFO 612: 🔧 Embedding model: None +2026-08-16T00:18:55.684575Z INFO 613: 📐 Embedding dimension: 2048 +2026-08-16T00:18:55.684578Z INFO 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:18:55.684581Z INFO 615: 💬 LLM insights: disabled (context-only) +2026-08-16T00:19:03.280146Z INFO 591: 🔧 Loading CodeGraph configuration... +2026-08-16T00:19:03.280209Z INFO 678: 📋 No config file found, using defaults +2026-08-16T00:19:03.280227Z INFO 605: ✅ Configuration loaded successfully +2026-08-16T00:19:03.280230Z INFO 609: 📄 Config file: NONE (using defaults) +2026-08-16T00:19:03.280232Z INFO 611: 🤖 Embedding provider: auto +2026-08-16T00:19:03.280235Z INFO 612: 🔧 Embedding model: None +2026-08-16T00:19:03.280240Z INFO 613: 📐 Embedding dimension: 2048 +2026-08-16T00:19:03.280242Z INFO 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T00:19:03.280244Z INFO 615: 💬 LLM insights: disabled (context-only) +2026-08-16T09:14:56.294149Z INFO serve_inner: 591: 🔧 Loading CodeGraph configuration... +2026-08-16T09:14:56.295692Z INFO serve_inner: 678: 📋 No config file found, using defaults +2026-08-16T09:14:56.295896Z INFO serve_inner: 605: ✅ Configuration loaded successfully +2026-08-16T09:14:56.295900Z INFO serve_inner: 609: 📄 Config file: NONE (using defaults) +2026-08-16T09:14:56.295902Z INFO serve_inner: 611: 🤖 Embedding provider: auto +2026-08-16T09:14:56.295905Z INFO serve_inner: 612: 🔧 Embedding model: None +2026-08-16T09:14:56.295919Z INFO serve_inner: 613: 📐 Embedding dimension: 2048 +2026-08-16T09:14:56.295921Z INFO serve_inner: 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T09:14:56.295924Z INFO serve_inner: 615: 💬 LLM insights: disabled (context-only) +2026-08-16T09:14:56.296120Z INFO serve_inner: 648: AutoAgents semantic_question (tier=Small) +2026-08-16T09:14:56.296706Z INFO serve_inner: 591: 🔧 Loading CodeGraph configuration... +2026-08-16T09:14:56.296732Z INFO serve_inner: 678: 📋 No config file found, using defaults +2026-08-16T09:14:56.296746Z INFO serve_inner: 605: ✅ Configuration loaded successfully +2026-08-16T09:14:56.296749Z INFO serve_inner: 609: 📄 Config file: NONE (using defaults) +2026-08-16T09:14:56.296751Z INFO serve_inner: 611: 🤖 Embedding provider: auto +2026-08-16T09:14:56.296754Z INFO serve_inner: 612: 🔧 Embedding model: None +2026-08-16T09:14:56.296759Z INFO serve_inner: 613: 📐 Embedding dimension: 2048 +2026-08-16T09:14:56.296761Z INFO serve_inner: 614: 🌐 Ollama URL: http://localhost:11434 +2026-08-16T09:14:56.296764Z INFO serve_inner: 615: 💬 LLM insights: disabled (context-only) +2026-08-16T09:14:56.297080Z WARN serve_inner: 773: response error id=5 error=ErrorData { code: ErrorCode(-32603), message: "Failed to create LLM provider: LLM is not enabled in configuration", data: None } diff --git a/src/app/[lang]/page.tsx b/src/app/[lang]/page.tsx index 51fdcd4..6926575 100644 --- a/src/app/[lang]/page.tsx +++ b/src/app/[lang]/page.tsx @@ -55,6 +55,23 @@ export default async function HomePage({ params }: PageProps<"/[lang]">) { +
+
+
+

W-Make Batch live erleben

+

Öffentliche Demo ohne Anmeldung · batch.w-make.com

+
+ + Demo öffnen → + +
+
+
@@ -151,13 +168,21 @@ export default async function HomePage({ params }: PageProps<"/[lang]">) {
-
+

{dict.home.ctaKicker}

{dict.home.ctaTitle}

{dict.home.ctaBody}

+
    + {dict.home.ctaBenefits.map((benefit) => ( +
  • + + {benefit} +
  • + ))} +
{dict.actions.startConversation} diff --git a/src/i18n/dictionaries.ts b/src/i18n/dictionaries.ts index 980beb9..79339b7 100644 --- a/src/i18n/dictionaries.ts +++ b/src/i18n/dictionaries.ts @@ -20,11 +20,11 @@ export const dictionaries = { }, home: { kicker: "Jan Wagner · Behälterglas und Software", - title: "Software für Satzzettel, Silo und Schichtabschluss.", - lede: "Ich baue Systeme, in denen Rezept, Satzzettel, Siloabzug und Tagesabschluss zusammengehören. Der Ausgangspunkt ist die Behälterglas-Produktion. Derselbe Anspruch gilt überall dort, wo Buchungen Geld, Material und die nächste Schicht berühren.", - asideLabel: "Herkunft", - asideTitle: "Die Reihenfolge kommt aus der Halle.", - asideBody: "Rohstoffe, Redox, Schichtbeginn, Gemengebuch. Wer das als Formularstapel behandelt, verliert die Folge, in der die Halle tatsächlich arbeitet.", + title: "Wenn Zahlen zwischen Schichten verschwinden, liegt es meist an der Software.", + lede: "Ich baue Systeme für industrielle Prozesse, in denen Rezept, Material und Schichtübergabe lückenlos zusammengehören müssen. Der Ausgangspunkt ist die Behälterglas-Produktion. Derselbe Anspruch gilt überall dort, wo Buchungen Geld, Material und die nächste Schicht berühren.", + asideLabel: "Warum Prozess-Software scheitert", + asideTitle: "Die Software kennt die Reihenfolge nicht.", + asideBody: "Rohstoffe, Redox, Schichtbeginn, Gemengebuch. Wer das als Formularstapel behandelt, verliert die Folge, in der die Halle tatsächlich arbeitet. Das Ergebnis: stille Korrekturen und Zahlen, die morgens nicht mehr stimmen.", workKicker: "Veröffentlichbare Arbeit", workTitle: "W-Make Batch und Batchmaker Studio.", workLede: "W-Make Batch ist das Betriebsprodukt mit öffentlicher Demo unter batch.w-make.com. Batchmaker Studio ist die Werkbank für Rezept und Glaschemie, ohne laufende Schichten und ohne Silos.", @@ -35,9 +35,14 @@ export const dictionaries = { offerTitle: "Drei Formen der Zusammenarbeit.", notesKicker: "Notizen", notesTitle: "Entscheidungen aus dem Betrieb.", - ctaKicker: "Kontakt", - ctaTitle: "Schreiben Sie, wenn der Ablauf in der Software bricht.", - ctaBody: "Schildern Sie den Ablauf, der heute in Kopien, Nebenrechnungen oder stillen Korrekturen endet. Ich antworte in der Regel innerhalb von zwei Werktagen, sofern ich den Fall führen kann.", + ctaKicker: "30-Min. Erstanalyse · Kostenlos", + ctaTitle: "Beschreiben Sie den Prozess, der heute bricht.", + ctaBody: "Schildern Sie den Ablauf, der in Kopien, Nebenrechnungen oder stillen Korrekturen endet. Ich antworte innerhalb von zwei Werktagen und sage ehrlich, ob ich den Fall führen kann.", + ctaBenefits: [ + "Antwort innerhalb von 2 Werktagen", + "Ehrliche Einschätzung, ob ich den Fall führen kann", + "Keine Folien nötig, nur Verständnis des Ablaufs", + ], }, about: { kicker: "Über mich", @@ -131,11 +136,11 @@ export const dictionaries = { }, home: { kicker: "Jan Wagner · container glass and software", - title: "Software for batch tickets, silos and the shift close.", - lede: "I build systems in which recipe, batch ticket, silo deduction and day close belong together. The starting point is container-glass production. The same standard applies wherever bookings touch money, material and the next shift.", - asideLabel: "Background", - asideTitle: "The order comes from the hall.", - asideBody: "Raw materials, redox, shift start, batch book. Treat that as a pile of forms and you lose the sequence in which the hall actually works.", + title: "When numbers vanish between shifts, it's usually the software.", + lede: "I build systems for industrial processes where recipe, materials and shift handover must fit together seamlessly. The starting point is container-glass production. The same standard applies wherever bookings touch money, material and the next shift.", + asideLabel: "Why process software fails", + asideTitle: "The software doesn't know the order.", + asideBody: "Raw materials, redox, shift start, batch book. Treat that as a pile of forms and you lose the sequence in which the hall actually works. The result: quiet corrections and figures that no longer match in the morning.", workKicker: "Work I can publish", workTitle: "W-Make Batch and Batchmaker Studio.", workLede: "W-Make Batch is the operations product with a public demo at batch.w-make.com. Batchmaker Studio is the workbench for recipes and glass chemistry, without live shifts and without silos.", @@ -146,9 +151,14 @@ export const dictionaries = { offerTitle: "Three ways of working together.", notesKicker: "Notes", notesTitle: "Decisions from operations.", - ctaKicker: "Contact", - ctaTitle: "Write if the process is breaking in the software.", - ctaBody: "Describe the flow that currently ends in copies, side calculations or quiet corrections. I usually reply within two working days, if I can take the case.", + ctaKicker: "30-Min. Analysis · Free", + ctaTitle: "Describe the process that's breaking today.", + ctaBody: "Describe the flow that currently ends in copies, side calculations or quiet corrections. I reply within two working days and will honestly tell you whether I can take the case.", + ctaBenefits: [ + "Reply within 2 working days", + "Honest assessment of whether I can take the case", + "No slide deck needed, just understanding of the flow", + ], }, about: { kicker: "About",