← Cycles
Market Analyst · c8

Agent Pivot

activeD2 architecture thread → c10.api-modernizationcreated 2026-08-20· last activity 2026-08-20· mode: active

Reorient pipeline and app around AI-agent-security pivot: archive phase 1, use-case-centric extraction, multi-source feedback, architecture debt paydown.

Why

Qpoint pivoted from API observability to AI Agent Monitoring and Governance. The market-analyst pipeline was built for phase-1 market sampling (surveying many prospects across a broad landscape); phase 2 requires use-case honing (testing named hypotheses with build partners, advisors, and prospects through a unified multi-source feedback stream). The current extraction prompt, schema, and site front-end are positioned for the old business. Archiving phase 1 and redefining around use cases and relationship types unlocks cleaner development, clearer signal aggregation, and vocabulary coherence across prompt, schema, validator, and UI.

Objective

Execute a four-workstream reorientation: archive the phase-1 corpus as a browseable static snapshot, redefine extraction vocabularies around agent-security use cases with relationship-type awareness, resume imports under the new lens with pilot-then-bulk discipline, and address structural debt (vocabulary drift, prompt/schema duplication, schema sharing with the site).

Scope

Workstream A — Archive phase 1 Capture final analysis.json (never yet generated), generate static site snapshot at archive/phase-1/site/, move all phase-1 data to archive/phase-1/data/, create archive README documenting the phase and findings, tag the commit phase-1-final, reset sync state, add archive link to new dashboard.

Workstream B — Redefine analysis areas Define data/use-cases.json registry (named use cases being honed), extend companies.json and known-entities.json with source typing (build-partner / prospect / ciso-advisory / investor / analyst / industry-peer / internal), create schemas/vocabularies.ts as single source of truth (vocabularies defined once, flows to prompt via generator, types via derivation, validator via import), rewrite pipeline/prompts/extract-call.md with agent-security vocabularies and use-case evidence tagging, restructure insights into unified observations[] stream (market signals and product feedback coexist with type and source metadata), define data/feedback.json structure for triage tracking (status: new/acknowledged/committed/shipped/validated/declined), update goals.md for the /analyze skill.

Workstream C — Import phase 2 Invert import filters to tag known sources instead of discarding them (allowlist via companies.json domains/patterns and known-entities.json source overrides), pilot 2–3 diverse calls with new prompt sequentially, evaluate model version bump (sonnet-4 → sonnet-5), bulk-extract remainder via batch API, fix batch.ts to honor classification filter and share prompt assembly, build use-case-centric and source-aware site views: use-case evidence rollup (new homepage), company/source journey page (extends companies detail), feedback triage view (product feedback slice), source-type filter (joins FilterBar).

Workstream D1 — Quick fixes (folded into B/C) Vocabulary single-sourcing (done in B), shared prompt-assembly module, model constant extraction into shared constant or .env, site label-map generation from vocabularies.ts.

Workstream D2 — Deep review (follow-on thread after phase-2 usage real) Flat JSON vs DB evaluation, structured extraction via API, analyze.ts reshape (map-reduce per-use-case + per-company), schema sharing with site (npm workspace or build-step), schema-driven detail-page rendering, pipeline config layer.

Key files touched:

  • Prompt & pipeline: pipeline/prompts/extract-call.md, pipeline/extract.ts, pipeline/batch.ts, pipeline/build-index.ts, pipeline/analyze.ts, schemas/call.ts, schemas/validation.ts, schemas/vocabularies.ts (new)
  • Data: data/use-cases.json (new), data/feedback.json (new), data/companies.json, data/known-entities.json, data/avoma-sync.json
  • Site: site/pages/index.vue, site/pages/calls/[id].vue, site/pages/companies/[name].vue, site/pages/segments.vue, site/components/FilterBar.vue, site/composables/useCallData.ts, .claude/skills/analyze/SKILL.md
  • Archive: archive/phase-1/ (new structure: data/, site/, README.md), .gitignore may need updates
  • Metadata: goals.md, cycle docs, git tag phase-1-final

Open questions (Mark's input required):

  • (A1) Pivot cut line: archive all 34 calls and re-extract agent-era ones under new schema, or split at a date? Which date?
  • (B1) Seed the registries: named candidate use cases, source map (which companies/people are build partners, CISO advisory, investors), confirm SourceType vocabulary cut.
  • (B2) Analysis-area workshop: validate vocabularies for pain points, objections, positioning angles, competitive mentions, budget drivers — draft from positioning docs but needs working session.
  • Feedback lifecycle: extract + triage, or full lifecycle (new → committed → shipped → validated)? Who owns status updates?
  • (C1) Import cadence: manual npm run fetch runs or scheduled?
  • Archive hosting: static snapshot under archive/phase-1/site/ sufficient, or serve at a route on new dashboard?

Key Changes

  • 2026-08-20 — Workstream A complete. Phase-1 corpus (34 calls) archived to archive/phase-1/ with a browseable static site snapshot; first-ever analysis.json generated before freezing (top finding: agent/MCP governance demand); tagged phase-1-final.
  • 2026-08-20 — Workstream B implemented. schemas/vocabularies.ts single source of truth (source types, unified observation stream with workflow routing, all category vocabularies); phase-2 call.ts/validation.ts; rewritten extract-call.md with generated vocab sections; shared prompt assembly (pipeline/prompt.ts) used by extract + batch; use-case registry seeded (7 hypotheses); feedback.json rollup skeleton; known-source import allowlist in avoma.ts (filters become taggers); batch.ts now honors call classifications; sourceType resolution at index build.
  • 2026-08-20 — C pilot: first two phase-2 calls extracted. Moto (prospect, fractional CISO, interest 5/5) and Zscaler (ciso-advisory via Sam Curry person-override, interest 4/5). Both validated clean; use-case evidence tagged with direction/evidenceKind; product-feedback stream (feature requests, ideas, concern, praise) populated. Extraction runs streaming with 32K output budget.
  • 2026-08-20 — c8 site pass shipped. Dashboard reworked around the use-case evidence rollup; new /feedback triage view (type chips, product-area groups, severity/status pills); observation-driven call detail (use-case evidence, product feedback, market-signal sections); company journey page (sourceType badge, accumulated evidence + feedback); sourceType filter in FilterBar; useCallData rewritten for the phase-2 schema; site labels imported from schemas/vocabularies.ts (D1 single-sourcing extended to the UI); shared formatDate fixes the UTC off-by-one; clearFilters date bug fixed; About + README updated. Visual record captured below.
  • 2026-08-20 — end-of-day status. Workstreams A and B complete; C substantially complete (pilot + site pass + docs). Remaining in c8: first feedback-triage pass over the pilot's 8 feedback items (data/feedback.json curation), Apr–Aug 2026 Avoma backfill + A1 cut-line decision (re-extract agent-era Cisco calls under the phase-2 schema), callType tuning watch on next extractions, D2 architecture thread (own thread doc when started). Source-tag note: Sam Curry/Zscaler retagged prospect (potential build partner) per Mark; Moto's Mark M sits on Qpoint's security advisory board — tag decision pending.

Outcome

(In progress)

Artifacts

Qpoint Brand Style Guide