feat(platforma): restructure into Ilenar + Curetes platforms
This commit is contained in:
parent
348921df1a
commit
07ffe89688
|
|
@ -6,9 +6,14 @@ import { localizePath, useLang, useT } from '../i18n';
|
||||||
import type { Bullet } from '../i18n/types';
|
import type { Bullet } from '../i18n/types';
|
||||||
import LangSwitcher from './LangSwitcher';
|
import LangSwitcher from './LangSwitcher';
|
||||||
|
|
||||||
// Standalone product page at /platforma (and /en/platforma). All copy lives in
|
// Standalone page at /platforma (and /en/platforma) presenting both platforms:
|
||||||
// i18n under `platform`; paragraphs that carry inline emphasis are stored as
|
// Ilenar (what the system does) and Curetes (the supervision over it). All copy
|
||||||
// runs and rendered through <RichText> (see i18n/types.ts).
|
// lives in i18n under `platform`; paragraphs that carry inline emphasis are
|
||||||
|
// stored as runs and rendered through <RichText> (see i18n/types.ts).
|
||||||
|
//
|
||||||
|
// Heading levels: the page has a single <h1> ("Nasze platformy"). Platform names
|
||||||
|
// are <h2> despite reading as titles, and the sections inside a platform are
|
||||||
|
// <h3> — the sizing classes keep them looking exactly as before.
|
||||||
const PlatformPage = () => {
|
const PlatformPage = () => {
|
||||||
const t = useT();
|
const t = useT();
|
||||||
const lang = useLang();
|
const lang = useLang();
|
||||||
|
|
@ -40,110 +45,164 @@ const PlatformPage = () => {
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main className="container mx-auto px-6 py-16 max-w-3xl">
|
<main className="container mx-auto px-6 py-16 max-w-3xl">
|
||||||
<h1 className="text-4xl md:text-5xl font-bold mb-3">{t.platform.title}</h1>
|
<h1 className="text-4xl md:text-5xl font-bold mb-4">{t.platform.title}</h1>
|
||||||
<p className="text-muted text-sm italic mb-16">{t.platform.workingName}</p>
|
<p className="text-foreground/80 text-lg leading-relaxed mb-20">
|
||||||
|
<RichText content={t.platform.lead} />
|
||||||
|
</p>
|
||||||
|
|
||||||
<div className="space-y-16">
|
{/* ══ Platforma 1 — Ilenar ════════════════════════════════════════ */}
|
||||||
{/* ── Kto pilnuje agentów ───────────────────────────────────────── */}
|
<section aria-labelledby="ilenar" className="mb-20">
|
||||||
<section>
|
<p className="text-primary text-sm font-semibold tracking-wide uppercase mb-3">
|
||||||
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.watchers.title}</h2>
|
{t.platform.ilenar.eyebrow}
|
||||||
{t.platform.watchers.paragraphs.map((paragraph, i) => (
|
</p>
|
||||||
<p key={i} className="text-foreground/80 leading-relaxed mb-4 last:mb-0">
|
<h2 id="ilenar" className="text-4xl md:text-5xl font-bold mb-3">
|
||||||
<RichText content={paragraph} />
|
{t.platform.ilenar.name}
|
||||||
|
</h2>
|
||||||
|
<p className="text-foreground text-xl font-semibold mb-6">{t.platform.ilenar.subtitle}</p>
|
||||||
|
<p className="text-foreground/80 leading-relaxed mb-10">
|
||||||
|
<RichText content={t.platform.ilenar.body} />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{/* Dwie ścieżki, jeden rdzeń — karty obok siebie */}
|
||||||
|
<div className="grid md:grid-cols-2 gap-6">
|
||||||
|
<div className="glass-card p-8 border-primary/10 hover:border-primary/30 transition-colors">
|
||||||
|
<div className="w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-6">
|
||||||
|
<Home size={24} />
|
||||||
|
</div>
|
||||||
|
<h3 className="text-xl font-bold mb-4">{t.platform.ilenar.home.title}</h3>
|
||||||
|
<p className="text-foreground/80 leading-relaxed">
|
||||||
|
<RichText content={t.platform.ilenar.home.body} />
|
||||||
</p>
|
</p>
|
||||||
))}
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* ── Problem, który znika ──────────────────────────────────────── */}
|
|
||||||
<section>
|
|
||||||
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.problem.title}</h2>
|
|
||||||
<ul className="space-y-4">
|
|
||||||
{t.platform.problem.bullets.map((bullet, i) => renderBullet(bullet, i, ChevronRight))}
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* ── Jak to działa ─────────────────────────────────────────────── */}
|
|
||||||
<section>
|
|
||||||
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.howItWorks.title}</h2>
|
|
||||||
|
|
||||||
<p className="text-foreground/80 leading-relaxed mb-4">
|
|
||||||
<RichText content={t.platform.howItWorks.core} />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p className="text-foreground/80 leading-relaxed mb-10">
|
|
||||||
<RichText content={t.platform.howItWorks.humanAsk} />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p className="text-foreground/80 leading-relaxed mb-8">
|
|
||||||
<RichText content={t.platform.howItWorks.tailored} />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
{/* Dwie ścieżki, jeden rdzeń — karty obok siebie */}
|
|
||||||
<div className="grid md:grid-cols-2 gap-6">
|
|
||||||
<div className="glass-card p-8 border-primary/10 hover:border-primary/30 transition-colors">
|
|
||||||
<div className="w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-6">
|
|
||||||
<Home size={24} />
|
|
||||||
</div>
|
|
||||||
<h3 className="text-xl font-bold mb-4">{t.platform.howItWorks.home.title}</h3>
|
|
||||||
<p className="text-foreground/80 leading-relaxed">
|
|
||||||
<RichText content={t.platform.howItWorks.home.body} />
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="glass-card p-8 border-secondary/10 hover:border-secondary/30 transition-colors">
|
|
||||||
<div className="w-12 h-12 rounded-xl bg-secondary/10 flex items-center justify-center text-secondary mb-6">
|
|
||||||
<Building2 size={24} />
|
|
||||||
</div>
|
|
||||||
<h3 className="text-xl font-bold mb-4">{t.platform.howItWorks.business.title}</h3>
|
|
||||||
<p className="text-foreground/80 leading-relaxed">
|
|
||||||
<RichText content={t.platform.howItWorks.business.body} />
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p className="text-foreground/80 leading-relaxed mt-8">
|
<div className="glass-card p-8 border-secondary/10 hover:border-secondary/30 transition-colors">
|
||||||
<RichText content={t.platform.howItWorks.shared} />
|
<div className="w-12 h-12 rounded-xl bg-secondary/10 flex items-center justify-center text-secondary mb-6">
|
||||||
</p>
|
<Building2 size={24} />
|
||||||
</section>
|
</div>
|
||||||
|
<h3 className="text-xl font-bold mb-4">{t.platform.ilenar.business.title}</h3>
|
||||||
{/* ── Pod maską ─────────────────────────────────────────────────── */}
|
<p className="text-foreground/80 leading-relaxed">
|
||||||
<section>
|
<RichText content={t.platform.ilenar.business.body} />
|
||||||
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.underTheHood.title}</h2>
|
|
||||||
<ul className="space-y-4">
|
|
||||||
{t.platform.underTheHood.bullets.map((bullet, i) => renderBullet(bullet, i, ChevronRight))}
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* ── Dlaczego to ───────────────────────────────────────────────── */}
|
|
||||||
<section>
|
|
||||||
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.why.title}</h2>
|
|
||||||
<ul className="space-y-4">
|
|
||||||
{t.platform.why.bullets.map((bullet, i) => renderBullet(bullet, i, CheckCircle2))}
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* ── Gdzie jesteśmy ────────────────────────────────────────────── */}
|
|
||||||
<section>
|
|
||||||
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.status.title}</h2>
|
|
||||||
{t.platform.status.paragraphs.map((paragraph, i) => (
|
|
||||||
<p key={i} className="text-foreground/80 leading-relaxed mb-4 last:mb-0">
|
|
||||||
<RichText content={paragraph} />
|
|
||||||
</p>
|
</p>
|
||||||
))}
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
|
||||||
{/* ── CTA ───────────────────────────────────────────────────────── */}
|
<p className="text-foreground/80 leading-relaxed mt-8">
|
||||||
<section className="glass-card p-10 text-center">
|
<RichText content={t.platform.ilenar.shared} />
|
||||||
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.cta.title}</h2>
|
</p>
|
||||||
<p className="text-foreground/80 leading-relaxed mb-8">
|
</section>
|
||||||
<RichText content={t.platform.cta.body} />
|
|
||||||
</p>
|
{/* ── Separator: obie platformy pod wspólnym nadzorem ───────────── */}
|
||||||
<a href={localizePath('/#contact', lang)} className="btn-primary">
|
<div className="flex items-center gap-4 mb-20" aria-hidden="false">
|
||||||
{t.platform.cta.button}
|
<span className="h-px flex-1 bg-white/10" />
|
||||||
<ArrowRight className="ml-2" size={20} />
|
<span className="text-muted text-sm text-center">{t.platform.divider}</span>
|
||||||
</a>
|
<span className="h-px flex-1 bg-white/10" />
|
||||||
</section>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* ══ Platforma 2 — Curetes ═══════════════════════════════════════ */}
|
||||||
|
<section aria-labelledby="curetes">
|
||||||
|
<p className="text-primary text-sm font-semibold tracking-wide uppercase mb-3">
|
||||||
|
{t.platform.curetes.eyebrow}
|
||||||
|
</p>
|
||||||
|
<h2 id="curetes" className="text-4xl md:text-5xl font-bold mb-3">
|
||||||
|
{t.platform.curetes.name}
|
||||||
|
</h2>
|
||||||
|
<p className="text-foreground text-xl font-semibold mb-16">
|
||||||
|
{t.platform.curetes.subtitle}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className="space-y-16">
|
||||||
|
{/* ── Kto pilnuje agentów ─────────────────────────────────── */}
|
||||||
|
<section>
|
||||||
|
<h3 className="text-2xl md:text-3xl font-bold mb-6">
|
||||||
|
{t.platform.curetes.watchers.title}
|
||||||
|
</h3>
|
||||||
|
{t.platform.curetes.watchers.paragraphs.map((paragraph, i) => (
|
||||||
|
<p key={i} className="text-foreground/80 leading-relaxed mb-4 last:mb-0">
|
||||||
|
<RichText content={paragraph} />
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ── Problem, który znika ─────────────────────────────────── */}
|
||||||
|
<section>
|
||||||
|
<h3 className="text-2xl md:text-3xl font-bold mb-6">
|
||||||
|
{t.platform.curetes.problem.title}
|
||||||
|
</h3>
|
||||||
|
<ul className="space-y-4">
|
||||||
|
{t.platform.curetes.problem.bullets.map((bullet, i) =>
|
||||||
|
renderBullet(bullet, i, ChevronRight),
|
||||||
|
)}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ── Jak to działa ────────────────────────────────────────── */}
|
||||||
|
<section>
|
||||||
|
<h3 className="text-2xl md:text-3xl font-bold mb-6">
|
||||||
|
{t.platform.curetes.howItWorks.title}
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p className="text-foreground/80 leading-relaxed mb-4">
|
||||||
|
<RichText content={t.platform.curetes.howItWorks.core} />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-foreground/80 leading-relaxed mb-10">
|
||||||
|
<RichText content={t.platform.curetes.howItWorks.humanAsk} />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-foreground/80 leading-relaxed">
|
||||||
|
<RichText content={t.platform.curetes.howItWorks.tailored} />
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ── Pod maską ────────────────────────────────────────────── */}
|
||||||
|
<section>
|
||||||
|
<h3 className="text-2xl md:text-3xl font-bold mb-6">
|
||||||
|
{t.platform.curetes.underTheHood.title}
|
||||||
|
</h3>
|
||||||
|
<ul className="space-y-4">
|
||||||
|
{t.platform.curetes.underTheHood.bullets.map((bullet, i) =>
|
||||||
|
renderBullet(bullet, i, ChevronRight),
|
||||||
|
)}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ── Dlaczego to ──────────────────────────────────────────── */}
|
||||||
|
<section>
|
||||||
|
<h3 className="text-2xl md:text-3xl font-bold mb-6">
|
||||||
|
{t.platform.curetes.why.title}
|
||||||
|
</h3>
|
||||||
|
<ul className="space-y-4">
|
||||||
|
{t.platform.curetes.why.bullets.map((bullet, i) =>
|
||||||
|
renderBullet(bullet, i, CheckCircle2),
|
||||||
|
)}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ── Gdzie jesteśmy ───────────────────────────────────────── */}
|
||||||
|
<section>
|
||||||
|
<h3 className="text-2xl md:text-3xl font-bold mb-6">
|
||||||
|
{t.platform.curetes.status.title}
|
||||||
|
</h3>
|
||||||
|
{t.platform.curetes.status.paragraphs.map((paragraph, i) => (
|
||||||
|
<p key={i} className="text-foreground/80 leading-relaxed mb-4 last:mb-0">
|
||||||
|
<RichText content={paragraph} />
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ── CTA — jedno, wspólne dla obu platform ───────────────────────── */}
|
||||||
|
<section className="glass-card p-10 text-center mt-20">
|
||||||
|
<h2 className="text-2xl md:text-3xl font-bold mb-6">{t.platform.cta.title}</h2>
|
||||||
|
<p className="text-foreground/80 leading-relaxed mb-8">
|
||||||
|
<RichText content={t.platform.cta.body} />
|
||||||
|
</p>
|
||||||
|
<a href={localizePath('/#contact', lang)} className="btn-primary">
|
||||||
|
{t.platform.cta.button}
|
||||||
|
<ArrowRight className="ml-2" size={20} />
|
||||||
|
</a>
|
||||||
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<Footer />
|
<Footer />
|
||||||
|
|
|
||||||
249
src/i18n/en.ts
249
src/i18n/en.ts
|
|
@ -167,70 +167,18 @@ export const en: typeof pl = {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
platform: {
|
platform: {
|
||||||
title: 'Overseeing agentic systems',
|
title: 'Our Platforms',
|
||||||
workingName: '(working name — to be confirmed before publication)',
|
lead: 'Two platforms, one foundation: code as the source of truth, and a human in the decision loop.' as Rich,
|
||||||
watchers: {
|
|
||||||
title: 'Who watches the agents that watch everything else?',
|
// ── Platform 1 — Ilenar ────────────────────────────────────────────────
|
||||||
paragraphs: [
|
// "For your home"/"For your business" are the same cards as before, moved
|
||||||
[
|
// here from howItWorks: they describe what Ilenar does, not how the
|
||||||
{
|
// supervision works.
|
||||||
t: 'Automations and AI agents can work without a human — organising documents, controlling devices, reacting to events. But left unsupervised, sooner or later they\'ll do something nobody wanted. ',
|
ilenar: {
|
||||||
},
|
eyebrow: 'Platform 1 — Knowledge and Action',
|
||||||
{
|
name: 'Ilenar',
|
||||||
t: 'We built a system that observes other systems — including other agentic systems',
|
subtitle: 'The platform that knows and acts.',
|
||||||
em: 'strong',
|
body: 'It understands your documents, your home, your business — and acts on it. We build it dedicated to your specific need.' as Rich,
|
||||||
},
|
|
||||||
{
|
|
||||||
t: ' — it detects when something isn\'t working, diagnoses the cause, and fixes the problem itself. And wherever a decision is irreversible, it waits for a human.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
'This isn\'t a concept. The same core has been running our own distributed infrastructure for months — and has been through real incidents, each of which made it smarter.',
|
|
||||||
] as Rich[],
|
|
||||||
},
|
|
||||||
problem: {
|
|
||||||
title: 'The problem that disappears',
|
|
||||||
bullets: [
|
|
||||||
{
|
|
||||||
lead: 'Autonomy without boundaries is a risk.',
|
|
||||||
body: ' Anything that can open a gate or change a service\'s configuration on its own needs a clear line: what it can do by itself, and what needs a human\'s go-ahead.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lead: 'Automation isn\'t intelligence.',
|
|
||||||
body: [
|
|
||||||
{ t: ' Many homes and businesses already have systems that ' },
|
|
||||||
{ t: 'execute', em: 'em' },
|
|
||||||
{ t: ' commands — lights, blinds, gates, document flows. The problem is that none of it ' },
|
|
||||||
{ t: 'understands', em: 'em' },
|
|
||||||
{ t: ': it doesn\'t connect facts, react to context, or learn.' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lead: 'Knowledge disappears.',
|
|
||||||
body: ' Why did something break a month ago, and what fixed it? That knowledge usually lives in one person\'s head, or in an unsearchable pile of documents.',
|
|
||||||
},
|
|
||||||
] as Bullet[],
|
|
||||||
},
|
|
||||||
howItWorks: {
|
|
||||||
title: 'How it works',
|
|
||||||
core: [
|
|
||||||
{ t: 'The supervisory core — one, shared by everything.', em: 'strong' },
|
|
||||||
{
|
|
||||||
t: ' A lightweight agent on every machine reports the state of its services. A central "brain" builds a full picture from that, detects deviations from what should be running, and either fixes the problem itself — if the action is safe — or asks a human if it isn\'t.',
|
|
||||||
},
|
|
||||||
] as Rich,
|
|
||||||
humanAsk: [
|
|
||||||
{
|
|
||||||
t: 'That "asking a human" part isn\'t theoretical. A real example: the system notices you\'ve left for the weekend and the blinds are still open. It won\'t close them on its own — it sends you a message: ',
|
|
||||||
},
|
|
||||||
{ t: '"You left the blinds open. Close them now?"', em: 'quote' },
|
|
||||||
{
|
|
||||||
t: ' You reply "yes" — and only then does the system hand that off to your existing home automation. The decision is always yours; the system handles the execution.',
|
|
||||||
},
|
|
||||||
] as Rich,
|
|
||||||
tailored: [
|
|
||||||
{ t: 'The working system — built around you.', em: 'strong' },
|
|
||||||
{ t: ' What this supervision watches over is tailored to what you actually need.' },
|
|
||||||
] as Rich,
|
|
||||||
home: {
|
home: {
|
||||||
title: 'For your home',
|
title: 'For your home',
|
||||||
body: [
|
body: [
|
||||||
|
|
@ -250,64 +198,137 @@ export const en: typeof pl = {
|
||||||
shared:
|
shared:
|
||||||
'Both paths share the same foundation: everything that\'s supposed to run is defined as code in a repository — every change has a history and can be rolled back — and both run under the same supervision that makes sure nothing fails silently.' as Rich,
|
'Both paths share the same foundation: everything that\'s supposed to run is defined as code in a repository — every change has a history and can be rolled back — and both run under the same supervision that makes sure nothing fails silently.' as Rich,
|
||||||
},
|
},
|
||||||
underTheHood: {
|
|
||||||
title: 'Under the hood — for the curious',
|
divider: 'Both platforms run under shared supervision ↓',
|
||||||
bullets: [
|
|
||||||
{
|
// ── Platform 2 — Curetes ───────────────────────────────────────────────
|
||||||
body: [
|
curetes: {
|
||||||
{ t: 'A knowledge base shouldn\'t end up as a dead vector index. On top of semantic search, we build a ' },
|
eyebrow: 'Platform 2 — Supervision',
|
||||||
{ t: 'readable, compiled wiki maintained by a language model', em: 'strong' },
|
name: 'Curetes',
|
||||||
|
subtitle: 'Overseeing agentic systems',
|
||||||
|
watchers: {
|
||||||
|
title: 'Who watches the agents that watch everything else?',
|
||||||
|
paragraphs: [
|
||||||
|
[
|
||||||
{
|
{
|
||||||
t: ' — plain text files with cross-links between concepts, which the agent reads and updates the way a person maintains code. An approach inspired by ',
|
t: 'Automations and AI agents can work without a human — organising documents, controlling devices, reacting to events. But left unsupervised, sooner or later they\'ll do something nobody wanted. ',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
t: 'a concept described by AI researcher Andrej Karpathy',
|
t: 'We built a system that observes other systems — including other agentic systems',
|
||||||
href: 'https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f',
|
em: 'strong',
|
||||||
},
|
|
||||||
{ t: '. We build this on an open standard (' },
|
|
||||||
{
|
|
||||||
t: 'Google OKF',
|
|
||||||
href: 'https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
t: '), not a closed format of our own — so the knowledge stays readable and portable.',
|
t: ' — it detects when something isn\'t working, diagnoses the cause, and fixes the problem itself. And wherever a decision is irreversible, it waits for a human.',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
'This isn\'t a concept. The same core has been running our own distributed infrastructure for months — and has been through real incidents, each of which made it smarter.',
|
||||||
{
|
] as Rich[],
|
||||||
body: 'Queries first reach a cheaper model — a more expensive one only steps in when the task genuinely calls for it. In practice: summarising an entire document corpus once cost pennies instead of days of compute.',
|
},
|
||||||
},
|
problem: {
|
||||||
{
|
title: 'The problem that disappears',
|
||||||
body: 'Not everything needs to be online 24 hours a day. When the primary machine is asleep, queries automatically fail over to backup hardware — with no interruption the user would notice.',
|
bullets: [
|
||||||
},
|
{
|
||||||
{
|
lead: 'Autonomy without boundaries is a risk.',
|
||||||
body: 'The system tells the difference between "this service is down" and "this service is asleep as planned" — previously a common source of false alarms.',
|
body: ' Anything that can open a gate or change a service\'s configuration on its own needs a clear line: what it can do by itself, and what needs a human\'s go-ahead.',
|
||||||
},
|
},
|
||||||
] as Bullet[],
|
{
|
||||||
},
|
lead: 'Automation isn\'t intelligence.',
|
||||||
why: {
|
body: [
|
||||||
title: 'Why this, not ordinary monitoring or ordinary automation',
|
{ t: ' Many homes and businesses already have systems that ' },
|
||||||
bullets: [
|
{ t: 'execute', em: 'em' },
|
||||||
{ lead: 'We understand context, not just execute commands.' },
|
{ t: ' commands — lights, blinds, gates, document flows. The problem is that none of it ' },
|
||||||
{ lead: 'We fix things, not just raise alarms.' },
|
{ t: 'understands', em: 'em' },
|
||||||
{
|
{ t: ': it doesn\'t connect facts, react to context, or learn.' },
|
||||||
lead: 'A human is genuinely in the loop',
|
],
|
||||||
body: ' — decisions are always yours, execution is the system\'s job.',
|
},
|
||||||
},
|
{
|
||||||
{ lead: 'Zero black box.', body: ' Every decision leaves a trail you can review later.' },
|
lead: 'Knowledge disappears.',
|
||||||
{
|
body: ' Why did something break a month ago, and what fixed it? That knowledge usually lives in one person\'s head, or in an unsearchable pile of documents.',
|
||||||
lead: 'Your data stays yours',
|
},
|
||||||
body: ' — your own server, your own domain, no dependency on someone else\'s cloud.',
|
] as Bullet[],
|
||||||
},
|
},
|
||||||
] as Bullet[],
|
howItWorks: {
|
||||||
},
|
title: 'How it works',
|
||||||
status: {
|
core: [
|
||||||
title: 'Honestly, where we are',
|
{ t: 'The supervisory core — one, shared by everything.', em: 'strong' },
|
||||||
paragraphs: [
|
{
|
||||||
'The supervisory core runs our infrastructure every day — self-healing works end to end, alerts reach a phone, the knowledge base answers questions even when the primary hardware is asleep.',
|
t: ' A lightweight agent on every machine reports the state of its services. A central "brain" builds a full picture from that, detects deviations from what should be running, and either fixes the problem itself — if the action is safe — or asks a human if it isn\'t.',
|
||||||
'Dedicated deployments — for a specific home or business — we build as needed, on top of the same proven core. We\'d rather say plainly what we\'re still working on than promise more than what actually works.',
|
},
|
||||||
] as Rich[],
|
] as Rich,
|
||||||
|
humanAsk: [
|
||||||
|
{
|
||||||
|
t: 'That "asking a human" part isn\'t theoretical. A real example: the system notices you\'ve left for the weekend and the blinds are still open. It won\'t close them on its own — it sends you a message: ',
|
||||||
|
},
|
||||||
|
{ t: '"You left the blinds open. Close them now?"', em: 'quote' },
|
||||||
|
{
|
||||||
|
t: ' You reply "yes" — and only then does the system hand that off to your existing home automation. The decision is always yours; the system handles the execution.',
|
||||||
|
},
|
||||||
|
] as Rich,
|
||||||
|
tailored: [
|
||||||
|
{ t: 'The working system — built around you.', em: 'strong' },
|
||||||
|
{ t: ' What this supervision watches over is tailored to what you actually need.' },
|
||||||
|
] as Rich,
|
||||||
|
},
|
||||||
|
underTheHood: {
|
||||||
|
title: 'Under the hood — for the curious',
|
||||||
|
bullets: [
|
||||||
|
{
|
||||||
|
body: [
|
||||||
|
{ t: 'A knowledge base shouldn\'t end up as a dead vector index. On top of semantic search, we build a ' },
|
||||||
|
{ t: 'readable, compiled wiki maintained by a language model', em: 'strong' },
|
||||||
|
{
|
||||||
|
t: ' — plain text files with cross-links between concepts, which the agent reads and updates the way a person maintains code. An approach inspired by ',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
t: 'a concept described by AI researcher Andrej Karpathy',
|
||||||
|
href: 'https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f',
|
||||||
|
},
|
||||||
|
{ t: '. We build this on an open standard (' },
|
||||||
|
{
|
||||||
|
t: 'Google OKF',
|
||||||
|
href: 'https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
t: '), not a closed format of our own — so the knowledge stays readable and portable.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
body: 'Queries first reach a cheaper model — a more expensive one only steps in when the task genuinely calls for it. In practice: summarising an entire document corpus once cost pennies instead of days of compute.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
body: 'Not everything needs to be online 24 hours a day. When the primary machine is asleep, queries automatically fail over to backup hardware — with no interruption the user would notice.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
body: 'The system tells the difference between "this service is down" and "this service is asleep as planned" — previously a common source of false alarms.',
|
||||||
|
},
|
||||||
|
] as Bullet[],
|
||||||
|
},
|
||||||
|
why: {
|
||||||
|
title: 'Why this, not ordinary monitoring or ordinary automation',
|
||||||
|
bullets: [
|
||||||
|
{ lead: 'We understand context, not just execute commands.' },
|
||||||
|
{ lead: 'We fix things, not just raise alarms.' },
|
||||||
|
{
|
||||||
|
lead: 'A human is genuinely in the loop',
|
||||||
|
body: ' — decisions are always yours, execution is the system\'s job.',
|
||||||
|
},
|
||||||
|
{ lead: 'Zero black box.', body: ' Every decision leaves a trail you can review later.' },
|
||||||
|
{
|
||||||
|
lead: 'Your data stays yours',
|
||||||
|
body: ' — your own server, your own domain, no dependency on someone else\'s cloud.',
|
||||||
|
},
|
||||||
|
] as Bullet[],
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
title: 'Honestly, where we are',
|
||||||
|
paragraphs: [
|
||||||
|
'The supervisory core runs our infrastructure every day — self-healing works end to end, alerts reach a phone, the knowledge base answers questions even when the primary hardware is asleep.',
|
||||||
|
'Dedicated deployments — for a specific home or business — we build as needed, on top of the same proven core. We\'d rather say plainly what we\'re still working on than promise more than what actually works.',
|
||||||
|
] as Rich[],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
cta: {
|
cta: {
|
||||||
title: 'Let\'s talk',
|
title: 'Let\'s talk',
|
||||||
body: 'Tell us what you want to automate or organise — we\'ll figure out how to build it, and put it under the same supervision we run on ourselves.' as Rich,
|
body: 'Tell us what you want to automate or organise — we\'ll figure out how to build it, and put it under the same supervision we run on ourselves.' as Rich,
|
||||||
|
|
|
||||||
246
src/i18n/pl.ts
246
src/i18n/pl.ts
|
|
@ -166,67 +166,17 @@ export const pl = {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
platform: {
|
platform: {
|
||||||
title: 'Nadzór nad systemami agentowymi',
|
title: 'Nasze platformy',
|
||||||
workingName: '(nazwa robocza — do potwierdzenia przed publikacją)',
|
lead: 'Dwie platformy, jeden fundament: kod jako źródło prawdy i człowiek w pętli decyzji.' as Rich,
|
||||||
watchers: {
|
|
||||||
title: 'Kto pilnuje agentów, którzy pilnują wszystkiego innego?',
|
// ── Platforma 1 — Ilenar ───────────────────────────────────────────────
|
||||||
paragraphs: [
|
// "Dla domu"/"Dla firm" to te same karty co wcześniej, przeniesione tu
|
||||||
[
|
// z howItWorks: opisują, co Ilenar robi, nie jak działa nadzór.
|
||||||
{
|
ilenar: {
|
||||||
t: 'Automatyzacje i agenci AI potrafią pracować bez człowieka — porządkować dokumenty, sterować urządzeniami, reagować na zdarzenia. Ale zostawione bez nadzoru, prędzej czy później zrobią coś, czego nikt nie chciał. Zbudowaliśmy system, który ',
|
eyebrow: 'Platforma 1 — wiedza i działanie',
|
||||||
},
|
name: 'Ilenar',
|
||||||
{ t: 'obserwuje inne systemy — w tym inne systemy agentowe', em: 'strong' },
|
subtitle: 'Platforma, która wie i działa.',
|
||||||
{
|
body: 'Rozumie Twoje dokumenty, Twój dom, Twoją firmę — i wykonuje. Budujemy ją dedykowanie pod Twoją konkretną potrzebę.' as Rich,
|
||||||
t: ' — wykrywa, że coś nie działa, diagnozuje przyczynę i naprawia problem sam. A tam, gdzie decyzja jest nieodwracalna, czeka na człowieka.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
'To nie koncept. Ten sam rdzeń od miesięcy prowadzi naszą własną, rozproszoną infrastrukturę — i przeszedł przez realne awarie, z których każda coś go nauczyła.',
|
|
||||||
] as Rich[],
|
|
||||||
},
|
|
||||||
problem: {
|
|
||||||
title: 'Problem, który znika',
|
|
||||||
bullets: [
|
|
||||||
{
|
|
||||||
lead: 'Autonomia bez ram to ryzyko.',
|
|
||||||
body: ' Coś, co może samo otworzyć bramę albo zmienić konfigurację usługi, potrzebuje jasnej granicy: co wolno zrobić samodzielnie, co wymaga zgody człowieka.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lead: 'Automatyka to nie inteligencja.',
|
|
||||||
body: [
|
|
||||||
{ t: ' Wiele domów i firm ma już systemy, które ' },
|
|
||||||
{ t: 'wykonują', em: 'em' },
|
|
||||||
{ t: ' polecenia — światła, rolety, bramy, obieg dokumentów. Problem w tym, że nic tego nie ' },
|
|
||||||
{ t: 'rozumie', em: 'em' },
|
|
||||||
{ t: ': nie kojarzy faktów, nie reaguje na kontekst, nie uczy się.' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lead: 'Wiedza znika.',
|
|
||||||
body: ' Dlaczego coś się zepsuło miesiąc temu i co wtedy pomogło? Zwykle ta wiedza siedzi w głowie jednej osoby albo w nieprzeszukiwalnym stosie dokumentów.',
|
|
||||||
},
|
|
||||||
] as Bullet[],
|
|
||||||
},
|
|
||||||
howItWorks: {
|
|
||||||
title: 'Jak to działa',
|
|
||||||
core: [
|
|
||||||
{ t: 'Rdzeń nadzoru — jeden, wspólny dla wszystkiego.', em: 'strong' },
|
|
||||||
{
|
|
||||||
t: ' Lekki agent na każdej maszynie zgłasza stan usług. Centralny „mózg" buduje z tego pełny obraz sytuacji, wykrywa odchylenia od tego, co powinno działać, i albo naprawia problem sam — jeśli akcja jest bezpieczna — albo pyta człowieka, jeśli nie jest.',
|
|
||||||
},
|
|
||||||
] as Rich,
|
|
||||||
humanAsk: [
|
|
||||||
{
|
|
||||||
t: 'To „pytanie człowieka" nie jest teorią. Przykład z życia: system zauważa, że wyjechałeś na weekend, a rolety zostały otwarte. Sam ich nie zamknie — wysyła Ci wiadomość: ',
|
|
||||||
},
|
|
||||||
{ t: '„Nie zamknąłeś rolet. Zamknąć teraz?"', em: 'quote' },
|
|
||||||
{
|
|
||||||
t: ' Odpisujesz „tak" — i dopiero wtedy system zleca to istniejącej automatyce domowej. Decyzja zawsze należy do Ciebie; wykonanie bierze na siebie system.',
|
|
||||||
},
|
|
||||||
] as Rich,
|
|
||||||
tailored: [
|
|
||||||
{ t: 'System roboczy — budowany pod Ciebie.', em: 'strong' },
|
|
||||||
{ t: ' To, co ten nadzór pilnuje, dopasowujemy do konkretnej potrzeby.' },
|
|
||||||
] as Rich,
|
|
||||||
home: {
|
home: {
|
||||||
title: 'Dla domu',
|
title: 'Dla domu',
|
||||||
body: [
|
body: [
|
||||||
|
|
@ -246,64 +196,134 @@ export const pl = {
|
||||||
shared:
|
shared:
|
||||||
'Obie ścieżki łączy to samo: cała konfiguracja tego, co ma działać, jest zapisana jako kod w repozytorium — każda zmiana ma historię i da się ją cofnąć — i obie działają pod tym samym nadzorem, który pilnuje, żeby nic nie zawiodło po cichu.' as Rich,
|
'Obie ścieżki łączy to samo: cała konfiguracja tego, co ma działać, jest zapisana jako kod w repozytorium — każda zmiana ma historię i da się ją cofnąć — i obie działają pod tym samym nadzorem, który pilnuje, żeby nic nie zawiodło po cichu.' as Rich,
|
||||||
},
|
},
|
||||||
underTheHood: {
|
|
||||||
title: 'Pod maską — dla ciekawych',
|
divider: 'Obie platformy działają pod wspólnym nadzorem ↓',
|
||||||
bullets: [
|
|
||||||
{
|
// ── Platforma 2 — Curetes ──────────────────────────────────────────────
|
||||||
body: [
|
curetes: {
|
||||||
{ t: 'Baza wiedzy nie kończy jako martwy indeks. Nad wyszukiwaniem semantycznym powstaje ' },
|
eyebrow: 'Platforma 2 — nadzór',
|
||||||
{ t: 'czytelna, kompilowana wiki utrzymywana przez model językowy', em: 'strong' },
|
name: 'Curetes',
|
||||||
|
subtitle: 'Nadzór nad systemami agentowymi',
|
||||||
|
watchers: {
|
||||||
|
title: 'Kto pilnuje agentów, którzy pilnują wszystkiego innego?',
|
||||||
|
paragraphs: [
|
||||||
|
[
|
||||||
{
|
{
|
||||||
t: ' — pliki tekstowe z linkami między pojęciami, które agent czyta i aktualizuje tak jak człowiek utrzymuje kod. Podejście zainspirowane ',
|
t: 'Automatyzacje i agenci AI potrafią pracować bez człowieka — porządkować dokumenty, sterować urządzeniami, reagować na zdarzenia. Ale zostawione bez nadzoru, prędzej czy później zrobią coś, czego nikt nie chciał. Zbudowaliśmy system, który ',
|
||||||
},
|
},
|
||||||
|
{ t: 'obserwuje inne systemy — w tym inne systemy agentowe', em: 'strong' },
|
||||||
{
|
{
|
||||||
t: "koncepcją opisaną przez badacza AI Andreja Karpathy'ego",
|
t: ' — wykrywa, że coś nie działa, diagnozuje przyczynę i naprawia problem sam. A tam, gdzie decyzja jest nieodwracalna, czeka na człowieka.',
|
||||||
href: 'https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f',
|
|
||||||
},
|
|
||||||
{ t: '. Budujemy to na otwartym standardzie (' },
|
|
||||||
{
|
|
||||||
t: 'Google OKF',
|
|
||||||
href: 'https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
t: '), nie na własnym, zamkniętym formacie — żeby wiedza, którą zbudujemy, zawsze zostawała czytelna i przenośna.',
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
'To nie koncept. Ten sam rdzeń od miesięcy prowadzi naszą własną, rozproszoną infrastrukturę — i przeszedł przez realne awarie, z których każda coś go nauczyła.',
|
||||||
{
|
] as Rich[],
|
||||||
body: 'Do zapytań najpierw sięga tańszy model — droższy dopiero wtedy, gdy sprawa naprawdę tego wymaga. W praktyce: streszczenie całego korpusu dokumentów potrafiło kosztować grosze zamiast dni obliczeń.',
|
},
|
||||||
},
|
problem: {
|
||||||
{
|
title: 'Problem, który znika',
|
||||||
body: 'Nie wszystko musi być online 24 godziny na dobę. Kiedy główna maszyna śpi, zapytania automatycznie przejmuje zapasowy sprzęt — bez przerwy zauważalnej dla użytkownika.',
|
bullets: [
|
||||||
},
|
{
|
||||||
{
|
lead: 'Autonomia bez ram to ryzyko.',
|
||||||
body: 'System sam odróżnia „usługa nie działa" od „usługa śpi zgodnie z planem" — co wcześniej było częstym źródłem fałszywych alarmów.',
|
body: ' Coś, co może samo otworzyć bramę albo zmienić konfigurację usługi, potrzebuje jasnej granicy: co wolno zrobić samodzielnie, co wymaga zgody człowieka.',
|
||||||
},
|
},
|
||||||
] as Bullet[],
|
{
|
||||||
},
|
lead: 'Automatyka to nie inteligencja.',
|
||||||
why: {
|
body: [
|
||||||
title: 'Dlaczego to, a nie zwykły monitoring czy zwykła automatyka',
|
{ t: ' Wiele domów i firm ma już systemy, które ' },
|
||||||
bullets: [
|
{ t: 'wykonują', em: 'em' },
|
||||||
{ lead: 'Rozumiemy kontekst, nie tylko wykonujemy polecenia.' },
|
{ t: ' polecenia — światła, rolety, bramy, obieg dokumentów. Problem w tym, że nic tego nie ' },
|
||||||
{ lead: 'Naprawiamy, nie tylko alarmujemy.' },
|
{ t: 'rozumie', em: 'em' },
|
||||||
{
|
{ t: ': nie kojarzy faktów, nie reaguje na kontekst, nie uczy się.' },
|
||||||
lead: 'Człowiek naprawdę jest w pętli',
|
],
|
||||||
body: ' — decyzje zawsze do Ciebie, wykonanie bierze na siebie system.',
|
},
|
||||||
},
|
{
|
||||||
{ lead: 'Zero czarnej skrzynki.', body: ' Każda decyzja zostawia ślad, który można później przejrzeć.' },
|
lead: 'Wiedza znika.',
|
||||||
{
|
body: ' Dlaczego coś się zepsuło miesiąc temu i co wtedy pomogło? Zwykle ta wiedza siedzi w głowie jednej osoby albo w nieprzeszukiwalnym stosie dokumentów.',
|
||||||
lead: 'Twoje dane zostają Twoje',
|
},
|
||||||
body: ' — własny serwer, własna domena, bez uzależnienia od cudzej chmury.',
|
] as Bullet[],
|
||||||
},
|
},
|
||||||
] as Bullet[],
|
howItWorks: {
|
||||||
},
|
title: 'Jak to działa',
|
||||||
status: {
|
core: [
|
||||||
title: 'Uczciwie o tym, gdzie jesteśmy',
|
{ t: 'Rdzeń nadzoru — jeden, wspólny dla wszystkiego.', em: 'strong' },
|
||||||
paragraphs: [
|
{
|
||||||
'Rdzeń nadzoru prowadzi naszą infrastrukturę na co dzień — samonaprawa działa od początku do końca, alerty trafiają na telefon, baza wiedzy odpowiada na pytania nawet gdy główny sprzęt śpi.',
|
t: ' Lekki agent na każdej maszynie zgłasza stan usług. Centralny „mózg" buduje z tego pełny obraz sytuacji, wykrywa odchylenia od tego, co powinno działać, i albo naprawia problem sam — jeśli akcja jest bezpieczna — albo pyta człowieka, jeśli nie jest.',
|
||||||
'Dedykowane wdrożenia — pod konkretny dom czy firmę — budujemy w miarę potrzeb, opierając się na tym samym, sprawdzonym rdzeniu. Wolimy powiedzieć wprost, co jeszcze dopracowujemy, niż obiecywać więcej niż działa.',
|
},
|
||||||
] as Rich[],
|
] as Rich,
|
||||||
|
humanAsk: [
|
||||||
|
{
|
||||||
|
t: 'To „pytanie człowieka" nie jest teorią. Przykład z życia: system zauważa, że wyjechałeś na weekend, a rolety zostały otwarte. Sam ich nie zamknie — wysyła Ci wiadomość: ',
|
||||||
|
},
|
||||||
|
{ t: '„Nie zamknąłeś rolet. Zamknąć teraz?"', em: 'quote' },
|
||||||
|
{
|
||||||
|
t: ' Odpisujesz „tak" — i dopiero wtedy system zleca to istniejącej automatyce domowej. Decyzja zawsze należy do Ciebie; wykonanie bierze na siebie system.',
|
||||||
|
},
|
||||||
|
] as Rich,
|
||||||
|
tailored: [
|
||||||
|
{ t: 'System roboczy — budowany pod Ciebie.', em: 'strong' },
|
||||||
|
{ t: ' To, co ten nadzór pilnuje, dopasowujemy do konkretnej potrzeby.' },
|
||||||
|
] as Rich,
|
||||||
|
},
|
||||||
|
underTheHood: {
|
||||||
|
title: 'Pod maską — dla ciekawych',
|
||||||
|
bullets: [
|
||||||
|
{
|
||||||
|
body: [
|
||||||
|
{ t: 'Baza wiedzy nie kończy jako martwy indeks. Nad wyszukiwaniem semantycznym powstaje ' },
|
||||||
|
{ t: 'czytelna, kompilowana wiki utrzymywana przez model językowy', em: 'strong' },
|
||||||
|
{
|
||||||
|
t: ' — pliki tekstowe z linkami między pojęciami, które agent czyta i aktualizuje tak jak człowiek utrzymuje kod. Podejście zainspirowane ',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
t: "koncepcją opisaną przez badacza AI Andreja Karpathy'ego",
|
||||||
|
href: 'https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f',
|
||||||
|
},
|
||||||
|
{ t: '. Budujemy to na otwartym standardzie (' },
|
||||||
|
{
|
||||||
|
t: 'Google OKF',
|
||||||
|
href: 'https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
t: '), nie na własnym, zamkniętym formacie — żeby wiedza, którą zbudujemy, zawsze zostawała czytelna i przenośna.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
body: 'Do zapytań najpierw sięga tańszy model — droższy dopiero wtedy, gdy sprawa naprawdę tego wymaga. W praktyce: streszczenie całego korpusu dokumentów potrafiło kosztować grosze zamiast dni obliczeń.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
body: 'Nie wszystko musi być online 24 godziny na dobę. Kiedy główna maszyna śpi, zapytania automatycznie przejmuje zapasowy sprzęt — bez przerwy zauważalnej dla użytkownika.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
body: 'System sam odróżnia „usługa nie działa" od „usługa śpi zgodnie z planem" — co wcześniej było częstym źródłem fałszywych alarmów.',
|
||||||
|
},
|
||||||
|
] as Bullet[],
|
||||||
|
},
|
||||||
|
why: {
|
||||||
|
title: 'Dlaczego to, a nie zwykły monitoring czy zwykła automatyka',
|
||||||
|
bullets: [
|
||||||
|
{ lead: 'Rozumiemy kontekst, nie tylko wykonujemy polecenia.' },
|
||||||
|
{ lead: 'Naprawiamy, nie tylko alarmujemy.' },
|
||||||
|
{
|
||||||
|
lead: 'Człowiek naprawdę jest w pętli',
|
||||||
|
body: ' — decyzje zawsze do Ciebie, wykonanie bierze na siebie system.',
|
||||||
|
},
|
||||||
|
{ lead: 'Zero czarnej skrzynki.', body: ' Każda decyzja zostawia ślad, który można później przejrzeć.' },
|
||||||
|
{
|
||||||
|
lead: 'Twoje dane zostają Twoje',
|
||||||
|
body: ' — własny serwer, własna domena, bez uzależnienia od cudzej chmury.',
|
||||||
|
},
|
||||||
|
] as Bullet[],
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
title: 'Uczciwie o tym, gdzie jesteśmy',
|
||||||
|
paragraphs: [
|
||||||
|
'Rdzeń nadzoru prowadzi naszą infrastrukturę na co dzień — samonaprawa działa od początku do końca, alerty trafiają na telefon, baza wiedzy odpowiada na pytania nawet gdy główny sprzęt śpi.',
|
||||||
|
'Dedykowane wdrożenia — pod konkretny dom czy firmę — budujemy w miarę potrzeb, opierając się na tym samym, sprawdzonym rdzeniu. Wolimy powiedzieć wprost, co jeszcze dopracowujemy, niż obiecywać więcej niż działa.',
|
||||||
|
] as Rich[],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
cta: {
|
cta: {
|
||||||
title: 'Umów rozmowę',
|
title: 'Umów rozmowę',
|
||||||
body: 'Powiedz, co chcesz zautomatyzować albo uporządkować — zobaczymy, jak to zbudować i objąć nadzorem, który sami na sobie testujemy.' as Rich,
|
body: 'Powiedz, co chcesz zautomatyzować albo uporządkować — zobaczymy, jak to zbudować i objąć nadzorem, który sami na sobie testujemy.' as Rich,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue