---
id: CAP-PFM-LLM-019
title: Use Jazz AI conversations and project folders
feature: FEAT-PFM-LLM-07
product_area: platform
module: llm
revision: 1
status: draft
product_intent: proposed
implementation_evidence: partially-observed
supersedes: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
intent_sources: []
purpose: Let staff discuss work with the teammate and organize that conversation history.
outcomes:
  - The prototype offers drafting and planning conversations.
  - 'Conversations support search, projects, renaming, archive, restore and deletion.'
concepts:
  - CON-PFM-LLM-005
actors:
  - ACT-PFM-032
surfaces:
  - console
preconditions:
  - The person has entered the console.
postconditions: []
permissions: []
rules:
  - id: BR-CAP-PFM-LLM-019-01
    proved_by: [ATS-PFM-LLM-019-01]
    statement: >-
      Signed-in staff can open Jazz AI from its page or header panel without an AI permission check or an
      organization AI-switch check.
    kind: permission
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:components/console/nav-config.ts:unlistedNav'
    origin: none
  - id: BR-CAP-PFM-LLM-019-02
    proved_by: [ATS-PFM-LLM-001-19, ATS-PFM-LLM-019-02]
    statement: >-
      General Jazz AI replies use a console-side model call without Platform request accounting, allowance
      holds, evidence capture or organization AI-switch enforcement.
    kind: policy
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:app/api/agent/conversations/[id]/messages/route.ts:MODEL'
    origin: none
  - id: BR-CAP-PFM-LLM-019-03
    proved_by: []
    statement: >-
      General replies use thirty previous messages plus the new question and an instruction containing the
      configured organization and project context, requesting concise answers without invented record facts
      and directing lists to Queries.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:app/api/agent/conversations/[id]/messages/route.ts:systemPrompt'
    origin: none
  - id: BR-CAP-PFM-LLM-019-04
    proved_by: []
    statement: Reply failure presents a retry message and restores the submitted question in the composer.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:components/console/agent-chat.tsx:send'
    origin: none
  - id: BR-CAP-PFM-LLM-019-05
    proved_by: [ATS-PFM-LLM-019-03]
    statement: >-
      Direct questions allow one to four thousand trimmed characters, appended turns up to eight thousand,
      project names one to eighty and descriptions up to four hundred; titles allow up to one hundred and
      twenty and a new title may be empty.
    kind: validation
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:lib/agent/schemas.ts'
    origin: none
  - id: BR-CAP-PFM-LLM-019-06
    proved_by: []
    statement: >-
      A new conversation uses the default title until its first user message supplies a whitespace-normalized
      sixty-character title, which staff can later rename.
    kind: lifecycle
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:lib/agent/store.ts:appendMessages'
    origin: none
  - id: BR-CAP-PFM-LLM-019-07
    proved_by: [ATS-PFM-LLM-019-04]
    statement: >-
      Conversation and project access filters a fixed sample owner in shared server memory, creating neither
      actual user nor workspace isolation and losing updates on restart.
    kind: invariant
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:lib/agent/store.ts:owned'
    origin: none
  - id: BR-CAP-PFM-LLM-019-08
    proved_by: [ATS-PFM-LLM-019-05]
    statement: >-
      Projects support creation, naming, description and deletion; deleting a project retains its
      conversations as unfiled, and project lists sort by name with unarchived conversation counts.
    kind: lifecycle
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:lib/agent/store.ts:deleteProject'
    origin: none
  - id: BR-CAP-PFM-LLM-019-09
    proved_by: [ATS-PFM-LLM-019-06, ATS-PFM-LLM-019-08]
    statement: >-
      Archive retains a restorable conversation outside active lists and archiving the open conversation
      starts another conversation.
    kind: lifecycle
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:components/agent/conversation-browser.tsx:onArchive'
    origin: none
  - id: BR-CAP-PFM-LLM-019-10
    proved_by: [ATS-PFM-LLM-019-07]
    statement: Conversation and project deletion require confirmation and permanently remove the selected object.
    kind: lifecycle
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:components/agent/conversation-browser.tsx'
    origin: none
  - id: BR-CAP-PFM-LLM-019-11
    proved_by: []
    statement: >-
      Conversation search matches titles or message text without case sensitivity within the selected
      unarchived list and orders results by recent activity.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:lib/agent/store.ts:listConversations'
    origin: none
  - id: BR-CAP-PFM-LLM-019-12
    proved_by: []
    statement: >-
      The conversation client writes through console agent routes rather than forwarding conversation writes
      to Platform’s query client.
    kind: invariant
    enforced_at:
      - console
    must_prove: false
    provenance: test
    source: 'react-console:lib/agent/__tests__/client.test.ts#never routes through the query client'
    origin: none
scenarios:
  - id: SC-CAP-PFM-LLM-019-01
    given: A person creates a project and starts a conversation.
    when: They later search for words used in its title.
    then: The store can return that conversation and its project association.
    provenance: inferred
    source: 'react-console:lib/agent/store.ts'
    note: >-
      The described path combines the cited store or refinement operations; no complete automated scenario
      demonstrates the sequence.
edge_cases:
  - id: SC-CAP-PFM-LLM-019-02
    given: A conversation belongs to a query scope.
    when: A general-reply request targets that conversation.
    then: The route directs the person to continue from the query.
    provenance: observed
    source: >-
      react-console:app/api/agent/conversations/[id]/messages/route.ts (409 Open the query to continue this
      conversation)
constraints:
  - 'Jazz AI remains a console prototype with unresolved isolation, persistence and metering.'
depends_on: []
related:
  - CAP-PFM-LLM-001
  - CAP-PFM-LLM-020
journeys:
  - JNY-PFM-LLM-005
open_questions:
  - OQ-PFM-LLM-003
evidence:
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f:
    app/(console)/console/[tenantId]/agent/page.tsx; components/agent/agent-full-view.tsx, agent-provider.tsx,
    conversation-browser.tsx, name-dialog.tsx; components/console/agent-chat.tsx, site-header.tsx,
    nav-config.ts; lib/agent/client.ts, store.ts, schemas.ts, types.ts, tenant.ts; app/api/agent/**;
    lib/agent/__tests__/client.test.ts.
  - >-
    services-platform at ad3f6a6582843008ed0f5a17b131878d15829af1: tests/unit/llm-provider-boundary.spec.ts
    and docs/compliance/exceptions.md (EX-AI-003), against which the console's own model call is compared.
controls: [TC-AI-001, TC-AI-004, TC-AI-006, TC-AI-007, TC-AVL-001, TC-AVL-004, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-CRY-001, TC-CRY-002, TC-CRY-003, TC-CRY-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-004, TC-LOG-002, TC-LOG-003, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
exercised_by: [FAS-PFM-LLM-07-01, FAS-PFM-LLM-07-02, FAS-PFM-LLM-07-03, FAS-PFM-LLM-07-04, FAS-PFM-LLM-07-05]
suites: []
---

# Use Jazz AI conversations and project folders

## Purpose

Let staff discuss work with the teammate and organize that conversation history.

## How It Works

Staff open Jazz AI from its full page or the console header. They can start a general conversation or place it in a project that supplies context for replies. The console currently calls its own model route for general answers rather than Platform’s metered runtime. A successful reply appends both sides of the exchange. A failed reply restores the person’s draft so they can retry. Staff can rename, archive, restore or delete conversations and manage their project folders. The current store uses shared server memory and a sample owner, so these controls do not establish customer privacy or durable history. The product should replace that prototype boundary before exposing real customer conversations.

## Relationships


