CODE · 2.4 KB
src/deck-model.js
Workspace snapshot · 09/04 13:45
export const initialSlides = [
{ id: 1, type: "cover", eyebrow: "AI SLIDE LAB / SALES", title: "商談準備を、\n30分から5分へ。", body: "散らばったメモを、次の商談で直せる提案ストーリーへ。", claim: "作るのは画像ではなく、使い続けられる資料。", source: "営業ヒアリングメモ" },
{ id: 2, type: "tension", eyebrow: "01 / TENSION", title: "話す内容より、\n“整える作業”に時間が消える。", body: "情報の優先順位、ページごとの主張、レイアウト調整。会議直前の手作業を分解します。", claim: "問題は文章量ではなく、判断できる順序がないこと。", source: "課題メモ 1–3" },
{ id: 3, type: "process", eyebrow: "02 / SYSTEM", title: "入力理解から\nレンダリング確認まで一本に。", body: "読者と目的を固定し、1ページ1主張で構成。編集可能なまま、全ページを検査します。", claim: "出力後に直すのではなく、出力前に崩れを見つける。", source: "プロダクト仕様 v0.1" },
{ id: 4, type: "contrast", eyebrow: "03 / DIFFERENCE", title: "きれいな初稿ではなく、\n使い続けられる正本を。", body: "根拠を保持し、ページ単位で修正でき、PPTX / PDF / Previewを同時に検証します。", claim: "編集可能性とQA結果も、成果物の一部です。", source: "競合比較メモ" },
{ id: 5, type: "proof", eyebrow: "04 / PILOT", title: "まず3件の実資料で、\n“そのまま直せるか”を測る。", body: "所要時間、修正ページ数、文字切れ、商談での再利用を観測。仮説と事実を分けて更新します。", claim: "成功条件:文字切れ0、主要要素がすべて編集可能。", source: "検証計画" },
{ id: 6, type: "cta", eyebrow: "NEXT ACTION", title: "次の1件を、\n検証資料にしてください。", body: "商談メモ1つから、編集可能PPTXと全ページPreviewを返します。", claim: "実資料1件 / フィードバック15分", source: "オファー案" },
];
export function reviseSlide(slide, instruction) {
const note = String(instruction || "").trim();
if (!note) return slide;
return { ...slide, revision: note, body: `${slide.body.replace(/。?$/u, "")}。${note}`.slice(0, 128) };
}
export function progressFor(step) {
return Math.max(1, Math.min(4, Number(step) || 1)) * 25;
}