/* eslint-disable */ const D6 = window.PERSONA_DATA; // ---------- Billing ---------- const PageBilling = () => (
Acme Studios · Pro plan

Billing & usage

Token-metered + seat-based hybrid. Resets on the 1st.
Plan
Pro
$199 / mo · 5 seats
This cycle
$842
62% of $1,350 quota
Personas (mtd)
412
+24%
Next invoice
Aug 1
auto-charge · Visa •• 4242

Cost breakdown · this cycle

{[ ["Pipeline · Soul draft (opus)", 312, "$ via tokens"], ["Pipeline · Self+Mask (sonnet)", 142, ""], ["Pipeline · Surface (sonnet)", 88, ""], ["Audit (opus)", 124, ""], ["Suite & fingerprint", 78, ""], ["Chat runtime (sonnet)", 72, ""], ["Embeddings (voyage-3)", 18, ""], ["Moderation (incl.)", 8, ""], ].map(([lbl,v],i)=>(
{lbl}
${v}
))}

Spend · 30 days

({val:d.cost}))} h={160} color="var(--gold)"/>

Quotas & limits

{[ ["Tokens · Pro pool", "62%", "var(--ember)"], ["Personas / month", "32%", "var(--moss)"], ["Seats", "5 / 5", "var(--gold)"], ["Webhooks / sec", "8%", "var(--sky)"], ].map(([lbl,pct,c],i)=>(
{lbl}{pct}
))}

Invoices

{[ ["INV-2026-08","Aug 2026","—","upcoming","draft"], ["INV-2026-07","Jul 2026","$1,350","paid","Jul 1"], ["INV-2026-06","Jun 2026","$1,350","paid","Jun 1"], ["INV-2026-05","May 2026","$1,420","paid · w/ overage","May 1"], ["INV-2026-04","Apr 2026","$1,350","paid","Apr 1"], ].map((r,i)=>( ))}
NumberPeriodAmountStatusIssued
{r[0]}{r[1]} {r[2]} {r[3]==="paid"?paid:r[3]==="upcoming"?upcoming:{r[3]}} {r[4]}
{[ { name:"Free", price:"$0", caption:"Solo experiments", feats:["10 personas","Basic audit","Community support"], cta:"Downgrade", highlight:false}, { name:"Pro", price:"$199 /mo", caption:"Indie teams", feats:["1,500 personas","Audit + Suite","API access","Webhooks"], cta:"Current plan", highlight:true}, { name:"Team", price:"$899 /mo", caption:"5–25 seats", feats:["10k personas","SSO (SAML)","Custom roles","Marketplace earnings"], cta:"Upgrade", highlight:false}, { name:"Enterprise", price:"Talk to us", caption:"Compliance + scale", feats:["Per-org keys","Data residency","DPA & SOC 2","Audit log export"], cta:"Contact sales", highlight:false}, ].map((p,i)=>(
{p.name}
{p.price}
{p.caption}
{p.feats.map((f,j)=>
{I("check",13)} {f}
)}
))}
); // ---------- Audit log ---------- const PageAudit = () => (
Immutable · 2-year retention

Audit log

Every state-mutating action is recorded with who, what, when, where. Hash-chained for tamper evidence.
{I("search",14)}
{D6.auditEntries.map((a,i)=>( ))}
WhenActorActionResourceIPHash
{a.when} {a.who} {a.action} {a.res} {a.ip} 0x{(0xa09f3b71+i).toString(16)}…
); // ---------- Moderation queue ---------- const PageModeration = () => (
3-layer pipeline · in/out/post

Moderation queue

Flagged personas and runs awaiting review. SLA: 48h for high, 24h for critical.
In queue
4
+1 today
Avg resolution
14h
SLA 48h
Auto-blocked / day
217
layer-1 catches
Human escalations
12 / wk
stable
{D6.moderationQueue.map(m=>( ))}
SubjectReasonSeverityFlagged byAge
{m.subj}
{m.id}
{m.reason} {m.severity==="critical"?critical:m.severity==="high"?high:{m.severity}} layer-2 LLM {m.flagged}

Pipeline layers

{[ ["Layer 1 · Input filter","Heuristic + small classifier. Blocks obvious dark-roleplay, minor scenarios, celebrity names. <50ms.","217 blocks/day","var(--moss)"], ["Layer 2 · LLM judge","Sonnet evaluates intent + persona context. Flags ambiguous cases for human.","12 flags/day","var(--gold)"], ["Layer 3 · Output guard","Streams output through PII detector + impersonation matcher. Pauses & regenerates on hit.","8 holds/day","var(--ember)"], ].map(([t,d,s,c],i)=>(
{t}
{s}
{d}
))}

Celebrity & impersonation blocklist

Combined Wikidata (people · POBI ≥ 4) + per-org additions. Updated nightly.
{["Recep Tayyip Erdoğan","Atatürk","Elon Musk","Taylor Swift","Cem Yılmaz","Sezen Aksu","Hasan Ali Yücel","Nâzım Hikmet","Ezhel"].map(n => {n})} + 184k more

Org additions

"Acme CEO" · pattern
"Eski müdür Hasan B."
); // ---------- Workspaces switcher modal ---------- const PageWorkspaces = ({ go }) => (
Switch workspace

Where are you working today?

{[ ["Acme Studios","Studio · Personas","152 personas","Pro","var(--ember)",true], ["Acme Studios","QA · Eval personas","32 personas","Pro","var(--moss)",false], ["Persona (internal)","Demo workspace","18 personas","Enterprise","var(--gold)",false], ["Boğaziçi Lab","Research","204 personas","Team","var(--plum)",false], ["Solo","Personal sketches","6 personas","Free","var(--sky)",false], ].map((w,i)=>(
go("home")}>
{w[0][0]}
{w[1]}
{w[0]}
{w[2]}{w[3]}
))}
); // ---------- Auth ---------- const PageAuth = ({ mode, onDone }) => { const [step, setStep] = useState(mode==="signup"?"signup":"login"); return (
Persona.
A character tutarlılık motoru. Profil değil; içinde çatışma olan dijital insan.
"İyi bir karakter, baskı altında bozulmayandır. Persona, bu baskıyı simüle eder ve karakterini orada tutar."
SOC 2 Type II·GDPR · KVKK·ISO 27001 (in progress)
{step==="login" && (<>
Welcome back

Sign in to Persona

or
)} {step==="mfa" && (<>
Two-factor required

Enter the 6-digit code

From your authenticator app. Configured 4 weeks ago.
{[2,9,3,8,4,1].map((n,i)=>( ))}
Lost your device? Use a recovery code
)} {step==="signup" && (<>
Get started

Create a Persona account

or
By creating an account you agree to the Terms, Privacy, and AUP.
)}
); }; // ---------- Onboarding overlay ---------- const Onboarding = ({ onDone }) => { const [step, setStep] = useState(0); const steps = [ { t:"Welcome to Persona.", d:"This is a tour. 90 seconds. You can skip.", c:"" }, { t:"Step 1 — Brief", d:"Describe a person in your own words. Persona drafts the Soul layer first — the unspoken stuff.", c:"create" }, { t:"Step 2 — Pipeline", d:"Six steps. You can watch each one stream. Audit is a separate Opus call that judges the whole persona.", c:"create" }, { t:"Step 3 — Edit", d:"Lock layers you like. Cascade changes downward. Refine with one click.", c:"detail" }, { t:"Step 4 — Chat", d:"Talk to your persona. We measure voice drift in real time. You'll see it on the right.", c:"chat" }, { t:"You're set.", d:"Generate your first persona, or browse the marketplace.", c:"" }, ]; const s = steps[step]; return (
{steps.map((_,i)=>(
))}

{s.t}

{s.d}
[ illustration · {s.c||"intro"} ]
); }; window.PageBilling = PageBilling; window.PageAudit = PageAudit; window.PageModeration = PageModeration; window.PageWorkspaces = PageWorkspaces; window.PageAuth = PageAuth; window.Onboarding = Onboarding;