diff --git a/openapi.json b/openapi.json index 49eb282..206e2cb 100644 --- a/openapi.json +++ b/openapi.json @@ -38,7 +38,8 @@ { "name": "Fonts", "description": "Available Google Fonts for branding" }, { "name": "Roof Measurements", "description": "Request and track automated roof measurements" }, { "name": "Actions", "description": "Voice/text command detection for presentation control" }, - { "name": "Appointments", "description": "Appointment scheduling for presentation viewers" } + { "name": "Appointments", "description": "Appointment scheduling for presentation viewers" }, + { "name": "Activity", "description": "Recent presentation activity feed" } ], "components": { "securitySchemes": { @@ -56,6 +57,20 @@ } }, "schemas": { + "ActivityEvent": { + "type": "object", + "properties": { + "id": { "type": "string", "format": "uuid" }, + "eventType": { "type": "string", "description": "Event type, e.g. presentation.opened, slide.viewed, contract.signed" }, + "payload": { "type": "object", "nullable": true, "description": "Event-specific data" }, + "occurredAt": { "type": "string", "format": "date-time" }, + "presentationId": { "type": "string", "format": "uuid", "nullable": true }, + "presentationName": { "type": "string", "description": "Homeowner full name derived from presentation data" }, + "address": { "type": "string", "nullable": true, "description": "Homeowner address (street, city, state)" }, + "deckId": { "type": "string", "format": "uuid", "nullable": true, "description": "Template ID for deep-linking to the template editor" } + }, + "required": ["id", "eventType", "occurredAt", "presentationName"] + }, "WordTiming": { "type": "object", "properties": { @@ -430,6 +445,35 @@ } }, "paths": { + "/api/activity": { + "get": { + "tags": ["Activity"], + "summary": "List recent activity", + "description": "Returns the 10 most recent presentation events for your organization, enriched with the homeowner name, address, and template ID for deep-linking.", + "security": [{ "sessionCookie": [] }], + "responses": { + "200": { + "description": "List of recent activity events", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ActivityEvent" + } + } + } + } + } + } + }, + "401": { "description": "Not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } + } + } + }, "/api/decks": { "get": { "tags": ["Decks"], diff --git a/sales-copilot/guides/branding.mdx b/sales-copilot/guides/branding.mdx index 8206564..f2ef4bb 100644 --- a/sales-copilot/guides/branding.mdx +++ b/sales-copilot/guides/branding.mdx @@ -3,7 +3,7 @@ title: Branding description: Make presentations look like they came from you — your colors, logo, and messaging throughout. --- -The **Branding** tab in the deck editor controls everything the homeowner sees when they open their presentation — your logo, color scheme, the chat avatar, and the landing page copy they read before hitting "Get Started." +The **Branding** tab in the template editor controls everything the homeowner sees when they open their presentation — your logo, color scheme, the chat avatar, and the landing page copy they read before hitting "Get Started." Changes are reflected in the **Live Preview** panel on the right side of the screen as you make them. diff --git a/sales-copilot/guides/contracts.mdx b/sales-copilot/guides/contracts.mdx index 63965e9..04c1a06 100644 --- a/sales-copilot/guides/contracts.mdx +++ b/sales-copilot/guides/contracts.mdx @@ -16,7 +16,7 @@ Signed documents are stored with a full audit trail including timestamp, IP addr ## Import a contract document -In the deck editor, open the **Actions** tab and click **Import Contract**. +In the template editor, open the **Actions** tab and click **Import Contract**. Upload a PDF or Word document (max 10 MB). Sales CoPilot uses AI to analyze the document and convert it to a markdown template. It detects variables like `{{full_name}}`, `{{address}}`, and `{{date}}` that get replaced with the homeowner's real information when the contract is presented. @@ -66,9 +66,9 @@ When a viewer reaches the signing step: 4. If name matching is enabled, the typed signature is validated against the homeowner's name 5. On successful signing, an audit-trailed document is created and a `contract.signed` event is emitted -## Multiple templates per deck +## Multiple contract templates per template -A deck can have multiple action configs (contract templates), but only one should be published at a time. When a viewer signs, the published template is used by default. You can also specify a particular config by ID. +A template can have multiple action configs (contract templates), but only one should be published at a time. When a viewer signs, the published template is used by default. You can also specify a particular config by ID. ## API reference diff --git a/sales-copilot/guides/deck-types.mdx b/sales-copilot/guides/deck-types.mdx index 8d08da8..567578c 100644 --- a/sales-copilot/guides/deck-types.mdx +++ b/sales-copilot/guides/deck-types.mdx @@ -1,34 +1,34 @@ --- -title: Setting Up Your First Deck +title: Setting up your first template description: Upload your slide images and let Sales CoPilot build a narrated presentation from them. --- -A deck is the starting point for everything in Sales CoPilot. It holds your slides, narration, FAQs, and branding. Once a deck is set up, you can generate as many personalized presentations from it as you need — one per homeowner. +A template is the starting point for everything in Sales CoPilot. It holds your slides, narration, FAQs, and branding. Once a template is set up, you can generate as many personalized presentations from it as you need — one per homeowner. -## Create a deck +## Create a template -From the dashboard, click **New Deck** in the top right corner. +From the dashboard, click **New Template** in the top right corner. A dialog will open with the following fields: -- **Deck Name** — give it a clear name you'll recognize, like "Spring Roofing Pitch" or "Solar Q4 2025" +- **Template Name** — give it a clear name you'll recognize, like "Spring Roofing Pitch" or "Solar Q4 2025" - **Description** — optional, for your own reference -- **Deck Context** — describe who this deck is for and what it covers. This helps Sales CoPilot write better narration. For example: *"Residential roofing replacement for storm-damage leads. Audience: homeowners aged 40–65 in the Southeast US."* The more specific, the better. +- **Template Context** — describe who this template is for and what it covers. This helps Sales CoPilot write better narration. For example: *"Residential roofing replacement for storm-damage leads. Audience: homeowners aged 40–65 in the Southeast US."* The more specific, the better. - **Use Premium Voice AI** — toggle this on if you want higher quality voice generation ## Upload your slide images -Below the deck details, you'll see an upload area. Drag your slide images in, or click to browse. PNG, JPG, GIF, and WebP are all accepted. +Below the template details, you'll see an upload area. Drag your slide images in, or click to browse. PNG, JPG, GIF, and WebP are all accepted. The order you upload them is the order they'll appear in the presentation — so make sure your slides are in the right sequence before uploading. The number of uploaded slides is shown as you add them. -Once you've added at least one image and filled in the deck name, the **Create & Generate** button becomes active. Click it to start. +Once you've added at least one image and filled in the template name, the **Create & Generate** button becomes active. Click it to start. ## While it's generating Sales CoPilot will analyze each image, write a narration script, and generate spoken audio. This runs in the background — you'll see progress as it works through your slides. -When it's done, your deck opens in the editor with all slides ready to review. +When it's done, your template opens in the editor with all slides ready to review. ## Review your slides diff --git a/sales-copilot/guides/faqs.mdx b/sales-copilot/guides/faqs.mdx index 2d70adb..575f2dc 100644 --- a/sales-copilot/guides/faqs.mdx +++ b/sales-copilot/guides/faqs.mdx @@ -3,7 +3,7 @@ title: FAQs description: Pre-build answers to common questions so homeowners always get a consistent, on-brand response. --- -The **FAQs** tab in the deck editor is where you add questions and answers that Sales CoPilot uses during live presentations. When a homeowner asks something that matches one of your FAQs, they hear your exact wording — spoken aloud — rather than an AI-generated response. +The **FAQs** tab in the template editor is where you add questions and answers that Sales CoPilot uses during live presentations. When a homeowner asks something that matches one of your FAQs, they hear your exact wording — spoken aloud — rather than an AI-generated response. This is the best way to ensure predictable, on-brand answers to questions you know will come up: pricing, warranty, timeline, financing, or anything competitors often get asked about. diff --git a/sales-copilot/guides/narration.mdx b/sales-copilot/guides/narration.mdx index 1c7c046..6957b9f 100644 --- a/sales-copilot/guides/narration.mdx +++ b/sales-copilot/guides/narration.mdx @@ -7,7 +7,7 @@ Every slide in a Sales CoPilot presentation is narrated by a synthesized voice. ## Choosing a voice -You set the voice when creating a deck. In the **New Deck** dialog, you'll see a **Use Premium Voice AI** toggle. This controls the voice quality used across all slides, FAQs, and Q&A responses in the deck. +You set the voice when creating a template. In the **New Template** dialog, you'll see a **Use Premium Voice AI** toggle. This controls the voice quality used across all slides, FAQs, and Q&A responses in the template. Pick the option that fits your use case — premium voices sound more natural but take slightly longer to generate. @@ -15,7 +15,7 @@ Pick the option that fits your use case — premium voices sound more natural bu If you update a slide's narration script, the audio needs to be regenerated to match. Open the slide editor and click **Regenerate Audio from Script** after making your changes. The updated audio replaces the old version. -If you'd rather have the AI rewrite the script entirely from the slide image, click **Use AI to Generate Script** — this rewrites the narration based on what's in the image, using your deck context as guidance. +If you'd rather have the AI rewrite the script entirely from the slide image, click **Use AI to Generate Script** — this rewrites the narration based on what's in the image, using your template context as guidance. ## FAQ and Q&A audio @@ -25,7 +25,7 @@ For the Q&A transition and resume prompts (in the **FAQs** tab under **Q&A Exper ## Checking audio status -Throughout the deck editor you'll see status indicators on audio content: +Throughout the template editor you'll see status indicators on audio content: - **Audio Ready** — the spoken audio is generated and ready - **Generating...** — audio is currently being produced diff --git a/sales-copilot/guides/notifications.mdx b/sales-copilot/guides/notifications.mdx index 1b66191..a6c9b3e 100644 --- a/sales-copilot/guides/notifications.mdx +++ b/sales-copilot/guides/notifications.mdx @@ -22,7 +22,7 @@ Each event includes the `presentationId` and relevant context. For example, `sli ## Create a subscription -In the deck editor, open the **Settings** tab to manage notification subscriptions. You can also create subscriptions via the API. +In the template editor, open the **Settings** tab to manage notification subscriptions. You can also create subscriptions via the API. Each subscription needs: @@ -30,7 +30,7 @@ Each subscription needs: - **Event type** — which event to listen for (e.g. `presentation.opened`) - **Channel** — how to deliver the notification - **Channel config** — channel-specific settings (see below) -- **Deck scope** (optional) — limit to events from a specific deck, or leave blank for all decks +- **Template scope** (optional) — limit to events from a specific template, or leave blank for all templates ## Delivery channels diff --git a/sales-copilot/introduction.mdx b/sales-copilot/introduction.mdx index fda31ad..53860d8 100644 --- a/sales-copilot/introduction.mdx +++ b/sales-copilot/introduction.mdx @@ -1,13 +1,13 @@ --- title: Introduction -description: Sales CoPilot is an AI-powered presentation platform with narrated slides, live Q&A, and deck management. +description: Sales CoPilot is an AI-powered presentation platform with narrated slides, live Q&A, and template management. --- -Sales CoPilot by Demand IQ lets you build AI-narrated sales presentations with interactive Q&A. Upload slide images or create structured decks, and Sales CoPilot generates narration scripts, synthesizes audio, and delivers a shareable presentation link your prospects can view on any device. +Sales CoPilot by Demand IQ lets you build AI-narrated sales presentations with interactive Q&A. Upload slide images or create structured templates, and Sales CoPilot generates narration scripts, synthesizes audio, and delivers a shareable presentation link your prospects can view on any device. ## Key capabilities -- **Deck management** — create structured or image-based decks with custom branding, colors, and fonts +- **Template management** — create structured or image-based templates with custom branding, colors, and fonts - **AI generation** — upload slide images and let GPT-4o extract content, write narration scripts, and generate FAQs automatically - **Text-to-speech** — narrate every slide with word-level timing for synchronized text highlighting - **Live Q&A** — viewers ask questions by voice or text; Sales CoPilot matches FAQs or generates answers in real time @@ -35,13 +35,13 @@ For portal integrations, Sales CoPilot supports SSO via `GET /api/auth/sso?code= icon="rocket" href="/sales-copilot/quickstart" > - Create your first deck and presentation in minutes + Create your first template and presentation in minutes - Learn about deck types, branding, FAQs, and narration + Learn about template types, branding, FAQs, and narration diff --git a/sales-copilot/openapi.json b/sales-copilot/openapi.json index 49eb282..206e2cb 100644 --- a/sales-copilot/openapi.json +++ b/sales-copilot/openapi.json @@ -38,7 +38,8 @@ { "name": "Fonts", "description": "Available Google Fonts for branding" }, { "name": "Roof Measurements", "description": "Request and track automated roof measurements" }, { "name": "Actions", "description": "Voice/text command detection for presentation control" }, - { "name": "Appointments", "description": "Appointment scheduling for presentation viewers" } + { "name": "Appointments", "description": "Appointment scheduling for presentation viewers" }, + { "name": "Activity", "description": "Recent presentation activity feed" } ], "components": { "securitySchemes": { @@ -56,6 +57,20 @@ } }, "schemas": { + "ActivityEvent": { + "type": "object", + "properties": { + "id": { "type": "string", "format": "uuid" }, + "eventType": { "type": "string", "description": "Event type, e.g. presentation.opened, slide.viewed, contract.signed" }, + "payload": { "type": "object", "nullable": true, "description": "Event-specific data" }, + "occurredAt": { "type": "string", "format": "date-time" }, + "presentationId": { "type": "string", "format": "uuid", "nullable": true }, + "presentationName": { "type": "string", "description": "Homeowner full name derived from presentation data" }, + "address": { "type": "string", "nullable": true, "description": "Homeowner address (street, city, state)" }, + "deckId": { "type": "string", "format": "uuid", "nullable": true, "description": "Template ID for deep-linking to the template editor" } + }, + "required": ["id", "eventType", "occurredAt", "presentationName"] + }, "WordTiming": { "type": "object", "properties": { @@ -430,6 +445,35 @@ } }, "paths": { + "/api/activity": { + "get": { + "tags": ["Activity"], + "summary": "List recent activity", + "description": "Returns the 10 most recent presentation events for your organization, enriched with the homeowner name, address, and template ID for deep-linking.", + "security": [{ "sessionCookie": [] }], + "responses": { + "200": { + "description": "List of recent activity events", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ActivityEvent" + } + } + } + } + } + } + }, + "401": { "description": "Not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } + } + } + }, "/api/decks": { "get": { "tags": ["Decks"], diff --git a/sales-copilot/quickstart.mdx b/sales-copilot/quickstart.mdx index f1d43b7..89661fe 100644 --- a/sales-copilot/quickstart.mdx +++ b/sales-copilot/quickstart.mdx @@ -3,20 +3,20 @@ title: Quickstart description: Go from zero to a live, personalized AI presentation in minutes. --- -This guide walks you through creating your first deck, setting up branding, and sending a homeowner their personalized presentation link. +This guide walks you through creating your first template, setting up branding, and sending a homeowner their personalized presentation link. ## Before you start Make sure your organization has been provisioned in Sales CoPilot. If you're not sure, contact your Demand IQ account manager. -## Step 1: Create a deck +## Step 1: Create a template -Log in and you'll land on your deck dashboard. Click **New Deck** in the top right. +Log in and you'll land on your template dashboard. Click **New Template** in the top right. Fill in the details: -1. Give your deck a **name** — something you'll recognize, like "Spring Solar Pitch" -2. Add a **Deck Context** — describe the audience and purpose in a sentence or two. This shapes the AI-generated narration, so the more specific you are, the better. +1. Give your template a **name** — something you'll recognize, like "Spring Solar Pitch" +2. Add a **Template Context** — describe the audience and purpose in a sentence or two. This shapes the AI-generated narration, so the more specific you are, the better. 3. Upload your **slide images** by dragging them into the upload area. The order you add them is the order they'll appear in the presentation. 4. Click **Create & Generate** @@ -24,7 +24,7 @@ Sales CoPilot will analyze each image, write narration scripts, and generate spo ## Step 2: Review your slides -Once generation is complete, your deck opens in the editor. Click through the **Slides** tab to review what was created. +Once generation is complete, your template opens in the editor. Click through the **Slides** tab to review what was created. For each slide you can: - Edit the **narration script** directly @@ -61,7 +61,7 @@ You'll get a shareable link. Send it to the homeowner however you like — text, ## What's next -- [Setting Up Your First Deck](/sales-copilot/guides/deck-types) — deeper dive on deck creation and slide editing +- [Setting up your first template](/sales-copilot/guides/deck-types) — deeper dive on template creation and slide editing - [Branding](/sales-copilot/guides/branding) — full walkthrough of every branding option - [FAQs](/sales-copilot/guides/faqs) — how to get the most out of the Q&A system - **API Reference** — explore the full REST API in the sidebar if you're integrating Sales CoPilot into your own platform