app:
  description: 面接の自由記述を標準評価スコア・合否候補・コメントへ自動整形するワークフロー
  icon: 🧾
  icon_background: '#FFEAD5'
  mode: workflow
  name: 面接評価自動集約
  use_icon_as_answer_icon: false
kind: app
version: 0.6.0
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: parameter-extractor
      id: start-to-extractor1
      source: start
      target: extractor1
    - data:
        sourceType: parameter-extractor
        targetType: llm
      id: extractor1-to-llm2
      source: extractor1
      target: llm2
    - data:
        sourceType: llm
        targetType: end
      id: llm2-to-end
      source: llm2
      target: end
    nodes:
    - data:
        title: 開始
        type: start
        variables:
        - label: query
          max_length: 2048
          options: []
          required: true
          type: paragraph
          variable: query
      height: 90
      id: start
      position:
        x: 80
        y: 282
      type: custom
      width: 244
    - data:
        title: 情報抽出
        type: parameter-extractor
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
        query:
        - start
        - query
        parameters:
        - name: technical_score
          type: number
          description: 技術力スコア（0-10、整数推奨）
          required: true
        - name: communication_score
          type: number
          description: コミュニケーションスコア（0-10、整数推奨）
          required: true
        - name: culture_fit_score
          type: number
          description: カルチャーフィットスコア（0-10、整数推奨）
          required: true
        - name: overall_score
          type: number
          description: 総合スコア（0-10、整数推奨）
          required: true
        - name: pass_candidate
          type: string
          description: '合否候補（例: pass / fail / borderline）'
          required: true
        - name: summary_comment
          type: string
          description: 面接の要約コメント（採用判断の理由、キーポイント）
          required: true
        - name: improvement_points
          type: string
          description: 改善点・フィードバック（候補者向け）
          required: false
        reasoning_mode: prompt
        instruction: '以下の面接メモ（自由記述）から、指定されたパラメータを抽出してください。

          - スコアは 0-10 の範囲で数値（可能なら整数）で出力してください。

          - pass_candidate は合否候補を "pass" / "fail" / "borderline" のいずれかで返してください。

          - summary_comment は面接の要点と採用判断の理由を簡潔に記述してください（1-3文程度）。

          - improvement_points は候補者への具体的な改善アドバイスを短く列挙してください（任意）。

          出力は内部的に構造化データとして抽出されることを想定してください。抽出できない項目があれば空文字列またはnullではなく、可能な限り推測して埋めてください。

          '
      height: 90
      id: extractor1
      position:
        x: 380
        y: 282
      type: custom
      width: 244
    - data:
        title: 評価フォーマット生成
        type: llm
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
          completion_params:
            temperature: 0.3
        prompt_template:
        - role: system
          text: 'あなたは人事担当のアシスタントです。入力された面接メモと抽出済みの評価項目を元に、(1) 標準化されたJSON形式の評価（各スコア0-10）、(2)
            合否候補とその理由、(3) 面接評価の短い要約文（最終的に人事が閲覧する用の1段落）を出力してください。JSONは可読性を保ちつつ正確に出力してください。出力の最後に「---
            サマリー ---」として人間向け1段落の要約を必ず付けてください。


            ---


            【最終出力フォーマット (この指示が最優先)】

            最終出力は **読みやすい日本語の Markdown** で返してください。JSON

            配列・オブジェクトをそのまま出力してはいけません。

            - 見出し (## / ###) でセクションを区切る

            - リスト (- / 1.) や表 (| ... |) で構造化

            - 各項目の意図や根拠が分かるよう短い説明文を添える

            - 営業デモで顧客に直接見せられる体裁にする


            (構造化されたデータ項目を内部で扱うのは構いませんが、出力時に Markdown

            に変換してください。)'
        - role: user
          text: "元の面接メモ:\n{{#start.query#}}\n\n抽出結果:\n- technical_score: {{#extractor1.technical_score#}}\n\
            - communication_score: {{#extractor1.communication_score#}}\n- culture_fit_score:\
            \ {{#extractor1.culture_fit_score#}}\n- overall_score: {{#extractor1.overall_score#}}\n\
            - pass_candidate: {{#extractor1.pass_candidate#}}\n- summary_comment:\
            \ {{#extractor1.summary_comment#}}\n- improvement_points: {{#extractor1.improvement_points#}}\n\
            \n指示:\n1) 上記抽出結果を検証し、必要なら一貫性のある値に調整してください（例: overall_score が個別スコアの平均と大きくずれている場合は調整を提案）。\n\
            2) 以下のJSONを出力してください（キー名は固定）:\n{\n  \"technical_score\": number,\n  \"\
            communication_score\": number,\n  \"culture_fit_score\": number,\n  \"\
            overall_score\": number,\n  \"pass_candidate\": string,\n  \"summary_comment\"\
            : string,\n  \"improvement_points\": string\n}\n3) JSON出力の後に、\"--- サマリー\
            \ ---\" のヘッダを付け、1段落の人間向け要約を記載してください。"
        vision:
          enabled: false
        memory: null
        context:
          enabled: false
      height: 90
      id: llm2
      position:
        x: 680
        y: 282
      type: custom
      width: 244
    - data:
        title: 終了
        type: end
        outputs:
        - value_selector:
          - llm2
          - text
          variable: result
      height: 90
      id: end
      position:
        x: 980
        y: 282
      type: custom
      width: 244
  hash: null
