// Inbox — list of inbound replies w/ LLM extraction view function Inbox() { const [sel, setSel] = React.useState(window.INBOX[0]); return (
Inbox
{window.INBOX.map((m) => { const active = sel.id === m.id; return (
setSel(m)} style={{ padding: "12px 14px", borderBottom: "1px solid var(--rule)", cursor: "pointer", background: active ? "var(--nav-active-bg)" : "transparent", borderLeft: active ? "3px solid var(--accent)" : "3px solid transparent" }}>
{m.fromName}
{m.receivedAt.slice(5,10)} {m.receivedAt.slice(11,16)}
{m.subject}
{m.extracted.acknowledgement ? "Ack" : "Substantive"} {m.requestId}
); })}
{sel.subject}
From {sel.fromName} <{sel.from}>
{sel.receivedAt} · linked to {sel.requestId}
{/* LLM extraction panel */}
AI
Structured extraction
claude-haiku-4 · processed 12s after receipt
Confidence
0.85 ? "ok" : sel.extracted.confidence > 0.65 ? "warn" : "danger"} />
{Math.round(sel.extracted.confidence * 100)}%
Classification
{sel.extracted.responseClassification}
{sel.extracted.keyFields.length > 0 && (
Extracted fields
{sel.extracted.keyFields.map((f, i) => (
{f.k} {f.v}
))}
)} {sel.extracted.personalDataFlags.length > 0 && (
GDPR flags
    {sel.extracted.personalDataFlags.map((f, i) =>
  • {f}
  • )}
)}

Dear R. Davies,

Thank you for your information request received on {sel.receivedAt.slice(0,10)}. Our reference for this is {sel.requestId.replace("FOI", "FOI-INT")}.

Please find our response below…

— Full message truncated. Click "Open original" to view.

); } Object.assign(window, { Inbox });