From e104df848ffba1580e3476ae2bcf870fffa01d9e Mon Sep 17 00:00:00 2001 From: Rahul Rajesh <53638652+rahullrajesh@users.noreply.github.com> Date: Sun, 16 Aug 2026 14:21:57 +0000 Subject: [PATCH 1/7] feat: add speech pacing evaluator kit --- kits/speech-pacing-evaluator/lamatic.config.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 kits/speech-pacing-evaluator/lamatic.config.ts diff --git a/kits/speech-pacing-evaluator/lamatic.config.ts b/kits/speech-pacing-evaluator/lamatic.config.ts new file mode 100644 index 000000000..09bcae80c --- /dev/null +++ b/kits/speech-pacing-evaluator/lamatic.config.ts @@ -0,0 +1,14 @@ +export default { + name: "Speech Pacing & Rhetorical Evaluator", + description: "Evaluates a speech draft against a target speaking window, estimates delivery time, identifies pacing and jargon risks, and produces a structured rhetorical evaluation with actionable refinements.", + version: '1.0.0', + type: 'template' as const, + author: { name: "Rahul Rajesh", email: "rahullrajesh@users.noreply.github.com" }, + tags: ["speech", "presentation", "pacing", "rhetoric", "communication"], + steps: [ + { id: "speech-pacing-evaluator", type: 'mandatory' as const } + ], + links: { + "github": "https://github.com/Lamatic/AgentKit/tree/main/kits/speech-pacing-evaluator" + }, +}; From cad0bb7eb603ee0ee250335621459834a7dd42f9 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh <53638652+rahullrajesh@users.noreply.github.com> Date: Sun, 16 Aug 2026 14:22:05 +0000 Subject: [PATCH 2/7] feat: add speech evaluator agent definition --- kits/speech-pacing-evaluator/agent.md | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 kits/speech-pacing-evaluator/agent.md diff --git a/kits/speech-pacing-evaluator/agent.md b/kits/speech-pacing-evaluator/agent.md new file mode 100644 index 000000000..a1fe94556 --- /dev/null +++ b/kits/speech-pacing-evaluator/agent.md @@ -0,0 +1,53 @@ +# Speech Pacing & Rhetorical Evaluator + +## Overview + +This AgentKit flow acts as a rigorous evaluator for spoken presentations. It accepts a speech draft and a target time window, estimates delivery time using both word count and linguistic complexity, identifies phrases likely to slow delivery, and evaluates rhetorical structure. + +The kit is designed for high-stakes presentations, Toastmasters speeches, interviews, executive briefings, sales pitches, conference talks, and other timed speaking situations where a written draft can look strong but fail at delivery speed or audience comprehension. + +## Inputs + +- `speech`: the complete speech draft as plain text. +- `targetMinMinutes`: minimum acceptable speaking time. +- `targetMaxMinutes`: maximum acceptable speaking time. +- `speakerWpm` (optional): baseline words-per-minute assumption. Defaults to 130 WPM. + +## Evaluation pipeline + +1. Normalize and measure the draft. +2. Calculate word count, sentence count, average sentence length, lexical density, and a complexity-adjusted WPM estimate. +3. Compare projected duration with the requested time window. +4. Detect dense jargon, long phrases, overloaded sentences, repeated concepts, and likely breath/pause points. +5. Assess rhetorical architecture: opening hook, thesis/promise, transitions, evidence/story progression, audience relevance, callback/cohesion, and conclusion. +6. Produce a structured report with commendations, risks, prioritized recommendations, and a revised pacing plan. + +## Output + +The response should contain: + +- Timing verdict and projected duration. +- Timing range based on baseline and complexity-adjusted delivery. +- Pacing risk level. +- Content-density assessment. +- Jargon/complexity flags with suggested simplifications. +- Opening score and explanation. +- Rhetorical structure score. +- Conclusion score and explanation. +- Top strengths. +- Top three improvements, prioritized by impact. +- Suggested pause/emphasis map. +- A concise rehearsal plan. + +## Timing model + +Do not claim that word count can predict an individual's exact speaking time. Use it as an estimate. Start from the speaker's supplied WPM or the 130 WPM default, then widen the estimate when sentence complexity, punctuation, parentheticals, numbers, acronyms, or dense terminology indicate additional cognitive and articulation load. + +## Guardrails + +- Evaluate the speech, not the person. +- Do not infer protected or sensitive personal attributes from writing style. +- Do not invent delivery observations that require audio/video evidence. Label them as draft-based risks. +- Do not present estimated timing as measured performance. +- Preserve the speaker's intended meaning when recommending edits. +- Avoid generic praise; every commendation should point to an observable feature of the draft. From 77e9ce34f2b0edc7d2875487b4a26991c714912d Mon Sep 17 00:00:00 2001 From: Rahul Rajesh <53638652+rahullrajesh@users.noreply.github.com> Date: Sun, 16 Aug 2026 14:22:10 +0000 Subject: [PATCH 3/7] feat: add speech evaluator guardrails --- .../constitutions/default.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 kits/speech-pacing-evaluator/constitutions/default.md diff --git a/kits/speech-pacing-evaluator/constitutions/default.md b/kits/speech-pacing-evaluator/constitutions/default.md new file mode 100644 index 000000000..d41e0f085 --- /dev/null +++ b/kits/speech-pacing-evaluator/constitutions/default.md @@ -0,0 +1,25 @@ +# Default Constitution + +## Identity +You are a rigorous speech and presentation evaluator. You assess the submitted draft against the stated timing target and rhetorical objectives. + +## Accuracy +- Distinguish draft-based estimates from observed speaking performance. +- Never claim that the speaker actually paused, rushed, stumbled, or emphasized a phrase unless audio/video evidence is supplied. +- Explain assumptions behind timing estimates. + +## Evaluation +- Prefer specific, actionable observations over generic encouragement. +- Evaluate opening, structure, transitions, content density, audience relevance, and conclusion. +- Flag jargon when it may slow articulation or increase audience processing load. +- Recommend simplification only when it improves clarity without changing intended meaning. + +## Safety and privacy +- Do not infer protected or sensitive characteristics about the speaker. +- Do not expose secrets or credentials included accidentally in a draft. +- Treat personal names, contact details, and other personal information as unnecessary to the evaluation unless required for context. + +## Output discipline +- Use clear headings and concise tables where useful. +- Give a prioritized set of recommendations. +- Include a timing verdict and uncertainty caveat. From 4f736ca07bfe1fc3d334a3ec0c32b3d733014583 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh <53638652+rahullrajesh@users.noreply.github.com> Date: Sun, 16 Aug 2026 14:22:16 +0000 Subject: [PATCH 4/7] feat: add speech evaluator system prompt --- ...h-pacing-evaluator_generate-text_system.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_system.md diff --git a/kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_system.md b/kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_system.md new file mode 100644 index 000000000..05b34e992 --- /dev/null +++ b/kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_system.md @@ -0,0 +1,31 @@ +You are the Speech Pacing & Rhetorical Evaluator. + +Your job is to give a demanding but constructive evaluation of a written speech draft intended for live delivery. Analyze timing, linguistic complexity, rhetorical structure, opening, transitions, audience relevance, and conclusion. + +Timing requirements: +- Use the supplied speakerWpm when present; otherwise use 130 WPM. +- Calculate a baseline duration from word count. +- Adjust the estimate modestly upward when the draft contains unusually long sentences, acronyms, numbers, dense technical terminology, parentheticals, or punctuation that implies pauses. +- Provide an estimated range rather than false precision. +- Clearly state that this is a draft-based estimate and not a measurement of the speaker's actual delivery. + +Rhetorical evaluation requirements: +- Score opening, structure, audience connection, transitions, content density, and conclusion on a 1–10 scale. +- Identify the strongest rhetorical device or structural choice actually present. +- Identify the three highest-impact weaknesses. +- Flag jargon or complex wording that could create articulation or comprehension friction. +- Recommend specific substitutions, cuts, moves, or pauses where justified. +- Distinguish content that should be cut from content that should simply be slowed, paused, or emphasized. + +Return a professional report with these sections: +1. Executive verdict +2. Timing analysis +3. Pacing and density risks +4. Jargon and articulation flags +5. Rhetorical scorecard +6. Commendations +7. Priority recommendations +8. Pause and emphasis map +9. Rehearsal plan + +Do not invent facts about the speaker, audience, or delivery. Do not claim to have heard the speech. Be precise, candid, and actionable. \ No newline at end of file From 62a879d5f6e490a87d90c511d03a5a7335d545ad Mon Sep 17 00:00:00 2001 From: Rahul Rajesh <53638652+rahullrajesh@users.noreply.github.com> Date: Sun, 16 Aug 2026 14:22:34 +0000 Subject: [PATCH 5/7] feat: add speech evaluator user prompt --- .../speech-pacing-evaluator_generate-text_user.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_user.md diff --git a/kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_user.md b/kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_user.md new file mode 100644 index 000000000..77671249a --- /dev/null +++ b/kits/speech-pacing-evaluator/prompts/speech-pacing-evaluator_generate-text_user.md @@ -0,0 +1,10 @@ +Evaluate the following speech draft. + +Speech draft: +{{triggerNode_1.output.speech}} + +Target minimum time: {{triggerNode_1.output.targetMinMinutes}} minutes +Target maximum time: {{triggerNode_1.output.targetMaxMinutes}} minutes +Speaker baseline WPM: {{triggerNode_1.output.speakerWpm}} + +Return the complete structured evaluation requested by the system instructions. Treat speakerWpm as 130 when it is missing or invalid. Use the draft itself as the evidence base. Make timing estimates explicit and distinguish them from actual measured delivery. \ No newline at end of file From 61ed711a5d5281dfe98cb22c49ed6a1a801bcc84 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh <53638652+rahullrajesh@users.noreply.github.com> Date: Sun, 16 Aug 2026 14:22:41 +0000 Subject: [PATCH 6/7] feat: add speech pacing evaluator flow --- .../flows/speech-pacing-evaluator.ts | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 kits/speech-pacing-evaluator/flows/speech-pacing-evaluator.ts diff --git a/kits/speech-pacing-evaluator/flows/speech-pacing-evaluator.ts b/kits/speech-pacing-evaluator/flows/speech-pacing-evaluator.ts new file mode 100644 index 000000000..cb6bf235f --- /dev/null +++ b/kits/speech-pacing-evaluator/flows/speech-pacing-evaluator.ts @@ -0,0 +1,103 @@ +// Flow: speech-pacing-evaluator + +// ── Meta ────────────────────────────────────────────── +export const meta = { + "name": "Speech Pacing & Rhetorical Evaluator", + "description": "Evaluates a speech draft against a target speaking window, estimates delivery time, identifies pacing and jargon risks, and produces a structured rhetorical evaluation with actionable refinements.", + "tags": ["🎤 Speech", "⏱️ Pacing", "🧭 Rhetoric", "💼 Presentation"], + "testInput": null, + "githubUrl": "", + "documentationUrl": "", + "deployUrl": "", + "author": { "name": "Rahul Rajesh", "email": "rahullrajesh@users.noreply.github.com" } +}; + +// ── Inputs ──────────────────────────────────────────── +export const inputs = {}; + +// ── References ──────────────────────────────────────── +export const references = { + "constitutions": { "default": "@constitutions/default.md" }, + "prompts": { + "speech_pacing_evaluator_generate_text_user": "@prompts/speech-pacing-evaluator_generate-text_user.md", + "speech_pacing_evaluator_generate_text_system": "@prompts/speech-pacing-evaluator_generate-text_system.md" + } +}; + +// ── Nodes & Edges ───────────────────────────────────── +export const nodes = [ + { + "id": "triggerNode_1", + "type": "triggerNode", + "position": { "x": 0, "y": 0 }, + "data": { + "nodeId": "graphqlNode", + "trigger": true, + "values": { + "nodeName": "Speech Evaluation Request", + "responeType": "realtime", + "advance_schema": "" + } + } + }, + { + "id": "LLMNode_1", + "type": "dynamicNode", + "position": { "x": 0, "y": 0 }, + "data": { + "nodeId": "LLMNode", + "values": { + "nodeName": "Evaluate Speech", + "tools": [], + "prompts": [ + { "id": "speech-user", "role": "user", "content": "@prompts/speech-pacing-evaluator_generate-text_user.md" }, + { "id": "speech-system", "role": "system", "content": "@prompts/speech-pacing-evaluator_generate-text_system.md" } + ], + "memories": "", + "messages": "", + "generativeModelName": "gpt-4o-mini" + } + } + }, + { + "id": "graphqlResponseNode_1", + "type": "dynamicNode", + "position": { "x": 0, "y": 0 }, + "data": { + "nodeId": "graphqlResponseNode", + "values": { + "nodeName": "Evaluation Report", + "outputMapping": "{\n \"evaluation\": \"{{LLMNode_1.output.generatedResponse}}\"\n}" + } + } + } +]; + +export const edges = [ + { + "id": "triggerNode_1-LLMNode_1", + "source": "triggerNode_1", + "target": "LLMNode_1", + "sourceHandle": "bottom", + "targetHandle": "top", + "type": "defaultEdge" + }, + { + "id": "LLMNode_1-graphqlResponseNode_1", + "source": "LLMNode_1", + "target": "graphqlResponseNode_1", + "sourceHandle": "bottom", + "targetHandle": "top", + "type": "defaultEdge" + }, + { + "id": "response-graphqlResponseNode_1", + "source": "triggerNode_1", + "target": "graphqlResponseNode_1", + "sourceHandle": "to-response", + "targetHandle": "from-trigger", + "type": "responseEdge" + } +]; + +export default { meta, inputs, references, nodes, edges }; From 2b706f4bea80cd2ff43baf43822a08dc4a8c9b15 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh <53638652+rahullrajesh@users.noreply.github.com> Date: Sun, 16 Aug 2026 14:22:51 +0000 Subject: [PATCH 7/7] feat: document speech pacing evaluator kit --- kits/speech-pacing-evaluator/README.md | 73 ++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 kits/speech-pacing-evaluator/README.md diff --git a/kits/speech-pacing-evaluator/README.md b/kits/speech-pacing-evaluator/README.md new file mode 100644 index 000000000..2bd707c19 --- /dev/null +++ b/kits/speech-pacing-evaluator/README.md @@ -0,0 +1,73 @@ +# Speech Pacing & Rhetorical Evaluator + +A Lamatic AgentKit template for evaluating speeches before live delivery. + +## Problem + +A speech can be grammatically polished and still fail in a timed presentation because it is too dense, difficult to articulate, or rhetorically front-loaded. Traditional word-count estimates do not account for linguistic complexity, jargon, acronyms, numbers, long sentences, or intentional pauses. + +## What this agent does + +Give it a speech draft and a target window such as 5–7 minutes. The evaluator returns: + +- Projected speaking-time range using word count, baseline WPM, and complexity signals. +- Timing verdict against the target window. +- Content-density and pacing risks. +- Jargon and articulation flags. +- Opening, structure, audience connection, transitions, and conclusion scores. +- Specific commendations tied to the submitted draft. +- Three prioritized recommendations. +- Suggested pause and emphasis points. +- A focused rehearsal plan. + +The evaluator explicitly distinguishes a draft-based timing estimate from measured speaking performance. Audio/video analysis is outside the scope of this template. + +## Example input + +```json +{ + "speech": "Good evening everyone... [complete speech draft]", + "targetMinMinutes": 5, + "targetMaxMinutes": 7, + "speakerWpm": 130 +} +``` + +If `speakerWpm` is omitted, the evaluator uses 130 WPM as its baseline assumption. + +## Example output structure + +```text +Executive verdict +Timing analysis +Pacing and density risks +Jargon and articulation flags +Rhetorical scorecard +Commendations +Priority recommendations +Pause and emphasis map +Rehearsal plan +``` + +## Why this is different + +AgentKit contains text-generation and grammar-oriented kits, but this contribution focuses specifically on the spoken word as a timed performance artifact. Its evaluation dimensions combine temporal constraints with rhetorical structure and articulation risk rather than treating the draft as ordinary prose. + +## Flow + +`Speech Evaluation Request → Evaluate Speech → Evaluation Report` + +The flow uses a dedicated constitution and externalized evaluator prompts so the evaluation criteria can evolve independently from the flow graph. + +## Setup + +1. Import or deploy the `speech-pacing-evaluator` flow in Lamatic Studio. +2. Configure an LLM provider available to your Lamatic project. +3. Invoke the GraphQL/API trigger with `speech`, `targetMinMinutes`, `targetMaxMinutes`, and optionally `speakerWpm`. +4. Review the returned evaluation and rehearse against the recommended timing/pause plan. + +## Limitations + +- Timing is an estimate, not a stopwatch measurement. +- The current flow evaluates text only; it cannot detect actual vocal rushing, filler words, pronunciation problems, volume, or pauses that differ from the draft. +- For highly technical speeches, domain terminology may be legitimate; jargon flags should therefore be treated as audience-dependent recommendations rather than automatic errors.