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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@
"scibly": "scibly"
},
"rows": [
{
"kind": "learner",
"label": "Onboarding",
"legacy": "Checkliste in Tabelle oder PDF",
"scibly": "Geführtes Onboarding mit Fortschritt und Rückfragen, das mit jedem Teammitglied besser wird."
},
{
"kind": "import",
"label": "Wissenstransfer",
"legacy": "Wissen geht mit dem Mitarbeiter",
"scibly": "Wissen wird kontinuierlich gesichert"
},
{
"kind": "import",
"label": "Kurserstellung",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@
"scibly": "scibly"
},
"rows": [
{
"kind": "learner",
"label": "Onboarding",
"legacy": "Checklist in a spreadsheet or PDF",
"scibly": "Guided onboarding with progress and questions that improves with every team member."
},
{
"kind": "import",
"label": "Knowledge Transfer",
"legacy": "Knowledge leaves with the employee",
"scibly": "Knowledge is captured continuously"
},
{
"kind": "import",
"label": "Content Creation",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { useCallback, useState } from "react";

const CALENDLY_CSS = "https://assets.calendly.com/assets/external/widget.css";
const CALENDLY_JS = "https://assets.calendly.com/assets/external/widget.js";
const DEFAULT_DEMO_URL = "https://calendly.com/felix-kuennecke/scibly-demo";
const CALENDLY_DEMO_URL = "https://calendly.com/felix-kuennecke/scibly-demo";

declare global {
interface Window {
Expand All @@ -24,13 +24,13 @@ function ensureCalendlyStylesheet() {
document.head.appendChild(link);
}

export function useCalendlyPopup(url: string = DEFAULT_DEMO_URL) {
export function useCalendlyPopup() {
const [scriptReady, setScriptReady] = useState(false);

const openCalendly = useCallback(() => {
if (!window.Calendly) return;
window.Calendly.initPopupWidget({ url });
}, [url]);
window.Calendly.initPopupWidget({ url: CALENDLY_DEMO_URL });
}, []);

// Stylesheet is injected when the lazyOnload script arrives: after the
// landing page's own bytes, but before any human can click — injecting at
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import { type CtaDictionary } from "./i18n/cta.types";

interface CtaSectionProps {
t: CtaDictionary;
calendlyUrl?: string;
}

const FLOATING_CHAPTERS: Array<{
Expand Down Expand Up @@ -55,11 +54,10 @@ const FLOATING_CHAPTERS: Array<{
},
];

export function CtaSection({ t, calendlyUrl }: CtaSectionProps) {
export function CtaSection({ t }: CtaSectionProps) {
const params = useParams();
const locale = typeof params.lang === "string" ? params.lang : "de";
const { openCalendly, scriptReady, calendlyScript } =
useCalendlyPopup(calendlyUrl);
const { openCalendly, scriptReady, calendlyScript } = useCalendlyPopup();

useEffect(() => {
if (window.location.hash !== "#cta-section") return;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"cta": {
"eyebrow": "Bereit, Corporate Learning neu zu denken?",
"title": "Der erste Kurs geht auf uns. Jetzt anfragen und diese Woche noch live gehen.",
"eyebrow": "Bereit, Wissenstransfer neu zu denken?",
"title": "Bereit, Wissen besser zu teilen und neue Mitarbeiter schneller einzuarbeiten?",
"button": "Demo anfordern",
"hint": "Unverbindlich · Wir melden uns persönlich"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"cta": {
"eyebrow": "Ready to rethink corporate learning?",
"title": "Your first course is on us. Request a demo and go live this week.",
"eyebrow": "Ready to rethink knowledge transfer?",
"title": "Ready to share knowledge better and onboard new hires faster?",
"button": "Request demo",
"hint": "No commitment · We'll reach out personally"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,10 @@ import {
MarketingSection,
MarketingSectionHeader,
} from "@/app/[lang]/components/marketing-section-content";
import { type PillarId } from "@/app/[lang]/components/marketing-tokens";
import { FaqList } from "@/components/faq/faq-list";

import { type FaqDictionary } from "./i18n/faq.types";

const FAQ_CHAPTERS = new Map<string, PillarId>([
["lms-migration", "import"],
["ai-analytics", "analytics"],
["customize-ai-courses", "byoai"],
["microlearning", "learner"],
["flow-of-work", "channels"],
["bring-your-own-ai", "byoai"],
]);

const FAQ_INDENTS = [
"top-[16%] left-[4%] hidden xl:block",
"right-[4%] bottom-[22%] hidden xl:block",
Expand Down Expand Up @@ -68,12 +58,7 @@ export function FaqSection({ t, locale }: FaqSectionProps) {
className="lg:sticky lg:top-[120px]"
/>

<FaqList
questions={t.questions}
locale={locale}
context="homepage"
chapters={FAQ_CHAPTERS}
/>
<FaqList questions={t.questions} locale={locale} context="homepage" />
</MarketingSection>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,29 @@
"subtitle": "Hier sind einige der am häufigsten gestellten Fragen. Falls du weitere Fragen hast, wende dich gerne an team@scibly.com.",
"questions": [
{
"id": "lms-migration",
"q": "Wie aufwendig ist der Wechsel von einem bestehenden LMS?",
"a": "Sehr gering. Du lädst deine bestehenden Inhalte einfach hoch und die KI erstellt daraus automatisch strukturierte, interaktive Mikrolektionen. Statt einer reinen Migration entsteht so mit minimalem Aufwand ein echtes Qualitätsupgrade deiner Lerninhalte."
"id": "what-is-scibly",
"q": "Was ist Scibly?",
"a": "Scibly macht Wissen aus den Köpfen eurer Experten für das ganze Unternehmen zugänglich. Aus bestehendem Wissen entstehen automatisch aktuelle Dokumentationen und Kurse sowie rollenbasierte Onboarding-Programme. So wird Wissen besser verteilt und neue Mitarbeitende schneller eingearbeitet."
},
{
"id": "ai-analytics",
"q": "Wie unterscheiden sich die KI Analysen von einem klassischen LMS?",
"a": "Neben dem Lernfortschritt siehst du, bei welchen Themen Wissenslücken entstehen. Du kannst Fragen in Alltagssprache stellen und erhältst konkrete Auswertungen auf Themenebene."
"id": "how-does-scibly-work",
"q": "Wie funktioniert Scibly?",
"a": "Scibly führt geführte Interviews mit euren Fachleuten und erschließt Wissen aus Quellen wie Slack, Code Reviews, Tickets und Dokumenten. Daraus entsteht eine Wissensbasis mit Quellenangaben, aus der sich Kurse und rollenbasierte Onboardings erstellen lassen. Zusätzlich können neue Teammitglieder direkt im Onboarding Fragen stellen und Feedback geben, wodurch sich das Onboarding automatisiert kontinuierlich verbessert."
},
{
"id": "data-security",
"q": "Wie sicher sind meine Unternehmensdaten?",
"a": "Alle Daten werden DSGVO konform in der EU verarbeitet und verschlüsselt gespeichert. Deine Inhalte werden niemals für das Training von KI Modellen verwendet. Das ist für uns keine Option, keine Grauzone. Hast du spezifische Sicherheitsanforderungen? Meld dich einfach, wir gehen sie gerne mit dir durch."
"q": "Wie sicher sind meine Daten?",
"a": "Scibly ist DSGVO-konform und nutzt ausschließlich in der EU gehostete Modelle. Deine Daten werden weder für das Training von KI-Modellen verwendet noch an Dritte weitergegeben und sind sowohl bei der Übertragung als auch bei der Speicherung verschlüsselt. Für maximale Kontrolle kannst du Scibly außerdem selbst hosten, denn Scibly ist Open Source."
},
{
"id": "customize-ai-courses",
"q": "Kann ich KI generierte Kurse anpassen?",
"a": "Ja. Die KI erstellt einen fundierten Erstentwurf, den du im interaktiven Editor vollständig anpassen kannst, von Inhalten über Struktur bis hin zu eigenen Medien."
"id": "getting-started",
"q": "Wie schnell sind wir startklar?",
"a": "Nachdem Scibly mit bestehenden Tools wie Slack, GitHub oder Notion verbunden wurde, beginnt die Wissensextraktion automatisch. Aus dem gewonnenen Wissen lassen sich zusätzlich mit unserem KI-Agenten innerhalb weniger Minuten interaktive Kurse und Onboardings erstellen."
},
{
"id": "microlearning",
"q": "Was bedeutet Microlearning bei euch?",
"a": "Wir setzen auf kurze, interaktive Lerneinheiten von 2-3 Minuten. So kann dein Team Lernen leichter in den Arbeitsalltag integrieren und Inhalte regelmäßig auffrischen."
},
{
"id": "flow-of-work",
"q": "Wie unterstützt scibly Lernen im Arbeitsfluss?",
"a": "Neben klassischen Kursen bringt scibly Lernen dorthin, wo dein Team ohnehin arbeitet, zum Beispiel in Slack oder Microsoft Teams. Mikrolektionen und Quizfragen lassen sich dort ohne zusätzlichen Login absolvieren."
},
{
"id": "bring-your-own-ai",
"q": "Kann ich eigene KI Modelle nutzen?",
"a": "Ja. Du kannst neben den bereitgestellten Modellen auch freigegebene, unternehmensinterne KI Modelle in scibly integrieren."
"id": "open-source",
"q": "Ist Scibly Open Source?",
"a": "Scibly ist Open Core: Der Großteil des Codes steht unter AGPLv3 auf GitHub, nur einzelne Enterprise-Funktionen sind davon ausgenommen. Du kannst das Repository klonen, den Stack auf deiner eigenen Infrastruktur starten und Scibly selbst hosten."
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,29 @@
"subtitle": "Here are some of our most frequently asked questions. If you have any other questions, feel free to reach out to us at team@scibly.com.",
"questions": [
{
"id": "lms-migration",
"q": "How difficult is it to switch from an existing LMS?",
"a": "Very effortless. You simply upload your existing content, and the AI automatically turns it into structured, interactive micro lessons. Instead of a mere migration, you get a direct quality upgrade of your learning content with minimal effort."
"id": "what-is-scibly",
"q": "What is Scibly?",
"a": "Scibly makes the knowledge inside your experts' heads accessible to the entire company. Existing knowledge automatically becomes up-to-date documentation and courses as well as role-based onboarding programs. Knowledge spreads further and new hires get up to speed faster."
},
{
"id": "ai-analytics",
"q": "How do your AI analytics differ from a traditional LMS?",
"a": "Instead of just measuring progress, our analytics show where knowledge gaps actually exist. You can ask questions in natural language and receive concrete insights at the topic level."
"id": "how-does-scibly-work",
"q": "How does Scibly work?",
"a": "Scibly runs guided interviews with your experts and taps knowledge from sources like Slack, code reviews, tickets and documents. That builds a knowledge base with cited sources, from which courses and role-based onboardings are created. New team members can also ask questions and give feedback right inside the onboarding, so it keeps improving automatically."
},
{
"id": "data-security",
"q": "How secure is our company data?",
"a": "All data is processed in compliance with GDPR in the EU and stored encrypted. Your content is never used to train AI models. That's not an option for us, not a grey area. Have specific security requirements? Just reach out, we're happy to go through them with you."
"q": "How secure is my data?",
"a": "Scibly is GDPR compliant and uses only models hosted in the EU. Your data is never used to train AI models nor passed on to third parties, and it is encrypted both in transit and at rest. For maximum control you can also self-host Scibly, because Scibly is open source."
},
{
"id": "customize-ai-courses",
"q": "Can I customize AI generated courses?",
"a": "Yes. The AI creates a solid first draft that you can fully customize in the interactive editor, from content and structure to your own media."
"id": "getting-started",
"q": "How quickly can we get started?",
"a": "Once Scibly is connected to your existing tools like Slack, GitHub or Notion, knowledge extraction starts automatically. From the knowledge gathered, our AI agent additionally creates interactive courses and onboardings within minutes."
},
{
"id": "microlearning",
"q": "What exactly does microlearning mean?",
"a": "We focus on short, interactive learning units of 2-3 minutes. This format integrates seamlessly into the daily workflow and ensures demonstrably better knowledge retention."
},
{
"id": "flow-of-work",
"q": "How does scibly support Learning in the Flow of Work?",
"a": "In addition to traditional courses, scibly brings learning to where your team already works, for example in Slack or Microsoft Teams. Micro lessons and quizzes can be completed directly there without additional logins. This way, knowledge is continuously expanded and refreshed in the workflow without replacing existing training formats."
},
{
"id": "bring-your-own-ai",
"q": "Can I use my own AI models?",
"a": "Yes. While other platforms only allow their own models or those from well known proprietary providers, we additionally support Bring Your Own AI. This means you can seamlessly integrate and use your existing, company internal AI tools and models in scibly."
"id": "open-source",
"q": "Is Scibly open source?",
"a": "Scibly is open core: most of the code is on GitHub under AGPLv3, with only a few enterprise features excluded. You can clone the repository, boot the stack on your own infrastructure and self-host Scibly."
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ import { GitPullRequest, Ticket } from "lucide-react";
import { CORRECT_KEY } from "@/app/[lang]/components/marketing-tokens";
import { BrandLogo } from "@/components/brand-logo";

import { type ArtifactsCopy } from "../../i18n/onboarding-offboarding.types";
import { enter, FAINT, HAIRLINE, MUTED } from "../mock/mock-theme";
import { MockWindow } from "../mock/mock-window";
import { MockWindowBar } from "../mock/mock-window-bar";
import { CapturedChip } from "./captured-chip";
import { CardCanvas } from "./card-canvas";
import { type ArtifactsDictionary } from "./i18n/knowledge-sources.types";
import { SLACK_TONE, WORK_TONE } from "./knowledge-sources-tones";

export function ArtifactsCanvas({
t,
capturedLabel,
}: {
t: ArtifactsCopy;
t: ArtifactsDictionary;
capturedLabel: string;
}) {
return (
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"knowledgeSources": {
"eyebrow": "Wissenstransfer mit Scibly",
"title": "Undokumentiertes Expertenwissen wird erfasst und für alle zugänglich und lernbar gemacht.",
"subtitle": "Das wertvollste Wissen steht in keinem Dokument. Es steckt in den Köpfen der Experten und geht mit ihnen. Scibly hält es fest, bevor es verloren geht.",
"capturedLabel": "Erfasst",
"interview": {
"title": "Interviews",
"description": "Dokumentationen halten fest, wie etwas funktioniert. Scibly fragt nach dem Rest: Ausnahmen, Faustregeln, Gründe hinter Entscheidungen.",
"timer": "14:32",
"aiName": "Scibly KI",
"listeningLabel": "Hört zu …",
"question": "Du hast Payment-Retries erwähnt. Was passiert bei einem Timeout?"
},
"artifacts": {
"title": "Die tägliche Arbeit liefert den Beleg",
"description": "Scibly extrahiert Wissen aus Slack-Nachrichten, Code-Reviews, Tickets und Docs und speichert jede Erkenntnis mit ihrer Quelle.",
"slackChannel": "#it-support",
"slackTime": "09:41",
"slackAuthor": "Mia",
"slackText": "Nie doppelt retryen, das übernimmt das Gateway.",
"codeFile": "payments/client.ts",
"codeReview": "Review",
"codeRemoved": "await retry(book, 3)",
"codeAdded": "await book()",
"codeComment": "Das Gateway retryt schon serverseitig.",
"ticketId": "INFRA-482",
"ticketStatus": "Gelöst",
"ticketTitle": "Doppelte Buchung nach Timeout",
"ticketCause": "Ursache: Client-Retry nach Timeout"
},
"lesson": {
"title": "Mehr als nur Wissensextraktion",
"description": "Das extrahierte Wissen wird nicht nur zentral gespeichert, sondern kann mit nur einem Knopfdruck automatisch in interaktive Lerneinheiten verwandelt werden.",
"lessonEyebrow": "Lektion 4 von 9",
"lessonTitle": "Payment-Retries richtig behandeln",
"quizQuestion": "Ein Request läuft in einen Timeout. Was jetzt?",
"quizOptionWrong": "Sofort neu buchen",
"quizOptionRight": "Buchungsstatus prüfen, nicht retryen",
"derivedLabel": "Daraus generiert"
},
"knowledge": {
"eyebrow": "Wissensbasis",
"title": "Payment-Retries",
"fact1": "Retries übernimmt ausschließlich das Gateway.",
"fact2": "Ein Timeout heißt nicht abgebrochen.",
"verifiedLabel": "3 Quellen · verifiziert"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"knowledgeSources": {
"eyebrow": "Knowledge transfer with Scibly",
"title": "Undocumented expertise gets captured and made accessible and learnable for everyone.",
"subtitle": "The most valuable knowledge is written down nowhere. It sits in your experts' heads and leaves with them. Scibly captures it before it is lost.",
"capturedLabel": "Captured",
"interview": {
"title": "Interviews",
"description": "Documentation records how something works. Scibly asks about the rest: the exceptions, the rules of thumb, the reasons behind decisions.",
"timer": "14:32",
"aiName": "Scibly AI",
"listeningLabel": "Listening…",
"question": "You mentioned payment retries. What happens on a timeout?"
},
"artifacts": {
"title": "Everyday work supplies the evidence",
"description": "Scibly extracts knowledge from Slack messages, code reviews, tickets, and docs, and stores every insight with its source.",
"slackChannel": "#it-support",
"slackTime": "09:41",
"slackAuthor": "Mia",
"slackText": "Never retry twice, the gateway already does.",
"codeFile": "payments/client.ts",
"codeReview": "Review",
"codeRemoved": "await retry(book, 3)",
"codeAdded": "await book()",
"codeComment": "The gateway already retries server-side.",
"ticketId": "INFRA-482",
"ticketStatus": "Resolved",
"ticketTitle": "Duplicate booking after timeout",
"ticketCause": "Cause: client retry after timeout"
},
"lesson": {
"title": "More than knowledge extraction",
"description": "The extracted knowledge is not just stored centrally, it can be turned into interactive learning units automatically, at the push of a button.",
"lessonEyebrow": "Lesson 4 of 9",
"lessonTitle": "Handling payment retries",
"quizQuestion": "A request hits a timeout. Now what?",
"quizOptionWrong": "Book again right away",
"quizOptionRight": "Check the booking status, don't retry",
"derivedLabel": "Generated from it"
},
"knowledge": {
"eyebrow": "Knowledge base",
"title": "Payment retries",
"fact1": "Retries are handled by the gateway only.",
"fact2": "A timeout doesn't mean cancelled.",
"verifiedLabel": "3 sources · verified"
}
}
}
Loading
Loading