/* Pertel — brand landing page. * Story-first counterpart to index.html (install) and theory.html (why). * * Flow: * Hero — huge bracket glyph + headline * §01 Pain — three failures Pertel solves * §02 Shape — inside-the-model vs outside-the-model * §03 Action — a real session, abridged * §04 Modes — Dash · Sift · Full, three cards * Install — final CTA pointing to mcp.schedii.app */ function HostNavPertel() { return (
Pertel
$ Install § Theory ? Why
); } /* Big hero bracket — replaced with actual Pertel logo image. */ function HeroBracket() { return null; } const PAINS = [ { n: '01', head: 'Tokens run out.', body: 'Context windows fill. Long sessions get truncated. The model forgets what you said at the top of the thread by the bottom of it.', metric: 'lost on overflow', }, { n: '02', head: 'Models forget on swap.', body: 'Switch from Claude to GPT mid-thought and the slate wipes. You spend the first ten minutes of every new session re-explaining yourself.', metric: 'lost on switch', }, { n: '03', head: 'Re-explaining costs time.', body: 'You\u2019ve already typed the brief, the constraints, the names. Each new session starts from zero unless you copy-paste the past in by hand.', metric: 'lost on repeat', }, ]; const MODES = [ { accent: 'cyan', icon: 'pertel', ns: '@sch -d', name: 'Pertel Dash', head: <>The lite one., blurb: 'Memory, append-only markdown logs, doc handoff. The "don\u2019t blow my context" mode. Portable, one folder, no backend.', tools: ['begin', 'remember', 'recall', 'handoff', 'tail'], invoke: '@sch -d begin', }, { accent: 'amber', icon: 'filter', ns: '@sch -f', name: 'Pertel Sift', head: <>The filter., blurb: 'Drop your idea, draft, plan, or code in. The Schedii Bible + AkrosInfra frameworks sift, kill the junk, re-separate the rest. Reasons attached.', tools: ['mm', 'ndv', 'ndvr', 'full', 'custom'], invoke: '@sch -f mm', }, { accent: 'cyan', icon: 'pertel', ns: '@sch p', name: 'Pertel', head: <>The full stack., blurb: 'Workbench + Dash + Sift + discovery, in one namespace. Everything Pertel does, in one mode. The serious one.', tools: ['workbench', 'memory', 'sift', 'discovery'], invoke: '@sch p open', }, ]; const RM_AXES = [ { label: 'visual', weight: 0.30, note: 'palette · type · density' }, { label: 'interaction', weight: 0.25, note: 'gestures · flow · timing' }, { label: 'layout', weight: 0.20, note: 'grids · zones · chrome' }, { label: 'naming', weight: 0.10, note: 'verbs · nouns · placeholders' }, { label: 'motion', weight: 0.10, note: 'curves · choreography' }, { label: 'iconography', weight: 0.05, note: 'glyph family · weight' }, ]; const RM_BANDS = [ { range: '0–20%', name: 'Distant', tone: 'cool', verdict: 'unrecognisable rival' }, { range: '21–45%', name: 'Healthy', tone: 'target', verdict: 'recognisable · distinct' }, { range: '46–65%', name: 'Echo', tone: 'warn', verdict: 'inspired-by · revise one axis' }, { range: '66–85%', name: 'Mirror', tone: 'danger', verdict: 'mandates a redo' }, { range: '86–100%', name: 'Clone', tone: 'block', verdict: 'block · do not ship' }, ]; const FRAMEWORKS = [ /* Tier A — Core kernels */ { code: 'F01', tier: 'A', name: 'AkronInfra PPo', tagline: 'Proprietary Pop Order — name · contract · refusal · state · proof · handoff' }, { code: 'F02', tier: 'A', name: 'Logic Legend', tagline: 'Inline markers + conflict hierarchy. The reading system.' }, { code: 'F09', tier: 'A', name: 'Akron Discipline', tagline: 'Seven state files. Nine rules. One operating loop.' }, { code: 'F11', tier: 'A', name: 'Verify Before Done', tagline: 'Six evidence forms. No diff/log/test/proof — no done.' }, { code: 'F12', tier: 'A', name: 'Safe-Write Engine', tagline: 'Propose → preview → apply. Archive over delete. Diff before disk.' }, { code: 'F13', tier: 'A', name: 'Discipline as MCP', tagline: 'Resources read. Prompts run. Tools act. The doc becomes the interface.' }, { code: 'F14', tier: 'A', name: 'Identity Continuity', tagline: 'Rock / Sand / Dust / Gem. Build for recognition before novelty.' }, { code: 'F15', tier: 'A', name: 'Memory Pipeline', tagline: 'HOT · WARM · COOL · COLD. Promotion is a graph; nothing is deleted.' }, { code: 'F16', tier: 'A', name: 'Cognitive Operator Graph', tagline: 'Twelve operators · one chaosIndex · seven-step convergent audit.' }, { code: 'F19', tier: 'A', name: 'Security Doctrine', tagline: 'Fifteen rules. Backend is the boundary. Frontend is hostile.' }, /* Tier B — Support patterns */ { code: 'F03', tier: 'B', name: 'Reminiscence Meter', tagline: 'Six-axis similarity score. Target band 21–45%. ≥66% mandates a redo.', featured: true }, { code: 'F04', tier: 'B', name: 'Triage Queue', tagline: 'Every notification is a 2–3-button decision. Median triage time, not read rate.' }, { code: 'F05', tier: 'B', name: 'Daemon Services', tagline: 'Background work as observable services. Name · job · toggle · scope · findings.' }, { code: 'F06', tier: 'B', name: 'Persona Boot', tagline: 'Login lands at a workspace. Boot lands at a mode. Never permissions.' }, { code: 'F07', tier: 'B', name: 'Intent Drive', tagline: 'Folders are intents (verbs you’re doing), not mime types.' }, { code: 'F08', tier: 'B', name: 'Verb Bar', tagline: 'One input · three modes: text→search · /verb→command · ?→AI.' }, { code: 'F10', tier: 'B', name: 'Stable-ID Worklist', tagline: 'T · H · S · U · R. IDs are permanent. The legend is a contract.' }, ]; const SESSION = [ { who: 'you', text: '@sch -d begin "Q4 launch debrief"' }, { who: 'dash', text: 'session opened \u00b7 pertel/2026-05-22/q4-launch.md' }, { who: 'you', text: '@sch -d remember Rob owns ig + tt, Mia owns paid.' }, { who: 'dash', text: 'logged \u00b7 2 facts pinned \u00b7 context safe across model swap' }, { who: 'you', text: '@sch -f full \u2014 sift the launch plan against the bible' }, { who: 'sift', text: '7 kept \u00b7 3 killed \u00b7 2 re-separated \u00b7 reasons attached' }, { who: 'you', text: '@sch -d handoff to claude' }, { who: 'dash', text: 'transcript + facts exported \u00b7 1 file \u00b7 8.2 kb \u00b7 ready' }, ]; function tokenize(text) { return text.split(/(@sch\s+-d|@sch\s+-f|@sch\s+-o|@sch\s+p|@sch)/g).map((p, j) => (p && p.startsWith('@sch')) ? {p} : {p} ); } function PertelApp() { return (
{/* HERO */}
Pertel · Intelligence by Schedii

Your context, kept.

Pertel is the intelligence layer for Claude, GPT, and Manus. Append-only markdown logs, memory that survives a model swap, no token-burn. The conversation lives outside the model so the work lives with you.

{/* §01 — Pain */}

Context is the bottleneck.

three ways it fails pain · documented
{PAINS.map(p => (
{p.n} · fault

{p.head}

{p.body}

context {p.metric}
))}
{/* §02 — Shape */}

Memory belongs outside the model.

the shape of the fix where pertel sits
inside the model

Borrowed memory.

Lives in the context window. Truncates on overflow. Wipes on model swap. Re-explained every session.

truncated model-local re-paste
{/* §03 — In action */}

A session, abridged.

what using pertel looks like live-style transcript
~/.pertel/2026-05-22/q4-launch.md ● live
{SESSION.map((l, i) => (
{l.who}
{tokenize(l.text)} {i === SESSION.length - 1 && }
))}
{/* §04 — Modes */}

Three modes.

one binary, switched by flag @sch -d · @sch -f · @sch p
{MODES.map(m => (
{m.ns}

{m.head}

{m.name}

{m.blurb}

{m.tools.map(t => {t})}
{m.invoke}
))}
{/* §05 — The three lenses of Pertel F */}

The filter’s three minds.

how pertel f thinks @sch -f · mm · ndv · ndvr
@sch -f mm

MmM

Metered Mind Map

A graph-based filter. Concepts become nodes; relations become edges. Salience is measured. The filter follows the strongest paths and reports the weakest joints.

nodesedgessaliencepaths
graph · metered
@sch -f ndv

Neurodivii

Neurodivergent lens

Re-weights signal so unusual angles survive the standard cut. The “what if?” that a canonical pass would have killed gets a second look.

re-weightpreserveangle
second-look
@sch -f ndvr

Neurodivii + Reason

ND lens · with reasoning trace

Same lens, plus the why. Every keep, kill, and re-separation comes back with its reasoning attached. The filter that explains itself.

reasonedtracedauditable
filter + why
{/* §06 — AkrosInfra discipline */}

Built on AkrosInfra.

discipline · seventeen frameworks akros · infra · unified
{/* Featured: Reminiscence Meter */}
F03 tier B · quality gate

The Reminiscence Meter.

Quality-gate every surface against its closest rival. Six weighted axes. Five bands. One target zone — and a hard refusal at the top end.

{/* Left: axis breakdown */}
six weighted axes
{RM_AXES.map(a => (
{a.label} {Math.round(a.weight * 100)}%
{a.note}
))}
score = 0.30·visual + 0.20·layout + 0.25·interaction + 0.10·naming + 0.10·motion + 0.05·iconography
{/* Right: five bands */}
five bands · one target
{RM_BANDS.map(b => (
{b.range}
{b.name} {b.tone === 'target' && target}
{b.verdict}
))}
closing rule You cannot land in the healthy band by accident. It is a design choice.
{/* Framework capsule grid */}
seventeen frameworks · one composition Tier A · core kernels Tier B · support patterns
{FRAMEWORKS.map(f => (
{f.code} tier {f.tier}
{f.name}
{f.tagline}
))}
{/* Install CTA */}

Install once. Recall efficiently.

One binary. One key. Drop the JSON into Claude, Cursor, ChatGPT, or anywhere MCP works.

{/* Footer */}
pertel · intelligence by schedii v0.4.1-alpha framework · AkrosInfra unified snapshot · 2026-05-22 akros · infra
); } const root = ReactDOM.createRoot(document.getElementById('root')); root.render();