version: 0.6.0
kind: app
app:
  description: 既存顧客の業種・過去取引・検討物件・稟議履歴・競合情報を5変数で受け取り、構造化JSON抽出→Markdown整形の二段LLMで提案方針／想定ニーズ／トークスクリプト／提案書叩き台を生成します。
  icon: 🎯
  icon_background: '#E0F2FE'
  mode: workflow
  name: リース既存顧客深耕提案エージェント
  use_icon_as_answer_icon: false
workflow:
  conversation_variables: []
  environment_variables: []
  features:
    file_upload:
      image:
        enabled: false
    opening_statement: ''
    suggested_questions: []
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
  graph:
    edges:
    - data:
        sourceType: start
        targetType: knowledge-retrieval
      id: start-to-kr1
      source: start
      target: kr1
    - data:
        sourceType: knowledge-retrieval
        targetType: llm
      id: kr1-to-llm1
      source: kr1
      target: llm1
    - data:
        sourceType: llm
        targetType: llm
      id: llm1-to-llm2
      source: llm1
      target: llm2
    - data:
        sourceType: llm
        targetType: end
      id: llm2-to-end
      source: llm2
      target: end
    nodes:
    - data:
        title: 開始
        type: start
        variables:
        - label: 営業メモ (顧客名/業種/過去取引/検討物件/稟議履歴/競合を1フィールドに貼付)
          max_length: 8192
          options: []
          required: true
          type: paragraph
          variable: sales_memo
        - label: 業種タグ
          options:
          - 物流業
          - 製造業
          - 建設業
          - 医療福祉
          - 小売EC
          - その他
          required: false
          type: select
          variable: industry_tag
        - label: 戦略論点タグ
          options:
          - 残価設定型
          - 脱炭素
          - 役員会3億円閾値
          - 稟議通過パターン
          - 銀行系競合
          - 補助金活用
          - その他
          required: false
          type: select
          variable: topic_tag
      height: 220
      id: start
      position:
        x: 80
        y: 282
      type: custom
      width: 244
    - data:
        title: ナレッジ検索（稟議パターン・業種テンプレ・競合・脱炭素）
        type: knowledge-retrieval
        dataset_ids:
        - __KR_0__
        retrieval_mode: single
        query_variable_selector:
        - start
        - sales_memo
        single_retrieval_config:
          model:
            provider: openai
            name: gpt-5-mini
            mode: chat
            completion_params:
              temperature: 0.2
          score_threshold_enabled: false
          top_k: 4
      height: 100
      id: kr1
      position:
        x: 320
        y: 282
      type: custom
      width: 244
    - data:
        title: 顧客分析・構造化JSON抽出
        type: llm
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
          completion_params:
            temperature: 0.2
        retry_config:
          retry_enabled: true
          retry_count: 2
          retry_interval: 200
        prompt_template:
        - role: system
          text: |
            あなたはリース業界のベテラン法人営業 兼 戦略アナリストです。
            顧客の業種・過去のリース取引履歴・今回検討中の物件・社内稟議履歴・競合情報を読み込み、
            営業提案の戦略策定に必要な情報を構造化JSON で抽出してください。

            【出力ルール】
            - 必ず以下の JSON Schema に厳密に従う
            - JSON以外の説明・コードフェンスは一切付けない
            - 値が不明な場合は空文字 "" または空配列 [] を返す
            - 入力中の固有事実（企業名・契約年・金額・人物名・発言）は必ず該当フィールドに引用する

            【JSON Schema】
            {
              "customer_profile": {
                "company_name": "...",
                "industry": "...",
                "size_segment": "大企業 | 中堅 | 中小 | 不明",
                "key_persons": [{"name": "...", "role": "...", "stance": "..."}]
              },
              "past_deals_summary": [
                {"year": "YYYY", "asset": "...", "scheme": "...", "amount_jpy": "...", "approval_pattern": "..."}
              ],
              "current_proposal_targets": [
                {"asset": "...", "estimated_amount_jpy": "...", "strategic_value": "..."}
              ],
              "approval_constraints": {
                "threshold_amount_jpy": "...",
                "preferred_scheme": "...",
                "decision_factors": ["...", "..."]
              },
              "manifest_needs": [
                {"need": "...", "evidence": "入力文中の該当箇所をそのまま引用"}
              ],
              "latent_needs": [
                {"need": "...", "perspective": "経営層 | 現場 | 財務", "basis": "推察根拠"}
              ],
              "proposal_strategy": {
                "story": "戦略ストーリー 3-5行",
                "differentiation_points": ["差別化ポイント1", "...", "金利以外の論点を必ず1つ以上"],
                "mid_term_positioning": "今回の提案を中期的な顧客関係の進化として位置づける一文"
              },
              "talk_scripts": [
                {
                  "scenario_title": "顧客のよくある反論や懸念",
                  "customer_quote": "顧客の発言（想定）",
                  "sales_rebuttal": "営業の切り返し（過去稟議の固有事実を必ず引用）",
                  "next_question": "次の質問への誘導"
                }
              ],
              "proposal_outline": {
                "executive_summary": "3行のサマリ",
                "issue_positioning": "顧客の経営課題と今回提案の位置づけ",
                "recommended_scheme": [
                  {"asset": "...", "period_years": "...", "residual_pct": "...", "maintenance": "...", "rationale": "..."}
                ],
                "monthly_cost_table": [
                  {"asset": "...", "period": "...", "monthly_jpy": "...", "residual": "...", "notes": "前提・仮定を明示"}
                ],
                "expected_effects": {
                  "cashflow_improvement_jpy": "...",
                  "tax_benefit_jpy": "...",
                  "co2_reduction_tons_year": "..."
                },
                "competitive_comparison": "競合（銀行ローン／他社リース）との比較ポイント",
                "next_steps": ["...", "..."]
              }
            }

            【厳守事項】
            - talk_scripts は 3-5件を必ず生成
            - 数値が不明な場合は値に "(仮定: 〇〇と置く)" を含めて明示する
            - JSON のフィールド名は上記の通り英語キーを厳守
        - role: user
          text: |
            ## 営業メモ（顧客名・業種・過去取引・検討物件・稟議履歴・競合 を全て含む）
            {{#start.sales_memo#}}

            ## 質問タグ（営業が指定した重点ポイント, 任意）
            業種タグ: {{#start.industry_tag#}}
            戦略論点タグ: {{#start.topic_tag#}}
            (空のタグは無視してよい。指定タグは proposal_strategy.differentiation_points や talk_scripts で重点的に扱う)

            ## 参考ナレッジ（業界事例・稟議パターン・競合対比・脱炭素制度）
            以下はリース業界の社内ナレッジ検索結果です。顧客固有の事実を最優先しつつ、
            該当する事例や制度があれば proposal_strategy.differentiation_points や
            talk_scripts.sales_rebuttal で「業界事例として〇〇社では…」のように参考引用してください。
            ただし顧客固有の固有事実(企業名・契約年・金額・人物名)とは混同しないこと。

            {{#kr1.result#}}
        vision:
          enabled: false
        memory: null
        context:
          enabled: true
          variable_selector:
          - kr1
          - result
      height: 100
      id: llm1
      position:
        x: 600
        y: 282
      type: custom
      width: 244
    - data:
        title: 提案書叩き台 Markdown 整形
        type: llm
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
          completion_params:
            temperature: 0.5
        retry_config:
          retry_enabled: true
          retry_count: 2
          retry_interval: 200
        prompt_template:
        - role: system
          text: |
            あなたはリース会社の経営層向け提案書作成アシスタントです。
            前段の JSON 抽出結果を受け取り、営業現場でそのまま使える Markdown 提案レポートに整形してください。

            【出力構成（必ずこの4セクション・この順序・この見出し）】

            ## 1. 提案方針
            - JSON.proposal_strategy.story を3-5行で展開
            - JSON.proposal_strategy.differentiation_points を箇条書きで列挙（金利以外の論点を必ず含む）
            - JSON.proposal_strategy.mid_term_positioning を一文で締める

            ## 2. 想定ニーズ
            **顕在ニーズ**
            - JSON.manifest_needs 配列を箇条書きで列挙、各項目に「根拠（入力中の該当箇所）」を併記

            **潜在ニーズ**
            - JSON.latent_needs 配列を「経営層／現場／財務」の3観点ごとにグループ化して列挙
            - 各項目に「推察根拠」を併記

            ## 3. トークスクリプト
            JSON.talk_scripts 配列を全て展開。各シナリオを以下のフォーマットで:

            **シナリオX: <scenario_title>**
            - 顧客の発言（想定）: "<customer_quote>"
            - 営業の切り返し: "<sales_rebuttal>"
            - 次の質問への誘導: "<next_question>"

            ## 4. 提案書叩き台
            ### 1) エグゼクティブサマリ
            JSON.proposal_outline.executive_summary を3行で記述

            ### 2) 顧客の経営課題と今回提案の位置づけ
            JSON.proposal_outline.issue_positioning を箇条書きで展開

            ### 3) 推奨リーススキーム
            JSON.proposal_outline.recommended_scheme 配列を物件ごとに箇条書きで:
            - 物件 / 期間 / 残価設定 / 保守オプション / 採用理由（過去稟議パターン参照）

            ### 4) 概算月額・総額（表形式）
            JSON.proposal_outline.monthly_cost_table を以下の表で:

            | 物件 | 期間 | 月額（概算） | 残価設定 | 備考 |
            |---|---|---|---|---|

            ### 5) 期待効果
            JSON.proposal_outline.expected_effects のキャッシュフロー／税務／脱炭素 KPI を数値ベースで記述

            ### 6) 競合比較
            JSON.proposal_outline.competitive_comparison を箇条書きで展開

            ### 7) 次のステップ
            JSON.proposal_outline.next_steps を番号付きリストで列挙

            【厳守事項】
            - JSON以外のフィールド・架空の情報を追加しない
            - "(仮定: ...)" 表記はそのまま残して事実と仮定を区別する
            - JSON や生配列を出力しない、必ず読みやすい日本語 Markdown
            - 全セクションを必ず出力する（空でもセクション見出しは残す）
        - role: user
          text: |
            前段の抽出結果（JSON）:

            {{#llm1.text#}}
        vision:
          enabled: false
        memory: null
        context:
          enabled: false
      height: 100
      id: llm2
      position:
        x: 880
        y: 282
      type: custom
      width: 244
    - data:
        title: 終了
        type: end
        outputs:
        - value_selector:
          - llm2
          - text
          variable: result
      height: 90
      id: end
      position:
        x: 1160
        y: 282
      type: custom
      width: 244
  hash: null
