tavant-docs-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/assets/bg-agenda-data.jpeg +0 -0
  3. package/assets/bg-breaker-brain.jpeg +0 -0
  4. package/assets/bg-breaker-cloud.jpeg +0 -0
  5. package/assets/bg-breaker-lines.jpeg +0 -0
  6. package/assets/bg-thankyou.jpeg +0 -0
  7. package/assets/bg-title-tech.jpeg +0 -0
  8. package/assets/cr-image1.png +0 -0
  9. package/assets/decor-cubes.png +0 -0
  10. package/assets/footer-bar.png +0 -0
  11. package/assets/tavant-logo-orange.png +0 -0
  12. package/assets/tavant-logo-small.png +0 -0
  13. package/assets/tavant-logo-white-sm.png +0 -0
  14. package/assets/tavant-logo-white.png +0 -0
  15. package/assets/tavant-template.potx +0 -0
  16. package/brand.js +21 -0
  17. package/index.js +172 -0
  18. package/knowledge/tavant-company.md +181 -0
  19. package/knowledge/tavant-template.md +61 -0
  20. package/package.json +32 -0
  21. package/templates/contract/builders.js +317 -0
  22. package/templates/contract/register.js +213 -0
  23. package/templates/contract/sections.js +73 -0
  24. package/templates/cr/builders.js +286 -0
  25. package/templates/cr/register.js +189 -0
  26. package/templates/cr/sections.js +55 -0
  27. package/templates/msa/builders.js +480 -0
  28. package/templates/msa/register.js +185 -0
  29. package/templates/msa/sections.js +86 -0
  30. package/templates/nda/builders.js +277 -0
  31. package/templates/nda/register.js +185 -0
  32. package/templates/nda/sections.js +73 -0
  33. package/templates/pptx/builders.js +712 -0
  34. package/templates/pptx/layouts.js +168 -0
  35. package/templates/pptx/register.js +363 -0
  36. package/templates/sow/builders.js +294 -0
  37. package/templates/sow/register.js +183 -0
  38. package/templates/sow/sections.js +76 -0
  39. package/test-custom-slide.js +79 -0
  40. package/test-e2e.js +190 -0
  41. package/test-msa.js +48 -0
  42. package/test-nda-cr.js +88 -0
  43. package/test-pptx.js +93 -0
package/test-e2e.js ADDED
@@ -0,0 +1,190 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * End-to-end test for Tavant Docs MCP Server.
5
+ * Tests all 3 document types: PPTX, Contract, SOW.
6
+ * Run: node test-e2e.js
7
+ */
8
+
9
+ const { Client } = require("@modelcontextprotocol/sdk/client/index.js");
10
+ const { StdioClientTransport } = require("@modelcontextprotocol/sdk/client/stdio.js");
11
+ const path = require("path");
12
+
13
+ const SERVER_PATH = path.join(__dirname, "index.js");
14
+
15
+ async function main() {
16
+ console.log("=== Tavant Docs MCP — End-to-End Test ===\n");
17
+
18
+ const transport = new StdioClientTransport({ command: "node", args: [SERVER_PATH] });
19
+ const client = new Client({ name: "test-client", version: "1.0.0" });
20
+ await client.connect(transport);
21
+ console.log("Server connected.\n");
22
+
23
+ // List all tools
24
+ const tools = await client.listTools();
25
+ console.log(`Found ${tools.tools.length} tools: ${tools.tools.map((t) => t.name).join(", ")}\n`);
26
+
27
+ // ─── TEST 1: PPTX ──────────────────────────────────────────────────
28
+ console.log("━━━ TEST 1: PowerPoint Presentation ━━━\n");
29
+
30
+ const pres = await client.callTool({ name: "pptx_create", arguments: { title: "Test Deck", author: "Tester" } });
31
+ const presId = JSON.parse(pres.content[0].text).presentation_id;
32
+ console.log(`Created presentation: ${presId}`);
33
+
34
+ for (const s of [
35
+ { layout: "title_cover", data: { title: "Test Deck", subtitle: "E2E Test" } },
36
+ { layout: "agenda", data: { title: "Agenda", items: ["Item 1", "Item 2", "Item 3"] } },
37
+ { layout: "bullet_content", data: { title: "Key Points", bullets: ["Point A", "Point B"] } },
38
+ { layout: "stats_kpis", data: { title: "Metrics", stats: [{ value: "99%", label: "Uptime" }, { value: "50K", label: "Users" }] } },
39
+ { layout: "thank_you", data: { title: "Thanks", contact_name: "Test User", contact_email: "test@tavant.com" } },
40
+ ]) {
41
+ await client.callTool({ name: "pptx_add_slide", arguments: { presentation_id: presId, ...s } });
42
+ console.log(` + ${s.layout}`);
43
+ }
44
+
45
+ const pptxOut = path.join(__dirname, "output", "TEST_deck.pptx");
46
+ await client.callTool({ name: "pptx_export", arguments: { presentation_id: presId, output_path: pptxOut } });
47
+ console.log(`Exported: ${pptxOut}\n`);
48
+
49
+ // ─── TEST 2: Contract ───────────────────────────────────────────────
50
+ console.log("━━━ TEST 2: Contract Document ━━━\n");
51
+
52
+ const con = await client.callTool({
53
+ name: "contract_create",
54
+ arguments: { contract_title: "Master Services Agreement", client_name: "Acme Corp", effective_date: "March 15, 2026" },
55
+ });
56
+ const conId = JSON.parse(con.content[0].text).contract_id;
57
+ console.log(`Created contract: ${conId}`);
58
+
59
+ for (const s of [
60
+ { section: "cover_page", data: { contract_number: "TAV-2026-001" } },
61
+ { section: "parties", data: { client_address: "123 Main St, New York, NY", tavant_entity: "Tavant Technologies Inc." } },
62
+ { section: "scope_of_work", data: {
63
+ services: ["AI/ML Platform Development", "Data Pipeline Engineering", "MLOps Setup"],
64
+ deliverables: ["AI Platform v1.0", "Data Lake Architecture", "CI/CD Pipeline for ML Models"],
65
+ exclusions: ["Hardware procurement", "Third-party license costs"],
66
+ }},
67
+ { section: "commercial_terms", data: { total_value: "500,000", currency: "USD", payment_terms: "Net 30" } },
68
+ { section: "confidentiality", data: { confidentiality_period: "3 years" } },
69
+ { section: "ip_rights", data: {} },
70
+ { section: "termination", data: { notice_period: "60 days" } },
71
+ { section: "liability", data: { liability_cap: "Not to exceed total contract value" } },
72
+ { section: "general_provisions", data: { governing_law: "State of California" } },
73
+ { section: "signatures", data: { client_signatory: "John Smith", client_title: "CTO", tavant_signatory: "Jane Doe", tavant_title: "VP Delivery" } },
74
+ ]) {
75
+ await client.callTool({ name: "contract_add_section", arguments: { contract_id: conId, ...s } });
76
+ console.log(` + ${s.section}`);
77
+ }
78
+
79
+ const conOut = path.join(__dirname, "output", "TEST_contract.docx");
80
+ await client.callTool({ name: "contract_export", arguments: { contract_id: conId, output_path: conOut } });
81
+ console.log(`Exported: ${conOut}\n`);
82
+
83
+ // ─── TEST 3: SOW ───────────────────────────────────────────────────
84
+ console.log("━━━ TEST 3: Statement of Work ━━━\n");
85
+
86
+ const sowRes = await client.callTool({
87
+ name: "sow_create",
88
+ arguments: { project_name: "AI Chatbot Platform", client_name: "GlobalBank Inc", effective_date: "April 1, 2026" },
89
+ });
90
+ const sowId = JSON.parse(sowRes.content[0].text).sow_id;
91
+ console.log(`Created SOW: ${sowId}`);
92
+
93
+ for (const s of [
94
+ { section: "cover_page", data: { sow_number: "SOW-2026-042" } },
95
+ { section: "overview", data: {
96
+ background: "GlobalBank requires an AI-powered chatbot to handle 80% of tier-1 customer support queries.",
97
+ objectives: ["Reduce support ticket volume by 60%", "Achieve 90% customer satisfaction", "Go live within 6 months"],
98
+ success_criteria: ["Chatbot handles 80% of tier-1 queries", "Average response time under 3 seconds", "CSAT score above 4.2/5"],
99
+ }},
100
+ { section: "scope", data: {
101
+ work_packages: [
102
+ { name: "NLP Model Development", description: "Fine-tune LLM for banking domain" },
103
+ { name: "Integration Layer", description: "Connect chatbot to core banking APIs" },
104
+ { name: "Admin Dashboard", description: "Build monitoring and training interface" },
105
+ ],
106
+ in_scope: ["Chatbot development", "API integration", "Testing", "Deployment to production"],
107
+ out_of_scope: ["Infrastructure hosting costs", "Core banking system modifications"],
108
+ }},
109
+ { section: "approach", data: {
110
+ methodology: "Agile Scrum with 2-week sprints",
111
+ technologies: ["Python", "LangChain", "React", "PostgreSQL", "AWS"],
112
+ tools: ["Jira", "Confluence", "GitHub", "AWS SageMaker"],
113
+ }},
114
+ { section: "deliverables", data: {
115
+ deliverables: [
116
+ { name: "NLP Model v1", description: "Domain-trained chatbot model", acceptance_criteria: "90% accuracy on test dataset" },
117
+ { name: "Chatbot API", description: "REST API for chatbot interactions", acceptance_criteria: "All endpoints pass integration tests" },
118
+ { name: "Admin Dashboard", description: "Web UI for monitoring and retraining", acceptance_criteria: "UAT sign-off from client" },
119
+ ],
120
+ }},
121
+ { section: "timeline", data: {
122
+ phases: [
123
+ { name: "Discovery & Design", duration: "4 weeks", deliverables: ["Requirements doc", "Architecture design"] },
124
+ { name: "Development Sprint 1-3", duration: "6 weeks", deliverables: ["NLP Model v1", "Chatbot API"] },
125
+ { name: "Development Sprint 4-6", duration: "6 weeks", deliverables: ["Admin Dashboard", "Integration testing"] },
126
+ { name: "UAT & Go-Live", duration: "4 weeks", deliverables: ["Production deployment", "Handover documentation"] },
127
+ ],
128
+ }},
129
+ { section: "team", data: {
130
+ roles: [
131
+ { role: "Project Manager", count: 1, responsibilities: "Overall delivery, client communication" },
132
+ { role: "ML Engineer", count: 2, responsibilities: "NLP model development and fine-tuning" },
133
+ { role: "Full Stack Developer", count: 2, responsibilities: "API and dashboard development" },
134
+ { role: "QA Engineer", count: 1, responsibilities: "Testing and quality assurance" },
135
+ ],
136
+ }},
137
+ { section: "pricing", data: {
138
+ pricing_model: "Fixed Price",
139
+ currency: "USD",
140
+ total_estimate: "380,000",
141
+ rate_card: [
142
+ { role: "Project Manager", rate: "150" },
143
+ { role: "ML Engineer", rate: "175" },
144
+ { role: "Full Stack Developer", rate: "150" },
145
+ { role: "QA Engineer", rate: "120" },
146
+ ],
147
+ }},
148
+ { section: "assumptions", data: {
149
+ assumptions: ["Client provides access to existing support ticket data", "AWS environment is provisioned by client"],
150
+ dependencies: ["Core banking API documentation available by Week 2", "Client SME available for weekly reviews"],
151
+ risks: [
152
+ { risk: "Data quality issues in training data", mitigation: "Early data audit in discovery phase" },
153
+ { risk: "API rate limits on core banking", mitigation: "Implement caching and fallback mechanisms" },
154
+ ],
155
+ }},
156
+ { section: "governance", data: {
157
+ meetings: [
158
+ { type: "Daily Standup", frequency: "Daily", participants: "Dev team" },
159
+ { type: "Sprint Review", frequency: "Bi-weekly", participants: "All stakeholders" },
160
+ { type: "Steering Committee", frequency: "Monthly", participants: "Leadership" },
161
+ ],
162
+ reporting: "Weekly status report via email every Friday",
163
+ escalation_path: "PM → Delivery Head → VP Engineering",
164
+ }},
165
+ { section: "acceptance", data: { review_period: "5 business days" } },
166
+ { section: "signatures", data: { client_signatory: "Robert Chen", client_title: "SVP Technology", tavant_signatory: "Priya Sharma", tavant_title: "VP Delivery" } },
167
+ ]) {
168
+ await client.callTool({ name: "sow_add_section", arguments: { sow_id: sowId, ...s } });
169
+ console.log(` + ${s.section}`);
170
+ }
171
+
172
+ const sowOut = path.join(__dirname, "output", "TEST_sow.docx");
173
+ await client.callTool({ name: "sow_export", arguments: { sow_id: sowId, output_path: sowOut } });
174
+ console.log(`Exported: ${sowOut}\n`);
175
+
176
+ // ─── Done ──────────────────────────────────────────────────────────
177
+ console.log("━━━ ALL TESTS PASSED ━━━\n");
178
+ console.log("Output files:");
179
+ console.log(` PPTX: ${pptxOut}`);
180
+ console.log(` Contract: ${conOut}`);
181
+ console.log(` SOW: ${sowOut}`);
182
+
183
+ await client.close();
184
+ process.exit(0);
185
+ }
186
+
187
+ main().catch((err) => {
188
+ console.error("TEST FAILED:", err);
189
+ process.exit(1);
190
+ });
package/test-msa.js ADDED
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test: MSA (Professional Services Agreement) template — all 13 sections
4
+ */
5
+ const { Client } = require("@modelcontextprotocol/sdk/client/index.js");
6
+ const { StdioClientTransport } = require("@modelcontextprotocol/sdk/client/stdio.js");
7
+ const path = require("path");
8
+
9
+ (async () => {
10
+ console.log("=== MSA Template Test ===\n");
11
+ const transport = new StdioClientTransport({ command: "node", args: [path.join(__dirname, "index.js")] });
12
+ const client = new Client({ name: "test", version: "1.0.0" });
13
+ await client.connect(transport);
14
+
15
+ const res = await client.callTool({ name: "msa_create", arguments: { customer_name: "Global Gaming Inc.", effective_date: "March 15, 2026" } });
16
+ const msaId = JSON.parse(res.content[0].text).msa_id;
17
+ console.log("Created MSA:", msaId);
18
+
19
+ const sections = [
20
+ { section: "cover_page", data: {} },
21
+ { section: "preamble", data: { customer_address: "500 Game Way, San Francisco, CA 94105" } },
22
+ { section: "definitions", data: {} },
23
+ { section: "professional_services", data: {} },
24
+ { section: "acceptance_and_fees", data: {} },
25
+ { section: "ownership", data: {} },
26
+ { section: "confidentiality", data: {} },
27
+ { section: "warranties", data: {} },
28
+ { section: "indemnification", data: {} },
29
+ { section: "limitation_of_liability", data: {} },
30
+ { section: "term_and_termination", data: {} },
31
+ { section: "general_provisions", data: {} },
32
+ { section: "signatures", data: { customer_signatory: "James Wilson", customer_title: "CEO", tavant_signatory: "Sami Muneer", tavant_title: "CEO" } },
33
+ ];
34
+
35
+ for (const s of sections) {
36
+ const r = await client.callTool({ name: "msa_add_section", arguments: { msa_id: msaId, section: s.section, data: s.data } });
37
+ const info = JSON.parse(r.content[0].text);
38
+ console.log(` Section ${info.total_sections}: ${s.section}`);
39
+ }
40
+
41
+ const outPath = path.join(__dirname, "output", "MSA_Test.docx");
42
+ await client.callTool({ name: "msa_export", arguments: { msa_id: msaId, output_path: outPath } });
43
+ console.log(`\nExported: ${outPath}`);
44
+ console.log(`Total sections: ${sections.length}`);
45
+
46
+ await client.close();
47
+ process.exit(0);
48
+ })().catch(e => { console.error("FAILED:", e); process.exit(1); });
package/test-nda-cr.js ADDED
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test: NDA + CR template modules
4
+ */
5
+ const { Client } = require("@modelcontextprotocol/sdk/client/index.js");
6
+ const { StdioClientTransport } = require("@modelcontextprotocol/sdk/client/stdio.js");
7
+ const path = require("path");
8
+
9
+ (async () => {
10
+ console.log("=== NDA + CR Template Test ===\n");
11
+ const transport = new StdioClientTransport({ command: "node", args: [path.join(__dirname, "index.js")] });
12
+ const client = new Client({ name: "test", version: "1.0.0" });
13
+ await client.connect(transport);
14
+
15
+ // ─── Test NDA ───────────────────────────────────────────
16
+ console.log("--- NDA ---");
17
+ const ndaRes = await client.callTool({ name: "nda_create", arguments: { company_name: "Acme Corp", effective_date: "March 13, 2026" } });
18
+ const ndaId = JSON.parse(ndaRes.content[0].text).nda_id;
19
+ console.log("Created NDA:", ndaId);
20
+
21
+ const ndaSections = [
22
+ { section: "cover_page", data: {} },
23
+ { section: "preamble", data: { company_address: "100 Innovation Drive, San Jose, CA 95134" } },
24
+ { section: "proprietary_information", data: {} },
25
+ { section: "protection", data: {} },
26
+ { section: "exclusions", data: {} },
27
+ { section: "rights", data: {} },
28
+ { section: "legends", data: {} },
29
+ { section: "general_terms", data: {} },
30
+ { section: "term", data: { term_years: "5", notice_days: "30" } },
31
+ { section: "entire_agreement", data: {} },
32
+ { section: "signatures", data: { company_signatory: "John Smith", company_title: "VP Engineering", tavant_signatory: "Jane Doe", tavant_title: "SVP Sales" } },
33
+ ];
34
+
35
+ for (const s of ndaSections) {
36
+ const r = await client.callTool({ name: "nda_add_section", arguments: { nda_id: ndaId, section: s.section, data: s.data } });
37
+ const info = JSON.parse(r.content[0].text);
38
+ console.log(` Section ${info.total_sections}: ${s.section}`);
39
+ }
40
+
41
+ const ndaOut = path.join(__dirname, "output", "NDA_Test.docx");
42
+ await client.callTool({ name: "nda_export", arguments: { nda_id: ndaId, output_path: ndaOut } });
43
+ console.log(`Exported: ${ndaOut}\n`);
44
+
45
+ // ─── Test CR ───────────────────────────────────────────
46
+ console.log("--- Change Request ---");
47
+ const crRes = await client.callTool({ name: "cr_create", arguments: { customer_name: "Global Gaming Inc.", project_name: "AI Customer Service Platform", co_number: "003" } });
48
+ const crId = JSON.parse(crRes.content[0].text).cr_id;
49
+ console.log("Created CR:", crId);
50
+
51
+ const crSections = [
52
+ { section: "cover_page", data: { date: "March 2026" } },
53
+ { section: "background", data: { sow_date: "January 15, 2025", msa_date: "December 1, 2024", extended_end_date: "September 30, 2026" } },
54
+ { section: "project_details", data: {
55
+ co_name: "Add Multi-Language Support",
56
+ co_effective_date: "April 1, 2026",
57
+ timeline_description: "The additional scope will be delivered over a 6-month period from April to September 2026.",
58
+ in_scope: [
59
+ { category: "Language Support", items: ["Japanese language model fine-tuning", "Korean language model fine-tuning", "Chinese (Simplified) language model fine-tuning"] },
60
+ { category: "Infrastructure", items: ["Multi-region deployment (APAC)", "Latency optimization for Asian markets"] },
61
+ ],
62
+ out_of_scope: ["Right-to-left language support (Arabic, Hebrew)", "Voice/speech-to-text in new languages", "Training data curation"],
63
+ assumptions: ["Customer provides language-specific QA resources", "Existing AI models support fine-tuning for target languages", "Customer provides sample training data for each language"],
64
+ }},
65
+ { section: "charges", data: { additional_cost: "$450,000", completion_date: "September 30, 2026" } },
66
+ { section: "invoicing", data: {
67
+ invoice_terms: ["50% upon CO execution", "25% upon mid-point delivery milestone", "25% upon final acceptance"],
68
+ bill_to_address: "Global Gaming Inc., 500 Game Way, Tokyo, Japan",
69
+ }},
70
+ { section: "sow_reference", data: {} },
71
+ { section: "counterparts", data: {} },
72
+ { section: "signatures", data: { customer_signatory: "Kenji Tanaka", customer_title: "CTO" } },
73
+ ];
74
+
75
+ for (const s of crSections) {
76
+ const r = await client.callTool({ name: "cr_add_section", arguments: { cr_id: crId, section: s.section, data: s.data } });
77
+ const info = JSON.parse(r.content[0].text);
78
+ console.log(` Section ${info.total_sections}: ${s.section}`);
79
+ }
80
+
81
+ const crOut = path.join(__dirname, "output", "CR_Test.docx");
82
+ await client.callTool({ name: "cr_export", arguments: { cr_id: crId, output_path: crOut } });
83
+ console.log(`Exported: ${crOut}\n`);
84
+
85
+ console.log("=== All tests passed ===");
86
+ await client.close();
87
+ process.exit(0);
88
+ })().catch(e => { console.error("FAILED:", e); process.exit(1); });
package/test-pptx.js ADDED
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Quick test: Generate a presentation using ALL 23 layouts from the real corporate template.
4
+ */
5
+ const { Client } = require("@modelcontextprotocol/sdk/client/index.js");
6
+ const { StdioClientTransport } = require("@modelcontextprotocol/sdk/client/stdio.js");
7
+ const path = require("path");
8
+
9
+ (async () => {
10
+ console.log("=== PPTX Corporate Template Test ===\n");
11
+ const transport = new StdioClientTransport({ command: "node", args: [path.join(__dirname, "index.js")] });
12
+ const client = new Client({ name: "test", version: "1.0.0" });
13
+ await client.connect(transport);
14
+
15
+ const pres = await client.callTool({ name: "pptx_create", arguments: { title: "Tavant AI Strategy 2026", author: "Paresh" } });
16
+ const pid = JSON.parse(pres.content[0].text).presentation_id;
17
+
18
+ const slides = [
19
+ { layout: "title_cover", data: { title: "TAVANT AI STRATEGY\nQ4 2026", subtitle: "Transforming Enterprise with Generative AI", date: "December 2026" } },
20
+ { layout: "agenda", data: { items: ["AI Platform Overview", "Key Achievements", "Strategic Priorities", "Product Roadmap", "Investment", "Q&A"] } },
21
+ { layout: "breaker_ai", data: { title: "AI PLATFORM OVERVIEW", key_points: ["75+ Data Scientists", "Multi-LLM Architecture", "Enterprise-grade Security"] } },
22
+ { layout: "breaker_cloud", data: { title: "CLOUD TRANSFORMATION" } },
23
+ { layout: "breaker_abstract", data: { title: "DATA & ANALYTICS" } },
24
+ { layout: "content", data: { title: "Our AI Platform Capabilities", body: ["End-to-end AI/ML lifecycle management", "Custom model training and fine-tuning", "RAG pipelines for enterprise knowledge", "Multi-modal AI support", "Built-in MLOps for continuous deployment"] } },
25
+ { layout: "title_subtitle_content", data: { title: "GenAI Services Portfolio", subtitle: "Enterprise-grade AI solutions across verticals", body: ["Customer Service Agents — automated CS for gaming, mortgage, and agriculture", "Supply Chain Agents — demand forecasting, workforce orchestration", "Productivity Assistants — ad sales, loan officer, field service", "Enterprise Function Agents — finance, HR, IT automation"] } },
26
+ { layout: "content_dark", data: { title: "Why Agentic AI Matters", body: ["Agents autonomously execute multi-step workflows", "Reduce manual processing by 85%", "10,000+ claims processed daily with 92% STP rate", "Average resolution time: 5 days → 4 hours"] } },
27
+ { layout: "title_subtitle", data: { title: "Q3 KEY ACHIEVEMENTS", subtitle: "Delivering measurable impact across all practice areas" } },
28
+ { layout: "two_column", data: { title: "Strategic Priorities", subtitle: "Balanced investment across growth and efficiency", left_content: ["Scale AI platform to 100+ models", "Enterprise RAG for all clients", "AI Agent framework v1.0"], right_content: ["50% inference cost reduction", "SOC2 & HIPAA AI governance", "AWS, Azure, GCP partnerships"] } },
29
+ { layout: "title_only", data: { title: "DETAILED ARCHITECTURE" } },
30
+ { layout: "title_only_dark", data: { title: "COMPETITIVE LANDSCAPE" } },
31
+ { layout: "blank", data: {} },
32
+ { layout: "multi_case_study", data: { title: "CLIENT SUCCESS STORIES", subtitle: "Proven delivery across industries", columns: [
33
+ { title: "Global Gaming", description: "Customer service automation handling 50K+ tickets/month with 90% resolution rate" },
34
+ { title: "US Mortgage", description: "End-to-end agentic orchestration for loan origination reducing processing by 70%" },
35
+ { title: "Agriculture", description: "Yield forecasting and workforce orchestration for world's largest palm oil producer" },
36
+ { title: "Media", description: "Ad sales assistant with campaign optimization driving 40% revenue uplift" },
37
+ ] } },
38
+ { layout: "image_content_a", data: { title: "AIgnite™ Platform", subtitle: "Enterprise AI Accelerator", body: ["Pre-built GenAI agents for rapid deployment", "Multi-LLM & advanced retrieval", "Enterprise security & governance", "Dynamic orchestration for complex workflows"], image_description: "AIgnite Platform Dashboard" } },
39
+ { layout: "image_content_b", data: { title: "DATA TRANSFORMATION", subtitle: "Migration & Modernization", topic_1: { title: "Cloud Migration", description: "Re-platform legacy to Snowflake, Databricks, Azure Synapse" }, topic_2: { title: "Data Ops", description: "Real-time observability, auto-healing, cost optimization" }, body: "400+ associates, 100+ certifications, 30+ major implementations across Mortgage, Fintech, Media, Travel, Manufacturing" } },
40
+ { layout: "image_grid", data: { title: "CORE CAPABILITIES", subtitle: "End-to-end Digital, AI, Data & Platform", grid_items: [
41
+ { title: "Digital Engineering", description: "GenAI-accelerated development" },
42
+ { title: "Agentic AI", description: "Multi-agent orchestration" },
43
+ { title: "Data Science", description: "AI/ML models & cognitive solutions" },
44
+ { title: "Data Platform", description: "Cloud modernization & governance" },
45
+ { title: "AI Platform", description: "Industry-specific accelerators" },
46
+ { title: "AIgnite™", description: "Enterprise AI transformation" },
47
+ ] } },
48
+ { layout: "three_column_images", data: { title: "TECHNOLOGY PARTNERS", subtitle: "Best-in-class ecosystem", columns: [
49
+ { title: "Cloud & Infra", description: "AWS, Azure, GCP, Databricks, Snowflake" },
50
+ { title: "AI & ML", description: "TensorFlow, PyTorch, SageMaker, Bedrock, Vertex AI" },
51
+ { title: "Agent Frameworks", description: "LangChain, LangGraph, CrewAI, AutoGen, Atomic Agents" },
52
+ ] } },
53
+ { layout: "chart", data: { title: "REVENUE GROWTH", subtitle: "AI Services revenue trajectory", body: ["AI services growing 270% YoY", "3 new enterprise deals closing in Q4", "Platform licensing model launching Q1 2027"], takeaway: "Projected $7.8M Q4 revenue — highest quarter ever", chart_data: { labels: ["Q1", "Q2", "Q3", "Q4 Proj"], values: [2.1, 3.4, 5.2, 7.8] } } },
54
+ { layout: "timeline_vertical", data: { title: "IMPACT METRICS", subtitle: "AIOps for Data Platforms — 90-day results", body: "Cut MTTR 50-70% and raise SLA adherence to 90-95% in ≤90 days", blocks: [
55
+ { label: "MTTR Reduction", value: "50-70%", description: "Auto-triage + safe actions" },
56
+ { label: "SLA Adherence", value: "90-95%", description: "Predictive breach alerts" },
57
+ { label: "DQ Incidents", value: "↓ 40-60%", description: "Proactive drift checks" },
58
+ ], year_highlight: "2026" } },
59
+ { layout: "timeline_horizontal", data: { title: "PRODUCT ROADMAP", subtitle: "Key milestones through 2027", milestones: [
60
+ { date: "Oct '26", label: "AI Agent Framework v1.0" },
61
+ { date: "Nov '26", label: "Enterprise RAG GA" },
62
+ { date: "Dec '26", label: "Multi-modal AI" },
63
+ { date: "Jan '27", label: "AI Governance Dashboard" },
64
+ { date: "Feb '27", label: "Partner Marketplace" },
65
+ { date: "Mar '27", label: "Self-service AI Studio" },
66
+ { date: "Apr '27", label: "Edge AI Support" },
67
+ ] } },
68
+ { layout: "multi_quote", data: { title: "CLIENT TESTIMONIALS", subtitle: "What our partners say", quotes: [
69
+ { company: "Global Gaming Co", title: "VP Engineering", text: "Tavant's AI agents transformed our customer service — 90% auto-resolution rate within 3 months." },
70
+ { company: "US Mortgage Leader", title: "CTO", text: "The agentic orchestration platform reduced our loan processing time by 70%. Game-changing." },
71
+ { company: "AgriTech Giant", title: "Head of Digital", text: "Workforce orchestration and yield forecasting delivered 25% productivity improvement in first season." },
72
+ ] } },
73
+ { layout: "thank_you", data: { contact_email: "hello@tavant.com", contact_website: "www.tavant.com", contact_phone: "+1-866-9-TAVANT" } },
74
+ ];
75
+
76
+ for (const s of slides) {
77
+ const r = await client.callTool({ name: "pptx_add_slide", arguments: { presentation_id: pid, layout: s.layout, data: s.data } });
78
+ const info = JSON.parse(r.content[0].text);
79
+ if (info.message) {
80
+ console.log(` Slide ${info.slide_number}: ${s.layout}`);
81
+ } else {
82
+ console.log(` ERROR on ${s.layout}: ${r.content[0].text}`);
83
+ }
84
+ }
85
+
86
+ const outPath = path.join(__dirname, "output", "Corporate_Template_Test.pptx");
87
+ await client.callTool({ name: "pptx_export", arguments: { presentation_id: pid, output_path: outPath } });
88
+ console.log(`\nExported: ${outPath}`);
89
+ console.log(`Total slides: ${slides.length}`);
90
+
91
+ await client.close();
92
+ process.exit(0);
93
+ })().catch(e => { console.error("FAILED:", e); process.exit(1); });