c2b84a1f26
New admin "LP Objections" page (frontend ObjectionsPage + nav). Pick a segment (or All LPs) and Run grounding: the Architect mines matched LP emails + notes on the local model, scrubs every identifier through the redaction boundary, and asks Claude for the recurring objections + honest rebuttals (substantiated/hand-wavy flagged). Renders the de-identified draft + an "N identifiers protected" badge; fail-closed statuses (local_model_unavailable / scrub_unavailable / claude_not_configured / rehydrate_failed) show a clear message. Uses the existing /api/architect/ground route. Verified in preview: page + segment selector + Run; the local minimize/scrub legs actually ran against real Spark on synthetic input and fail-closed correctly at the (key-less) Claude step; success rendering verified with a mocked ok response. NOT yet deployed — start-cli RPC to the box hit a transient transport error post a StartOS hiccup (curl works, start-cli doesn't); CRM healthy at v0.1.0:65 meanwhile. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
1.0 KiB
TypeScript
20 lines
1.0 KiB
TypeScript
import { VersionInfo } from '@start9labs/start-sdk'
|
|
|
|
// LP Objections page: a UI trigger for the Architect's grounding pass. An admin picks
|
|
// a segment (or All LPs) and runs grounding — the Architect mines matched LP emails and
|
|
// notes on the local model, removes every identifier through the redaction boundary,
|
|
// and asks Claude for the recurring objections + honest rebuttals. Only de-identified
|
|
// themes leave Ten31. Uses the existing /api/architect/ground route; no schema change.
|
|
export const v_0_1_0_66 = VersionInfo.of({
|
|
version: '0.1.0:66',
|
|
releaseNotes: {
|
|
en_US: [
|
|
'New LP Objections page: run the Architect grounding pass over your matched LP email',
|
|
'to surface the recurring objections (and the strongest honest rebuttals) for any',
|
|
'segment. Everything sensitive is de-identified on your own hardware before Claude sees',
|
|
'it — only objection themes leave Ten31. Results are a draft for your review.',
|
|
].join(' '),
|
|
},
|
|
migrations: { up: async () => {}, down: async () => {} },
|
|
})
|