You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I searched existing issues and docs before opening this.
This proposal is grounded in a real Roomote use case, not a broad generated feature list.
Problem
Roomote agents primarily express narrative output as Markdown. The web task view also supports sandboxed presentational widgets and artifacts can hold images, GIFs, video, PDFs, and documents, but these are separate mechanisms rather than one user-configurable presentation workflow.
This breaks down for common cross-functional communication:
a developer needs to explain a behavior change to a business analyst without leading with code
a manager needs a concise feature report with outcomes, rollout, risks, and decisions
a product owner needs a visual release recap
a documentation author needs task-oriented instructions with screenshots or short clips
a marketing user needs a polished, branded page or media package
Users cannot currently select a reusable audience/style/output preset. Rich results also do not have a provider-aware delivery contract. A generated image can be sent as an external image URL, but that does not guarantee that motion plays or that the result uses the best native media API in Discord, Slack, Teams, or Telegram.
The result is that a successful API post can be mistaken for a successful presentation even when the receiving client displays only a static preview.
Current workaround
Users describe presentation requirements repeatedly in prompts, open Roomote artifacts separately, manually turn output into slides or graphics, use external design tools, and post the result to chat themselves.
Roomote agents can currently combine Markdown, show_widget, screenshots, and uploaded media, but:
there is no reusable presentation profile or deterministic configuration precedence
widgets are richest in the Roomote web task view and degrade to text plus a link in chat
media paths are treated primarily as generic images rather than typed image/animation/video/document assets
Discord output uses external image embeds rather than native multipart GIF/video uploads
Telegram output uses sendPhoto rather than sendAnimation or sendVideo
Teams generic buttons degrade to links and callback buttons are dropped because there is no validated outbound card interaction path
mock providers can verify transport but not proprietary-client rendering, autoplay, mobile layout, or CDN transformations
Proposed behavior
Add configurable Presentation Profiles that Roomote agents can recommend, apply, save, and deliver inline across supported interaction surfaces.
Keep four concerns separate
Skill defines how the source is analyzed, such as issue summary, BA explainer, feature report, architecture proposal, documentation, or marketing story.
Recipe defines the information hierarchy, such as before/after, KPI scorecard, timeline, four-slide recap, risk report, or annotated walkthrough.
Style defines allowlisted visual tokens such as brand, theme, tone, density, color, typography, illustration, and motion treatment.
One source-analysis skill should be reusable with different recipes and styles rather than duplicating a skill for every audience and visual treatment.
Profiles must not contain secrets, provider credentials, remote scripts, or unrestricted executable HTML/CSS. Organization profiles should be shareable and versioned; users should be able to clone a shared profile into a personal variant.
Selection methods
Support complementary selection paths:
natural language: “Explain this to a BA as a minimal infographic.”
named profile: “Use manager-feature-update for this PR.”
Roomote web composer with profile, audience, recipe, style, output, preview, Use once, and Save as preset
The Present this action should offer a compact first choice:
Explain to BA
Manager report
Release recap
Documentation
Marketing
Custom
Render immediately when the selected profile is sufficient. Ask one focused follow-up only when the answer materially changes the deliverable, for example Static image, Motion, or Website.
Use deterministic precedence:
explicit settings in the current message
current button or composer selection
thread/task override
user default profile
organization default profile
Roomote automatic recommendation
Show the applied profile and version in the result and offer actions such as Change audience, Change style, Make static, Add motion, Publish as docs, Build as site, and Save this preset.
Cross-chat presentation package
Generate one semantic package containing:
concise text takeaway
source links and a proposal/in-progress/shipped status label
PNG poster as the universal visual fallback
optional GIF, MP4, and WebM variants
alt text
motion transcript when applicable
optional sandboxed web widget or durable document/site output
Provider adapters should choose native delivery:
Provider
Selection
Static
Motion
Discord
components/buttons
native image attachment
native GIF or MP4 attachment
Slack
action blocks
image file/block
GIF or video file
Teams
Adaptive Card or conversational fallback
image attachment
supported card/video or static fallback
Telegram
inline keyboard
sendPhoto
sendAnimation / sendVideo
Roomote web
composer
media viewer/widget
GIF/video/widget
If native motion fails or is unsupported, automatically degrade through motion -> PNG -> text without losing the answer or citation.
Built-in profiles
Start with a small set tied to real workflows:
BA explainer: problem, before/after behavior, user flow, acceptance criteria, annotated UI state
Manager feature update: outcome, user value, metrics/status, rollout, risks, decisions
require a readable static equivalent for every motion result
generate alt text and a motion transcript
use captions and controls for video
respect reduced-motion preferences in HTML/widget output
keep text readable at mobile chat-preview size
do not rely on color alone for status or sequence
verify every material claim against cited sources
clearly distinguish proposed, in-progress, and shipped functionality
prevent secrets, private repository data, and raw transcripts from entering generated public media
Validation
Use a layered test strategy:
validate dimensions, frame count, duration, MIME type, and byte budgets
inspect the PNG and representative motion frames for legibility
test outbound payloads, threading, retries, media methods, and fallbacks with the checked-in Discord, Slack, and Telegram mocks plus Teams provider tests
visually verify Roomote-controlled web rendering in the sandbox browser
run a golden-media smoke suite in dedicated real Discord, Slack, Teams, and Telegram test conversations
Mock servers must not be treated as proof of proprietary-client rendering. Real-client smoke checks are required for playback, mobile layout, autoplay/reduced-motion behavior, and provider CDN transformations.
Observability
Record:
selected profile and version
explicit user overrides and automatic recommendation
generated media variants and validation result
provider delivery method and response
fallback used
rendering/playback failure reports
open/share actions where provider capabilities permit
Delivery phases
P0: reliable contract and selection
define the Presentation Profile schema, versioning, and precedence
support profile selection through natural language and quick actions
add typed image, animation, video, and document media contracts
implement native provider delivery and motion -> PNG -> text fallback
add real-platform golden-media smoke coverage
P1: reusable intelligence and customization
add the five built-in profiles
create reusable recipes and visual templates
add the web Present composer
add organization/user profile storage, cloning, defaults, and versioning
add accessibility and source-accuracy quality gates
P2: publishing and ecosystem
add reusable brand kits and branded exports
support publishable docs and sites
add interactive report components where safe
support profile import/export and sharing
let custom skills declare compatible recipes and outputs
Completion criteria
Users can select a profile through natural language, button, command, or the web composer.
Skill, recipe, style, and delivery remain independently configurable.
The applied profile and version are visible in the result.
Explicit user choices override thread, user, organization, and automatic defaults.
Results render inline in the originating chat using provider-native media methods.
Discord motion uses native GIF/video attachment delivery rather than external-image embeds only.
Telegram supports sendAnimation and sendVideo.
Teams supports an Adaptive Card selection path or an equivalent conversational fallback.
Every motion result has PNG and text equivalents, alt text, and a transcript.
Built-in BA, manager, release, docs, and marketing profiles are available.
Organization profiles are shareable and users can clone personal variants.
Mock tests validate transport and real-client smoke tests validate visible effects.
Delivery and fallback outcomes are observable.
Affected surfaces
Web dashboard
Roomote agents and standard task workflows
Slack
Teams
Telegram
Discord
MCP/runtime tools
API
Docs
Self-hosting implications
This likely adds persisted presentation-profile configuration and version metadata, generated media artifacts, and background media rendering/transcoding. Self-hosted deployments need documented storage retention, byte/format limits, cleanup behavior, optional rendering dependencies, and resource budgets.
The initial implementation should reuse existing artifact storage and provider credentials. It should not require a new external hosted rendering service. Any optional font/brand asset storage and media tooling must work in the documented self-hosted environment.
Alternatives considered
Keep Markdown only: portable and searchable, but insufficient for visual explanation, reporting, and marketing workflows.
Allow unrestricted HTML/JavaScript: expressive but unsafe, difficult to project across chat providers, and incompatible with current sandbox boundaries.
Generate artifacts only: durable but requires users to leave the originating conversation and does not solve provider-native delivery.
Use one universal GIF: inconsistent playback, inefficient for longer motion, inaccessible without a static/text equivalent, and not uniformly supported by provider APIs.
Make every presentation a custom skill: duplicates audience, recipe, style, and delivery logic instead of composing reusable concerns.
Documentation impact
Add public documentation for:
built-in Presentation Profiles and selection methods
organization and personal profile configuration
profile schema, precedence, cloning, and versioning
provider media support and fallback behavior
accessibility and source-citation guarantees
self-hosted media dependencies, storage, limits, retention, and troubleshooting
Preflight
Problem
Roomote agents primarily express narrative output as Markdown. The web task view also supports sandboxed presentational widgets and artifacts can hold images, GIFs, video, PDFs, and documents, but these are separate mechanisms rather than one user-configurable presentation workflow.
This breaks down for common cross-functional communication:
Users cannot currently select a reusable audience/style/output preset. Rich results also do not have a provider-aware delivery contract. A generated image can be sent as an external image URL, but that does not guarantee that motion plays or that the result uses the best native media API in Discord, Slack, Teams, or Telegram.
The result is that a successful API post can be mistaken for a successful presentation even when the receiving client displays only a static preview.
Current workaround
Users describe presentation requirements repeatedly in prompts, open Roomote artifacts separately, manually turn output into slides or graphics, use external design tools, and post the result to chat themselves.
Roomote agents can currently combine Markdown,
show_widget, screenshots, and uploaded media, but:sendPhotorather thansendAnimationorsendVideoProposed behavior
Add configurable Presentation Profiles that Roomote agents can recommend, apply, save, and deliver inline across supported interaction surfaces.
Keep four concerns separate
One source-analysis skill should be reusable with different recipes and styles rather than duplicating a skill for every audience and visual treatment.
Profile configuration
Support a versioned profile equivalent to:
Profiles must not contain secrets, provider credentials, remote scripts, or unrestricted executable HTML/CSS. Organization profiles should be shareable and versioned; users should be able to clone a shared profile into a personal variant.
Selection methods
Support complementary selection paths:
manager-feature-updatefor this PR.”/present audience:ba format:image style:minimalThe Present this action should offer a compact first choice:
Render immediately when the selected profile is sufficient. Ask one focused follow-up only when the answer materially changes the deliverable, for example Static image, Motion, or Website.
Use deterministic precedence:
Show the applied profile and version in the result and offer actions such as Change audience, Change style, Make static, Add motion, Publish as docs, Build as site, and Save this preset.
Cross-chat presentation package
Generate one semantic package containing:
Provider adapters should choose native delivery:
sendPhotosendAnimation/sendVideoIf native motion fails or is unsupported, automatically degrade through motion -> PNG -> text without losing the answer or citation.
Built-in profiles
Start with a small set tied to real workflows:
Quality, accessibility, and source accuracy
Validation
Use a layered test strategy:
Mock servers must not be treated as proof of proprietary-client rendering. Real-client smoke checks are required for playback, mobile layout, autoplay/reduced-motion behavior, and provider CDN transformations.
Observability
Record:
Delivery phases
P0: reliable contract and selection
P1: reusable intelligence and customization
P2: publishing and ecosystem
Completion criteria
sendAnimationandsendVideo.Affected surfaces
Self-hosting implications
This likely adds persisted presentation-profile configuration and version metadata, generated media artifacts, and background media rendering/transcoding. Self-hosted deployments need documented storage retention, byte/format limits, cleanup behavior, optional rendering dependencies, and resource budgets.
The initial implementation should reuse existing artifact storage and provider credentials. It should not require a new external hosted rendering service. Any optional font/brand asset storage and media tooling must work in the documented self-hosted environment.
Alternatives considered
Documentation impact
Add public documentation for: