Updates & Releases
The latest from Storytell
Summary
This feature introduces automatic Collection sharing with users based on their email domain. This update simplifies Collection access management by allowing you to share Collections with all users from specified email domains.
Key updates:
- Share Collections with all users from specified email domains
- Support for multiple domains per Collection
- Combined sharing with both domains and individual users
- Domain invitation management (creation and deletion)
- Optional bulk access revocation for domain-based users
Who We Built This For:
This feature is for organizations that want to streamline Collection access management for their users. It simplifies sharing Collections with entire teams or departments, reducing the need to individually invite users.
The Problem We Solved With This Feature:
The previous process of sharing Collections required individual user invitations, which was time-consuming and difficult to manage, especially for large organizations. This feature solves this by enabling administrators to share Collections with entire domains, ensuring that all users within that domain automatically gain access. This simplifies user onboarding and reduces administrative overhead.
Specific Items Shipped:
- Domain-based access: Collections can now be shared using domain-based access (
shareDirective: "domainInvite"
), allowing all users with a specified email domain to access the Collection. - Cron job for domain population: A
cron
job has been established to populate thedomains
table and linkss_users
to the domains table, automatically adding users on-demand as they sign-in or sync their auth. - Automatic access restoration: Every time a user syncs their auth, Storytell will scan and grant access if they have the correct domain and are missing access, including restoring access if someone revoked it.
- API update: The API now includes
shareDirective
in access responses to distinguish between Creator access, domain-based access, and direct user invites. Access records also includeopenDomainInvitations
showing active domain sharing configurations with metadata like creation timestamp, creator information, organization context, and permitted actions.
Explained Simply:
Imagine you’re a teacher and you want all students in your class to have access to a specific study guide. Instead of handing out individual copies to each student, you can now just say that everyone in the “class.school.edu” domain has access. So, whenever a new student joins the class and signs in to Storytell, they automatically get access to the study guide. This makes it easier for teachers to manage resources and for students to get the materials they need.
Technical Details:
Collections can now be shared using three methods: direct user invites (shareDirective: "directInvite"
), domain-based access (shareDirective: "domainInvite"
), and Creator access (shareDirective: "creator"
). A cron
job has been established to populate the domains
table and link ss_users
to the domains table. Every time a user syncs their auth, Storytell will scan and grant access if they have the correct domain and are missing access. The API now includes shareDirective
in access responses to distinguish between Creator access, domain-based access, and direct user invites. Access records also include openDomainInvitations
showing active domain sharing configurations with metadata.
Summary
Added breadcrumbs to the search bar to show the location of Collections in search results. This feature helps users quickly identify the context and hierarchy of Collections listed in the search results, making it easier to differentiate between Collections with similar names. For example: BeHeard > User Feedback
now shows under the Collection name.
Who We Built This For
This update is designed for users who frequently use the search bar to find Collections, especially those working with complex Collection hierarchies or Collections with similar names.
The Problem We Solved With This Feature
Previously, it was difficult to distinguish between Collections with similar names in the search results. Users had to rely on other information or navigate to the Collection to determine its context. This feature provides a clear and immediate way to understand the location of Collections in the search results.
Specific Items Shipped
- Breadcrumb Display: The search bar now displays breadcrumbs under Collection names in the search results.
- Hierarchy Indication: Breadcrumbs show the parent Collections of the search result, providing context and hierarchy information.
Explained Simply
When you search for something, you might see a few results with the same name. This feature is like adding addresses to those results, so you know exactly which one you’re looking for. Just like you see file paths for files, you now see breadcrumbs above Collections in the search results so you can differentiate the Collections by file path/location, such as BeHeard > User Feedback
.
Technical Details
The changes involve modifying the search bar component in apps/webconsole/src/components/SearchBar.tsx
to include breadcrumbs for Collection search results. The CollectionBreadcrumbs
component is used to display the breadcrumb trail.
Summary
Improved the performance of listing assets within Collections and added a new endpoint for counting assets. This update significantly reduces the execution time for asset listing queries, especially when dealing with large Collections and introduces a new endpoint that only returns the count of assets to help drive that functionality in the UI.
- Optimized the query to list assets within a Collection.
- Added an option to list assets within sub-collections.
- Introduced a new endpoint to return the count of assets.
Who We Built This For
This update is for users who frequently work with Collections containing a large number of assets, as well as UI developers needing to efficiently display asset counts.
The Problem We Solved With This Feature
Previously, listing assets within Collections was slow, especially for large Collections or when including sub-collections. This update addresses this performance bottleneck and provides a more efficient way to retrieve asset counts.
Specific Items Shipped
- Query Optimization: The query to list assets within a Collection has been revised to improve performance.
- Sub-collection Listing: Added an optional behavior to list assets within sub-collections.
- Asset Count Endpoint: Introduced a new endpoint that only returns the count of assets.
Explained Simply
Imagine you have a giant filing cabinet with lots of folders and papers. This feature is like hiring a faster worker to find and count the files you need, so you don’t have to wait as long.
Technical Details
- The query in
services/controlplane/domains/curator/collectionsSQL/asset_col_queries.sqlsqlc.generated.go
has been optimized. - A new endpoint,
GetCountAssetsByCollectionID
, has been added inservices/controlplane/endpoint_collection_get_count_assets_by_collection_id.go
. - The
GetAssetsByCollectionID
function inservices/controlplane/domains/curator/curator_core_get_assoc_assets.go
was modified to include sub-collections based on theIncludeSubCollections
parameter. - Execution time has decreased by 3x (2.734ms vs 0.895ms) with the new query plan.
- Planning time has increased (14.674ms vs 8.021ms), but is negligible since it happens only once.
Summary
Adding multiple websites to your Collections just got easier. The new web scraper enhancement lets you input several URLs at once, streamlining your content ingestion process. This update saves time and simplifies the initial setup of Collections with web-based data.
- Add up to 10 URLs in a single screen.
- Simplified workflow for ingesting web content.
Who We Built This For
This feature is designed for content curators, researchers, and knowledge managers who regularly incorporate web-based information into their Collections.
The Problem We Solved
Previously, adding multiple websites was a time-consuming process. Users had to add each URL individually. This feature improves efficiency.
Specific Items Shipped
- ”+ Add More” Button: A new button allows users to input multiple URLs on a single screen, up to a limit of 10.
- Batch URL Input: Users can now paste multiple URLs into the input field, separated by spaces, commas, or semicolons.
Explained Simply
Imagine you’re making a playlist, but instead of adding one song at a time, you can add a whole bunch at once. This feature lets you add multiple website links to your Storytell Collections. Instead of adding websites one by one, this feature lets you add up to 10 at once, saving you a lot of time and effort.
Technical Details
The implementation is currently FE only, with plans to move it to the BE for background processing and status updates. The FE implementation avoids complex DB transactions and asset uploads. The component WebContentUpload.tsx
has been modified to allow for multiple URL inputs. The CrawlURL
function in the client API is used to initiate the scraping process for each URL.
Summary
A new Search Functionality has been shipped in Storytell. This update allows users to quickly launch a search bar using ⌘ + / (Mac) / Ctrl + / (Windows), dynamically fetches Collections and Assets, and automatically highlights selected assets for better visibility. Users can now navigate directly to a Collection or asset with minimal effort.
- Keyboard Shortcut ⌘ + / (Mac) / Ctrl + / (Windows) to instantly open the search bar
- Real-time filtering and organization of Collections and Assets
- Automatic asset highlighting upon selection
Who We Built This For
This feature is designed for Collection managers, administrators, and power users who need rapid access to specific Collections and Assets. It addresses the needs of users handling large datasets who require efficient navigation and content retrieval.
The Problem We Solved With This Feature
Before this update, users had to manually scroll through lengthy lists of Collections and Assets. This update eliminates time-consuming navigation, reducing user effort while enhancing workflow efficiency.
Specific Items Shipped
- Keyboard Shortcut Activation:
The search bar can now be opened instantly using ⌘ + / (Mac) / Ctrl + / (Windows), providing immediate access to search functionalities. - Dynamic Search Results:
Collections and Assets are filtered dynamically as the user types, ensuring that results are relevant and updated in real time. - Asset Highlighting & Navigation:
Once an asset is selected from the search results, the interface scrolls to it and highlights it for easy identification, improving visual tracking.
Explained Simply
Imagine needing to find a book in a huge library. With this update, you simply press a shortcut, type in what you’re looking for, and the system immediately shows you the exact shelf and book you need. It saves time and makes your search as effortless as using a smartphone’s search feature.
Technical Details
This feature leverages a newly developed SearchBar component built using Solid-JS. It listens for specific keyboard events to trigger the search interface. The search functionality is powered by real-time API calls (via the searchAssetsAndCollections function), which dynamically retrieve and filter the data, while smooth scrolling and DOM manipulation ensure that selected assets are visually highlighted.
Summary
This feature enhances Storytell by exposing the model’s internal reasoning behind its answers. It introduces a dedicated section that presents the reasoning in a clearly formatted display, making it easier to understand how responses are derived. Key updates include new visual cues for the reasoning section and the ability to collapse/expand the reasoning details. The change is user-friendly, providing transparency in an elegant and accessible format.
Who We Built This For:
This feature is built for advanced users and power users who want to gain deeper insights into the answer generation process. Users who need to validate the reasoning behind responses for research or debugging purposes will particularly benefit from this update.
The Problem We Solved with This Feature:
Many users found it challenging to understand how Storytell arrives at its answers. By revealing the hidden reasoning steps, we address the opacity of the process and offer greater transparency. This improvement empowers users with a better understanding of the logic behind responses, making the technology more trustworthy and debuggable.
Specific Items Shipped:
- Reasoning Section UI Update: Introduced a new UI component that displays the model’s internal reasoning with a clear, collapsible section. This section is formatted in lighter grey for easy distinction from the final answer.
- Copy Button Functionality: Added functionality allowing users to copy both the question and the full response (reasoning plus answer) or just the answer, enhancing usability.
- Enhanced Formatting: Ensured the reasoning is displayed in a structured format (using designated section tags) so that it’s consistently readable and accessible across different devices.
Explained Simply:
Imagine reading a detailed explanation of how a math problem is solved – this feature gives you that insight for every answer in Storytell. It shows you the thought process step-by-step, just like seeing the scratch work behind a finished homework problem. This makes it easier to trust and understand the results provided.
Technical Details:
Technical improvements include enabling a new set of front-end components that parse and render the reasoning sections from model responses. The system detects XML-like markers (e.g.,
[[[Reasoning]]]
) and applies specific styling rules to display them in a collapsible format. This feature relies on efficient client-side processing to toggle visibility without impacting overall performance.
Summary
This feature offers an intuitive interface within Storytell for deleting SmartChats™ from a Collection. It provides a clearly labeled delete option directly on the SmartChat™ list, simplifying the process. Key updates include a responsive delete action, confirmation modals, and enhanced accessibility features. The update empowers users with efficient management of their SmartChats™.
Who We Built This For:
This update is designed for users managing Collections who need to organize or remove obsolete or unwanted SmartChats™ quickly. It is particularly useful for power users and administrators keen on maintaining a clean workspace and managing content effectively.
The Problem We Solved with This Feature:
Previously, users had difficulty in managing and deleting outdated SmartChats™, which often cluttered their Collections. By introducing a dedicated UI for deletion, Storytell addresses this issue, reducing friction and preventing accidental removals. It improves the user workflow by offering a clear, easily accessible deletion option.
Specific Items Shipped:
- Delete SmartChat™ Button: Implemented a clearly visible delete button next to each SmartChat™, ensuring users can easily identify and access the delete function.
- Confirmation Modal: Developed a confirmation modal to double-check user intent before a SmartChat™ is removed, minimizing accidental deletions.
- Responsive UI Enhancements: Optimized the UI layout for different devices, ensuring that deletion actions are seamless and intuitive across all screen sizes.
Explained Simply:
Think of it like tidying up an email inbox; this feature lets you quickly remove a conversation you no longer need. It adds a trash button to each SmartChat™ in your Collection, and when you click it, a pop-up asks if you’re sure you want to delete it. This makes managing your chats as easy as cleaning up your desk.
Technical Details:
The implementation leverages modern front-end frameworks to bind delete actions directly to the SmartChat™ UI components. When a user initiates a delete request, a function interfaces with Storytell’s back-end to mark the specified SmartChat™ as removed. The process employs asynchronous calls to ensure the UI remains responsive, and state management is updated in real-time to reflect the deletion across the Collection. Advanced accessibility features ensure that confirmation modals are navigable via keyboard and screen readers.
Summary
The Improve It button has been enhanced to provide a more engaging and user-friendly experience. This update includes visual enhancements and a regenerate button for refining prompts.
Who We Built This For:
- Users seeking to optimize their prompts for better results.
- Users who want a more intuitive and visually appealing prompt improvement process.
The Problem We Solved:
We aimed to enhance user engagement with the “Improve It” feature by making it more visually appealing and providing users with more control over prompt refinement.
Specific Items Shipped:
- Light Bulb Icon on the Improve It Modal: Added a light bulb icon to the “Improve It” modal to enhance visual appeal.
- Updated Copy: Updated the copy within the modal to be more user-friendly and informative.
- Light Bulb Icon on the Results Page: Included a light bulb icon on the title of the results page for visual consistency.
- Regenerate Button: Added a regenerate button to allow users to refine prompts and generate new suggestions, with a short bold summary sentence.
Explained Simply:
Imagine you’re writing an essay, and you want to make it even better. The “Improve It” button is like having a helpful friend who gives you suggestions. We’ve made this friend more visually appealing and easier to use. Now, this friend uses a lightbulb icon and shows it on the results page too. We’ve also added a “Regenerate” button so you can ask for even more ideas to make your essay shine.
Technical Details:
- Modified CSS to include a light bulb icon and update the text in the “Improve It” modal
- Added a regenerate button that calls the enhance prompt API.
Summary
Added timeout controls for LLM (Large Language Model) calls to prevent hanging responses and improve user experience. This update implements a 60-second timeout for model responses and 5-second timeout for categorization calls.
Who We Built This For:
- Users interacting with AI models
- Platform administrators managing system reliability
- Enterprise users requiring predictable response times
The Problem We Solved:
Addressed the issue of prompts “hanging” or “freezing” due to long responses that never finish, improving system reliability and user experience by ensuring predictable response times.
Specific Items Shipped:
- Context Timeout Implementation: Added 60-second timeout for LLM context calls
- Categorization Timeout: Implemented 5-second timeout for prompt categorization
- Global Timeout Controls: Added timeout controls across all LLM providers (Anthropic, OpenAI, Gemini, Groq)
Explained Simply:
Think of asking a question to an AI as making a phone call. Sometimes, the AI might take too long to respond - like being put on hold forever. We’ve added a timer that automatically ends the call if it takes too long, so you’re not left waiting indefinitely. It’s like having a reasonable time limit on how long you’ll wait for an answer.
Technical Details:
- Implemented
context.WithTimeout
with 60-second duration for main LLM calls - Added 5-second timeout for categorization and complexity assessment calls
- Applied timeouts across all LLM providers including Anthropic, OpenAI, Gemini, and Groq
- Implemented proper context cancellation and cleanup using
defer cancel()
- Added timeout handling in the model router for prompt categorization
Summary
Storytell now integrates both Deepseek R1 and Llama models in an enterprise-safe environment. Hosted on secure US-based infrastructure, these integrations enhance AI reasoning and natural language processing capabilities while ensuring strict data compliance. Users can manually select either model by appending Use Deepseek
or Use Llama
to their queries, though neither is yet embedded in the LLM router. Check this page on how to manually override the LLM router
Who We Built This For
- Enterprise Teams: Organizations requiring cutting-edge AI capabilities while adhering to strict data security and compliance standards.
- Developers & Engineers: Professionals needing advanced AI assistance for coding, debugging, and structured problem-solving.
- Researchers: Users who benefit from logic-driven queries and complex computations.
The Problem We Solved
We addressed the need for a secure, enterprise-grade AI solution that delivers advanced reasoning and computation. Traditional AI tools often lack the necessary security measures for sensitive applications, and open-source models may expose data risks. This integration provides a privacy-safe, compliance-focused alternative.
Specific Items Shipped
- Deepseek R1 Integration:
Storytell now supports Deepseek R1, enabling advanced reasoning and problem-solving capabilities. - Llama Integration:
Storytell now supports Llama, providing versatile natural language understanding and generation capabilities. - Manual Model Selection:
Users can explicitly invoke Deepseek R1 by addingUse Deepseek
or Llama by addingUse Llama
to their prompts. - Enterprise-Grade Security:
Both models are hosted on secure, US-based infrastructure, ensuring compliance with data privacy regulations. - Current Limitations:
Neither Deepseek R1 nor Llama is yet embedded in the LLM router and must be manually selected.
Explained Simply
Imagine you’re working on a complex math problem or trying to write a detailed report. Deepseek R1 is like a super-smart helper that can handle these tasks more effectively than most AI tools. Llama, on the other hand, is like a versatile assistant that excels at understanding and generating human-like text. Both helpers are hosted in highly secure environments, like safes, so your data stays protected.
Technical Details
- Integration Approach: Both Deepseek R1 and Llama are integrated as standalone models, allowing manual invocation via their respective keywords (
Use Deepseek
andUse Llama
). - Hosting: Both models are deployed on secure, US-based servers to meet enterprise compliance requirements.
- Functionality:
- Deepseek R1 excels at reasoning-heavy tasks, advanced computations, and structured problem-solving.
- Llama provides versatile natural language understanding and generation capabilities.
- Limitations:
- Neither model is currently embedded in the LLM router.
- Users must manually select the desired model for each query.
Summary
This feature enables users to mention Collections and files within Storytell simply by typing ”@“—in a manner similar to how Linear handles mentions. When a user types ”@”, our interface now displays structured suggestions divided into sections (Collections and Files). This not only streamlines the user experience but also reduces ambiguity when interacting with data references in prompts.
Who We Built This For
We built this feature for users who work heavily with Collections and file references, particularly teams needing to quickly and accurately reference these entities in their workflow. The targeted use cases include:
- Users who need to compose queries like “Tell me what files are in my @collection/abc” or “Compare @collection/abc to @collection/xyz” without any confusion.
- Teams relying on clear textual references to link Collections or files directly within our chat or command context.
The Problem We Solved With This Feature
Previously, users were limited by a lack of an intuitive system for referencing collections and files; all references had to be entered manually, increasing the risk of typos and misinterpretation by our backend processes. This feature addresses the following issues:
- It removes the ambiguity of manually typed references.
- It ensures our backend can detect and process these references reliably via an integrated lexer.
- By structurally integrating references, LLMs receive cleaner prompts, leading to more accurate responses and improved workflow efficiency.
Specific Items Shipped
-
@ Mention Parsing
- Summary: Implemented robust ”@ mention” parsing for Collections and files.
- Details: The interface now detects when users type ”@” and presents suggestions for Collections and files, divided into clear sections. This mimics the familiar behavior found in platforms like Linear, enhancing user productivity and reducing input errors.
- Explain it to me like I’m five: Imagine you’re writing a note about your favorite toys, and when you type ”@” it magically shows you a list of all your toys so you can pick the right one to talk about.
- Technical details: On the frontend, event listeners intercept ”@” keystrokes to trigger a dropdown menu with categorized suggestions. The suggestion list dynamically filters potential matches based on the user’s input. This is seamlessly tied into our backend services via a lexer that extracts and normalizes these mentions for further processing.
-
UI Enhancements for Mention Display
- Summary: Upgraded our UI components to support and display mention suggestions effectively.
- Details: Several UI components have been updated, including asset tables and modals, to incorporate the visual and interactive elements necessary for the new mention feature. This ensures that users see a seamless experience from both the insertion and display perspectives.
- Explain it to me like I’m five: It’s like getting a big, colorful sticker next to every toy name so you can tell them apart easily!
- Technical details: Changes include modifications to file asset renderers (e.g., determining mime types based on file names), updates to component styling for mention elements, and enhanced support for single-click activation of a mention. These refinements ensure that the feature integrates cohesively with existing workflows and maintains consistency in user interface behavior.
Explain it to me like I’m five
Imagine you had a favorite game that got a shiny new cover. Now the buttons on the game box point exactly where you need to go to start playing. That’s what we did here – we made it super clear where to click for signing up or logging in, so everyone can start having fun easily.
Summary
We’ve updated the signup and login pages on our website to match the new homepage design and streamline the user authentication process. These pages now feature new CTA links, refined messaging, and reliable event tracking (via PostHog) to guarantee a smooth experience when users sign up or log in.
Who we built this for
- New Users: Making it easier to sign up with clear instructions and a modern layout.
- Existing Users: Providing a consistent, updated login experience.
- Analytics Teams: Ensuring proper event tracking such as sign_up_started, sign_up_successful, and log_in_started.
The problem we solved with this feature
Our old authentication pages were mismatched with the new design language of the website, causing confusion and inconsistent user experience. This update reinforces our brand identity, simplifies navigation (by ensuring links point to the correct pages), and maintains accurate event tracking across the authentication flows.
Specific items shipped:
-
Updated Signup Page:
We redesigned the signup page to include a clear “Already have an account?” link that now correctly routes users to https://storytell.ai/auth/login. PostHog events such as sign_up_started are integrated to properly monitor user registration events. -
Updated Login Page:
The login page now displays a refreshed “Don’t have an account?” link directing users to https://storytell.ai/auth/signup. The page supports magic link email functionality, ensuring users have a seamless, password-free login experience while tracking events like log_in_started. -
Comprehensive Testing and Validation:
The changes were tested in our dev environment to verify that magic link emails, CTA interactions, and event tracking are functioning as intended, ensuring a smooth transition when the changes go live.
Technical details
The update leverages our existing frontend components, replacing outdated UI elements with updated versions matching the new homepage aesthetics. Routing was adjusted so that the “Already have an account?” CTA on the signup page points to the login route and vice‑versa, ensuring proper navigation. We verified that our PostHog analytics (tracking events such as sign_up_started, sign_up_successful, and log_in_started) are firing correctly. Comprehensive testing (both automated and manual) was conducted to ensure that magic link email functionality remains intact in both dev and production environments.
Explain it to me like I’m five
Think of your school locker where every important thing—your books, your toys, and your drawing pad—has its own special place, all arranged neatly. This update makes sure that whether you want to chat or look at pictures, everything you need is always right there, so you never have to search hard for your things.
Summary
This update introduces a persistent Chat tab and a restructured Collections Dashboard that provides three fixed tabs, including a new chat section. With a prompt bar at the top and an integrated view for both chats and assets, users have instant access to recent conversations and related content.
Who we built this for
- Collection Managers: Users who interact with Collections and need fast access to communications and assets.
- Proactive Users: Those who want a seamless experience navigating between chat conversations and assets.
- Stephen and Similar Users: Users who proposed and will benefit from the persistent navigation structure.
The problem we solved with this feature
Previously, users struggled to quickly access chats and assets within a Collection, leading to a disjointed navigation experience. This update reduces context switching by introducing persistent tabs, ensuring users have quick and continuous access to essential features.
Specific items shipped:
-
Persistent Chat Tab:
A new “Chat” tab now remains visible across all Collection views. This allows users to immediately access discussion threads related to each Collection without having to navigate away from the page. -
Unified Collections Dashboard:
The dashboard has been restructured to feature three persistent tabs – including chat and asset views – with a prompt bar fixed at the top. The interface now includes a recent chats card with filtering options and a “see all” button that opens a dedicated chat drawer. -
UI Enhancements for Consistency:
The overall layout now displays assets from sub-folders more cohesively, while the persistent tabs ensure a unified navigation experience across the platform.
Technical details
The dashboard was revised using our SolidJS component architecture to support three persistent tabs. The new Chat tab integrates with our threads API and maintains state through the UI context, ensuring it remains visible when navigating across Colections. A fixed prompt bar allows easy user input, while updated routing ensures the “see all” button correctly opens the chat drawer. Additionally, improved CSS styling and state management updates enhance the responsiveness and layout consistency of asset and chat displays.
Explain It to Me Like I’m Five
Imagine you have a super-fast, smart robot friend who can answer your questions almost instantly! It listens, thinks, and replies super quickly. But, just like learning a new game, sometimes it makes mistakes. We’re helping it get even better over time.
Summary
We’ve onboarded the Gemini 2.0 Flash model from Google, a newly released AI model designed to enhance AI-driven interactions within Storytell. This integration aims to provide faster, more contextually aware responses, improving overall user experience. However, certain limitations should be considered to ensure optimal performance.
Technical Details
Model Integration
The Gemini 2.0 Flash model has been seamlessly integrated into our infrastructure, enabling real-time interactions via API.
Data Handling
- The model processes incoming data dynamically, ensuring responsiveness to user queries.
- Routing Mechanisms: Since external ranking scores influence response selection, maintaining accuracy requires careful data handling.
Testing and Debugging
- Initial testing has been conducted, but due to the model’s novelty, unforeseen issues may arise.
- Further testing is necessary to refine edge cases and optimize performance.
Specific Items Shipped
- Model Interface Established – We created a way for our system to communicate with Gemini 2.0 Flash.
- Routing Control Using External Data – We leverage external ranking mechanisms to enhance response accuracy.
- Initial Testing Conducted – The model has undergone preliminary testing to ensure smooth functionality in most scenarios.
The Problem We Solved With This Feature
The integration of Gemini 2.0 Flash addresses the need for faster, smarter AI-driven interactions within Storytell. This upgrade enhances user experiences by delivering responses that are more natural, insightful, and efficient.
Who We Built This For
This feature is designed for:
- Developers & Businesses using AI for customer support, content creation, or interactive applications.
- Tech Enthusiasts eager to experiment with the latest AI advancements to push the boundaries of AI-driven interactions.
Summary
This feature adds a dynamic Improve It button to the prompt interface, enabling users to instantly generate enhanced versions of their prompts using a large language model (LLM). The button remains inactive (grayed out) until text is entered into the prompt bar. Once clicked, the user’s input is sent to the LLM, which returns multiple improved prompt suggestions. These suggestions populate the prompt bar, allowing the user to select one, edit further, or send the improved prompt directly.
Technical Details
- Button State Management:
- The button is disabled by default and uses frontend logic to monitor the prompt input field. When the input length exceeds zero, the button is enabled.
- Implemented via event listeners tied to the input field, triggering UI state updates.
- LLM API Integration:
- When clicked, the button sends the user’s prompt to a backend service that interfaces with an LLM (e.g., GPT-3.5/4).
- The API request includes a system prompt instructing the LLM to refine the user’s input for clarity, specificity, and structure. Example transformation logic includes:
- Rephrasing ambiguous language.
- Adding context or examples.
- Breaking down complex requests into step-by-step instructions.
- Response Handling:
- The LLM returns 3–5 improved prompts. These are parsed and displayed in the prompt bar as selectable options.
- Frontend components dynamically render suggestions without reloading the page.
- User Interaction Flow:
- Users can select a suggestion to auto-fill the prompt bar or continue editing manually.
- Selection triggers a tracking event for analytics.
Explain It to Me Like I’m Five
Imagine you’re asking a robot to help with your homework, but sometimes the robot doesn’t understand your question. The “Improve It” button is like a helper robot that makes your questions clearer and easier to understand. You type something, click the button, and it gives you better ways to ask your question. The button only works after you type something, and you can pick one of its ideas or change them yourself!
Specific Items Shipped
-
Improve It Button State Management:
Dynamic enable/disable based on input. The button stays grayed out until the user types text into the prompt bar, ensuring it’s only usable when meaningful input exists. -
Prompt Transformation Logic:
LLM-driven prompt optimization. The system sends the user’s prompt to an LLM with instructions to improve clarity, add examples, and structure the request effectively. -
Suggestion Handling & UI Integration:
Seamless display of LLM suggestions. Improved prompts populate the input field as clickable options, allowing instant selection or further editing. -
Analytics & Tracking:
Usage metrics collection. Clicks on the button and selections of suggestions are logged to measure feature adoption and effectiveness.
The Problem We Solved With This Feature
Many users struggle to craft effective prompts, leading to vague or unhelpful LLM responses. This creates frustration and inefficiency, especially for non-technical users. By automating prompt refinement, we reduce the learning curve for interacting with LLMs and help users get better results faster.
Who We Built This For
-
Primary Users:
- Non-technical users unfamiliar with prompt engineering best practices.
- Educators and students seeking to simplify complex queries.
- Professionals needing quick, reliable LLM outputs without manual tweaking.
-
Use Cases:
- A student writes a vague essay question and uses the button to transform it into a structured, detailed prompt.
- A marketer iterates on a social media post idea by selecting from LLM-generated variations.
Summary
The newly shipped feature involves onboarding the o3-mini model from OpenAI, a recently released model designed to enhance AI capabilities on Storytell. This feature allows integration with the latest AI model, potentially improving user interaction with our system. However, there are some caveats that need to be considered to ensure the model’s optimal performance.
Technical Details
The o3-mini model from OpenAI operates as a cutting-edge machine learning model. Integration involves several key technical aspects:
- Model Integration: The o3-mini model has been seamlessly integrated into our existing infrastructure. This involves interfacing with the model’s API to facilitate real-time interactions.
- Data Handling: The model processes incoming data, which necessitates efficient routing mechanisms. Given the reliance on external ranking scores for optimal routing, a lack of control over this data could lead to inaccuracies.
- Testing and Debugging: Thorough testing is required to identify potential bugs. Due to the novelty of the model, it hasn’t been tested across all possible scenarios, and unforeseen issues may arise.
Explain It to Me Like I’m Five
Imagine you got a cool, new toy robot that can talk and think. This robot can learn new things and help you answer questions or tell stories. However, sometimes it might not know everything yet, so it might need more time to learn the right answers. We’re still figuring out how to make it work perfectly, like teaching a puppy how to fetch.
Specific Items Shipped
- Model Interface Established: We created a way for our system to talk to the o3-mini model using its special language tools.
- Routing Control Using External Data: We use external scores to help decide the best way for the model to handle conversations. This helps make sure you get the smartest answers back.
- Initial Testing Conducted: Although all scenarios haven’t been covered, the model has gone through preliminary testing phases to catch initial errors and help it run smoothly in most situations.
The Problem We Solved With This Feature
This feature addresses the need for integrating advanced AI capabilities, thereby enhancing Storytell’s interaction quality. The o3-mini model provides more sophisticated AI responses, improving user experiences by making them more natural and intuitive. It’s crucial as it keeps us competitive in AI-driven technology.
Who We Built This For
This feature has been designed for developers and businesses that leverage AI for customer support, content creation, or any application requiring advanced interaction capabilities. It also serves innovative tech enthusiasts eager to experiment with the latest in AI technology, giving them the tools to explore new use cases and possibilities.
Summary
This feature gives users the ability to update asset display names and summaries and also lets them delete assets when needed. When an asset or an entire Collection is deleted, the deletion is performed in Clickhouse as well to ensure consistency between systems.
Technical details
- Front-end Changes:
- Updated components such as
CollectionAssetTable
,EditAssetModal
, andDeleteAssetModal
that provide users with interfaces to edit asset details or delete assets. - New modals are triggered by user actions allowing for confirmation and data input.
- Updated components such as
- Back-end Enhancements:
- The back-end service now handles updates and deletions by removing asset records from both primary storage and Clickhouse.
- Ensures that deletions are propagated to all relevant systems to maintain data integrity.
- UI/UX Improvements:
- Updated CSS and layout modifications ensure that the new functionalities are intuitive, responsive, and consistent across different devices.
Explain it to me like I’m five
Imagine you have a scrapbook with lots of pictures. Sometimes you want to change the title on one of your pictures, or maybe you decide you don’t want a picture anymore and tear it out of your scrapbook. This update gives you a simple way to change the picture names or remove them completely, so your scrapbook always looks neat and updated—even if you have a giant backup book keeping all your pictures safe.
Specific items shipped
-
Ability to Edit Assets:
Users can now click on an asset to update its display name and summary. The interface opens an edit modal where changes are sent to the back-end service, which then confirms success by updating the asset’s records. -
Asset Deletion with Confirmation:
A new delete asset option has been added. When a user deletes an asset, it not only removes it from the interface but also from Clickhouse if the whole Collection or an individual asset is being deleted. The process confirms deletion via a modal to avoid accidental removal. -
User Interface Enhancements:
Changes in components such asCollectionAssetTable
and related CSS ensure that the new editing and deletion buttons are well integrated into the existing design, making it intuitive and responsive on various devices.
The problem we solved with this feature
Users needed a simple and reliable way to manage their assets—being able to update what is displayed and completely remove assets that are no longer needed. Before this update, there was no straightforward mechanism to change asset display names or summaries, nor to ensure that deletions were correctly reflected in related systems like Clickhouse. This improvement reduces clutter, prevents confusion, and enhances the overall user experience.
Who we built this for
This feature was built for users who manage digital assets—such as content creators, asset managers, and system administrators. It addresses the need for better organization and control of assets by allowing them to easily rename or delete items and ensuring that these changes are synchronized across all systems.
Summary
We’ve successfully launched a feature that allows users to share Collections and chats. Check out our documentation here. This feature introduces a robust information architecture that allows users to manage permissions for individual entities or collections of entities effectively. It empowers Organization Admins and Collaborators to control access to Collections and Threads, enabling a more organized and secure way to handle assets and knowledge within Storytell.
Technical Details
The Collections, Permissions, and Entitlements feature is designed to provide granular control over user access within an organization. Here’s a deep dive into its technical components:
-
Collections Control Plane: Establishes the foundational structure for creating, reading, updating, and deleting Collections. It ensures that root Collections are protected from accidental deletions and allows assets and threads to be managed within these Collections.
-
Authorization Mechanism: Implements a flexible permission system where Collaborators can grant or revoke access at both the Collection and Thread levels. This includes handling different user types such as Registered Users, Guests, and Pending Users, ensuring that access is correctly managed based on user roles and organization policies.
-
API Integrations: Ensures that threads and assets are implicitly added to personal Collections if they are removed from all others. Additionally, it purges threads and assets from Collections upon deletion unless they exist in another Collection, maintaining data integrity.
-
Operational Tooling: Provides tools for Storytell Operators to export user Collections, assets, and permissions to external platforms like Google Sheets. This facilitates support and auditing processes by allowing easy access to user-specific data.
-
Permission Evaluation: Implements efficient algorithms to evaluate permissions within 100ms, ensuring a responsive user experience. The system prioritizes higher-level permissions in case of conflicts and handles permission inheritance and overrides to maintain consistent access control.
-
User and Team Management: Allows Organization Admins to manage user roles and team permissions effectively. This includes creating, updating, and deleting teams, as well as granting or revoking access for teams to specific Collections and SmartChats™.
Explain it to me like I’m five
Imagine you have a big toy box (Collections) with different compartments (Threads) for your toys. With our new feature, you can decide who gets to play with which toys. If you’re in charge (Organization Admin), you can say, “Johnny can play with the cars,” or “Sally can access the dolls.” This way, everyone knows exactly which toys they can play with, and you keep everything organized and safe.
Specific Items Shipped
-
Create, Read, Update, and Delete Collections: Allows users to manage Collections by adding, viewing, modifying, or removing them as needed.
-
Prevent Deleting Root Collections: Ensures that primary Collections cannot be accidentally deleted, protecting the core structure.
-
Upload Assets into a Collection: Enables users to add individual assets, like documents or files, into specific Collections.
-
Add Existing Assets to a Collection: Allows users to organize already existing assets by assigning them to different Collections.
-
Create Threads Directly in a Collection: Facilitates the creation of new threads within a selected Collection for better organization.
-
Grant or Revoke Collaborator Access: Provides mechanisms for Collaborators to manage user access to Collections and threads, including inviting new users via email or shared links.
-
Organization Admin Role Management: Allows admins to assign or revoke the Organization Admin role to ensure proper access control within the organization.
The Problem We Solved with This Feature
Before implementing Collections, Permissions, and Entitlements, managing access to various assets and knowledge within an organization was cumbersome and lacked flexibility. Users struggled with organizing their content effectively, leading to potential security risks and inefficiencies. By introducing a structured permission system, we address the need for precise access control, ensuring that only authorized users can access specific Collections or threads. This enhancement not only improves security but also streamlines the workflow, making it easier for organizations to manage their information architecture comprehensively.
Who We Built This For
We designed the Collections, Permissions, and Entitlements feature for Organization Admins and Collaborators who need to manage and oversee access to various assets and knowledge within their teams. Specific use cases include:
-
Enterprise Teams: Managing access to sensitive documents and projects within large organizations.
-
Project Managers: Organizing project-specific threads and ensuring that only relevant team members have access.
-
Support Teams: Quickly exporting user permissions and Collections to address support queries efficiently.
This feature caters to users who require a high level of control over their content, ensuring that information is both accessible and secure based on organizational roles and responsibilities.
Summary
This feature allows users to download a file directly from Storytell. When a user clicks on a file, they will be able to see the raw content of the file. Instead of displaying this content in a pop-up modal with a markdown version, the implementation now focuses on providing a direct download from a cloud storage URL. Here’s the documentation on how to do this
Technical details
The implementation of this feature involves creating endpoints for both markdown rendering and signed URLs. When the user clicks on a file, the application will generate a signed URL that grants temporary access to the raw content stored in the cloud. This is achieved by integrating the cloud storage API to facilitate smooth and secure file downloading.
-
Endpoint Creation: We set up two endpoints:
- One for handling markdown rendering.
- Another for providing signed URLs for direct content access.
-
Security Protocol: The signed URL ensures that the files are accessible only for a limited time, providing an additional layer of security and protecting against unauthorized access.
-
User Experience: The user simply clicks on the file link, which triggers the application to provide the download link, ensuring a seamless experience without unnecessary pop-ups.
Explain it to me like I’m five
Imagine you have a really cool drawing that you want to share with your friend. Instead of showing it to them on your phone or computer where they can’t touch it, you just let them take it home. When you click on the drawing, it doesn’t go on the screen; instead, it gets sent directly to them, so they can keep it forever. That’s exactly what we’ve done here—now when someone clicks on a file, they get to download it right away!
Specific items shipped:
-
Direct File Download:
- Users can click on a file link to download the actual file instead of viewing it in a pop-up. This streamlines the process and reduces user distractions.
-
Signed URL Generation:
- The system generates a temporary link that allows users to access their files securely. This URL ensures that only authorized users can view or download the files, maintaining data security.
-
Endpoint Setup:
- We’ve put in place specific endpoints to manage file access. One allows users to view markdown content, and the other gives them a quick link to download files directly.
The problem we solved with this feature
Before this feature was implemented, users had to view files in a modal pop-up, which could be an inconvenient experience. Users expressed a need for a simpler way to access and download files directly without the hassle of navigating through additional views. By enabling direct downloads, we improved user experience, allowing for quicker access to important documents and enhancing overall functionality.
Who we built this for
This feature was built primarily for content creators and end-users who frequently need to download files for offline use or sharing. Specifically, it addresses:
- Content Creators: Who need to provide raw data or documents to others easily.
- End-Users: Who prefer quick access to downloadable content rather than having to view it in a pop-up and then navigate away to download it.
Users we especially built file downloads for
- Brandon from Siemens
Summary
We have successfully replicated the Web home page design onto the Storytell.ai web app. This feature includes significant enhancements, such as integrating a prompt bar and an animated graphic that replaces the product screenshot.
Technical Details
The replication process involved several technical steps to ensure the new design elements were effectively integrated into the Storytell.ai web app. The key technical components include:
-
Prompt Bar Integration: The prompt bar is a critical feature allowing users to interact directly with the product from the homepage. It was implemented to be persistent, ensuring it remains accessible even when outside the user’s viewport. This required carefully considering the app’s layout and user interface design to maintain functionality across different screen sizes and devices.
-
Animation Replacement: The product screenshot in the “How Storytell turns data into insights” section was replaced with an animation. This animation dynamically demonstrates the product’s capabilities, providing a more engaging and informative user experience. The technical challenge was to ensure smooth animation performance without affecting the app’s load time.
-
Responsive Design Adjustments: The new homepage design required adjustments to ensure responsiveness across various devices. This involved using CSS media queries and JavaScript to adapt the layout and functionality based on the user’s device and screen size.
Explain it to Me Like I’m Five
Imagine you have a cool new toy and want to show it to your friends. Instead of just telling them about it, you create a fun and colorful picture that shows exactly how the toy works. That’s what we did with our website! We made it look super cool and added a special button that immediately lets people play with our toy (the app). It’s like having a magic door that takes you straight to the fun part!
Specific Items Shipped
-
Prompt Bar Integration:
We added a special bar at the top of the page that lets users start using our app right away. This bar stays in place even if you scroll down, so it’s always easy to find. -
Animation Replacement:
Instead of a boring picture, we now have a moving animation that shows how our app works. This makes it easier for people to understand what we do and why it’s awesome. -
Responsive Design Adjustments:
We ensured our website looks great on any device, whether a phone, tablet, or computer. This means everyone can enjoy the new design no matter how they visit our site.
The Problem We Solved with This Feature
The primary problem we addressed with this feature was the need to enhance user engagement and streamline the transition from the homepage to the product experience. By integrating the prompt bar, we provide users with immediate access to the app, reducing friction and improving the likelihood of user interaction. The animation replacement offers a more dynamic and informative way to showcase the product’s capabilities, making it easier for users to understand and appreciate the value of Storytell.ai.
Who We Built This For
This feature was primarily built for potential users visiting the Storytell.ai web app for the first time. The goal was to provide them with an engaging and intuitive experience that quickly demonstrates the app’s value and encourages them to start using it. By making the homepage more interactive and informative, we aim to attract and retain users who are looking for a powerful tool to turn data into insights.
Summary
Our latest feature enables the conversion of XLS files into multiple CSV files, each corresponding to a tab in the original XLS file. This feature is designed to streamline data processing and enhance compatibility with various data analysis tools that prefer CSV format.
Technical Details
The XLS → CSV conversion feature processes each tab within an XLS file independently, converting it into a separate CSV file. The conversion process involves several key steps:
- File Parsing: The XLS file is parsed to identify individual tabs. Each tab is treated as a separate dataset.
- Data Extraction: Data from each tab is extracted, ensuring that both structured and semi-structured data are handled appropriately.
- Classification and Validation: The data is classified to determine its structure. This involves checking for consistent column counts and identifying header rows.
- Conversion: The extracted data is converted into CSV format. Special attention is given to handling non-tabular data and ensuring that data integrity is maintained.
- Error Handling: The system includes mechanisms to handle errors such as varied headers and unstructured data, with fallback strategies to ensure conversion success.
Explain It to Me Like I’m Five
Imagine you have a big book with lots of pages, and each page has a different story. Our new feature takes that book and turns each page into its own little book. So, if you have a book with five stories, you end up with five smaller books, each with one story. This makes it easier to read and share just the story you want.
Specific Items Shipped
- Multi-Tab Conversion: Converts each tab in an XLS file into a separate CSV file. This allows for easier data management and analysis.
- Structured Data Handling: Ensures that data with consistent columns is accurately converted. This improves reliability for structured datasets.
- Semi-Structured Data Support: Implements fallback strategies for semi-structured data, enhancing flexibility in data conversion.
- Error Mitigation: Includes error handling for varied headers and unstructured data, reducing conversion failures.
- Validation and Testing: Comprehensive testing with various datasets to ensure robustness and accuracy.
The Problem We Solved with This Feature
We developed this feature to address the challenge of working with XLS files that contain multiple tabs. Many data analysis tools and workflows require data in CSV format, which is more universally compatible and easier to process. By converting XLS files into CSVs, we simplify data handling and improve accessibility for users who need to analyze or share data efficiently.
Who We Built This For
This feature is particularly beneficial for data analysts, researchers, and business professionals who frequently work with large datasets in Excel format. It is designed to support use cases such as:
- Data Analysis: Facilitating the import of data into analysis tools that prefer CSV format.
- Data Sharing: Simplifying the process of sharing specific datasets without the need to share entire Excel files.
- Data Management: Enhancing the organization and management of data by separating it into individual, manageable files.
Summary
The recently shipped feature enables users to perform various operations on Collections, specifically Create, Read, Update, and Delete (CRUD). This functionality gives users the flexibility to manage their Collections more effectively. They can create new Collections, rename existing ones, update them with new data, and delete unwanted Collections. Additionally, we’ve implemented a new API endpoint to facilitate the deletion of Collections directly.
Explain it to me like I’m five
Imagine you have a toy box. This feature is like a special way to organize your toys. You can add new toys to the box, change the name of your toy box, take out toys when you don’t want them anymore, or even throw the whole toy box away. Also, there’s a button you can press to make sure you can throw away the toy box whenever you decide!
Specific Items Shipped
-
Create Collection: Users can now create new Collections.
- This allows users to group related items easily, making organization easier.
-
Rename Collection: Existing Collections can be renamed.
- Users can change the name of a Collections to better reflect its contents or purpose.
-
Move Collection: Moving Collections helps users to organize their content more effectively.
- This feature provides flexibility for users to rearrange their Collections, ensuring that their organization systems remain current and intuitive.
-
Delete Collection: Added API endpoint for deleting Collections.
- Users can remove Collections they no longer need, ensuring the interface remains clutter-free and relevant.
The Problem We Solved with This Feature
We built this feature to address the challenges users faced in managing their Collections. Before this, users struggled with limited organization capabilities, leading to confusion as Collections grew. By providing a comprehensive set of CRUD functionalities, we empower users to keep their Collections tidy and easily accessible, which ultimately enhances their overall experience.
Who We Built This For
This feature is designed for users who frequently manage Collections, such as project managers, researchers, and hobbyists. Specifically, it addresses those looking to streamline their organization of items, whether for projects, studies, or personal interests. By enhancing their ability to create, update, and delete Collections effortlessly, we improve their workflow and productivity.
Summary
The newly shipped feature addresses the challenge of processing non-tabular data within CSV files. Unlike traditional CSV files that contain well-structured tabular data with consistent columns and headers, many files we receive lack these characteristics. This feature enables the system to handle such “report” type CSV files by leveraging a Language Learning Model (LLM) to generate data “chunks” effectively, ensuring no data points are lost in the process.
Technical Details
The feature utilizes an LLM to parse and process CSV files that do not conform to standard tabular formats. The LLM is prompted to generate data chunks from the CSV content, even in the absence of headers or consistent columns. This involves modifying the prompt to ensure the LLM does not summarize or drop data points, which was a challenge in earlier implementations. Additionally, a “source” identifier is included in each chunk to enhance searchability and traceability of the data.
Explain it to Me Like I’m Five
Imagine you have a messy box of toys instead of a neat row of blocks. Our new feature is like a special robot that helps organize these toys into groups, even if they don’t fit perfectly into rows. It makes sure every toy is in the right group and doesn’t lose any toys while doing so. Plus, it puts a little tag on each group so we can find them easily later.
Specific Items Shipped
- LLM-Generated Data Chunks: The feature uses an LLM to create data chunks from non-tabular CSV files, ensuring all data points are captured.
- Prompt Modifications: Adjustments were made to the LLM prompts to prevent data summarization and ensure complete data retention.
- Source Inclusion in Chunks: Each data chunk now includes a “source” tag to improve searchability and data traceability.
- Regression Testing: Comprehensive testing was conducted using various datasets to validate the feature’s performance and reliability.
The Problem We Solved with This Feature
The primary problem addressed by this feature is the inability to process non-tabular CSV files effectively. Traditional methods failed due to the lack of headers and inconsistent columns, leading to incomplete data processing. By implementing this feature, we ensure that all data points are captured and organized, even in non-standard formats, which is crucial for accurate data analysis and decision-making.
Who We Built This For
This feature was primarily built for data analysts and engineers who frequently work with CSV files that do not adhere to standard tabular formats. It is particularly useful for some organizations, where such files are common, and accurate data processing is essential for generating insights and reports.
Summary
The newly shipped feature classifies CSV content as either “structured” or “unstructured.” This classification allows for the application of different processing strategies, ensuring that CSV files are handled appropriately based on their content type. Structured CSVs typically have a clear header row followed by data rows, while unstructured CSVs may not follow this format and require different handling.
Technical Details
The feature employs a classification algorithm to analyze the content of CSV files. It inspects the first few rows to determine if they follow a structured format, characterized by a consistent header and data row pattern. If the pattern is not detected, the file is classified as unstructured. This classification is crucial for selecting the appropriate processing prompt, which optimizes data handling and ensures accuracy in data interpretation. The implementation is designed to be efficient, minimizing processing time and resource usage.
Explain it to Me Like I’m Five
Imagine you have two kinds of boxes. One box has toys neatly organized with labels, and the other box has toys all jumbled up. This feature is like a helper that looks at each box and tells us if the toys are organized or not. If they are organized, we use one way to play with them, and if they are jumbled, we use a different way. This helps us make sure we always know how to handle the toys correctly.
Specific Items Shipped
- Classification Algorithm: We built a smart system that looks at CSV files and decides if they are organized (structured) or not (unstructured).
- Efficient Processing: The feature is designed to quickly and accurately classify files without slowing down the system.
- Local Validation: We tested the feature with real data to make sure it works perfectly and doesn’t cause any problems.
The Problem We Solved with This Feature
In the real world, CSV files can vary significantly in format. Some are neatly structured, while others are not. This inconsistency can lead to processing errors and inefficiencies. By classifying CSV content, we ensure that each file is processed using the most suitable method, improving accuracy and efficiency in data handling.
Who We Built This For
This feature is designed for data analysts and engineers who frequently work with CSV files. It addresses the need for accurate data processing in environments where CSV files may not always follow a standard structure. By automating the classification process, we reduce the manual effort required to handle diverse data formats, allowing users to focus on more critical tasks.
Summary
We have enhanced our LLM (Large Language Model) router by adding a new feature that categorizes “comparative” queries. This improvement allows the router to better understand and process queries that involve comparisons, enhancing the model selection process. The router now returns a structured response to the prompt builder, which includes a list of categories identified by the LLM for the given prompt. This categorization helps in selecting the most appropriate model for processing the query.
Technical details
The LLM router has been updated to include a categorization mechanism specifically for “comparative” queries. When a query is received, the router analyzes the content to determine if it involves any form of comparison. If a comparison is detected, the query is categorized accordingly. The router then returns a structured response to the prompt builder, which includes a PromptCategories
list. This list contains the categories identified by the LLM, which are used to guide the model selection process. If the router cannot define a specific category, it assigns a generic category to ensure that the query is still processed effectively.
Explain it to me like I’m five
Imagine you have a big box of crayons, and you want to pick the right color to draw a picture. Our new feature is like a helper that looks at your picture idea and tells you which crayon to use. If you’re drawing something that needs comparing, like “Is the sky bluer than the ocean?” our helper will know exactly which crayon to pick to make your picture look just right.
Specific items shipped
- Comparative Query Categorization: We have implemented a system that identifies and categorizes queries involving comparisons. This helps in selecting the most suitable model for processing such queries.
- Structured Response to Prompt Builder: The router now returns a structured response that includes a
PromptCategories
list. This list helps in guiding the model selection process by providing identified categories for the prompt. - Generic Category Assignment: In cases where a specific category cannot be determined, a generic category is assigned to ensure the query is processed effectively.
The problem we solved with this feature
This feature addresses the challenge of accurately processing queries that involve comparisons. Previously, the LLM router might not have effectively identified and categorized comparative queries, leading to suboptimal model selection. By introducing this categorization, we ensure that comparative queries are processed more accurately, improving the overall performance and reliability of our system.
Who we built this for
This feature was primarily developed for users who frequently engage in queries that involve comparisons. It is particularly useful for applications where understanding and processing comparative language is crucial, such as data analysis, research, and decision-making tools. By enhancing the model selection process for these queries, we aim to provide a more accurate and efficient user experience.
Summary
The Web scraper MVP is an initial release of our web scraping tool designed to extract data from websites efficiently. This feature leverages the Firecrawl API to crawl and scrape web pages, currently supporting the downloading of YouTube videos and their transcripts. The scraper is capable of handling multiple URLs, storing each page’s HTML as an asset within its respective Collection. While the current implementation focuses on downloading transcripts to prevent blocking the control plane, future updates will introduce job architecture for more extensive scraping capabilities.
Technical Details
The Web scraper MVP utilizes several Python libraries, including the youtube-transcript-api
, to download YouTube videos and their transcripts. In its first generation, the scraper integrates the Firecrawl API to perform crawling and scraping tasks. Here’s a deeper look into its technical components:
-
Firecrawl Integration: Firecrawl is chosen for its ability to crawl entire websites rather than just single pages. It offers configuration options like maximum pages to crawl and crawl depth, allowing for controlled data extraction.
-
Endpoint Management: Currently, the scraper operates under a single endpoint, which handles the downloading of transcripts to ensure that the control plane remains responsive. Future iterations will implement asynchronous processing to manage larger scraping tasks without hindering performance.
-
Asset Storage: Each scraped page’s HTML is stored as an asset in the Collection from which it was added. This organized storage facilitates easy retrieval and management of scraped data.
-
Scalability Considerations: To support scaling, the system plans to switch to Scrapfly for better credit cost efficiency and implement a robust job architecture using our existing queueing and job processing frameworks. Rate limiting and credit management are addressed to ensure sustainable usage of scraping resources.
-
Challenges and Future Work: Upcoming enhancements include allowing users to specify multiple URLs for scraping, integrating anti-bot bypass strategies, and implementing proxy rotations to prevent IP blocking. These advancements aim to make the scraper more versatile and resilient against common web scraping obstacles.
Explain it to me like I’m five
Imagine you have a magic robot that can visit websites and copy down all the important information for you. The Web scraper MVP is like that robot. Right now, it can grab videos and their captions from YouTube and save the information neatly. It’s built to handle one website at a time, but soon it will be able to visit many websites at once without getting stuck. This helps us collect data quickly and keep everything organized.
Specific Items Shipped
-
YouTube Transcript Downloading
Enabled the scraper to download transcripts from YouTube videos using Python libraries.
This feature allows users to automatically fetch and store the transcript of any YouTube video, facilitating content analysis and accessibility. -
Firecrawl API Integration
Implemented Firecrawl for efficient website crawling and scraping.
By leveraging Firecrawl, the scraper can navigate entire websites, respecting limits on the number of pages and crawl depth to manage resource usage effectively. -
Single Endpoint Operation
Configured the scraper to run under one endpoint to maintain control plane performance.
This design choice ensures that fetching transcripts does not interfere with other system operations, maintaining overall stability. -
Asset Storage System
Developed a system to store each scraped page’s HTML as an asset within its Collection.
This organized storage method allows for easy access and management of the scraped data, categorizing it based on the source Collection. -
Scalability Framework
Set the foundation for future scalability by planning job architecture and rate limiting.
Preparing for growth, this framework will support more extensive scraping tasks and manage usage effectively as the number of users and scraped URLs increases.
The Problem We Solved with This Feature
Before the Web scraper MVP, extracting data from websites, especially large ones, was time-consuming and resource-intensive. Manually downloading videos and transcripts from platforms like YouTube was inefficient and prone to errors. Our scraper automates this process, enabling rapid and accurate data collection. This matters because it saves significant time and resources for users who rely on up-to-date and comprehensive web data for analysis, research, or content creation.
Who We Built This For
We developed the Web scraper MVP for engineers and researchers who need to gather large amounts of web data efficiently. Use cases include:
- Content Aggregators: Automatically collecting and organizing video transcripts for content libraries.
- Data Analysts: Gathering web data for trend analysis and market research.
- Educational Institutions: Compiling resources and transcripts for academic projects and studies.
Storytell is now HIPAA compliant, ensuring that we adhere to the highest standards for protecting the privacy and security of your health information. This certification underscores our commitment to maintaining the confidentiality of sensitive data and meeting regulatory requirements.
For more information about our security practices and policies, please visit our Trust Center.
Summary
We have implemented a feature that stops sending transformed prompts to the Language Learning Model (LLM) when creating suggestions. Instead, the system now uses the raw prompts provided by the user. This change simplifies the suggestion process and enhances performance by reducing the complexity and processing time involved in generating suggestions.
Technical details
Previously, when generating suggestions, the system injected additional system prompts into the user’s input, transforming the original prompt before sending it to the LLM. This transformation included predefined instructions and context that were not part of the user’s original request. While this approach provided a standardized context for the LLM, it introduced unnecessary complexity and increased the processing time, leading to slower suggestion generation.
With the new feature, the system bypasses the transformation process and sends the user’s raw prompt directly to the LLM. This change reduces the payload size, minimizes processing overhead, and accelerates the response time for generating suggestions. By eliminating the additional system prompts, the LLM focuses solely on the user’s input, which streamlines the suggestion process and improves overall efficiency.
Explain it to me like I’m five
Imagine you’re asking a friend for ideas on a drawing. Before, someone was adding extra instructions to your request, which made it take longer for your friend to come up with suggestions. Now, we let you ask your friend directly without any extra steps, so you get faster and simpler ideas for your drawing.
Specific items shipped
-
Direct Use of Raw Prompts: The system now sends the exact prompts provided by users to the LLM without any additional transformations or injected system prompts. This ensures that the suggestions are based solely on the user’s original input.
-
Enhanced Performance: By removing the transformation layer, the time taken to process and generate suggestions has been significantly reduced, resulting in quicker response times and a more efficient user experience.
-
Simplified Suggestion Pipeline: The elimination of system prompt injection streamlines the suggestion generation process, making it easier to maintain and reducing potential points of failure.
-
Improved Accuracy of Suggestions: With the LLM receiving only the raw user input, the relevance and accuracy of the suggestions have improved, as there is less noise and fewer instructions that could potentially misguide the model.
The problem we solved with this feature
We identified that the process of transforming user prompts by injecting additional system prompts before sending them to the LLM was causing unnecessary complexity and delays in generating suggestions. This transformation not only slowed down the response time but also introduced potential inaccuracies in the suggestions by adding extraneous information. By switching to using raw prompts, we simplified the suggestion generation process, making it faster and more reliable. This improvement matters because it enhances the user experience by providing quicker and more relevant suggestions, which is crucial for maintaining user engagement and satisfaction.
Who we built this for
We built this feature for our end-users who rely on quick and accurate suggestions to enhance their productivity and creativity. Specifically, users who interact with Storytell for content creation, brainstorming ideas, or seeking assistance in writing will benefit from faster and more relevant suggestions. By optimizing the suggestion generation process, we cater to professionals, writers, and creative individuals who need efficient tools to support their workflow and enhance their output quality.
Summary
The primary objective of this update is to generate responses that are both faster and more user-centric. This feature enhances the generation of responses, making interactions more user-friendly and efficient. Its aim is to ensure that responses feel natural while also processing them more swiftly.
Technical Details
For engineers, understanding the mechanics of this feature is crucial. Here’s a deeper dive:
- System Context Settings: Adjustments have been made to the context settings to promote a more natural conversation flow, encouraging direct interaction with the user.
- Prompt Structure: The prompts have been redesigned to leverage reference materials, reducing the reliance on external training data unless necessary. This helps the system remain aligned with the specific context at hand.
- Diagnostics Integration: New diagnostic tools are implemented to track the accuracy and speed of prompt-response cycles, enabling ongoing improvements and ensuring reliability.
Explain It to Me Like I’m Five
Imagine writing a message to a friend. This feature helps the system respond in a way that’s easy to understand and quick, like getting a faster, friendlier text back from a friend. It’s designed to make conversations smoother and answers come quicker without any confusion.
Specific Items Shipped
- More Friendly Responses: Improved Interaction - The new structure of prompts facilitates more conversational and natural interactions, smoothing out the dialogue between users and the system.
- Faster Responses: Enhanced Speed - With a more efficient processing system, prompts are turned into answers faster than before, reducing wait times.
- Diagnostics in Cloud Environment: Increased Reliability - By incorporating diagnostic tools, any discrepancies or issues can be rapidly identified and corrected, boosting the system’s overall dependability.
The Problem We Solved with This Feature
Previously, the system’s responses often seemed robotic and sometimes misaligned with what users were looking for. This feature addresses that by making responses more human-like and natural, enhancing the overall user experience and ensuring that interactions with the platform meet users’ expectations.
Who We Built This For
This improvement benefits all Storytell users who interact through queries. By refining response quality and reducing wait times, users from different sectors, particularly those requiring prompt and clear interactions for their tasks, will experience a more efficient workflow.
Summary
This feature enhances the routing logic by automatically excluding routes when the search results predominantly originate from CSV files. By implementing this, the system ensures that users receive the most relevant and diverse search results, improving overall user experience.
Technical Details
The feature integrates a filtering mechanism within the existing search algorithm. It analyzes the source of search results and identifies the proportion of results derived from CSV files. If the CSV file results exceed a predefined threshold, the routing process bypasses these results, directing the search to alternative sources. This is achieved by modifying the routing API to include a validation step that checks the origin of each result and applies the exclusion criteria accordingly. Additionally, caching strategies are employed to minimize performance overhead during this verification process.
Explain it to Me Like I’m Five
Imagine you’re looking for your favorite toy in a big toy store. Sometimes, most of the toys look the same and come from the same packaging (like CSV files). This feature helps the store staff make sure that when you search for a toy, you get a variety of options from different places, not just the ones that look alike. This way, you have a better chance of finding exactly what you want.
Specific Items Shipped
-
Routing Filter Module: Introduced a new module that scans search results to determine the origin of each result.
This module evaluates whether the majority of search outcomes are from CSV files. If the condition is met, it triggers the exclusion process to remove these results from the routing path.
-
Threshold Configuration Settings: Added configurable settings to define the percentage threshold for CSV file dominance in search results.
Administrators can adjust the threshold based on varying needs, allowing flexibility in how strictly the routing exclusion is applied.
-
Performance Optimization Techniques: Implemented caching mechanisms to store previously evaluated search results.
These optimizations ensure that the additional filtering does not significantly impact the search performance, maintaining a seamless user experience.
-
Enhanced Logging and Monitoring: Developed comprehensive logging features to track the filtering process and its impact on search routing.
This facilitates easier troubleshooting and performance assessment, ensuring the feature operates as intended.
The Problem We Solved with this Feature
Previously, when users performed searches, a significant portion of the results came from CSV files, leading to repetitive and less diverse information being displayed. This repetition could frustrate users and reduce the perceived quality of the search functionality. By implementing the “Remove from Routing if the Search Results Contain Mostly Results from CSV Files” feature, we ensure that search results are more varied and relevant, enhancing user satisfaction and engagement.
Who We Built This For
This feature is designed for users who rely on Storytell to access a wide range of data sources. Specifically:
- Data Analysts: Who require diverse datasets for comprehensive analysis without being confined to CSV file limitations.
- Researchers: Seeking varied sources to support robust and multifaceted research outcomes.
- General Users: Looking for diverse information without redundancy, ensuring a more enriching search experience.
Summary
The Supportability(Search) feature enhances our search system by providing comprehensive visibility into tenant-specific assets and their embeddings. This improvement allows our team to monitor and understand customer issues more effectively by displaying detailed information about the assets and embeddings associated with each tenant.
Technical Details
This feature integrates directly with our existing search and ingest services, enabling a seamless flow of information. A new user interface was designed, which offers real-time metrics reflecting the ingested assets and their corresponding embeddings. This is achieved through the backend’s connection to our databases.
The feature employs optimized API endpoints that minimize performance overhead while ensuring that data retrieval is both efficient and accurate. It allows for queries that provide:
- The total count of ingested assets
- The number of embeddings generated for those assets
- A breakdown of embeddings organized by asset for each tenant
The front end is developed using React to maintain a responsive and user-friendly experience. For visualizing data, D3.js is utilized, allowing the creation of dynamic and interactive charts, which present complex data in an easily digestible format. All these technical advancements work harmoniously to enhance the search system’s supportability.
Explain It to Me Like I’m Five
Imagine you have a big toy box filled with lots of toys, and your parents want to help you play with them. Sometimes it’s hard to know what toys you have and how they’re organized. The Supportability(Search) feature is like putting labels on each toy and organizing them into groups so you can easily see how many toys there are, what kinds they are, and how they are arranged. This way, you can find your favorite toys quickly and enjoy playing without any confusion!
Specific Items Shipped
-
Enhanced Dashboard Interface: Introduced a new dashboard within the search service that displays real-time metrics on ingested assets and embeddings.
This dashboard provides a clear overview of the number of assets ingested and the embeddings generated for each tenant. Users can navigate to detailed views for specific organizations to see more granular data. -
Organizational Detail Views: Added detailed views for each organization, showing the number of assets and embeddings per asset.
These detail views allow engineers to drill down into specific tenants to better understand their data landscape. This granularity aids in troubleshooting and optimizing search performance for individual organizations. -
Optimized API Endpoints: Developed new API endpoints to fetch and serve asset and embedding data efficiently.
These optimized endpoints ensure that data retrieval is fast and reliable, minimizing latency and providing up-to-date information for the dashboard and detail views. -
Minimalistic User Interface: Maintained a clean and simple UI design for ease of use and quick navigation between services.
The minimalistic approach ensures that users can access the search and ingest services without unnecessary complexity, focusing on the functionality that matters most.
The Problem We Solved with This Feature
Before implementing Supportability(Search), our team lacked the necessary visibility into the search system’s inner workings, which made diagnosing and addressing customer issues related to search functionalities a challenge. This gap hindered our ability to understand which assets and embeddings were present for each tenant, leading to slower response times in troubleshooting and optimizing the search experience.
Who We Built This For
Primarily for our engineering and support teams. These users require detailed visibility into the search system to monitor performance, diagnose issues, and optimize the search experience for our customers. Additionally, product managers benefit from these insights to make informed decisions about feature enhancements and resource allocation based on how different tenants utilize the search capabilities.
Improved the language of the knowledge preference buttons
Story Tiles™ now appear as opened by default
Ability to select Knowledge preference when chatting addeded to Storytell
- Story Tiles™ were added to SmartChat™
- Documentation is here
First version of code-driven Storytell documentation released
- Intelligent LLM Routing based on Quality vs. Price vs. Speed
- Documentation is here
Was this page helpful?