FDUA第4回 解法アプローチ
はじめに
精度結果については下から数えたほうが早い順位になったので、備忘録的に執筆します。
対象読者としては、本コンペに参加した方で、pythonでのAI-agent実装のアプローチの1つとして興味がある方向けとなるので、上位解放のアプローチを本記事に求めている方にはあまり参考にならないかと思います
TL;DR
今回のコンペは生成AIをアシストとして使う意図もあるので生成された提案書を修正しても良い?らしいです。ただ私には知見がないためAIで自動化させるための一連のフローを実装することを目的に開発しました。
具体的には、AIによる自動化の質を担保するため、Azure OpenAI Serviceを基盤に、DSPyによるプロンプト自動最適化と、Azure Document Intelligence (ADI)によるRAGや外部検索を統合しています。
金融機関特有の複雑なPDF(有価証券報告書等)を、ADIのMarkdown出力機能を用いて解析し、{ColQwen{によるVLM検索と組み合わせたハイブリッドな情報抽出フローを構築しました。
今後例えば、各銀行が使う想定で、reviseしなかった各社のpreferenceにあった模範解答のような提案書が蓄えられたときに、writerのフォーマットを調整するためのRLHFとして利用したり、それこそ今回はreviewerもLLMにしていますが、実際人がやった場合に、その指摘ポイントをDSPyのdescriptionに記載して指示文を的確化するとより最適化された、各地方銀行や金融機関特化の固有の提案書が生成できる実現性や拡張性はあると考えています。
motivation
- 専門職コースで銀行に入行して以来、AIの内製開発のみを担当してきたため、事業性評価の実務経験がない場合だとどれくらい戦えるのか興味があったから。
- ragを使えるコンペであったから。去年あたりからRaggleとか出てきておりますが、まだ国内だと例えば、ハッカソンで1つの手段としてRAGを用いるなど、使う機会が絞られていました。参加したい意図としては以下がありました。
- 最近、実務でpythonを用いたRAGを実装しておらず、
langchainなどのコーディング力が劣ってきている点。 - 最近だと
VLMなどが台頭しており、どうやらPDFテキストをchunkingしないで画像のままretrieverを作成できるColQwenやColPali等が登場している点。 - 最近外部に発信できていない、優秀な成績を残せていない点。
- 人間による検証(再現性や信頼性などの確認)も込みの提案書作成のコンペであり、特段知識があるわけではないので、あえて修正を加えずAIのみでどの程度食い込むことができるか気になった。
ということで1週間弱になりますが頑張ってみました。
コンペについて
背景概要(詳細はSIGNATEのページをご参照ください)
コンペとしては以下の狙いがあります。
- 生成AIを活用した金融実務の高度化 + 新しい「事業性評価」の形を模索したい。
- 地域金融機関において、取引先企業の持続的成長を支援することは重要な使命です。
しかし、財務データだけでなく、非財務情報(e.g.: 業界動向や地域特性、技術トレンド)も網羅的に分析し、有益な提案を行うには高度な専門性と多大な時間を要します。
以上のことから、生成AIをassistantとして活用し、データに基づいた価値ある提案書を作成することをテーマに、そのプロセスとアウトプットの質を競いたい。
課題
架空の建設・工事関連企業企業10社を対象にした提案書の自動生成をすること。
もう少し具体化すると、提供される財務データfinancial_data.csvや有価証券報告書securities_report.zipや外部データもとに、生成AIや協賛企業提供の分析ツールや基盤を駆使して企業の現状を分析し、将来の成長につながる戦略を記載した提案書の質を競うものとなります(生成後の人手による修正はあり)

評価視点 (Evaluation items)
| 評価視点 | 評価項目 | 評価のポイント (高評価の基準) |
|---|---|---|
| 全体構成 | 過去分析と未来提案の接続 | 過去3年分の財務・事業分析(Past)と、未来への成長戦略(Future)が一貫した因果関係で論理的に接続されているか。 |
| 地域性 | 地域特性の考慮 | 企業の所在地(商圏、人口動態、行政施策)を踏まえ、画一的ではない地域密着型の提案ができているか。 |
| 業界特性 | 販路・商流の理解 | 官公庁/民間、元請/下請などの販路特性を把握し、それに応じた具体的な分析と提案となっているか。 |
| 業界課題 | 近未来への対応(GX/DX) | 低コスト工法、環境技術(GX)、省力化技術(DX)など、技術トレンドへの投資や対応策を提案できているか。 |
| 業界課題 | 需要減退・人材不足対応 | 工事需要の変化や深刻な人手不足(2024年問題、外国人材受入等)に対して、実効性のある解決策(歩掛管理の高度化、採用・定着策等)を示せているか。 |
| AI活用 | (最終選考のみ) | 生成AIの特性を理解し、独自の視点や創造的なアプローチ(プロンプトの工夫等)により提案書の品質を高めているか。 |
利用データ&EDA (外部データ利用可)
financial_data.csv: 仮想の建設・工事関連企業10社分の2023-2025年分の財務データが格納。
| カテゴリ | 含まれる主な項目例 | 説明 |
|---|---|---|
| 基本情報 | コード、本社所在地、市場・商品区分、従業員数、資本金、業種分類、YEAR | 企業の基本属性および対象となる会計年度。 |
| 損益計算書(PL) | 売上高、営業利益、経常利益、当期純利益、売上原価、販売費及び一般管理費、特別損益、法人税等 | 企業の経営成績を示す項目。各利益段階や費用内訳(広告宣伝費、研究開発費等)を含む。 |
| 貸借対照表(BS) - 資産 | 総資産、流動資産(現金預金、売掛金、棚卸資産)、固定資産(有形、無形、投資) | 企業の保有する資産。建物、土地、ソフトウェア、投資有価証券などの内訳を含む。 |
| 貸借対照表(BS) - 負債 | 負債合計、流動負債(買掛金、短期借入金)、固定負債(社債、長期借入金、退職給付引当金) | 企業の負債。支払手形、未払金、各種引当金等の内訳を含む。 |
| 貸借対照表(BS) - 純資産 | 純資産合計、資本金、資本剰余金、利益剰余金、自己株式、その他の包括利益累計額 | 株主資本及びその他の純資産項目。 |
| キャッシュ・フロー(CF) | 営業CF、投資CF、財務CF、現金及び現金同等物期末残高 | 一定期間の資金の増減を示す項目。 |
※93カラム存在
EDAとしては、本社所在地や市場・商品区分、業種分類を分析しました。(提案書の地域密着性の具体性、説得力を高めたい、後続のlanggraphの専門agentにgoogle検索させるときの鍵になるという仮説)

所感
-
本社所在地: 10社すべてが異なる都道府県に位置しており、各地域密着型の分析フローが必要。
例えば、地域経済レポートや自治体の中計等をPDによるRAG検索or外部検索させ、課題特定>提案に絡めるのも効果が期待できそう。(今回は時間の都合上検証しておりません。) -
市場・商品区分: スタンダード市場が半数を占めるが、PRO Marketや地方証券取引所の上場企業もみられた。開示情報の粒度や株主構成などが異なる可能性がある。今回リアルの同業種の近い企業のデータをJPXのJ-Quants APIを用いてベンチマークとして取得して比較分析をして業界平均ベンチマークと比較してどこが優れているか・課題があるかの客観的な分析をするようにフローを組んだ。(色々調査して学んだがPRO Market等はAPIからは取得でした。が良い拡張性のあるフローを実現できたと思ってます。) -
業種分類: 建設関連といっても、総合建設、専門工事、道路・インフラ等のサブセクターに別れるので、それぞれの課題を調査する必要もありそう。
ここもRAGや外部検索の期待ができますが、時間とドメイン知識の関係で適したクエリや実験を試せておりません。 -
またPL, BS, CFなど3ヵ年分あるので、各種数値指標計算ツールを定義して後続の定量エージェントで利用するようにしています。
J-Quants API
簡単に使用例を以下に記載します。詳細は公式サイト、Docsを参照ください。
- J-Quants APIキーの設定。
-
/equities/masterエンドポイントを使用し建設業セクターの企業を特定し、/fins/summaryで最新の財務データを取得。 - 建設セクターの平均の営業利益率と自己資本利益率(ROE)を算出し、csv保存、後続のエージェントで利用。
上場銘柄一覧(/equities/master)
-
過去時点での銘柄情報、当日の銘柄情報および翌営業日時点の銘柄情報が取得可能です。
-
データの取得では、銘柄コード(code)または日付(date)の指定が可能です。
-
データ更新時刻:毎営業日の17:30頃、翌営業日の8:00頃
財務情報(/fins/summary)
- 財務情報APIでは、上場企業がTDnetへ提出する決算短信Summary等を基に作成された、四半期毎の財務情報を取得することができます。
- データの取得では、銘柄コード(code)または開示日(date)の指定が必須です。
- データ更新時刻:速報18:00頃、確報24:30頃
各市場区分3サンプルずつ取得するように組んでいますが、TDNet公開のため取得できるのは、スタンダード、グロース、プライムのみでした。
一応まとめたサンプルコードを載せておきますが、補足程度に読み飛ばしてください。
import requests
import sys
import json
# J-Quants API URL
API_URL = "https://api.jquants.com/v2"
api_key = ""#@param {type: "string"}
if api_key:
headers = {"x-api-key": api_key}
print("APIキーが設定されました。J-Quants APIを利用する準備が完了しました。")
else:
print("APIキーを入力してください。")
code = ""#@param {type:"string"}
date = ""#@param {type:"string"}
params = {}
if code != "":
params["code"] = code
if date != "":
params["date"] = date
res = requests.get(f"{API_URL}/equities/master", params=params, headers=headers)
# <Response [200]>
if res.status_code == 200:
d = res.json()
data = d['data']
while "pagination_key" in d:
params["pagination_key"] = d["pagination_key"]
res = requests.get(f"{API_URL}/equities/master", params=params, headers=headers)
d = res.json()
data += d["data"]
df = pd.DataFrame(data)
# display(df)
print(f"Total records: {len(df)}")
else:
print(res.json())
# Filter for Construction sector using column S33Nm.
if not df.empty and 'S33Nm' in df.columns:
df_real_construction = df[df['S33Nm'] == '建設業'].copy()
real_construction_codes = df_real_construction['Code'].tolist()
print(f"Total Real Construction Companies found: {len(real_construction_codes)}")
display(df_real_construction.head())
else:
print("Column 'S33Nm' not found or df is empty.")
if not df.empty:
print("Available columns:", df.columns.tolist())
df_real_construction = pd.DataFrame()
import time
# Ensure df_real_construction exists from previous steps
if 'df_real_construction' not in locals() or df_real_construction.empty:
print("df_real_construction is not available. Please run the previous data fetching steps.")
stratified_codes = []
else:
# 2. Stratified Sampling: Select up to 3 companies per Market Segment
stratified_codes = df_real_construction.groupby('MktNm').head(3)['Code'].tolist()
print(f"Selected {len(stratified_codes)} target companies for stratified sampling across markets.")
stratified_financial_data = []
# 4. Iterate and Fetch with Rate Limiting
for code in stratified_codes:
try:
# a. Send GET request
res = requests.get(f"{API_URL}/fins/summary", params={"code": code}, headers=headers)
# b. Check status 200
if res.status_code == 200:
d = res.json()
if "data" in d and len(d["data"]) > 0:
# Sort by DisclosedDate (DiscDate) descending
# key can be 'DisclosedDate' or 'DiscDate'
fins = sorted(d["data"], key=lambda x: x.get('DiscDate', x.get('DisclosedDate', '')), reverse=True)
# c. Extract latest valid record
latest_fin = None
for fin in fins:
# Check for Operating Profit and Equity using possible keys
# 'OP'/'OperatingProfit' and 'Eq'/'Equity'
op = fin.get('OP') or fin.get('OperatingProfit')
eq = fin.get('Eq') or fin.get('Equity')
if op is not None and eq is not None:
latest_fin = fin
break
# d. Append record
if latest_fin:
stratified_financial_data.append(latest_fin)
else:
print(f"No data found for {code}")
else:
# e. Error handling
print(f"Failed to fetch {code}: Status {res.status_code}")
except Exception as e:
print(f"Error processing {code}: {e}")
# f. Strict Rate Limiting
time.sleep(30)
# 5. Create DataFrame
df_stratified_financials = pd.DataFrame(stratified_financial_data)
# 6. Rename columns to readable names
column_map = {
'Code': 'LocalCode',
'DiscDate': 'DisclosedDate',
'Sales': 'NetSales',
'OP': 'OperatingProfit',
'NP': 'Profit',
'TA': 'TotalAssets',
'Eq': 'Equity'
}
df_stratified_financials.rename(columns=column_map, inplace=True)
# Convert numeric columns (if they exist as strings)
numeric_cols = ['NetSales', 'OperatingProfit', 'Profit', 'TotalAssets', 'Equity']
for col in numeric_cols:
if col in df_stratified_financials.columns:
df_stratified_financials[col] = pd.to_numeric(df_stratified_financials[col], errors='coerce')
# 7. Display results
print(f"Successfully fetched data for {len(df_stratified_financials)} companies.")
if not df_stratified_financials.empty:
cols_to_show = ['LocalCode', 'DisclosedDate', 'NetSales', 'OperatingProfit', 'Equity']
available_cols = [c for c in cols_to_show if c in df_stratified_financials.columns]
display(df_stratified_financials[available_cols].head())
# Calculate financial ratios for the stratified sample
df_stratified_financials['Operating_Margin'] = df_stratified_financials['OperatingProfit'] / df_stratified_financials['NetSales']
# Calculate ROE if Profit is available, otherwise set to None
if 'Profit' in df_stratified_financials.columns:
df_stratified_financials['ROE'] = df_stratified_financials['Profit'] / df_stratified_financials['Equity']
else:
df_stratified_financials['ROE'] = None
# Merge with the original construction master to get Market Names (MktNm)
if 'df_real_construction' in locals():
df_merged_stratified = pd.merge(
df_stratified_financials,
df_real_construction[['Code', 'CoName', 'MktNm']],
left_on='LocalCode',
right_on='Code',
how='left'
)
# Display Analysis by Market Segment
print("--- Stratified Sample Analysis by Market Segment ---")
display(df_merged_stratified[['LocalCode', 'CoName', 'MktNm', 'Operating_Margin', 'ROE']])
print("\n--- Average Metrics by Market Segment ---")
display(df_merged_stratified.groupby('MktNm')[['Operating_Margin', 'ROE']].mean())
# Save the benchmark data
save_path = './provided_data/stratified_benchmark.csv'
df_merged_stratified.to_csv(save_path, index=False)
print(f"\nStratified benchmark data saved to: {save_path}")
else:
print("df_real_construction is not available. Saving basic financial data.")
save_path = './provided_data/stratified_benchmark.csv'
df_stratified_financials.to_csv(save_path, index=False)
print(f"\nStratified benchmark data saved to: {save_path}")
securities_report.zip: 仮想の建設・工事関連企業10社分の有価証券報告書のpdfが格納。
全て60ページ近くのボリュームとなっています。
後続のagentでRAGとして利用しますが、表がページをまたがる点やより難しいレイアウトのPDFがあることを想定して、今回は従前のChunkingによるテキスト同士の検索ではなく、Byaldi経由でColQwenを用いて画像ページとの検索を実装し、該当ページと後続1ページのうちの1500字のAzure Document Intelligence(ADI)のmarkdownレイアウトの解析結果を返すHybrid Retirevalを採用してみました。PDFを単なるテキストではなく、画像として捉えることで、複雑なレイアウトの有価証券報告書だとしても高精度な検索を期待しています。
!pip install -q torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 colpali-engine==0.3.13
!apt-get install -y poppler-utils
!pip install -q byaldi azure-ai-documentintelligence
import torch
if torch.cuda.is_available():
print(f"GPU is available: {torch.cuda.get_device_name(0)}")
else:
print("Warning: GPU is NOT available. ColPali requires a GPU for efficient processing.")
import zipfile
import os
import pandas as pd
import pdfplumber
zip_file_path = './provided_data/securities_report.zip'
extract_dir = './securities_reports'
if not os.path.exists(extract_dir):
os.makedirs(extract_dir)
with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
print(f"Extracted {zip_file_path} to {extract_dir}")
pdf_data = []
# Walk through directory and gather info
for root, dirs, files in os.walk(extract_dir):
for file in files:
if file.lower().endswith('.pdf'):
file_path = os.path.join(root, file)
#print(file_path)
# get file size in MB
file_size_mb = os.path.getsize(file_path) / (1024 * 1024)
# get page count
try:
with pdfplumber.open(file_path) as pdf:
page_count = len(pdf.pages)
#print(page_count)
except Exception as e:
print(f"Could not read {file}: {e}")
page_count = None
pdf_data.append(
{
'Filename': file,
'Size (MB)': file_size_mb,
'Page Count': page_count,
'FilePath': file_path
}
)
df_reports = pd.DataFrame(pdf_data)
df_reports = df_reports.sort_values(by = 'Filename').reset_index(drop = True)
print(f"Total PDF files found: {len(df_reports)}")
display(df_reports)
AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT = "" # @param {type: "string"}
AZURE_DOCUMENT_INTELLIGENCE_KEY = "" # @param {type: "string"}
if AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT and AZURE_DOCUMENT_INTELLIGENCE_KEY:
print("Azure credentials set.")
else:
print("Please enter your Azure Document Intelligence Endpoint and Key.")
from byaldi import RAGMultiModalModel
from azure.ai.documentintelligence import DocumentIntelligenceClient
from azure.core.credentials import AzureKeyCredential
import os
import warnings
import base64
from IPython.display import display, Image
warnings.filterwarnings("ignore", category = FutureWarning)
warnings.filterwarnings("ignore", message=".*torch_dtype.*")
# Initialize ColQwen Model (verbose=0 helps reduce noise)
RAG = RAGMultiModalModel.from_pretrained("vidore/colqwen2-v0.1", verbose=0)
import glob
import json
from azure.ai.documentintelligence import DocumentIntelligenceClient
from azure.core.credentials import AzureKeyCredential
# Initialize Azure Document Intelligence Client
client = DocumentIntelligenceClient(
endpoint=AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT,
credential=AzureKeyCredential(AZURE_DOCUMENT_INTELLIGENCE_KEY)
)
# Define storage directory for Azure DI results
STORAGE_DIR = "./azure_di_results"
os.makedirs(f"{STORAGE_DIR}/azure_results", exist_ok=True)
print("Azure Document Intelligence client and STORAGE_DIR initialized.")
def process_and_index_documents(pdf_folder_path):
"""全PDFのインデックス作成とAzure DI解析結果の永続化"""
pdf_files = glob.glob(os.path.join(pdf_folder_path, "*.pdf"))
# Byaldiで一括インデックス(metadataとしてファイル名を保持)
# ※ Byaldiのindexメソッドはフォルダパスを受け取り、内部でメタデータを管理します
# すでにRAGインスタンスは`UwStSB6u8FFV`で初期化済みであることを前提とします。
RAG.index(
input_path=pdf_folder_path,
index_name="multi_pdf_index",
store_collection_with_index=True,
overwrite=True
)
for pdf_path in pdf_files:
filename = os.path.basename(pdf_path)
save_path = f"{STORAGE_DIR}/azure_results/{filename}.json"
# すでに解析済みならスキップ(コスト節約)
if os.path.exists(save_path):
print(f"Skipping Azure DI for {filename} (Already exists)")
continue
print(f"Analyzing {filename} with Azure Document Intelligence...")
# Get total page count for the current PDF to explicitly specify pages for Azure DI
current_pdf_filename = filename
if 'df_reports' in globals() and not df_reports.empty:
# Ensure df_reports is loaded and accessible globally or passed as an argument
matching_rows = df_reports[df_reports['Filename'] == current_pdf_filename]
if not matching_rows.empty:
total_pages_for_current_pdf = matching_rows['Page Count'].iloc[0]
pages_param = f"1-{total_pages_for_current_pdf}"
else:
print(f"Warning: Page count for {current_pdf_filename} not found in df_reports. Processing without explicit page range.")
pages_param = None # Let Azure decide or use its default behavior
else:
print("Warning: df_reports not found or empty. Processing without explicit page range.")
pages_param = None # Let Azure decide or use its default behavior
with open(pdf_path, "rb") as f:
poller = client.begin_analyze_document(
"prebuilt-layout",
body=f,
output_content_format="markdown",
pages=pages_param # Explicitly request all pages for consistency
)
result = poller.result()
# ページごとにMarkdownテキストを抽出して保存
# ColPaliとの整合性を考慮し、0-based indexで保存するか、1-basedで統一するかは使用方法によります。
# ここではユーザーの元のコードに合わせて1-based page_numberを使用します。
page_data = {}
for page in result.pages:
content = ""
for span in page.spans:
content += result.content[span.offset : span.offset + span.length]
page_data[page.page_number - 1] = content # 0-based index for consistency with ColPali internal page_num-1
with open(save_path, "w", encoding="utf-8") as f:
json.dump(page_data, f, ensure_ascii=False, indent=2)
print(f"Azure DI results saved for {filename}.")
print("All documents processed.")
# 実際のPDFフォルダパスを指定して関数を呼び出す
# 例えば、'./securities_reports/securities_report' がPDFファイルの場所であれば
pdf_folder = './securities_reports/securities_report'
process_and_index_documents(pdf_folder)
解法アプローチ
※実際の提案書生成は、もっと専門的なフローや各金融機関固有の細かなアプローチがあるはずなので、フローの組み方として参考になれば幸いです。
今回はlanggraphでmulti-agentを実装しております。個人的には、googleのadkなどがpythonライクで直感的かつ、google_searchやカスタムの関数等、UIの提供等が事前に統合されていたり、組み込みやすいのでおすすめです。ですが、今回は、OSSを利用した環境に縛られない実装を念頭におく理由でlanggraphで実装しております。
以下がフローのイメージです。
横に逸れますが、フローをコンパイル後、数行で可視化できるのもよい点です。
from IPython.display import Image, display
display(Image(app.get_graph().draw_mermaid_png()))

以下はエージェント構築の定義とサンプル1企業の検証の一部分を抜粋して記載、説明させていただきます。
-
fetch_external_research(node_fetch_external_research)
外部情報検索ツールを関数として定義してLLMに関数として利用させています。今後の拡張性や引用先を取得できる点、tavilyより粒度がある(個人的主観)ためGoogleSearperAPIWrapperを採択。
ロジックのイメージですが、対象企業の本社所在地と業種をクエリパラメータとして動的に生成(financial_data.csvから取得)(例:茨城 建設業 課題 トレンド)し、定義した関数google_search_toolに投げ、上位5件の検索結果スニペットや引用元等を取得させます。
狙いは明白ですが、LLMのナレッジカットオフ問題に対応するためのツールとして外部検索を利用した狙いがあります。最新の地域情報や課題を取得し、LLMに渡すためです。
-
node_market_research(node_market_research)
市場分析レポートを生成するエージェントです。1で取得した検索結果をを入力とし、Web検索結果から市場動向を分析させています。全てのエージェントに共通して言えますが、DsPyを用いてプロンプトなどを自動調整、CoTする構成をとっています。具体的なコード部分は以下の通りになります。
class MarketResearcher(dspy.Signature):
"""Web検索から市場動向を分析するマーケター"""
external_web_search_results = dspy.InputField(desc="Web検索結果")
prefecture = dspy.InputField()
industry = dspy.InputField()
market_research_report = dspy.OutputField(desc="市場調査レポート")
market_researcher_agent = dspy.ChainOfThought(MarketResearcher)
def node_market_research(state: AgentState) -> AgentState:
print("\n[Node] Market Research...")
pred = market_researcher_agent(
external_web_search_results=state['external_web_search_results'],
prefecture=state['prefecture'], industry=state['industry']
)
return {'market_research_report': pred.market_research_report}
DsPyの強みですが、docstringの部分も指示文として反映して最適化してくれるところです。なので、例えば、禁止事項があったり、RLHFで行員が提案書を評価してこの専門エージェントにはこうして欲しいといった項目、分析の仕方の詳細化(e.g.: 市場分析をOpportunityとThreatsに構造化してレポートしてください)等といった各企業特化の提案書生成につながる大きなピースとなることが期待されます。
try:
lm = dspy.LM(
model="azure/gpt-5.2",
api_key=AZURE_API_KEY,
api_base=AZURE_ENDPOINT,
api_version=API_VERSION,
max_tokens=8000,
temperature=0.7
)
dspy.settings.configure(lm=lm)
print("DSPy configured with Azure OpenAI successfully.")
except Exception as e:
print(f"DSPy configuration error: {e}")
合わせて、単に要約させるのではなく、CoT採用である点、また協賛企業のMS社のazureとも組み込め、azure/gpt-5.2も採択し、Reasoningを出力させることができるので、推論時間に比例して分析の精度も向上させることが期待できます。
-
fetch_financial(node_fetch_financial_data)
財務データをfinancial_data.csvから取得します。要は定量的な分析をさせるためのブロックです。合わせて外部データとしてJ-Quants APIから似た市場区分、建設企業の上場企業データからの平均ROE、営業利益率を比較対象のベンチマークとして取得しています(客観的な分析もさせたいため)。こちらは事前にEDAの部分でcsv化しています。補足で必要でしたらコード載せております。
ロジックのイメージですが、get_financial_summary関数で:PL/BS/CFの主要項目を抽出、
get_financial_trends関数で**CAGR(年平均成長率)や回転期間(売掛金・棚卸資産・買掛金)を計算、calculate_debt_metrics関数でEBITDA(償却前営業利益)とDSCR(借入返済余裕率)**を算出、get_market_benchmark_stats関数で、J-Quants APIから同業種の平均ROE/営業利益率を取得させています。
狙いとしては、こちらも明白ですが、LLMの計算ミスによるHallcinationを防ぐためです。LLMが台頭してきた当時から決まっている計算はツールとして定義して利用させるイメージが多いです。また、VLM等も注目されていますが、やはり計算させることにおいては、AI-OCRや関数による計算の方が適しているのかと思っています。今回ColQwenをRetireverとして定義していますが、数値などが大事になるケースでは、今回提案するようなHybridな構成をとるのが妥当かと思います。コストとの相談もあると思いますが(今回はPDFページは取得していますが利用せず、事前に処理させておいたADIの結果で回答させています。ビジュアル的な質問の精度を競うコンペやRAGの能力を競う目的ではないため)。
-
quantitative_analysis(node_quantitative_analysis)
定量財務診断レポートを生成するエージェントです。ここも2同様でdspy.ChainOfThought(QuantitativeAnalyst)の構成をとっています。
class QuantitativeAnalyst(dspy.Signature):
"""企業の財務健全性と返済能力を診断するCFO役"""
financial_summary = dspy.InputField(desc="単年度財務データ")
financial_trends = dspy.InputField(desc="複数年度トレンド・回転期間")
benchmark_stats = dspy.InputField(desc="市場ベンチマーク")
debt_metrics = dspy.InputField(desc="DSCR, EBITDA, 借入金内訳")
company_code = dspy.InputField()
company_name = dspy.InputField()
industry = dspy.InputField()
financial_diagnosis = dspy.OutputField(desc="財務診断レポート")
ロジックのイメージですが、3で計算されたJSON形式の財務指標を入力とし、CFO役のエージェントが企業の財務健全性と返済能力を診断するレポートを作成。
簡易入力例イメージ:{"DSCR": 7.35, "Turnover_Receivables": 150 days}
簡易出力例:「返済余力はあるが、売掛金の回収サイトが長すぎて資金効率が悪い」
狙いとしては、数値データ型の意味への変換をさせるためです。DSPy等も絡めて、専門家のロジックをpromptengineeringで模倣させたい目的です。
-
fetch_internal_rag(node_fetch_internal_rag_data)
内部検索ツールRAGのブロックになります。今回は、従前のChunkingによるテキスト同士の検索ではなく、Byaldi経由でColQwenを用いて画像ページとの検索を実装し、該当ページと後続1ページの1500字を返すHybrid Retrievalを採用してみました。
狙いは、PDFを単なるテキストではなく、画像として捉えることで、複雑なレイアウトの有価証券報告書だとしても高精度な検索を期待できるようにすることです。
感想に近い所感になりますが、もう少しRAGのフローを細分化したかったです。
def query_company_report(code, query):
company_code = str(code)
index_name = f"{company_code}_index"
INDEX_ROOT = "./rag_storage/indices"
if not os.path.exists(os.path.join(INDEX_ROOT, index_name)): return f"No RAG index found for {code}."
try:
model = RAGMultiModalModel.from_index(index_name, index_root=INDEX_ROOT, verbose=0)
results = model.search(query, k=3)
response_text = f"--- Search Results for '{query}' in Company {code} ---\n"
for i, res in enumerate(results):
p = res.page_num
content_p = get_page_content(company_code, p)
content_next = get_page_content(company_code, p + 1)
combined = f"--- Page {p} ---\n{content_p}\n\n--- Page {p+1} (Cont.) ---\n{content_next}" if content_next else content_p
response_text += f"[Result {i+1}] Start Page: {p} (Score: {res.score:.2f})\n{combined[:1500]}...\n\n"
return response_text
except Exception as e:
return f"RAG Error: {e}"
def node_fetch_internal_rag_data(state: AgentState) -> AgentState:
print("\n[Node] Fetching Internal RAG Data (Real)...")
q = "経営方針 中期経営計画 対処すべき課題 設備投資 研究開発 組織図 リスク管理体制 工事進行基準"
return {'internal_rag_data': query_company_report(state['company_code'], q)}
-
node_internal_audit(node_internal_audit)
5のRAGで取得した結果から内部統制、ガバナンス、契約条件等を抽出する監査として、リスク管理に関するレポートを生成させるエージェント部分になります。
狙いは、財務諸表には現れない、定性情報からのリスク要因を抽出したい目的にあります。
class InternalAuditor(dspy.Signature):
"""有報から内部統制・ガバナンス・契約条件を抽出する監査役"""
internal_rag_data = dspy.InputField(desc="有報RAGデータ")
company_name = dspy.InputField()
internal_audit_report = dspy.OutputField(desc="ガバナンス体制、契約・回収条件、リスク管理に関するレポート")
internal_auditor_agent = dspy.ChainOfThought(InternalAuditor)
def node_internal_audit(state: AgentState) -> AgentState:
print("\n[Node] Internal Audit...")
pred = internal_auditor_agent(internal_rag_data=state['internal_rag_data'], company_name=state['company_name'])
return {'internal_audit_report': pred.internal_audit_report}
-
node_financial_sanity_check(node_financial_sanity_check)
判定結果に基づき、8の戦略立案に進むか、1の外部検索のノードに戻るかをLangGraphがルーティングする 財務健全性を部分になります。1に戻り、deep researchライクな検索を実装させたい背景もあります。
狙いとしては、確実なNGパターンをルールベースのガードレールで弾くことで、信頼性を担保したい目的になります。
def node_financial_sanity_check(state: AgentState) -> AgentState:
print("\n[Node] Financial Sanity Check...")
trends = state.get('financial_trends', {})
debt = state.get('debt_metrics', {})
dpo = trends.get('Turnover_Payables_Days_2025', 0)
dpo_ok = dpo > 1.0
dscr = debt.get('DSCR', 0)
dscr_ok = not (dscr is None or (isinstance(dscr, float) and np.isnan(dscr)))
if dpo_ok and dscr_ok:
print(f" -> PASS (DPO={dpo:.2f}, DSCR={dscr:.2f})")
return {'sanity_check_result': 'PASS'}
else:
print(f" -> FAIL (DPO={dpo:.2f}, DSCR={dscr:.2f})")
return {'sanity_check_result': 'FAIL'}
def router_sanity_check(state: AgentState):
if state['sanity_check_result'] == 'PASS': return "node_strategy_planning"
if state.get('deep_research_iteration_count', 0) < 2: return "fetch_external_research"
return "node_strategy_planning"
-
node_strategy_planning(node_strategy_planning)
戦略立案のエージェントになります。2,4,6で生成したfinancial_data.csvからの財務診断のレポート、RAGによる有価証券報告書から抽出した内部監査のレポート、Web検索から取得した市場分析をまとめたレポートを入力に3つの視点からクロスSWOT的に戦略を生成させます。
class StrategyPlanner(dspy.Signature):
"""最適な戦略を立案する戦略家"""
financial_diagnosis_report = dspy.InputField()
internal_audit_report = dspy.InputField()
market_research_report = dspy.InputField()
company_name = dspy.InputField()
prefecture = dspy.InputField()
industry = dspy.InputField()
strategic_recommendations = dspy.OutputField()
strategy_planner_agent = dspy.ChainOfThought(StrategyPlanner)
def node_strategy_planning(state: AgentState) -> AgentState:
print("\n[Node] Strategy Planning...")
pred = strategy_planner_agent(
financial_diagnosis_report=state['financial_diagnosis_report'],
internal_audit_report=state['internal_audit_report'],
market_research_report=state['market_research_report'],
company_name=state['company_name'], prefecture=state['prefecture'], industry=state['industry']
)
return {'strategic_recommendations': pred.strategic_recommendations}
-
proposal_drafting(node_proposal_drafting)
戦略案を銀行所定のフォーマット(Markdown/Docx)に変換し、提案書ドラフト作成するエージェントになります。JSON形式の財務・負債データもContextとして入力し、数値の記載ミスを防ごうとしてます。
class ProposalWriter(dspy.Signature):
"""銀行提出用の事業提案書を作成"""
analysis_report = dspy.InputField()
financial_context = dspy.InputField()
debt_context = dspy.InputField()
company_name = dspy.InputField()
prefecture = dspy.InputField()
industry = dspy.InputField()
feedback = dspy.InputField(required=False)
proposal_draft = dspy.OutputField(desc="Markdown形式の提案書")
proposal_writer_agent = dspy.ChainOfThought(ProposalWriter)
def node_proposal_drafting(state: AgentState) -> AgentState:
print("\n[Node] Drafting Proposal...")
fin_ctx = json.dumps({"summary": state['financial_summary'], "trends": state['financial_trends'], "benchmark": state['benchmark_stats']}, ensure_ascii=False, cls=NumpyEncoder)
debt_ctx = json.dumps(state['debt_metrics'], ensure_ascii=False, cls=NumpyEncoder)
pred = proposal_writer_agent(
analysis_report=state['strategic_recommendations'], financial_context=fin_ctx, debt_context=debt_ctx,
company_name=state['company_name'], prefecture=state['prefecture'], industry=state['industry'],
feedback=state.get('review_feedback', "None")
)
return {'draft_proposal': getattr(pred, 'proposal_draft', "Error")}
-
review_proposal(node_review_proposal)
9で生成された提案書のドラフトを評価し、APPROVEDかREVISEを判定する査読+修正エージェントになります。
REVISEの場合、出力される指摘事項Critiqueと共に9のライターのノードにフィードバックループを最大2回ループする実装にしました。
狙いとしては、Self-Correctionを実現し、より高品質なアウトプットを得たい目的になります。拡張性についても、DSPyのdescriptionやDocStringに詳細な観点を記載、もしくはHITL的に人が評価した結果や観点を組み込むことで更なる実現性を見込めると期待しております。
class ProposalReviewer(dspy.Signature):
"""銀行支店長(審査役)"""
proposal_draft = dspy.InputField()
critique = dspy.OutputField(desc="'PASS' or 'REVISE'...")
proposal_reviewer_agent = dspy.ChainOfThought(ProposalReviewer)
def node_review_proposal(state: AgentState) -> AgentState:
print("\n[Node] Reviewing Proposal...")
pred = proposal_reviewer_agent(proposal_draft=state['draft_proposal'])
critique = getattr(pred, 'critique', "REVISE")
status = 'APPROVED' if (critique.strip().upper().startswith("PASS") or "PASS" in critique[:20].upper()) else 'REVISE'
print(f" -> Status: {status}")
return {'review_feedback': critique, 'review_status': status, 'revision_count': state.get('revision_count', 0) + 1}
def router_review(state: AgentState):
if state['review_status'] == 'APPROVED': return END
if state.get('revision_count', 0) <= 2: return "proposal_drafting"
return END
workflow.add_node("review_proposal", node_review_proposal)
workflow.add_conditional_edges("review_proposal", router_review)
AgentのStateの中身
agentの最終的なstateは以下のように保持されます。例えば、外部検索からの出典元の取得などうまく成功しており、今後のAIによる提案書の信頼性を高めるための拡張性も期待できます。
{'company_code': '12044',
'company_name': '株式会社12044',
'prefecture': '茨城',
'industry': '総合建設・土木',
'year': 2024,
'messages': [],
'financial_summary': {'売上高': 12280657466,
'営業利益': 674201636,
'経常利益': 581407812,
'当期純利益': 415225416,
'純資産': 1135532544,
'総資産': 9311257299,
'営業活動によるキャッシュ・フロー': -148865767,
'投資活動によるキャッシュ・フロー': -19978000,
'財務活動によるキャッシュ・フロー': 467133593,
'従業員数(連結)': 159,
'本社所在地': '茨城',
'業種分類': '総合建設・土木'},
'financial_trends': {'Sales_CAGR_3Y': np.float64(0.23647220863442353),
'Turnover_Receivables_Days_2025': np.float64(150.00000000533373),
'Turnover_Inventory_Days_2025': np.float64(20.37320414499073),
'Turnover_Payables_Days_2025': np.float64(13.873927079646982)},
'benchmark_stats': {'Mean_Operating_Margin': np.float64(0.09767557806132159),
'Mean_ROE': np.float64(0.09639567497972523)},
'debt_metrics': {'EBITDA': np.int64(831204476),
'DSCR': np.float64(7.354306383284141),
'ShortTermDebt': np.int64(5018956745),
'LongTermDebt': np.int64(0),
'Est_Principal': 0,
'Est_Interest': np.int64(113022824)},
'internal_rag_data': '--- Search Results for \'経営方針 中期経営計画 対処すべき課題 設備投資 研究開発 組織図 リスク管理体制 工事進行基準\' in Company 12044 ---\n[Result 1] Start Page: 14 (Score: 29.75)\n--- Page 14 ---\n\n## 3 【事業等のリスク】\n\n当社グループの財政状態、経営成績及びキャッシュ·フローの状況に重要な影響を及ぼす可能性が\nある主要なリスクは以下のとおりであります。\n\nなお、文中の将来に関する事項は、当事業年度末現在において当社が判断したものであります。\n\n\n### (1) リスク管理体制と評価プロセス\n\n当社は、事業活動を取り巻く様々なリスクを的確に把握し、損失の未然防止及び最小化を図るた\nめ、「リスク管理規程」を制定し、全社的なリスク管理体制(ERM)を構築しております。代表取\n締役社長を委員長とする「リスク管理委員会」を設置し、各部門から報告されたリスク情報の集\n約、分析及び対応策の協議を行っております。また、気候変動等のサステナビリティ関連リスクにつ\nいては、取締役会直轄の「サステナビリティ委員会」と連携し、中長期的な視点での評価·管理を実\n施しております。 リスクの評価にあたっては、各リスク事象の「発生頻度」と「影響度」をそれぞ\nれ5段階で定量的に評価し、その積(リスクスコア)に基づき優先順位付けを行い、重点的に管理\nすべきリスクを特定しております。\n\n\n### (2) 主なリスク事項と対応策\n\n当事業年度において特定された主な事業上のリスクと、それに対する主な対応策は以下のとおり\nであります。\n\n\n<table>\n<tr>\n<th>No.</th>\n<th>リスク項 ⽬</th>\n<th>具体的なリスク事象</th>\n<th>頻度 × 影響</th>\n<th>主な対応策</th>\n</tr>\n<tr>\n<td>1</td>\n<td>建設資材 及び 労務費の 高騰</td>\n<td>原材料価格の高騰や慢性的な人手不足による労 務費の上昇により、工事原価が増加し、利益率 が低下するリスク。</td>\n<td>25 (5×5)</td>\n<td>·民間工事における工事請負契約へ のスライド条項の適用推進 · 購買部門による資材調達ルートの 多様化と価格交渉力の強化 ·施工管理の効率化による原価低減 活動の徹底</td>\n</tr>\n<tr>\n<td>2</td>\n<td>人材の確 保 ·育成 (2024年 問題等)</td>\n<td>技術者不足や高齢化に加え、時間外労働上限規 制(2024年問題)への対応遅れにより、施工能 力が低下するリスク。</td>\n<td>25 (5×5)</td>\n<td>·新卒·中途採用の強化及び 「AZUMAテクノロジーセンター」 を活用した早期育成 ·ICT建機やドローン等のDX推進に よる省人化·生産性向上 ·完全週休2日制の定着に向けた工 程管理の適正化</td>\n</tr>\n<tr>\n<td>3</td>\n<td>建設市況 の変動</td>\n<td>公共投資の縮小や民間設備投資の減退により、 受注高が減少し、業績が悪化するリスク。</td>\n<td>12 (3×4)</td>\n<td>·官公庁工事と民間工事のバランス の取れた受注ポートフォリオの構築 ·不動産事業やリニューアル工事な ど、ストック型ビジネスの強化 ·M&Aによる事業エリア及び工種 の拡大</td>\n</tr>\n<tr>\n<td>4</td>\n<td>労働災害 及び</td>\n<td>工事現場における重大事故の発生により、社会 的信用の失墜、指名停止処分、損害賠償等が発</td>\n<td>10 (2×5)</td>\n<td>·安全衛生管理計画に基づく安全パ トロールの実施と改善指導の徹底</td>...\n\n[Result 2] Start Page: 24 (Score: 29.00)\n--- Page 24 ---\n\n## 3 【設備の新設、除却等の計画】\n\n当事業年度末現在における重要な設備の新設等の計画は、以下のとおりであります。\n\n当社グループは、中期経営計画「AZUMA Future Plan 2027」において、生産性向上と業務効率化\nを重要施策として掲げており、翌事業年度においては、ICT施工体制の強化及び基幹システムの刷新\n等、総額200百万円の設備投資を計画しております。\n\nなお、資金計画につきましては、自己資金及び金融機関からの借入金により充当する予定でありま\nす。\n\n\n### (1) 重要な設備の新設等\n\n\n<table>\n<tr>\n<th rowspan="2">事業所名 (所在地)</th>\n<th rowspan="2">セグメン ト の名称</th>\n<th rowspan="2">設備の内 容</th>\n<th colspan="2">投資予定金額 (百万円)</th>\n<th rowspan="2">資金調達 方法</th>\n<th colspan="2">着手及び完了予定年月</th>\n<th rowspan="2">完成後の 増加能力</th>\n</tr>\n<tr>\n<th>総額</th>\n<th>既支払額</th>\n<th>着手</th>\n<th>完了</th>\n</tr>\n<tr>\n<td>機材セン ター (茨城県 ひたちな か市)</td>\n<td>建設事業</td>\n<td>ICT対応建 設機械 (油圧シ ョベル他)</td>\n<td>120</td>\n<td>-</td>\n<td>自己資金 借入金</td>\n<td>2025年5月</td>\n<td>2026年3月</td>\n<td>施工能力 の向上 及び省力 化</td>\n</tr>\n<tr>\n<td>本社 (茨城県 水戸市)</td>\n<td>全社 (共通)</td>\n<td>基幹業務 システム (ERPシ ステム)</td>\n<td>80</td>\n<td>☒ -</td>\n<td>自己資金</td>\n<td>2025年4月</td>\n<td>2026年9月</td>\n<td>業務効率 化及び 経営管理 の高度化</td>\n</tr>\n</table>\n\n(注) 上記の金額には消費税等は含まれておりません。\n\n\n### (2) 重要な設備の除却等\n\n経常的な設備の更新のための除却を除き、重要な設備の除却、売却等の計画はありません。\n\n<!-- PageBreak -->\n\n\n\n--- Page 25 (Cont.) ---\n\n# 第4 【提出会社の状況】\n\n\n## 1 【株式等の状況】\n\n\n### (1) 【株式の総数等】\n\n\n### 1 【株式の総数】\n\n\n<table>\n<tr>\n<th>種類</th>\n<th>発行可能株式総数(株)</th>\n</tr>\n<tr>\n<td>普通株式</td>\n<td>10,000,000</td>\n</tr>\n<tr>\n<td>計</td>\n<td>10,000,000</td>\n</tr>\n</table>\n\n\n### 2 【発行済株式】\n\n\n<table>\n<tr>\n<th>種類</th>\n<th>事業年度末現在発行 数(株) (2025年3月31日)</th>\n<th>提出日現在発行数 (株) (2025年6月25日)</th>\n<th>上場金融商品取引所名 又は登録認可金融商品 取引業協会名</th>\n<th>内容</th>\n</tr>\n<tr>\n<td>普通株式</td>\n<t...\n\n[Result 3] Start Page: 9 (Score: 28.88)\n--- Page 9 ---\n\n# 第2 【事業の状況】\n\n\n## 1 【経営方針、経営環境及び対処すべき課題等】\n\n文中の将来に関する事項は、当事業年度末現在において当社が判断したものであります。\n\n\n### (1) 経営方針\n\n当社は、「誠実な施工と高度な技術で、地域社会の発展と人々の豊かな生活基盤の創造に貢献す\nる」を経営理念として掲げております。創業以来、茨城県を中心とした北関東エリアにおいて、公共\nインフラの整備や民間施設の建設を通じて、地域の安全·安心を支える役割を担ってまいりまし\nた。今後も、顧客からの信頼を第一に、品質の向上と環境への配慮を追求し、持続可能な社会の実\n現に向けて邁進してまいります。\n\n当社は、急速に変化する事業環境に対応し、持続的な成長を実現するため、2024年度を初年度と\nする3ヵ年の中期経営計画「AZUMA Future Plan 2027 ~技術と人の融合による新たな価値創造~」\nを策定しております。本計画では、「中核事業の進化」「M&Aシナジーの最大化」「人的資本経営の推\n進」を重点戦略として掲げております。特に、2023年に実施した株式会社土浦アーバン開発との合\n併効果を早期に顕在化させるとともに、新設した「AZUMAテクノロジーセンター」を活用した技術\n開発力の強化を図ることで、企業価値の向上を目指しております。\n\n\n### (2) 経営環境\n\n当事業年度における我が国経済は、雇用·所得環境の改善を背景に緩やかな回復基調にあるもの\nの、海外景気の下振れリスクや物価上昇の影響等、先行きは依然として不透明な状況が続いており\nます。建設業界におきましては、国土強靭化対策に基づく公共投資が底堅く推移し、民間設備投資\nも持ち直しの動きが見られましたが、建設資材価格の高止まりやエネルギーコストの上昇、慢性的\nな人手不足による労務費の高騰等が収益を圧迫する要因となっております。\n\nまた、2024年4月から建設業にも適用された時間外労働の上限規制(いわゆる「2024年問題」)へ\nの対応が喫緊の課題となっており、生産性向上と働き方改革の両立が強く求められる環境にありま\nす。このような環境下において、当社グループは売上高121億86百万円(前年同期比0.8%減)を計\n上しましたが、資材価格高騰の影響や合併に伴う一時費用の発生等により、営業利益は3億71百万円\n(同44.9%減)、経常利益は2億63百万円(同54.7%減)となり、収益性の改善が急務であると認識し\nております。\n\n\n### (3) 対処すべき課題\n\n当社が持続的な成長を果たし、企業価値を向上させるために、優先的に対処すべき課題は以下の\nとおりであります。\n\n\n### 1 収益力の強化とコスト管理の徹底\n\n資材価格や労務費の高騰が継続する中、適正利益を確保するためには、選別受注の徹底と精緻な\n原価管理が不可欠であります。具体的には、受注段階における積算精度の向上と、価格転嫁に向けた\n発注者との協議を粘り強く進めてまいります。また、施工段階においては、工程管理の厳格化による\n\n<!-- PageBreak -->\n\n\n\n--- Page 10 (Cont.) ---\n手戻りの防止や、協力会社との連携強化による調達コストの抑制を図り、利益率の改善に努めてま\nいります。\n\n\n#### 2 生産性の向上とDX(デジタルトランスフォーメーション)の推進\n\n労働人口の減少に対応するため、ICT(情報通信技術)を活用した生産性向上が急務であります。\n当社は、i-Constru...\n\n',
'external_web_search_results': '【出典】: https://akatsukadoboku.co.jp/topics/494/\n【タイトル】: 茨城県の建設業界はいま何が起きているのか? ―人口・インフラ ...\n【内容】: 一方で、県内の多くの建設会社が共通して抱える課題が「人材不足」です。 若年層の建設業離れが進み、現場を支えるベテラン層の高齢化が進行しています。\n\n【出典】: https://news.yahoo.co.jp/articles/142951b473fb66db295575351b57784ee4dc257a\n【タイトル】: 2026衆院選・茨城 課題を追う》(3) 人手不足 建設や運送、深刻さ増す\n【内容】: 繁忙期の年度末にかけて労働力は不足。工期を守るために、現場の負担は増すばかりだ。災害時の復旧工事や積雪時の融雪剤散布など「地域の守り手」としての ...\n\n【出典】: https://www.ricoh.co.jp/magazines/smb/casestudy/004926/\n【タイトル】: 建設業界の人手不足と2024年問題にはICTの積極的な活用で ... - リコー\n【内容】: 建設業界の人手不足と2024年問題にはICTの積極的な活用で対応。地域密着をモットーに協力会社の仲間たちと共存共栄を図る 節和建設(茨城県). From: 中小 ...\n\n【出典】: https://www.ciic.or.jp/wp-content/uploads/2023/03/202303_chiikikensetsusangyonotaskforce_ibaraki.pdf\n【タイトル】: [PDF] 令和 5 年 3 月 一般財団法人 建設業情報管理センター\n【内容】: 茨城県では、建設業の担い手不足、特に若年層の担い手確保のほか、今後の働き方改革 への対応といった点が課題となっている。 若年層の入職促進に向けては、処遇や就労環 ...\n\n【出典】: https://www.nikkei.com/nkd/industry/article/?DisplayType=1&n_m_code=081&ng=DGXZQOUC283RA0Y6A120C2000000\n【タイトル】: 建築・住宅生産に変化の兆し 「軽格単省」で人手不足を乗り越える\n【内容】: 深刻な人手不足や建設費高騰を背景に、建築・住宅生産の在り方に変化の兆しが見えてきた。キーワードは「軽格単省」。現場の作業をなるべく減らし、コスト ...',
'financial_diagnosis_report': '### 1) 総合評価(CFO所見)\n成長は強い一方、**運転資金の管理(特に売掛金の回収)がボトルネック**となり、営業キャッシュフローが赤字化。返済能力(DSCR)は高いが、**短期借入への依存が大きく、資金繰りは「回収条件次第」で振れやすい**。収益性も業界平均未達のため、採算管理と回収条件の是正が最優先。\n\n### 2) 収益性\n- 営業利益率:**5.5%**(674/12,281) \n- 業界平均営業利益率:**約9.8%** → **未達** \n示唆:案件別採算(原価・外注費・間接費配賦)と、追加変更工事の請求漏れ/値決めの弱さを点検。高成長局面ほど低採算案件の混入で利益率が落ちやすい。\n\n### 3) 成長性\n- 売上CAGR(3年):**+23.6%** \n示唆:成長自体は評価できるが、建設業では出来高・請求サイト・前払/中間金の設計次第で運転資金が急拡大する。成長を「資金が回る形」に整える必要。\n\n### 4) キャッシュフロー/資金繰り\n- 営業CF:**▲149百万円**(赤字) \n- 財務CF:**+467百万円**(借入等で補填) \n評価:本業で現金を生めていないため、当面は借入依存が続くと金利上昇局面で脆弱。\n\n### 5) 運転資金(回転期間)診断\n- 売上債権回転日数:**150日(長い)** \n- 棚卸回転日数:**20日(標準〜良好)** \n- 仕入債務回転日数:**13.9日(短い)** \n結論:**回収が遅く支払が早い**ため、資金が恒常的に不足しやすい。ここが最重要改善ポイント。\n\n### 6) 返済能力・借入構造\n- EBITDA:**831百万円** \n- DSCR:**7.35**(返済余力は高い水準) \n- 借入:短期 **5,019百万円** / 長期 **0** \n評価:返済能力は良好だが、**短期偏重で借換リスク**がある。営業CFが弱い状況では、金融環境悪化時に条件変更を迫られる可能性。\n\n### 7) 財務安全性(資本)\n- 自己資本比率(概算):**約12%**(1,136/9,311) \n評価:レバレッジ高め。運転資金の膨張や工事損失が出た場合の耐性は限定的。\n\n---\n\n## 優先アクション(上から順に)\n1. **売掛金150日→まず120日、次に90日を目標** \n - 請求締め/検収/出来高請求の早期化、遅延先の与信枠設定、入金遅延ペナルティ条項、ファクタリング/でんさい活用を検討。 \n2. **支払条件の是正(買掛13.9日→30日程度へ)** \n - 協力会社との支払サイト見直し、支払方法の集約で交渉力を確保。 \n3. **短期借入の一部を長期化(ロールオーバーリスク低減)** \n - 運転資金の恒常部分を長期借入/コミット枠で固定し、金利上昇・金融引締め耐性を上げる。 \n4. **利益率改善(業界平均との差4pt強)** \n - 案件別の粗利管理、原価上振れの早期検知、追加工事の契約化徹底、間接費の固定費化抑制。 \n5. **資本の厚み確保** \n - 利益留保の強化、過度な成長投資の抑制、必要に応じ増資/劣後ローン等も選択肢。\n\n## 結論\n- **返済能力:良好(DSCR高水準)** \n- **財務健全性:運転資金と短期借入偏重に課題** \n- 改善の鍵は「利益率」より先に、**回収サイト短縮と借入の長期化で資金繰り構造を正常化**すること。',
'internal_audit_report': '## 1. ガバナンス体制(内部統制・監督/執行の枠組み)\n### 1) 全社リスク管理(ERM)\n- 「リスク管理規程」を制定し、全社的リスク管理体制(ERM)を構築。\n- 代表取締役社長を委員長とする「リスク管理委員会」を設置。\n - 各部門からのリスク情報を集約・分析し、対応策を協議する運用。\n\n### 2) サステナビリティ関連リスクの位置づけ\n- 気候変動等のサステナビリティ関連リスクは、取締役会直轄の「サステナビリティ委員会」と連携し、中長期視点で評価・管理。\n\n### 3) 監査上の評価ポイント(設計・運用)\n- 委員会が「情報集約→分析→対応策決定」まで担う設計は明確。内部監査/モニタリング(対応策の実施状況・期限管理・有効性評価)の仕組みが有報抜粋からは不明のため、運用証跡(議事録、KPI、是正完了報告)を要確認。\n- サステナ委員会が取締役会直轄である点は監督機能上プラス。一方、ERM委員会との責任分界(重複領域、最終意思決定、エスカレーション基準)を規程・運用で明確化しているか確認が必要。\n\n## 2. リスク管理(評価プロセスと主要リスクへの統制)\n### 1) リスク評価プロセス\n- 各リスク事象を「発生頻度」「影響度」をそれぞれ5段階で定量評価。\n- 積(リスクスコア)により優先順位付けし、重点管理リスクを特定。\n\n**監査論点**\n- 5段階評価の定義(定量閾値、影響の財務/非財務区分)と、評価の一貫性(部門間ブレ抑制、レビュー者)を確認。\n- スコア上位リスクについて、対応策の実行計画(責任者・期限・予算)と残余リスク評価の実施有無を確認。\n\n### 2) 主要リスクと対応策(抜粋)\n- 建設資材・労務費の高騰(スコア25:5×5)\n - 民間工事の工事請負契約におけるスライド条項の適用推進\n - 調達ルート多様化、価格交渉力強化\n - 施工管理効率化による原価低減\n- 人材確保・育成(2024年問題等)(スコア25:5×5)\n - 採用強化、AZUMAテクノロジーセンター活用の早期育成\n - ICT建機・ドローン等のDX推進(省人化・生産性向上)\n - 完全週休2日定着に向けた工程管理適正化\n- 建設市況の変動(スコア12:3×4)\n - 官公庁/民間の受注ポートフォリオ\n - ストック型(不動産、リニューアル)強化\n - M&Aによるエリア/工種拡大\n\n**監査論点(内部統制への落とし込み)**\n- 原価上振れリスク:見積・積算統制(根拠資料、承認階層、スライド条項の織込み基準)、実行予算と出来高/原価差異管理、協力会社契約(単価改定・変動条項)の整備状況。\n- 人材・労務:36協定/時間外上限遵守のモニタリング、工程計画の妥当性レビュー、外注比率上昇時の品質/安全統制。\n- 市況変動:受注審査(採算・与信・リスク)と、M&A後の統合リスク(システム/プロセス統一、権限移譲)の統制。\n\n## 3. 契約・回収条件(有報抜粋からの抽出と不足情報)\n### 1) 抽出できた契約条件関連\n- 資材・労務費高騰への対応として、**民間工事の工事請負契約における「スライド条項」適用推進**の記載あり。\n - 価格変動を契約上で転嫁する方針が示唆され、採算管理統制の重要要素。\n\n### 2) 有報抜粋では確認できないため追加確認が必要な事項(監査手続の観点)\n- 工事契約の類型別条件:公共/民間、元請/下請、JVの比率、契約変更(設計変更・追加工事)の承認・証憑。\n- 請求・回収条件:出来高請求の締日/支払サイト、前受金・中間金・検収条件、遅延損害金、相殺条項。\n- 与信管理:発注者の信用評価、滞留債権のモニタリング、貸倒引当の算定方針。\n- 収益認識:工事進行基準(出来高算定方法、原価比例法等)、見積総原価の変更統制、損失引当(工事損失引当金)の計上基準。\n- 下請契約:バック・トゥ・バック(元請契約と下請契約の条件整合)、資材価格変動の負担範囲、支払条件。\n\n## 4. 設備投資・DX(統制・リスク観点)\n### 1) 中期経営計画と投資方針\n- 中期経営計画「AZUMA Future Plan 2027」にて生産性向上・業務効率化を重要施策化。\n- 翌期の設備投資計画:総額200百万円\n - ICT対応建設機械:120百万円(2025/5着手〜2026/3完了、自己資金・借入)\n - 基幹業務システム(ERP):80百万円(2025/4着手〜2026/9完了、自己資金)\n\n### 2) 監査論点\n- ERP刷新:権限設計(職務分掌、承認WF)、マスタ管理、変更管理、移行(データ移行・並行稼働・アクセスログ)といったIT統制の整備が必要。\n- ICT建機:投資対効果(省人化・施工能力向上)のKPI設定、保守・稼働率管理、現場データの証跡化(出来高/原価管理への連携)を確認。\n\n## 5. 重点改善提言(内部監査としての指摘候補)\n1) リスクスコア上位(25)の2テーマ(原価高騰・人材)について、対応策の「実行計画(責任者・期限・KPI)と残余リスク」の定期レビューを委員会議事録で証跡化。 \n2) スライド条項の「適用判断基準」「交渉プロセス」「契約変更の証憑・承認」までを標準化し、見積〜契約〜請求の一気通貫統制を整備。 \n3) ERP更改に合わせ、工事原価・出来高・請求・入金消込の統制点(入力、承認、突合、例外処理)を業務フロー/RCMとして文書化し、移行期間の統制(並行稼働・差異分析)を必須化。',
'market_research_report': '# 茨城県×総合建設・土木:市場調査レポート(Web情報ベース)\n\n## 1. 市場概況(何が起きているか)\n- 県内建設会社の共通課題として「人材不足」が顕在化。若年層の建設業離れと、現場中核のベテラン層の高齢化が同時進行している。 \n 出典: akatsukadoboku.co.jp\n- 年度末など繁忙期に労働力不足が深刻化し、工期順守のため現場負担が増加。加えて災害復旧等で“地域の守り手”としての役割も期待され、需給逼迫が起きやすい構造。 \n 出典: Yahoo!ニュース\n- 働き方改革への対応(いわゆる2024年問題文脈)により、長時間労働前提の工程が組みにくくなり、生産性向上が喫緊のテーマ。 \n 出典: CIIC資料(PDF)、リコー事例\n- 人手不足・建設費高騰を背景に、現場作業を減らしコストを抑える生産方式への転換が進む兆し。「軽格単省(軽量化・規格化・単純化・省力化)」がキーワード。 \n 出典: 日本経済新聞\n\n## 2. 需要動向(仕事量・案件の性質)\n- 災害時復旧、積雪時対応など、地域インフラ維持・緊急対応の需要は一定以上存在し、短納期・突発対応が発生しやすい(=平準化しにくい需要)。\n- 一方で供給制約(人手不足・労務規制)により、「案件はあるが受け切れない/外注依存が高まる/工期が伸びる」方向に圧力。\n\n## 3. 供給・競争環境(勝ち筋が変わるポイント)\n- 競争軸が「価格」だけでなく、「人を確保できる体制」「工程を守れる生産性」「協力会社ネットワーク」「ICTでの省人化」にシフト。\n- 協力会社との共存共栄、地域密着の連携を前提にICT活用で対応する事例が示されており、“単独最適”より“連携込みの最適化”が現実解になりやすい。 \n 出典: リコー事例\n\n## 4. 主要課題(ボトルネック)\n1) **担い手不足(特に若年層)** \n- 入職促進が課題として明示。処遇・就労環境の改善、働き方改革対応がセットで問われる。 \n 出典: CIIC資料(PDF)\n\n2) **繁忙期の労働力逼迫と現場負担増** \n- 工期順守プレッシャーが現場に集中し、疲弊→離職→さらに不足、の悪循環リスク。 \n 出典: Yahoo!ニュース\n\n3) **生産性向上(ICT活用・省人化)** \n- ICT活用が対策として言及。加えて「軽格単省」の流れから、設計・施工計画・調達・施工方法の見直しが進みやすい。 \n 出典: リコー、日本経済新聞\n\n4) **コスト上昇(建設費高騰)** \n- 高騰局面では、見積の精度、VE提案、手戻り削減が競争力に直結。\n\n## 5. 機会領域(伸びるテーマ/提供価値)\n- **省人化・省力化の実装支援**:現場ICT(進捗・写真・帳票・安全)導入、遠隔臨場、施工計画の標準化など。\n- **“工程を守る”を売りにする体制構築**:協力会社の確保、平準化発注、複数現場の要員最適化(見える化)で信頼を獲得。\n- **若手採用に効く職場設計**:働き方改革対応を“守り”ではなく“採用マーケ”として訴求(休日、残業、教育、資格支援)。\n- **軽格単省に沿った提案型受注**:規格化・標準ディテール・プレファブ/ユニット化等を取り込み、工期短縮・品質安定を提示。\n\n## 6. マーケティング示唆(受注・採用の打ち手)\n### 受注(B2B/官公庁・元請/下請)\n- 提案の主語を「価格」から「省人化で工期を守る」「災害時も動ける体制」に変更(地域の守り手文脈と整合)。\n- 見積書・提案書に、ICT活用や標準化による**手戻り削減・安全・出来形管理の精度**を明記し、総コスト(TCO)で説明。\n\n### 採用(若年層)\n- 2024年問題対応を“コンプラ”ではなく「働きやすさの設計」として可視化(例:週休、残業実績、ICTでの負担軽減、資格取得ルート)。\n- ベテラン高齢化の裏返しとして、若手にとっては「早期に中核を担える」機会でもあるため、育成制度・キャリアパスを具体化。\n\n## 7. 今後の注目指標(モニタリング項目)\n- 採用充足率・離職率、協力会社稼働率(繁忙期の逼迫度)\n- ICT導入率(現場管理/遠隔臨場/電子帳票)と、導入後の工数削減実績\n- 工期遅延件数、追加原価(手戻り・資材高騰)発生率\n- 標準化(軽格単省)による施工時間・人員の削減効果\n\n## 参考(今回のWeb検索ソース)\n- akatsukadoboku.co.jp(茨城県建設業界の課題:人材不足・高齢化)\n- Yahoo!ニュース(茨城:建設・運送の人手不足、繁忙期の逼迫、地域の守り手)\n- リコー(茨城の建設会社事例:ICT活用で人手不足・2024年問題に対応)\n- 建設業情報管理センター(CIIC)PDF(茨城:担い手不足、若年層確保、働き方改革対応が課題)\n- 日本経済新聞(人手不足・コスト高騰→軽格単省で生産方式転換)',
'qualitative_analysis_report': '',
'strategic_recommendations': '1) 運転資金の構造改革(最優先:6か月で資金繰りを安定化)\n- 目標:売上債権回転150日→120日(次に90日)、仕入債務13.9日→30日目安、営業CFの黒字化基調を作る。 \n- 施策:出来高請求の締日前倒し/検収条件の明確化、前受・中間金比率の引上げ、遅延先の与信枠・督促ルール、でんさい・ファクタリングの選択的活用。協力会社は支払方法集約(振込日統一)とセットでサイト交渉し、共存共栄の代替条件(発注平準化、出来高連動の早期検収)を提示。\n\n2) 借入ポートフォリオの是正(ロールオーバーリスク低減)\n- 恒常運転資金相当を長期借入またはコミット枠へ置換し、「短期全振り」を解消。 \n- 金融機関にはDSCRの高さを根拠に、(a)長期化、(b)当座枠/コミット枠、(c)金利上昇耐性(固定/上限条項)を交渉。資金繰り表を週次運用し、受注・出来高・入金のズレを早期検知。\n\n3) 利益率改善(12か月で+2pt、24か月で業界水準へ)\n- 案件別採算の「見える化」を徹底(原価・外注費・間接費配賦・想定粗利の事前審査→実行予算→差異分析)。 \n- 追加変更工事は“口頭=未発生”扱いにし、変更契約・注文書・請求の標準手順を必須化(請求漏れを構造的に潰す)。 \n- スライド条項は「適用判断基準・交渉プロセス・証憑・承認」をテンプレ化し、民間案件の価格転嫁を再現性ある運用にする。\n\n4) 「工程を守る会社」への転換(市場の勝ち筋:人手不足×2024年問題対応)\n- ICT建機・ドローン・遠隔臨場・電子黒板/写真管理を、単発導入でなく“工程短縮KPI”で運用(例:測量工数▲X%、出来形書類作成▲Y%、手戻り件数▲Z%)。 \n- 「軽格単省(軽量化・規格化・単純化・省力化)」を施工計画・仮設・標準ディテールに落とし込み、提案書でTCO(総コスト)と工期確度を訴求して受注単価を守る。\n\n5) 内部統制・ERP更改を“回収と採算の武器”にする(2025〜2026の投資を最大活用)\n- ERPの要件定義で、工事原価・出来高・請求・入金消込・滞留債権のダッシュボードを必須化。例外処理(検収遅延、請求差戻し、入金不一致)のワークフローと責任者を固定。 \n- ERM/委員会は、上位リスク(原価高騰・人材)に「責任者・期限・KPI・残余リスク」を付与し、議事録と是正完了報告で証跡化(監督機能を実効化)。\n\n6) 採用・育成の差別化(茨城の構造課題に正面対応)\n- 完全週休2日・残業実績・ICTでの負担軽減・資格取得ルートを“採用マーケ”として可視化。テクノロジーセンターを早期戦力化のKPI(独り立ち期間、資格取得率、離職率)で運用。 \n- 協力会社ネットワークを「繁忙期の稼働確保」と「品質・安全」の両面で評価し、優良協力会社には発注平準化・単価改定ルール等でインセンティブ設計。\n\n(実行順序の推奨)\n- 0〜3か月:回収・請求の前倒し、滞留債権の重点回収、資金繰り週次化、支払条件交渉の着手 \n- 3〜6か月:短期借入の長期化/枠設定、出来高請求と検収の標準化、案件別採算の月次レビュー開始 \n- 6〜12か月:スライド条項・変更契約の型化、ICT/DXのKPI運用、採用訴求の刷新 \n- 12〜24か月:ERP本稼働で「回収と採算」を仕組み化、利益率の業界水準接近と自己資本の積み上げ',
'draft_proposal': '# 銀行提出用 事業提案書(資金繰り安定化・借入是正・収益力強化)\n**提出先**:取引金融機関 各位 \n**提出者**:株式会社12044 \n**所在地**:茨城県 \n**業種**:総合建設・土木 \n**目的**:①6か月で資金繰りを安定化、②短期偏重の借入構造を是正、③利益率を24か月で業界水準へ近づけ、継続的な返済能力と財務健全性を高める。\n\n---\n\n## 1. 会社概要・現状認識(サマリー)\n### 1-1. 業績・財務の概況(直近)\n- 売上高:**12,280百万円**\n- 営業利益:**674百万円**(営業利益率 **約5.5%**)\n- 経常利益:**581百万円**\n- 当期純利益:**415百万円**\n- 総資産:**9,311百万円**/純資産:**1,135百万円**\n- 営業CF:**▲149百万円**(利益計上に対し運転資金増が先行)\n- 従業員:**159名**\n\n### 1-2. 運転資金・回転日数の課題\n- 売上債権回転日数:**150日**(長期化)\n- 棚卸資産回転日数:**約20日**\n- 仕入債務回転日数:**13.9日**(支払が早い)\n\n> 利益は出ている一方、回収サイトが長く支払サイトが短い構造により、運転資金負担が大きく、営業CFがマイナス化。\n\n### 1-3. 借入構造の課題と返済余力\n- 短期借入:**5,018百万円**/長期借入:**0**\n- EBITDA:**831百万円**\n- DSCR:**7.35**(返済余力は高いが、短期偏重でロールオーバーリスクが高い)\n\n---\n\n## 2. 基本方針(金融機関向けコミットメント)\n当社は以下を最優先で実行し、資金繰り安定と財務体質改善を進めます。\n\n1) **6か月で資金繰りを安定化(営業CFを黒字基調へ)** \n2) **短期偏重の借入を是正し、ロールオーバーリスクを低減** \n3) **12か月で利益率+2pt、24か月で業界水準へ接近** \n4) **「工程を守る会社」へ転換し、受注単価と施工能力を強化** \n5) **ERP/内部統制を“回収と採算の武器”として定着**\n\n---\n\n## 3. 施策①:運転資金の構造改革(最優先:0〜6か月)\n### 3-1. 数値目標(KPI)\n- 売上債権回転:**150日 → 120日(次に90日)**\n- 仕入債務回転:**13.9日 → 30日目安**\n- 営業CF:**黒字基調の定着(週次管理)**\n\n### 3-2. 実行施策\n**(1) 請求・検収の前倒し(出来高の早期資金化)**\n- 出来高請求の締日前倒し、請求頻度の増加(可能な案件は月2回等)\n- 検収条件の明確化(検収遅延の論点を事前に潰す)\n- 前受金・中間金比率の引上げ(契約条件の標準化)\n\n**(2) 滞留債権の重点回収(与信・督促ルールの明文化)**\n- 遅延先の与信枠設定、督促の期限・手段(電話→文書→上長交渉)をルール化\n- 入金消込の迅速化(未消込・相違の即日エスカレーション)\n\n**(3) 支払条件の是正(協力会社との共存共栄型交渉)**\n- 支払方法の集約(振込日統一)とセットでサイト交渉\n- 代替条件提示:発注平準化、出来高連動の早期検収、協力会社の稼働計画の安定化\n\n**(4) 資金化手段の選択的活用**\n- でんさい、ファクタリング等を「特定案件・特定期間」に限定して活用(コストと効果を可視化)\n\n### 3-3. 管理体制(週次資金繰り)\n- 週次資金繰り表を運用し、**受注・出来高・請求・入金のズレ**を早期検知\n- 重点管理リスト:①検収遅延、②請求差戻し、③入金遅延、④高額案件の出来高進捗\n\n---\n\n## 4. 施策②:借入ポートフォリオ是正(3〜6か月)\n### 4-1. 方針\n- **恒常的に必要な運転資金相当を長期借入またはコミット枠へ置換**し、「短期全振り」を解消します。\n\n### 4-2. 金融機関への依頼事項(協議テーマ)\n- (a) 短期借入の一部を**長期化(分割返済)**\n- (b) **当座貸越枠/コミットメントライン**の設定(季節資金・工事進捗の変動吸収)\n- (c) 金利上昇耐性:固定化または上限条項等の検討\n\n### 4-3. 交渉根拠(返済能力)\n- EBITDA:**831百万円**\n- DSCR:**7.35** \n→ 返済余力を示しつつ、目的は「返済負担増」ではなく**ロールオーバーリスクの低減と資金繰り安定**であることを明確化。\n\n---\n\n## 5. 施策③:利益率改善(6〜24か月)\n### 5-1. 目標\n- **12か月:営業利益率 +2pt**\n- **24か月:業界水準(ベンチマーク平均 約9.8%)へ接近**\n\n### 5-2. 実行施策\n**(1) 案件別採算の「見える化」**\n- 事前審査(想定粗利・外注比率・間接費配賦)→実行予算→差異分析を月次運用\n- 不採算兆候(原価超過・工程遅延・外注費増)を早期に是正\n\n**(2) 変更工事の“未回収化”防止(標準手順の必須化)**\n- 「口頭=未発生」扱いを徹底 \n- 変更契約・注文書・請求の標準フローを整備し、請求漏れを構造的に排除\n\n**(3) スライド条項(価格転嫁)の再現性ある運用**\n- 適用判断基準、交渉プロセス、証憑、承認をテンプレ化\n- 民間案件でも運用できる型を整備し、属人性を排除\n\n---\n\n## 6. 施策④:「工程を守る会社」への転換(6〜12か月)\n### 6-1. 背景\n- 人手不足・2024年問題の環境下で、**工期遵守と生産性**が競争優位の源泉。\n\n### 6-2. 実行施策(KPIで運用)\n- ICT建機、ドローン、遠隔臨場、電子黒板/写真管理を単発導入で終わらせず、工程短縮KPIを設定 \n - 例:測量工数▲X%、出来形書類作成▲Y%、手戻り件数▲Z%\n- 「軽格単省(軽量化・規格化・単純化・省力化)」を施工計画・仮設・標準ディテールへ落とし込み\n- 提案書でTCO(総コスト)と工期確度を訴求し、**受注単価の維持**を狙う\n\n---\n\n## 7. 施策⑤:内部統制・ERP更改(2025〜2026)を“回収と採算の武器”に\n### 7-1. ERP要件(必須)\n- 工事原価・出来高・請求・入金消込・滞留債権のダッシュボード\n- 例外処理(検収遅延、請求差戻し、入金不一致)のワークフロー化と責任者固定\n\n### 7-2. ERM/委員会運用(証跡化)\n- 上位リスク(原価高騰、人材等)に「責任者・期限・KPI・残余リスク」を付与\n- 議事録と是正完了報告を整備し、監督機能を実効化\n\n---\n\n## 8. 施策⑥:採用・育成の差別化(茨城の構造課題への対応)\n- 完全週休2日、残業実績、ICTによる負担軽減、資格取得ルートを採用マーケとして可視化\n- テクノロジーセンターを早期戦力化KPI(独り立ち期間、資格取得率、離職率)で運用\n- 協力会社ネットワークを「稼働確保」と「品質・安全」で評価し、優良先に発注平準化・単価改定ルール等のインセンティブを設計\n\n---\n\n## 9. 実行スケジュール(推奨)\n- **0〜3か月**:回収・請求の前倒し、滞留債権重点回収、資金繰り週次化、支払条件交渉着手 \n- **3〜6か月**:短期借入の長期化/枠設定、出来高請求と検収の標準化、案件別採算の月次レビュー開始 \n- **6〜12か月**:スライド条項・変更契約の型化、ICT/DXのKPI運用、採用訴求刷新 \n- **12〜24か月**:ERP本稼働で回収と採算を仕組み化、利益率の業界水準接近、自己資本の積み上げ\n\n---\n\n## 10. 金融機関への報告・モニタリング(開示方針)\n当社は以下を定例報告し、透明性を確保します。\n- 週次:資金繰り表(入金予定、支払予定、借入残高、重要案件の出来高・検収状況)\n- 月次:売上債権年齢表、滞留債権一覧、案件別採算(差異分析)、受注残・進捗\n- 四半期:利益率改善の進捗、DX/ERPのKPI、採用・定着KPI\n\n---\n\n## 11. 結び(要請)\n当社は運転資金構造の是正と管理高度化により、営業CFの黒字基調を確立し、借入の安定化(長期化・枠設定)と収益力強化を同時に実現します。 \nつきましては、短期借入の一部長期化および当座枠/コミット枠設定等について、上記の運用報告を前提にご協議をお願い申し上げます。\n\n---\n\n**添付(提出時)** \n- 週次資金繰り表(直近12週+見通し12週) \n- 売上債権年齢表/滞留債権一覧 \n- 主要案件の出来高・検収・請求・入金予定一覧 \n- 借入一覧(短期・条件・更新時期) \n- 案件別採算のサンプル(月次)',
'sanity_check_result': 'PASS',
'review_feedback': 'REVISE',
'review_status': 'REVISE',
'revision_count': 3,
'external_research_query': '茨城 総合建設・土木 課題 トレンド',
'deep_research_iteration_count': 1}
DSPyのログ (prompt_log.txt)
以下は1企業サンプルでのDSPyのプロンプトログになります。
各エージェントが入力を受け取って、Signatureの定義を汲み取り、どうReasoningして、出力を生成し、提案書作成に至ったかの一連のプロセスの透明化をするため、PDSPyの推論ログ([[ ## reasoning ## ]]`)を含む実行ログを公開します。
※結果が長いので、STEP4, STEP5はtruncateしてます。
prompt_log.txt
# AI Execution Log: Multi-Agent Proposal Generation System
Target Company: 12044 (Ibaraki / Construction)
Date: 2026-02-17 15:13:06.526352
Model: Azure OpenAI gpt-5.2
Architecture: LangGraph (Flow Control) + DSPy (Prompt Optimization)
---
## 1. System Architecture & Ingenuity
- **Multi-Agent**: Specialized agents (CFO, CSO, Auditor, Marketer) analyzing distinct data sources.
- **Sanity Check**: Automated validation of financial metrics (DPO, DSCR) before strategy formulation.
- **Self-Correction**: Recursive review loop ensuring specific quantitative targets are met.
---
## 2. Agent Interaction Logs
================================================================================
Step 1: 📊 財務分析官 (CFO / Quantitative Analyst)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## financial_summary ## ]]
{financial_summary}
[[ ## financial_trends ## ]]
{financial_trends}
[[ ## benchmark_stats ## ]]
{benchmark_stats}
[[ ## debt_metrics ## ]]
{debt_metrics}
[[ ## company_code ## ]]
{company_code}
[[ ## company_name ## ]]
{company_name}
[[ ## industry ## ]]
{industry}
[[ ## reasoning ## ]]
{reasoning}
[[ ## financial_diagnosis ## ]]
{financial_diagnosis}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
企業の財務健全性と返済能力を診断するCFO役
[user] [[ ## financial_summary ## ]]
{'売上高': 12280657466, '営業利益': 674201636, '経常利益': 581407812, '当期純利益': 415225416, '純資産': 1135532544, '総資産': 9311257299, '営業活動によるキャッシュ・フロー': -148865767, '投資活動によるキャッシュ・フロー': -19978000, '財務活動によるキャッシュ・フロー': 467133593, '従業員数(連結)': 159, '本社所在地': '茨城', '業種分類': '総合建設・土木'}
[[ ## financial_trends ## ]]
{'Sales_CAGR_3Y': np.float64(0.23647220863442353), 'Turnover_Receivables_Days_2025': np.float64(150.00000000533373), 'Turnover_Inventory_Days_2025': np.float64(20.37320414499073), 'Turnover_Payables_Days_2025': np.float64(13.873927079646982)}
[[ ## benchmark_stats ## ]]
{'Mean_Operating_Margin': np.float64(0.09767557806132159), 'Mean_ROE': np.float64(0.09639567497972523)}
[[ ## debt_metrics ## ]]
{'EBITDA': np.int64(831204476), 'DSCR': np.float64(7.354306383284141), 'ShortTermDebt': np.int64(5018956745), 'LongTermDebt': np.int64(0), 'Est_Principal': 0, 'Est_Interest': np.int64(113022824)}
[[ ## company_code ## ]]
12044
[[ ## company_name ## ]]
株式会社12044
[[ ## industry ## ]]
総合建設・土木
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
- 収益性:売上12,280百万円に対し営業利益674百万円で営業利益率5.5%。黒字だが、業界平均(約9.8%)を下回り、採算余地が大きい。
- 成長性:売上CAGR(3年)+23.6%と高成長。一方で成長に伴う運転資金負担が強く出ている可能性。
- キャッシュフロー:営業CFが▲149百万円とマイナス。投資CFは小さく、財務CF+467百万円で資金繰りを補填している構図。
- 運転資金(回転期間):売上債権150日と長期、買入債務13.9日と短期で、資金が寝やすい(回収が遅く支払が早い)。これが営業CF悪化の主因候補。
- 財務安全性・返済能力:EBITDA 831百万円、DSCR 7.35と返済余力は高い(利払い推定113百万円に対し十分)。ただし借入は短期5,019百万円に偏重し、ロールオーバー(借換)リスクがある。
- 資本:純資産1,136百万円に対し総資産9,311百万円で自己資本比率は約12%。レバレッジ高めで、運転資金悪化時の耐性は強くない。
[[ ## financial_diagnosis ## ]]
### 1) 総合評価(CFO所見)
成長は強い一方、**運転資金の管理(特に売掛金の回収)がボトルネック**となり、営業キャッシュフローが赤字化。返済能力(DSCR)は高いが、**短期借入への依存が大きく、資金繰りは「回収条件次第」で振れやすい**。収益性も業界平均未達のため、採算管理と回収条件の是正が最優先。
### 2) 収益性
- 営業利益率:**5.5%**(674/12,281)
- 業界平均営業利益率:**約9.8%** → **未達**
示唆:案件別採算(原価・外注費・間接費配賦)と、追加変更工事の請求漏れ/値決めの弱さを点検。高成長局面ほど低採算案件の混入で利益率が落ちやすい。
### 3) 成長性
- 売上CAGR(3年):**+23.6%**
示唆:成長自体は評価できるが、建設業では出来高・請求サイト・前払/中間金の設計次第で運転資金が急拡大する。成長を「資金が回る形」に整える必要。
### 4) キャッシュフロー/資金繰り
- 営業CF:**▲149百万円**(赤字)
- 財務CF:**+467百万円**(借入等で補填)
評価:本業で現金を生めていないため、当面は借入依存が続くと金利上昇局面で脆弱。
### 5) 運転資金(回転期間)診断
- 売上債権回転日数:**150日(長い)**
- 棚卸回転日数:**20日(標準〜良好)**
- 仕入債務回転日数:**13.9日(短い)**
結論:**回収が遅く支払が早い**ため、資金が恒常的に不足しやすい。ここが最重要改善ポイント。
### 6) 返済能力・借入構造
- EBITDA:**831百万円**
- DSCR:**7.35**(返済余力は高い水準)
- 借入:短期 **5,019百万円** / 長期 **0**
評価:返済能力は良好だが、**短期偏重で借換リスク**がある。営業CFが弱い状況では、金融環境悪化時に条件変更を迫られる可能性。
### 7) 財務安全性(資本)
- 自己資本比率(概算):**約12%**(1,136/9,311)
評価:レバレッジ高め。運転資金の膨張や工事損失が出た場合の耐性は限定的。
---
## 優先アクション(上から順に)
1. **売掛金150日→まず120日、次に90日を目標**
- 請求締め/検収/出来高請求の早期化、遅延先の与信枠設定、入金遅延ペナルティ条項、ファクタリング/でんさい活用を検討。
2. **支払条件の是正(買掛13.9日→30日程度へ)**
- 協力会社との支払サイト見直し、支払方法の集約で交渉力を確保。
3. **短期借入の一部を長期化(ロールオーバーリスク低減)**
- 運転資金の恒常部分を長期借入/コミット枠で固定し、金利上昇・金融引締め耐性を上げる。
4. **利益率改善(業界平均との差4pt強)**
- 案件別の粗利管理、原価上振れの早期検知、追加工事の契約化徹底、間接費の固定費化抑制。
5. **資本の厚み確保**
- 利益留保の強化、過度な成長投資の抑制、必要に応じ増資/劣後ローン等も選択肢。
## 結論
- **返済能力:良好(DSCR高水準)**
- **財務健全性:運転資金と短期借入偏重に課題**
- 改善の鍵は「利益率」より先に、**回収サイト短縮と借入の長期化で資金繰り構造を正常化**すること。
================================================================================
Step 2: 📈 市場調査員 (Market Researcher)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## external_web_search_results ## ]]
{external_web_search_results}
[[ ## prefecture ## ]]
{prefecture}
[[ ## industry ## ]]
{industry}
[[ ## reasoning ## ]]
{reasoning}
[[ ## market_research_report ## ]]
{market_research_report}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
Web検索から市場動向を分析するマーケター
[user] [[ ## external_web_search_results ## ]]
【出典】: https://akatsukadoboku.co.jp/topics/494/
【タイトル】: 茨城県の建設業界はいま何が起きているのか? ―人口・インフラ ...
【内容】: 一方で、県内の多くの建設会社が共通して抱える課題が「人材不足」です。 若年層の建設業離れが進み、現場を支えるベテラン層の高齢化が進行しています。
【出典】: https://news.yahoo.co.jp/articles/142951b473fb66db295575351b57784ee4dc257a
【タイトル】: 2026衆院選・茨城 課題を追う》(3) 人手不足 建設や運送、深刻さ増す
【内容】: 繁忙期の年度末にかけて労働力は不足。工期を守るために、現場の負担は増すばかりだ。災害時の復旧工事や積雪時の融雪剤散布など「地域の守り手」としての ...
【出典】: https://www.ricoh.co.jp/magazines/smb/casestudy/004926/
【タイトル】: 建設業界の人手不足と2024年問題にはICTの積極的な活用で ... - リコー
【内容】: 建設業界の人手不足と2024年問題にはICTの積極的な活用で対応。地域密着をモットーに協力会社の仲間たちと共存共栄を図る 節和建設(茨城県). From: 中小 ...
【出典】: https://www.ciic.or.jp/wp-content/uploads/2023/03/202303_chiikikensetsusangyonotaskforce_ibaraki.pdf
【タイトル】: [PDF] 令和 5 年 3 月 一般財団法人 建設業情報管理センター
【内容】: 茨城県では、建設業の担い手不足、特に若年層の担い手確保のほか、今後の働き方改革 への対応といった点が課題となっている。 若年層の入職促進に向けては、処遇や就労環 ...
【出典】: https://www.nikkei.com/nkd/industry/article/?DisplayType=1&n_m_code=081&ng=DGXZQOUC283RA0Y6A120C2000000
【タイトル】: 建築・住宅生産に変化の兆し 「軽格単省」で人手不足を乗り越える
【内容】: 深刻な人手不足や建設費高騰を背景に、建築・住宅生産の在り方に変化の兆しが見えてきた。キーワードは「軽格単省」。現場の作業をなるべく減らし、コスト ...
[[ ## prefecture ## ]]
茨城
[[ ## industry ## ]]
総合建設・土木
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
外部Web検索結果から、茨城県の総合建設・土木市場は「人材不足(若年層の入職減+ベテラン高齢化)」「繁忙期の労働力逼迫による工期・現場負担の増大」「働き方改革(いわゆる2024年問題)対応」「建設費高騰を背景にした省人化・生産方式転換(ICT活用/軽格単省)」が主要論点として共通していると整理できる。これらを需要側(インフラ維持・災害対応)と供給側(担い手・生産性・コスト)の両面から市場動向として統合し、打ち手(差別化・投資領域・販促/採用)に落とし込む。
[[ ## market_research_report ## ]]
# 茨城県×総合建設・土木:市場調査レポート(Web情報ベース)
## 1. 市場概況(何が起きているか)
- 県内建設会社の共通課題として「人材不足」が顕在化。若年層の建設業離れと、現場中核のベテラン層の高齢化が同時進行している。
出典: akatsukadoboku.co.jp
- 年度末など繁忙期に労働力不足が深刻化し、工期順守のため現場負担が増加。加えて災害復旧等で“地域の守り手”としての役割も期待され、需給逼迫が起きやすい構造。
出典: Yahoo!ニュース
- 働き方改革への対応(いわゆる2024年問題文脈)により、長時間労働前提の工程が組みにくくなり、生産性向上が喫緊のテーマ。
出典: CIIC資料(PDF)、リコー事例
- 人手不足・建設費高騰を背景に、現場作業を減らしコストを抑える生産方式への転換が進む兆し。「軽格単省(軽量化・規格化・単純化・省力化)」がキーワード。
出典: 日本経済新聞
## 2. 需要動向(仕事量・案件の性質)
- 災害時復旧、積雪時対応など、地域インフラ維持・緊急対応の需要は一定以上存在し、短納期・突発対応が発生しやすい(=平準化しにくい需要)。
- 一方で供給制約(人手不足・労務規制)により、「案件はあるが受け切れない/外注依存が高まる/工期が伸びる」方向に圧力。
## 3. 供給・競争環境(勝ち筋が変わるポイント)
- 競争軸が「価格」だけでなく、「人を確保できる体制」「工程を守れる生産性」「協力会社ネットワーク」「ICTでの省人化」にシフト。
- 協力会社との共存共栄、地域密着の連携を前提にICT活用で対応する事例が示されており、“単独最適”より“連携込みの最適化”が現実解になりやすい。
出典: リコー事例
## 4. 主要課題(ボトルネック)
1) **担い手不足(特に若年層)**
- 入職促進が課題として明示。処遇・就労環境の改善、働き方改革対応がセットで問われる。
出典: CIIC資料(PDF)
2) **繁忙期の労働力逼迫と現場負担増**
- 工期順守プレッシャーが現場に集中し、疲弊→離職→さらに不足、の悪循環リスク。
出典: Yahoo!ニュース
3) **生産性向上(ICT活用・省人化)**
- ICT活用が対策として言及。加えて「軽格単省」の流れから、設計・施工計画・調達・施工方法の見直しが進みやすい。
出典: リコー、日本経済新聞
4) **コスト上昇(建設費高騰)**
- 高騰局面では、見積の精度、VE提案、手戻り削減が競争力に直結。
## 5. 機会領域(伸びるテーマ/提供価値)
- **省人化・省力化の実装支援**:現場ICT(進捗・写真・帳票・安全)導入、遠隔臨場、施工計画の標準化など。
- **“工程を守る”を売りにする体制構築**:協力会社の確保、平準化発注、複数現場の要員最適化(見える化)で信頼を獲得。
- **若手採用に効く職場設計**:働き方改革対応を“守り”ではなく“採用マーケ”として訴求(休日、残業、教育、資格支援)。
- **軽格単省に沿った提案型受注**:規格化・標準ディテール・プレファブ/ユニット化等を取り込み、工期短縮・品質安定を提示。
## 6. マーケティング示唆(受注・採用の打ち手)
### 受注(B2B/官公庁・元請/下請)
- 提案の主語を「価格」から「省人化で工期を守る」「災害時も動ける体制」に変更(地域の守り手文脈と整合)。
- 見積書・提案書に、ICT活用や標準化による**手戻り削減・安全・出来形管理の精度**を明記し、総コスト(TCO)で説明。
### 採用(若年層)
- 2024年問題対応を“コンプラ”ではなく「働きやすさの設計」として可視化(例:週休、残業実績、ICTでの負担軽減、資格取得ルート)。
- ベテラン高齢化の裏返しとして、若手にとっては「早期に中核を担える」機会でもあるため、育成制度・キャリアパスを具体化。
## 7. 今後の注目指標
...(truncated)
================================================================================
Step 3: ⚔️ 内部監査役 (Internal Auditor)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## internal_rag_data ## ]]
{internal_rag_data}
[[ ## company_name ## ]]
{company_name}
[[ ## reasoning ## ]]
{reasoning}
[[ ## internal_audit_report ## ]]
{internal_audit_report}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
有報から内部統制・ガバナンス・契約条件を抽出する監査役
[user] [[ ## internal_rag_data ## ]]
--- Search Results for '経営方針 中期経営計画 対処すべき課題 設備投資 研究開発 組織図 リスク管理体制 工事進行基準' in Company 12044 ---
[Result 1] Start Page: 14 (Score: 29.75)
--- Page 14 ---
## 3 【事業等のリスク】
当社グループの財政状態、経営成績及びキャッシュ·フローの状況に重要な影響を及ぼす可能性が
ある主要なリスクは以下のとおりであります。
なお、文中の将来に関する事項は、当事業年度末現在において当社が判断したものであります。
### (1) リスク管理体制と評価プロセス
当社は、事業活動を取り巻く様々なリスクを的確に把握し、損失の未然防止及び最小化を図るた
め、「リスク管理規程」を制定し、全社的なリスク管理体制(ERM)を構築しております。代表取
締役社長を委員長とする「リスク管理委員会」を設置し、各部門から報告されたリスク情報の集
約、分析及び対応策の協議を行っております。また、気候変動等のサステナビリティ関連リスクにつ
いては、取締役会直轄の「サステナビリティ委員会」と連携し、中長期的な視点での評価·管理を実
施しております。 リスクの評価にあたっては、各リスク事象の「発生頻度」と「影響度」をそれぞ
れ5段階で定量的に評価し、その積(リスクスコア)に基づき優先順位付けを行い、重点的に管理
すべきリスクを特定しております。
### (2) 主なリスク事項と対応策
当事業年度において特定された主な事業上のリスクと、それに対する主な対応策は以下のとおり
であります。
<table>
<tr>
<th>No.</th>
<th>リスク項 ⽬</th>
<th>具体的なリスク事象</th>
<th>頻度 × 影響</th>
<th>主な対応策</th>
</tr>
<tr>
<td>1</td>
<td>建設資材 及び 労務費の 高騰</td>
<td>原材料価格の高騰や慢性的な人手不足による労 務費の上昇により、工事原価が増加し、利益率 が低下するリスク。</td>
<td>25 (5×5)</td>
<td>·民間工事における工事請負契約へ のスライド条項の適用推進 · 購買部門による資材調達ルートの 多様化と価格交渉力の強化 ·施工管理の効率化による原価低減 活動の徹底</td>
</tr>
<tr>
<td>2</td>
<td>人材の確 保 ·育成 (2024年 問題等)</td>
<td>技術者不足や高齢化に加え、時間外労働上限規 制(2024年問題)への対応遅れにより、施工能 力が低下するリスク。</td>
<td>25 (5×5)</td>
<td>·新卒·中途採用の強化及び 「AZUMAテクノロジーセンター」 を活用した早期育成 ·ICT建機やドローン等のDX推進に よる省人化·生産性向上 ·完全週休2日制の定着に向けた工 程管理の適正化</td>
</tr>
<tr>
<td>3</td>
<td>建設市況 の変動</td>
<td>公共投資の縮小や民間設備投資の減退により、 受注高が減少し、業績が悪化するリスク。</td>
<td>12 (3×4)</td>
<td>·官公庁工事と民間工事のバランス の取れた受注ポートフォリオの構築 ·不動産事業やリニューアル工事な ど、ストック型ビジネスの強化 ·M&Aによる事業エリア及び工種 の拡大</td>
</tr>
<tr>
<td>4</td>
<td>労働災害 及び</td>
<td>工事現場における重大事故の発生により、社会 的信用の失墜、指名停止処分、損害賠償等が発</td>
<td>10 (2×5)</td>
<td>·安全衛生管理計画に基づく安全パ トロールの実施と改善指導の徹底</td>...
[Result 2] Start Page: 24 (...
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
有報抜粋(経営方針・課題、設備投資計画、事業等のリスク)から、①ガバナンス/委員会設計(ERMとサステナ連携)、②リスク評価プロセス(頻度×影響の5段階評価・優先順位付け)、③主要リスクと統制対応(資材高騰、人材、景況等)、④中計と投資(ICT/ERP)を内部統制・契約/回収条件の観点で監査論点化した。なお提示データ内に工事進行基準や具体的な契約条項・回収サイト等の記載は限定的(スライド条項の言及のみ)であるため、未記載事項は「追加確認事項」として列挙する。
[[ ## internal_audit_report ## ]]
## 1. ガバナンス体制(内部統制・監督/執行の枠組み)
### 1) 全社リスク管理(ERM)
- 「リスク管理規程」を制定し、全社的リスク管理体制(ERM)を構築。
- 代表取締役社長を委員長とする「リスク管理委員会」を設置。
- 各部門からのリスク情報を集約・分析し、対応策を協議する運用。
### 2) サステナビリティ関連リスクの位置づけ
- 気候変動等のサステナビリティ関連リスクは、取締役会直轄の「サステナビリティ委員会」と連携し、中長期視点で評価・管理。
### 3) 監査上の評価ポイント(設計・運用)
- 委員会が「情報集約→分析→対応策決定」まで担う設計は明確。内部監査/モニタリング(対応策の実施状況・期限管理・有効性評価)の仕組みが有報抜粋からは不明のため、運用証跡(議事録、KPI、是正完了報告)を要確認。
- サステナ委員会が取締役会直轄である点は監督機能上プラス。一方、ERM委員会との責任分界(重複領域、最終意思決定、エスカレーション基準)を規程・運用で明確化しているか確認が必要。
## 2. リスク管理(評価プロセスと主要リスクへの統制)
### 1) リスク評価プロセス
- 各リスク事象を「発生頻度」「影響度」をそれぞれ5段階で定量評価。
- 積(リスクスコア)により優先順位付けし、重点管理リスクを特定。
**監査論点**
- 5段階評価の定義(定量閾値、影響の財務/非財務区分)と、評価の一貫性(部門間ブレ抑制、レビュー者)を確認。
- スコア上位リスクについて、対応策の実行計画(責任者・期限・予算)と残余リスク評価の実施有無を確認。
### 2) 主要リスクと対応策(抜粋)
- 建設資材・労務費の高騰(スコア25:5×5)
- 民間工事の工事請負契約におけるスライド条項の適用推進
- 調達ルート多様化、価格交渉力強化
- 施工管理効率化による原価低減
- 人材確保・育成(2024年問題等)(スコア25:5×5)
- 採用強化、AZUMAテクノロジーセンター活用の早期育成
- ICT建機・ドローン等のDX推進(省人化・生産性向上)
- 完全週休2日定着に向けた工程管理適正化
- 建設市況の変動(スコア12:3×4)
- 官公庁/民間の受注ポートフォリオ
- ストック型(不動産、リニューアル)強化
- M&Aによるエリア/工種拡大
**監査論点(内部統制への落とし込み)**
- 原価上振れリスク:見積・積算統制(根拠資料、承認階層、スライド条項の織込み基準)、実行予算と出来高/原価差異管理、協力会社契約(単価改定・変動条項)の整備状況。
- 人材・労務:36協定/時間外上限遵守のモニタリング、工程計画の妥当性レビュー、外注比率上昇時の品質/安全統制。
- 市況変動:受注審査(採算・与信・リスク)と、M&A後の統合リスク(システム/プロセス統一、権限移譲)の統制。
## 3. 契約・回収条件(有報抜粋からの抽出と不足情報)
### 1) 抽出できた契約条件関連
- 資材・労務費高騰への対応として、**民間工事の工事請負契約における「スライド条項」適用推進**の記載あり。
- 価格変動を契約上で転嫁する方針が示唆され、採算管理統制の重要要素。
### 2) 有報抜粋では確認できないため追加確認が必要な事項(監査手続の観点)
- 工事契約の類型別条件:公共/民間、元請/下請、JVの比率、契約変更(設計変更・追加工事)の承認・証憑。
- 請求・回収条件:出来高請求の締日/支払サイト、前受金・中間金・検収条件、遅延損害金、相殺条項。
- 与信管理:発注者の信用評価、滞留債権のモニタリング、貸倒引当の算定方針。
- 収益認識:工事進行基準(出来高算定方法、原価比例法等)、見積総原価の変更統制、損失引当(工事損失引当金)の計上基準。
- 下請契約:バック・トゥ・バック(元請契約と下請契約の条件整合)、資材価格変動の負担範囲、支払条件。
## 4. 設備投資・DX(統制・リスク観点)
##
...(truncated)
================================================================================
Step 6: 👀 銀行支店長 (Reviewer)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## proposal_draft ## ]]
{proposal_draft}
[[ ## reasoning ## ]]
{reasoning}
[[ ## critique ## ]]
{critique}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
銀行支店長(審査役)
[user] [[ ## proposal_draft ## ]]
# 銀行提出用 事業提案書(資金繰り安定化・借入是正・収益力強化)
**提出先**:取引金融機関 各位
**会社名**:株式会社12044
**所在地**:茨城県
**業種**:総合建設・土木
**提出目的**:運転資金の構造改革と借入ポートフォリオ是正により、資金繰りの安定化と成長投資余力の確保を実現し、金融機関との中長期的な取引安定を図る。
---
## 1. エグゼクティブサマリー
当社は売上成長(直近3年CAGR:約23.6%)と利益計上(営業利益6.74億円、EBITDA8.31億円)を継続している一方、
- **営業CF:▲1.49億円**(運転資金増加の影響)
- **短期借入:50.2億円、長期借入:0**(期間ミスマッチ)
- **売上債権回転:150日、仕入債務回転:13.9日**(回収遅く支払早い)
という構造課題を抱えています。
本提案では、最優先で**6か月以内に資金繰りを安定化**させ、次に**短期借入偏重を是正(長期化/枠化)**し、並行して**利益率改善と統制・DXで再現性を高める**ことで、安定成長と与信の健全化を実現します。
なお、当社の**DSCRは7.35**と高く、返済余力は十分であり、課題は「返済能力」ではなく「運転資金構造と借入期間の整合性」にあります。
---
## 2. 現状認識(財務・運転資金・借入)
### 2.1 財務サマリー(直近)
- 売上高:122.8億円
- 営業利益:6.74億円(営業利益率:約5.5%)
- 経常利益:5.81億円/当期純利益:4.15億円
- 総資産:93.1億円/純資産:11.36億円
- 営業CF:▲1.49億円、投資CF:▲0.20億円、財務CF:+4.67億円
### 2.2 運転資金KPI(課題)
- 売上債権回転日数:**150日**(目標:まず120日、次に90日)
- 棚卸回転日数:20.4日
- 仕入債務回転日数:**13.9日**(目標:30日目安)
### 2.3 借入構造(課題)
- 短期借入:**50.2億円**
- 長期借入:0
- 推定支払利息:1.13億円
- EBITDA:8.31億円、DSCR:7.35
→ 収益・返済余力はある一方、短期依存により**ロールオーバーリスク**と**資金繰り変動リスク**が顕在化。
---
## 3. 基本方針(金融機関と共有したい論点)
1) **運転資金の構造改革**:回収条件・請求運用・検収プロセスを標準化し、営業CFを黒字基調へ転換。
2) **借入ポートフォリオ是正**:恒常運転資金相当を長期資金またはコミット枠へ置換し、短期集中を解消。
3) **利益率改善の再現性**:案件別採算の見える化、変更契約・スライド条項の型化で粗利を守る。
4) **工程遵守の競争力**:2024年問題・人手不足環境で「工程を守る会社」へ転換し受注単価を維持。
5) **ERP/内部統制を回収と採算の武器に**:例外処理をワークフロー化し、滞留債権・原価差異を早期是正。
---
## 4. 施策詳細(6か月の資金繰り安定化を最優先)
### 4.1 運転資金の構造改革(最優先:0〜6か月)
**目標KPI**
- 売上債権回転:150日 → **120日(6か月)** → 90日(次段階)
- 仕入債務回転:13.9日 → **30日目安(交渉着手〜定着)**
- 営業CF:黒字化基調の確立
**主要施策**
- 出来高請求の締日前倒し/検収条件の明確化(検収遅延を例外扱いにし、責任者・期限を固定)
- 前受金・中間金比率の引上げ(契約時に標準条項化、例外は役員決裁)
- 遅延先の与信枠設定と督促ルール(週次の滞留債権会議を運用)
- でんさい・ファクタリングの**選択的**活用(手数料と資金効率を案件別に比較し、限定運用)
- 協力会社支払条件の是正:支払方法の集約(振込日統一)とセットでサイト交渉
- 代替条件:発注平準化、出来高連動の早期検収、協力会社の稼働確保(共...
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
審査役(支店長)視点では、「資金需要の妥当性」「返済原資の確からしさ」「改善計画の実行可能性」「金融支援(長期化・枠設定)の必要性と条件」「モニタリング可能性」が主要論点です。本提案は①運転資金の構造課題(売上債権150日・仕入債務13.9日)と②短期借入偏重(短期50.2億・長期0)の期間ミスマッチを正面から示し、③6か月の資金繰り安定化→④借入是正→⑤収益/統制強化という順序も妥当で、月次/週次報告の姿勢も評価できます。
一方で、審査判断に必要な「定量裏付け」と「与信条件設計」に欠落があります。特に、(1) 恒常運転資金がいくらで、そのうち何億を長期化/枠化したいのか、(2) 売上債権150→120日でキャッシュがいくら改善し、営業CFがどの程度黒字化するのか、(3) DSCR 7.35の算式(分子分母、借入返済額、利息、税、設備投資)と前提、(4) 短期借入50.2億の内訳(プロパー/保証/手形・当座/つなぎ、更新条件、担保保証、金利、期日集中)と返済・借換リスク、(5) 主要得意先別の回収条件/検収リスク(公共・民間比率、出来高検収の支配要因)、(6) ファクタリング等の利用方針が「限定」とあるが、コスト上限やオフバランス/リコース有無、(7) 下請支払サイト延伸の実現可能性(建設業の商慣行・優越的地位/下請法リスク配慮)などが不十分です。
また、金融機関への依頼が「長期化」「コミット枠」「金利安定化」と抽象度が高く、銀行側で稟議に落とす際に必要な条件(希望金額、期間、返済方法、担保・保証、財務コベナンツ、報告頻度、資金使途の特定)が読み取れません。よって、現状のままでは“方向性は良いが、審査資料としては定量不足”となり、追加資料提出・計画の数値化を求める結論になります。
[[ ## critique ## ]]
REVISE
================================================================================
Step 7: ✍️ 提案書作成者 (Proposal Writer)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## analysis_report ## ]]
{analysis_report}
[[ ## financial_context ## ]]
{financial_context}
[[ ## debt_context ## ]]
{debt_context}
[[ ## company_name ## ]]
{company_name}
[[ ## prefecture ## ]]
{prefecture}
[[ ## industry ## ]]
{industry}
[[ ## feedback ## ]]
{feedback}
[[ ## reasoning ## ]]
{reasoning}
[[ ## proposal_draft ## ]]
{proposal_draft}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
銀行提出用の事業提案書を作成
[user] [[ ## analysis_report ## ]]
1) 運転資金の構造改革(最優先:6か月で資金繰りを安定化)
- 目標:売上債権回転150日→120日(次に90日)、仕入債務13.9日→30日目安、営業CFの黒字化基調を作る。
- 施策:出来高請求の締日前倒し/検収条件の明確化、前受・中間金比率の引上げ、遅延先の与信枠・督促ルール、でんさい・ファクタリングの選択的活用。協力会社は支払方法集約(振込日統一)とセットでサイト交渉し、共存共栄の代替条件(発注平準化、出来高連動の早期検収)を提示。
2) 借入ポートフォリオの是正(ロールオーバーリスク低減)
- 恒常運転資金相当を長期借入またはコミット枠へ置換し、「短期全振り」を解消。
- 金融機関にはDSCRの高さを根拠に、(a)長期化、(b)当座枠/コミット枠、(c)金利上昇耐性(固定/上限条項)を交渉。資金繰り表を週次運用し、受注・出来高・入金のズレを早期検知。
3) 利益率改善(12か月で+2pt、24か月で業界水準へ)
- 案件別採算の「見える化」を徹底(原価・外注費・間接費配賦・想定粗利の事前審査→実行予算→差異分析)。
- 追加変更工事は“口頭=未発生”扱いにし、変更契約・注文書・請求の標準手順を必須化(請求漏れを構造的に潰す)。
- スライド条項は「適用判断基準・交渉プロセス・証憑・承認」をテンプレ化し、民間案件の価格転嫁を再現性ある運用にする。
4) 「工程を守る会社」への転換(市場の勝ち筋:人手不足×2024年問題対応)
- ICT建機・ドローン・遠隔臨場・電子黒板/写真管理を、単発導入でなく“工程短縮KPI”で運用(例:測量工数▲X%、出来形書類作成▲Y%、手戻り件数▲Z%)。
- 「軽格単省(軽量化・規格化・単純化・省力化)」を施工計画・仮設・標準ディテールに落とし込み、提案書でTCO(総コスト)と工期確度を訴求して受注単価を守る。
5) 内部統制・ERP更改を“回収と採算の武器”にする(2025〜2026の投資を最大活用)
- ERPの要件定義で、工事原価・出来高・請求・入金消込・滞留債権のダッシュボードを必須化。例外処理(検収遅延、請求差戻し、入金不一致)のワークフローと責任者を固定。
- ERM/委員会は、上位リスク(原価高騰・人材)に「責任者・期限・KPI・残余リスク」を付与し、議事録と是正完了報告で証跡化(監督機能を実効化)。
6) 採用・育成の差別化(茨城の構造課題に正面対応)
- 完全週休2日・残業実績・ICTでの負担軽減・資格取得ルートを“採用マーケ”として可視化。テクノロジーセンターを早期戦力化のKPI(独り立ち期間、資格取得率、離職率)で運用。
- 協力会社ネットワークを「繁忙期の稼働確保」と「品質・安全」の両面で評価し、優良協力会社には発注平準化・単価改定ルール等でインセンティブ設計。
(実行順序の推奨)
- 0〜3か月:回収・請求の前倒し、滞留債権の重点回収、資金繰り週次化、支払条件交渉の着手
- 3〜6か月:短期借入の長期化/枠設定、出来高請求と検収の標準化、案件別採算の月次レビュー開始
- 6〜12か月:スライド条項・変更契約の型化、ICT/DXのKPI運用、採用訴求の刷新
- 12〜24か月:ERP本稼働で「回収と採算」を仕組み化、利益率の業界水準接近と自己資本の積み上げ
[[ ## financial_context ## ]]
{"summary": {"売上高": 12280657466, "営業利益": 674201636, "経常利益": 5814...
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
- 現状の最大論点は「利益は出ているのに営業CFがマイナス」であり、売上債権回転150日・仕入債務13.9日という運転資金構造が資金繰りを不安定化させているため、まず6か月で回収・請求・検収の前倒しと支払条件是正で営業CFを黒字基調へ転換する。
- 借入は短期5,018百万円に偏り、ロールオーバーリスクが高い。一方DSCR 7.35、EBITDA 831百万円と返済余力は高いため、恒常運転資金相当を長期化またはコミット枠化し、短期全振りを解消する提案が金融機関に合理的。
- 収益性は営業利益率約5.5%で、ベンチマーク平均(約9.8%)に未達。案件別採算の見える化、変更工事の契約・請求の型化、スライド条項の運用標準化により、12か月で+2pt、24か月で業界水準接近を狙う。
- 2024年問題・人手不足下では「工程を守る会社」への転換が受注単価維持の鍵。ICT/DXを“工程短縮KPI”で運用し、ERP更改も「回収と採算」の武器にして内部統制と収益改善を同時に実現する。
[[ ## proposal_draft ## ]]
# 銀行提出用 事業提案書(資金繰り安定化・借入是正・収益力強化)
**提出先**:取引金融機関 各位
**提出者**:株式会社12044
**所在地**:茨城県
**業種**:総合建設・土木
**目的**:①6か月で資金繰りを安定化、②短期偏重の借入構造を是正、③利益率を24か月で業界水準へ近づけ、継続的な返済能力と財務健全性を高める。
---
## 1. 会社概要・現状認識(サマリー)
### 1-1. 業績・財務の概況(直近)
- 売上高:**12,280百万円**
- 営業利益:**674百万円**(営業利益率 **約5.5%**)
- 経常利益:**581百万円**
- 当期純利益:**415百万円**
- 総資産:**9,311百万円**/純資産:**1,135百万円**
- 営業CF:**▲149百万円**(利益計上に対し運転資金増が先行)
- 従業員:**159名**
### 1-2. 運転資金・回転日数の課題
- 売上債権回転日数:**150日**(長期化)
- 棚卸資産回転日数:**約20日**
- 仕入債務回転日数:**13.9日**(支払が早い)
> 利益は出ている一方、回収サイトが長く支払サイトが短い構造により、運転資金負担が大きく、営業CFがマイナス化。
### 1-3. 借入構造の課題と返済余力
- 短期借入:**5,018百万円**/長期借入:**0**
- EBITDA:**831百万円**
- DSCR:**7.35**(返済余力は高いが、短期偏重でロールオーバーリスクが高い)
---
## 2. 基本方針(金融機関向けコミットメント)
当社は以下を最優先で実行し、資金繰り安定と財務体質改善を進めます。
1) **6か月で資金繰りを安定化(営業CFを黒字基調へ)**
2) **短期偏重の借入を是正し、ロールオーバーリスクを低減**
3) **12か月で利益率+2pt、24か月で業界水準へ接近**
4) **「工程を守る会社」へ転換し、受注単価と施工能力を強化**
5) **ERP/内部統制を“回収と採算の武器”として定着**
---
## 3. 施策①:運転資金の構造改革(最優先:0〜6か月)
### 3-1. 数値目標(KPI)
- 売上債権回転:**150日 → 120日(次に90日)**
- 仕入債務回転:**13.9日 → 30日目安**
- 営業CF:**黒字基調の定着(週次管理)**
### 3-2. 実行施策
**(1) 請求・検収の前倒し(出来高の早期資金化)**
- 出来高請求の締日前倒し、請求頻度の増加(可能な案件は月2回等)
- 検収条件の明確化(検収遅延の論点を事前に潰す)
- 前受金・中間金比率の引上げ(契約条件の標準化)
**(2) 滞留債権の重点回収(与信・督促ルールの明文化)**
- 遅延先の与信枠設定、督促の期限・手段(電話→文書→上長交渉)をルール化
- 入金消込の迅速化(未消込・相違の即日エスカレーション)
**(3) 支払条件の是正(協力会社との共存共栄型交渉)**
- 支払方法の集約(振込日統一)とセットでサイト交渉
- 代替条件提示:発注平準化、出来高連動の早期検収、協力会社の稼働計画の安定化
**(4) 資金化手段の選択的活用**
- でんさい、ファクタリング等を「特定案件・特定期間」に限定して活用(コストと効果を可視化)
### 3-3. 管理体制(週次資金繰り)
- 週次資金繰り表を運用し、**受注・出
...(truncated)
================================================================================
Step 8: 👀 銀行支店長 (Reviewer)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## proposal_draft ## ]]
{proposal_draft}
[[ ## reasoning ## ]]
{reasoning}
[[ ## critique ## ]]
{critique}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
銀行支店長(審査役)
[user] [[ ## proposal_draft ## ]]
# 銀行提出用 事業提案書(資金繰り安定化・借入是正・収益力強化)
**提出先**:取引金融機関 各位
**提出者**:株式会社12044
**所在地**:茨城県
**業種**:総合建設・土木
**目的**:①6か月で資金繰りを安定化、②短期偏重の借入構造を是正、③利益率を24か月で業界水準へ近づけ、継続的な返済能力と財務健全性を高める。
---
## 1. 会社概要・現状認識(サマリー)
### 1-1. 業績・財務の概況(直近)
- 売上高:**12,280百万円**
- 営業利益:**674百万円**(営業利益率 **約5.5%**)
- 経常利益:**581百万円**
- 当期純利益:**415百万円**
- 総資産:**9,311百万円**/純資産:**1,135百万円**
- 営業CF:**▲149百万円**(利益計上に対し運転資金増が先行)
- 従業員:**159名**
### 1-2. 運転資金・回転日数の課題
- 売上債権回転日数:**150日**(長期化)
- 棚卸資産回転日数:**約20日**
- 仕入債務回転日数:**13.9日**(支払が早い)
> 利益は出ている一方、回収サイトが長く支払サイトが短い構造により、運転資金負担が大きく、営業CFがマイナス化。
### 1-3. 借入構造の課題と返済余力
- 短期借入:**5,018百万円**/長期借入:**0**
- EBITDA:**831百万円**
- DSCR:**7.35**(返済余力は高いが、短期偏重でロールオーバーリスクが高い)
---
## 2. 基本方針(金融機関向けコミットメント)
当社は以下を最優先で実行し、資金繰り安定と財務体質改善を進めます。
1) **6か月で資金繰りを安定化(営業CFを黒字基調へ)**
2) **短期偏重の借入を是正し、ロールオーバーリスクを低減**
3) **12か月で利益率+2pt、24か月で業界水準へ接近**
4) **「工程を守る会社」へ転換し、受注単価と施工能力を強化**
5) **ERP/内部統制を“回収と採算の武器”として定着**
---
## 3. 施策①:運転資金の構造改革(最優先:0〜6か月)
### 3-1. 数値目標(KPI)
- 売上債権回転:**150日 → 120日(次に90日)**
- 仕入債務回転:**13.9日 → 30日目安**
- 営業CF:**黒字基調の定着(週次管理)**
### 3-2. 実行施策
**(1) 請求・検収の前倒し(出来高の早期資金化)**
- 出来高請求の締日前倒し、請求頻度の増加(可能な案件は月2回等)
- 検収条件の明確化(検収遅延の論点を事前に潰す)
- 前受金・中間金比率の引上げ(契約条件の標準化)
**(2) 滞留債権の重点回収(与信・督促ルールの明文化)**
- 遅延先の与信枠設定、督促の期限・手段(電話→文書→上長交渉)をルール化
- 入金消込の迅速化(未消込・相違の即日エスカレーション)
**(3) 支払条件の是正(協力会社との共存共栄型交渉)**
- 支払方法の集約(振込日統一)とセットでサイト交渉
- 代替条件提示:発注平準化、出来高連動の早期検収、協力会社の稼働計画の安定化
**(4) 資金化手段の選択的活用**
- でんさい、ファクタリング等を「特定案件・特定期間」に限定して活用(コストと効果を可視化)
### 3-3. 管理体制(週次資金繰り)
- 週次資金繰り表を運用し、**受注・出来高・請求・入金のズレ**を早期検知
- 重点管理リスト:①検収遅延、②請求差戻し、③入金遅延、④高額案件の出来高進捗
---
## 4. 施策②:借入ポートフォリオ是正(3〜6か月)
### 4-1. 方針
- **恒常的に必要な運転資金相当を長期借入またはコミット枠へ置換**し、「短期全振り」を解消します。
### 4-2. 金融機関への依頼事項(協議テーマ)
- (a) 短期借入の一部を**長期化(分割返済)**
- (b) **当座貸越枠/コミットメントライン**の設定(季節資金・工事進捗の変動吸収)...
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
審査役(支店長)目線では、①現状課題の把握(回収サイト長期×支払サイト短期→営業CFマイナス)、②改善の方向性(回収前倒し・支払条件是正・週次資金繰り)、③借入是正の狙い(ロールオーバーリスク低減)が明確で、全体のストーリーは妥当です。特に「週次でズレを検知」「滞留債権のルール化」「出来高請求・検収の標準化」「変更工事の未回収防止」など、建設業の資金化ボトルネックに直結した打ち手になっています。
一方で、金融機関が稟議化するには、依頼内容(長期化額・期間・返済原資)と、運転資金改善の“金額効果”が未確定で、与信判断に必要な定量が不足しています。DSCR 7.35の根拠(返済額の前提)や、短期5,018百万円が「恒常運転資金」「季節資金」「案件立替」のどれに相当するかの分解がないため、長期化の妥当額を決められません。また、売上債権150日という強い課題に対し、主要取引先別のサイト・検収条件・遅延実態(年齢表の分布)が本文にないため、120日への短縮可能性の検証がしづらいです。
加えて、建設業特有のリスク(大型案件の原価超過、追加変更の未契約、瑕疵・事故、下請法/支払条件、公共/民間比率、前受金の取り扱い、保証・ボンド等)について、現状のリスク量と統制(誰が止めるか)がもう一段必要です。ERP更改は中長期施策として良いですが、当面6か月の資金繰り安定に効く「現行システム/Excelでの暫定運用(責任者・締め日・会議体)」をより具体化すると実行確度が上がります。
総合すると、方向性は評価できるものの、稟議に足る「定量(いくら・いつ・どう返す)」と「裏付け資料の要点」が本文に織り込まれていないため、現状のままでは条件変更(長期化・枠設定)の決裁には不足です。本文を“銀行がそのまま稟議書に転記できる水準”に定量補強すれば通りやすくなります。
[[ ## critique ## ]]
REVISE
================================================================================
Step 9: ✍️ 提案書作成者 (Proposal Writer)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## analysis_report ## ]]
{analysis_report}
[[ ## financial_context ## ]]
{financial_context}
[[ ## debt_context ## ]]
{debt_context}
[[ ## company_name ## ]]
{company_name}
[[ ## prefecture ## ]]
{prefecture}
[[ ## industry ## ]]
{industry}
[[ ## feedback ## ]]
{feedback}
[[ ## reasoning ## ]]
{reasoning}
[[ ## proposal_draft ## ]]
{proposal_draft}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
銀行提出用の事業提案書を作成
[user] [[ ## analysis_report ## ]]
1) 運転資金の構造改革(最優先:6か月で資金繰りを安定化)
- 目標:売上債権回転150日→120日(次に90日)、仕入債務13.9日→30日目安、営業CFの黒字化基調を作る。
- 施策:出来高請求の締日前倒し/検収条件の明確化、前受・中間金比率の引上げ、遅延先の与信枠・督促ルール、でんさい・ファクタリングの選択的活用。協力会社は支払方法集約(振込日統一)とセットでサイト交渉し、共存共栄の代替条件(発注平準化、出来高連動の早期検収)を提示。
2) 借入ポートフォリオの是正(ロールオーバーリスク低減)
- 恒常運転資金相当を長期借入またはコミット枠へ置換し、「短期全振り」を解消。
- 金融機関にはDSCRの高さを根拠に、(a)長期化、(b)当座枠/コミット枠、(c)金利上昇耐性(固定/上限条項)を交渉。資金繰り表を週次運用し、受注・出来高・入金のズレを早期検知。
3) 利益率改善(12か月で+2pt、24か月で業界水準へ)
- 案件別採算の「見える化」を徹底(原価・外注費・間接費配賦・想定粗利の事前審査→実行予算→差異分析)。
- 追加変更工事は“口頭=未発生”扱いにし、変更契約・注文書・請求の標準手順を必須化(請求漏れを構造的に潰す)。
- スライド条項は「適用判断基準・交渉プロセス・証憑・承認」をテンプレ化し、民間案件の価格転嫁を再現性ある運用にする。
4) 「工程を守る会社」への転換(市場の勝ち筋:人手不足×2024年問題対応)
- ICT建機・ドローン・遠隔臨場・電子黒板/写真管理を、単発導入でなく“工程短縮KPI”で運用(例:測量工数▲X%、出来形書類作成▲Y%、手戻り件数▲Z%)。
- 「軽格単省(軽量化・規格化・単純化・省力化)」を施工計画・仮設・標準ディテールに落とし込み、提案書でTCO(総コスト)と工期確度を訴求して受注単価を守る。
5) 内部統制・ERP更改を“回収と採算の武器”にする(2025〜2026の投資を最大活用)
- ERPの要件定義で、工事原価・出来高・請求・入金消込・滞留債権のダッシュボードを必須化。例外処理(検収遅延、請求差戻し、入金不一致)のワークフローと責任者を固定。
- ERM/委員会は、上位リスク(原価高騰・人材)に「責任者・期限・KPI・残余リスク」を付与し、議事録と是正完了報告で証跡化(監督機能を実効化)。
6) 採用・育成の差別化(茨城の構造課題に正面対応)
- 完全週休2日・残業実績・ICTでの負担軽減・資格取得ルートを“採用マーケ”として可視化。テクノロジーセンターを早期戦力化のKPI(独り立ち期間、資格取得率、離職率)で運用。
- 協力会社ネットワークを「繁忙期の稼働確保」と「品質・安全」の両面で評価し、優良協力会社には発注平準化・単価改定ルール等でインセンティブ設計。
(実行順序の推奨)
- 0〜3か月:回収・請求の前倒し、滞留債権の重点回収、資金繰り週次化、支払条件交渉の着手
- 3〜6か月:短期借入の長期化/枠設定、出来高請求と検収の標準化、案件別採算の月次レビュー開始
- 6〜12か月:スライド条項・変更契約の型化、ICT/DXのKPI運用、採用訴求の刷新
- 12〜24か月:ERP本稼働で「回収と採算」を仕組み化、利益率の業界水準接近と自己資本の積み上げ
[[ ## financial_context ## ]]
{"summary": {"売上高": 12280657466, "営業利益": 674201636, "経常利益": 5814...
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
- 現状の最大論点は「利益は出ているのに営業CFがマイナス」であり、売上債権回転150日・仕入債務13.9日という運転資金構造が資金繰りを不安定化させているため、まず6か月で回収・請求・検収の前倒しと支払条件是正で営業CFを黒字基調へ転換する。
- 借入は短期5,018百万円に偏り、ロールオーバーリスクが高い。一方DSCR 7.35、EBITDA 831百万円と返済余力は高いため、恒常運転資金相当を長期化またはコミット枠化し、短期全振りを解消する提案が金融機関に合理的。
- 収益性は営業利益率約5.5%で、ベンチマーク平均(約9.8%)に未達。案件別採算の見える化、変更工事の契約・請求の型化、スライド条項の運用標準化により、12か月で+2pt、24か月で業界水準接近を狙う。
- 2024年問題・人手不足下では「工程を守る会社」への転換が受注単価維持の鍵。ICT/DXを“工程短縮KPI”で運用し、ERP更改も「回収と採算」の武器にして内部統制と収益改善を同時に実現する。
[[ ## proposal_draft ## ]]
# 銀行提出用 事業提案書(資金繰り安定化・借入是正・収益力強化)
**提出先**:取引金融機関 各位
**提出者**:株式会社12044
**所在地**:茨城県
**業種**:総合建設・土木
**目的**:①6か月で資金繰りを安定化、②短期偏重の借入構造を是正、③利益率を24か月で業界水準へ近づけ、継続的な返済能力と財務健全性を高める。
---
## 1. 会社概要・現状認識(サマリー)
### 1-1. 業績・財務の概況(直近)
- 売上高:**12,280百万円**
- 営業利益:**674百万円**(営業利益率 **約5.5%**)
- 経常利益:**581百万円**
- 当期純利益:**415百万円**
- 総資産:**9,311百万円**/純資産:**1,135百万円**
- 営業CF:**▲149百万円**(利益計上に対し運転資金増が先行)
- 従業員:**159名**
### 1-2. 運転資金・回転日数の課題
- 売上債権回転日数:**150日**(長期化)
- 棚卸資産回転日数:**約20日**
- 仕入債務回転日数:**13.9日**(支払が早い)
> 利益は出ている一方、回収サイトが長く支払サイトが短い構造により、運転資金負担が大きく、営業CFがマイナス化。
### 1-3. 借入構造の課題と返済余力
- 短期借入:**5,018百万円**/長期借入:**0**
- EBITDA:**831百万円**
- DSCR:**7.35**(返済余力は高いが、短期偏重でロールオーバーリスクが高い)
---
## 2. 基本方針(金融機関向けコミットメント)
当社は以下を最優先で実行し、資金繰り安定と財務体質改善を進めます。
1) **6か月で資金繰りを安定化(営業CFを黒字基調へ)**
2) **短期偏重の借入を是正し、ロールオーバーリスクを低減**
3) **12か月で利益率+2pt、24か月で業界水準へ接近**
4) **「工程を守る会社」へ転換し、受注単価と施工能力を強化**
5) **ERP/内部統制を“回収と採算の武器”として定着**
---
## 3. 施策①:運転資金の構造改革(最優先:0〜6か月)
### 3-1. 数値目標(KPI)
- 売上債権回転:**150日 → 120日(次に90日)**
- 仕入債務回転:**13.9日 → 30日目安**
- 営業CF:**黒字基調の定着(週次管理)**
### 3-2. 実行施策
**(1) 請求・検収の前倒し(出来高の早期資金化)**
- 出来高請求の締日前倒し、請求頻度の増加(可能な案件は月2回等)
- 検収条件の明確化(検収遅延の論点を事前に潰す)
- 前受金・中間金比率の引上げ(契約条件の標準化)
**(2) 滞留債権の重点回収(与信・督促ルールの明文化)**
- 遅延先の与信枠設定、督促の期限・手段(電話→文書→上長交渉)をルール化
- 入金消込の迅速化(未消込・相違の即日エスカレーション)
**(3) 支払条件の是正(協力会社との共存共栄型交渉)**
- 支払方法の集約(振込日統一)とセットでサイト交渉
- 代替条件提示:発注平準化、出来高連動の早期検収、協力会社の稼働計画の安定化
**(4) 資金化手段の選択的活用**
- でんさい、ファクタリング等を「特定案件・特定期間」に限定して活用(コストと効果を可視化)
### 3-3. 管理体制(週次資金繰り)
- 週次資金繰り表を運用し、**受注・出
...(truncated)
================================================================================
Step 10: 👀 銀行支店長 (Reviewer)
================================================================================
【 📥 入力データ (Input Context) 】
[[ ## proposal_draft ## ]]
{proposal_draft}
[[ ## reasoning ## ]]
{reasoning}
[[ ## critique ## ]]
{critique}
[[ ## completed ## ]]
In adhering to this structure, your objective is:
銀行支店長(審査役)
[user] [[ ## proposal_draft ## ]]
# 銀行提出用 事業提案書(資金繰り安定化・借入是正・収益力強化)
**提出先**:取引金融機関 各位
**提出者**:株式会社12044
**所在地**:茨城県
**業種**:総合建設・土木
**目的**:①6か月で資金繰りを安定化、②短期偏重の借入構造を是正、③利益率を24か月で業界水準へ近づけ、継続的な返済能力と財務健全性を高める。
---
## 1. 会社概要・現状認識(サマリー)
### 1-1. 業績・財務の概況(直近)
- 売上高:**12,280百万円**
- 営業利益:**674百万円**(営業利益率 **約5.5%**)
- 経常利益:**581百万円**
- 当期純利益:**415百万円**
- 総資産:**9,311百万円**/純資産:**1,135百万円**
- 営業CF:**▲149百万円**(利益計上に対し運転資金増が先行)
- 従業員:**159名**
### 1-2. 運転資金・回転日数の課題
- 売上債権回転日数:**150日**(長期化)
- 棚卸資産回転日数:**約20日**
- 仕入債務回転日数:**13.9日**(支払が早い)
> 利益は出ている一方、回収サイトが長く支払サイトが短い構造により、運転資金負担が大きく、営業CFがマイナス化。
### 1-3. 借入構造の課題と返済余力
- 短期借入:**5,018百万円**/長期借入:**0**
- EBITDA:**831百万円**
- DSCR:**7.35**(返済余力は高いが、短期偏重でロールオーバーリスクが高い)
---
## 2. 基本方針(金融機関向けコミットメント)
当社は以下を最優先で実行し、資金繰り安定と財務体質改善を進めます。
1) **6か月で資金繰りを安定化(営業CFを黒字基調へ)**
2) **短期偏重の借入を是正し、ロールオーバーリスクを低減**
3) **12か月で利益率+2pt、24か月で業界水準へ接近**
4) **「工程を守る会社」へ転換し、受注単価と施工能力を強化**
5) **ERP/内部統制を“回収と採算の武器”として定着**
---
## 3. 施策①:運転資金の構造改革(最優先:0〜6か月)
### 3-1. 数値目標(KPI)
- 売上債権回転:**150日 → 120日(次に90日)**
- 仕入債務回転:**13.9日 → 30日目安**
- 営業CF:**黒字基調の定着(週次管理)**
### 3-2. 実行施策
**(1) 請求・検収の前倒し(出来高の早期資金化)**
- 出来高請求の締日前倒し、請求頻度の増加(可能な案件は月2回等)
- 検収条件の明確化(検収遅延の論点を事前に潰す)
- 前受金・中間金比率の引上げ(契約条件の標準化)
**(2) 滞留債権の重点回収(与信・督促ルールの明文化)**
- 遅延先の与信枠設定、督促の期限・手段(電話→文書→上長交渉)をルール化
- 入金消込の迅速化(未消込・相違の即日エスカレーション)
**(3) 支払条件の是正(協力会社との共存共栄型交渉)**
- 支払方法の集約(振込日統一)とセットでサイト交渉
- 代替条件提示:発注平準化、出来高連動の早期検収、協力会社の稼働計画の安定化
**(4) 資金化手段の選択的活用**
- でんさい、ファクタリング等を「特定案件・特定期間」に限定して活用(コストと効果を可視化)
### 3-3. 管理体制(週次資金繰り)
- 週次資金繰り表を運用し、**受注・出来高・請求・入金のズレ**を早期検知
- 重点管理リスト:①検収遅延、②請求差戻し、③入金遅延、④高額案件の出来高進捗
---
## 4. 施策②:借入ポートフォリオ是正(3〜6か月)
### 4-1. 方針
- **恒常的に必要な運転資金相当を長期借入またはコミット枠へ置換**し、「短期全振り」を解消します。
### 4-2. 金融機関への依頼事項(協議テーマ)
- (a) 短期借入の一部を**長期化(分割返済)**
- (b) **当座貸越枠/コミットメントライン**の設定(季節資金・工事進捗の変動吸収)...
【 📄 最終出力 (Final Output) 】
[[ ## reasoning ## ]]
審査役(支店長)目線では、①現状課題の把握(回収サイト長期×支払サイト短期→営業CFマイナス)、②改善の方向性(回収前倒し・支払条件是正・週次資金繰り)、③借入是正の狙い(ロールオーバーリスク低減)が明確で、全体のストーリーは妥当です。特に「週次でズレを検知」「滞留債権のルール化」「出来高請求・検収の標準化」「変更工事の未回収防止」など、建設業の資金化ボトルネックに直結した打ち手になっています。
一方で、金融機関が稟議化するには、依頼内容(長期化額・期間・返済原資)と、運転資金改善の“金額効果”が未確定で、与信判断に必要な定量が不足しています。DSCR 7.35の根拠(返済額の前提)や、短期5,018百万円が「恒常運転資金」「季節資金」「案件立替」のどれに相当するかの分解がないため、長期化の妥当額を決められません。また、売上債権150日という強い課題に対し、主要取引先別のサイト・検収条件・遅延実態(年齢表の分布)が本文にないため、120日への短縮可能性の検証がしづらいです。
加えて、建設業特有のリスク(大型案件の原価超過、追加変更の未契約、瑕疵・事故、下請法/支払条件、公共/民間比率、前受金の取り扱い、保証・ボンド等)について、現状のリスク量と統制(誰が止めるか)がもう一段必要です。ERP更改は中長期施策として良いですが、当面6か月の資金繰り安定に効く「現行システム/Excelでの暫定運用(責任者・締め日・会議体)」をより具体化すると実行確度が上がります。
総合すると、方向性は評価できるものの、稟議に足る「定量(いくら・いつ・どう返す)」と「裏付け資料の要点」が本文に織り込まれていないため、現状のままでは条件変更(長期化・枠設定)の決裁には不足です。本文を“銀行がそのまま稟議書に転記できる水準”に定量補強すれば通りやすくなります。
[[ ## critique ## ]]
REVISE
reference
Discussion