{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/qDgAKymO3y0oCO8eSbDR/DdndqCJQ2DCLXsvFjRES/H7OCenXtD.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{addPropertyControls as a,ComponentPresetsConsumer as r,ControlType as o,Link as n}from\"framer\";import{motion as i}from\"framer-motion\";import*as s from\"react\";import{Youtube as c}from\"https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/bZxrMUxBPAhoXlARkK9C/YouTube.js\";let l=\"R21Pdw0g9\",h=\"SI_Namnvs\",d=\"TQhrLJGGY\",u=\"mHqK7SaND\",m=\"LTtt5SKUw\",p=\"VU0YbK2iA\",g=\"wCemQ8_Nj\",f=\"lMxvlaqId\",w=\"n1oUEC9v8\",y=\"KZwuH58Qg\",b=\"jgodBwla6\",v=\"a3bXf_66C\",S=\"OUnH1GaW_\",k=\"aJLgXPlgM\",I=\"XfNTYx5lD\",T=\"El4XqhVFd\",x=\"fv_E5WcqA\",A=\"sIw6kQfNd\",C=\"J8rV8rKcy\",P=\"y8nr5_dfB\",N=\"ZivyU8SNF\",Y=\"vSpcjE6_1\",W=\"CQ8BX1niu\",q=\"thTfiWtjZ\",j=\"oFdiSTFSD\",B=\"fJKG8tGLy\",R=\"FlzlI_A8d\",E=\"d_Nvv6Wgv\",G=\"YGxp3QMLx\",K=\"z33l5xU_w\",D=\"QvwrQIppX\",z=\"VS2ULJ0hv\",F=\"QAO0KamYQ\",X=\"Ygx3pvmSC\",J=\"v7ERD2vXB\",U=\"efHQTfaES\",M=\"jEKWt1i2g\",Q=\"tey3R3T7E\",H=\"bB_wQBAUs\",O=\"mQInNq9TI\",Z=\"xnA23B53P\",L=\"gsBShGqOE\",V=\"NPzqEDizc\",_=\"fswF7C5NQ\",$=\"JFczchwe2\",ee=\"Y5wHDQnXo\",et=(e,t)=>{if(e&&\"object\"==typeof e)return{...e,alt:t};},ea=[{index:0,id:\"stmMDsQqR\",[l]:!0,[h]:!0,[d]:\"Introducing Struct: a feed-centric chat platform\",[u]:\"introducing-the-struct-chat-platform\",[m]:\"For conversations that matter: Struct is a radical new chat platform designed around threads, feeds and AI to 2x your productivity.\",[p]:\"jason\",[g]:\"2024-02-28T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/43OpYAiUi4Aq5FDHuaIZXDiGv1E.webp\",srcSet:\"https://framerusercontent.com/images/43OpYAiUi4Aq5FDHuaIZXDiGv1E.webp?scale-down-to=512 512w,https://framerusercontent.com/images/43OpYAiUi4Aq5FDHuaIZXDiGv1E.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/43OpYAiUi4Aq5FDHuaIZXDiGv1E.webp 1032w\"},\"\"),[w]:\"rgba(61, 152, 255, 0.14)\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Endless notifications. Lost insights. Redundancy. Distraction. Chat platforms play a huge role in digital collaboration, but they're increasingly detrimental to deep work and effective outcomes. Popular options like Slack and Discord are falling short. They create knowledge black holes, where staying up to date is time-consuming and finding what you're looking for is impossible. Real-time shouldn't mean real pain. Chat is conversation! It should be inspiring! It should encourage discovery, enrichment, and productivity, not indifference, agony or frustration.\"}),/*#__PURE__*/e(i.div,{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"var(--aspect-ratio)\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(r,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/bZxrMUxBPAhoXlARkK9C/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(c,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"High Quality\",url:\"https://youtu.be/-UZpqOnWxqE\"})})}),/*#__PURE__*/t(\"p\",{children:[\"At Struct, we\u2019re rebuilding the chat experience from the ground up, guided by our \",/*#__PURE__*/e(n,{href:{pathVariables:{mHqK7SaND:\"knowledge-base\"},unresolvedPathSlugs:{mHqK7SaND:{collectionId:\"H7OCenXtD\",collectionItemId:\"tEGjjUS4J\"}},webPageId:\"C4rWqDZEZ\"},openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"CRISPY design ethos\"})}),\" and a relentless pursuit of productivity. Today, we're thrilled to unveil the Struct Chat platform. \",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"You can check a \",/*#__PURE__*/e(n,{href:{webPageId:\"EvnvXnfRi\"},openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"demo walkthrough\"})}),\" or come join us in our Struct org \",/*#__PURE__*/e(n,{href:\"https://chat.struct.ai/join/DXVTmseDdBkeA6mG\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". We love to chat!\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Let\u2019s dig into the app.\"]})]}),[I]:\"\",[T]:et(void 0,\"\"),[x]:\"\",[A]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"h1\",{children:[\"Feeds and threads.\",/*#__PURE__*/e(\"br\",{}),\"Not chats and channels\"]}),/*#__PURE__*/t(\"p\",{children:[\"Using traditional chat channels is a hassle. We\u2019re forced into clicking through multiple channels just to catch up on our team\u2019s latest updates. Combine this with the always-growing list of new channels, and information starts to get really scattered. Deciding whether a conversation belongs in \u2018\",/*#__PURE__*/e(\"code\",{children:\"Contracts\"}),\"\u2019 or \u2018\",/*#__PURE__*/e(\"code\",{children:\"Clients\"}),\"\u2019, \u2018\",/*#__PURE__*/e(\"code\",{children:\"How-to\"}),\"\u2019 or \u2018\",/*#__PURE__*/e(\"code\",{children:\"Getting-started\"}),'\u2019 can be confusing. In open-source communities, moderators work hard to keep conversations organized, while corporate teams often rely on self-policing, asking folks to \"Please move this to another channel\" and interrupting everyone\\'s flow. This adds friction to our conversations.']})]}),[C]:\"We deserve better.\",[P]:et(void 0,\"\"),[N]:\"\",[Y]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"On the other hand, Feeds have consistently demonstrated their scalability across numerous social platforms. People consume vast amounts of info during a quick scroll of their daily feeds (RSS, Facebook, X, IG etc.) Applied to chat, they allow you to switch from chasing updates by clicking around, to sitting back and letting the chats come to you. At Struct we\u2019re exploring this concept to its maximum potential.\"}),/*#__PURE__*/e(\"p\",{children:\"In Struct, every chat message belongs to a thread. Chats don\u2019t get stuck in channels. Instead, any thread you have access to is displayed in a highly efficient feed. Struct has one of the fastest, most real-time feeds of any chat platform or social network, ensuring you\u2019re always up-to-date on the latest conversations.\"}),/*#__PURE__*/e(\"p\",{children:\"As new threads get created or older threads updated, they automatically make their way to the top of your feed. New chat messages pop-in to show you live activity within the threads. This makes Struct Chat a super-intuitive way to stay on top of daily conversations\"})]}),[W]:\"\",[q]:et({src:\"https://framerusercontent.com/images/6HAZePR5oAAzGsB0TqJAyMoQc.gif\",srcSet:\"https://framerusercontent.com/images/6HAZePR5oAAzGsB0TqJAyMoQc.gif?scale-down-to=512 512w,https://framerusercontent.com/images/6HAZePR5oAAzGsB0TqJAyMoQc.gif 800w\"},\"\"),[j]:\"Struct's live feed keeps you ahead of every conversation  \",[B]:/*#__PURE__*/e(s.Fragment,{children:/*#__PURE__*/e(\"p\",{children:\"This is great for when you step away. Whether it's a few hours or a couple days, catching up is really easy. Just look through the top N unread threads in your feed, and you're done. These threads could be spread across any number of channels or DMs, it doesn't matter. Struct's dynamic access control system will funnel them right to your feed. By bringing the latest updates directly to you, Struct keeps you informed without the noise, and eliminates the chasing or digging required by other platforms.\"})}),[R]:\"\",[E]:et({src:\"https://framerusercontent.com/images/MCYyBlndRMUZSv2b2ZieUSBVKTA.gif\",srcSet:\"https://framerusercontent.com/images/MCYyBlndRMUZSv2b2ZieUSBVKTA.gif?scale-down-to=512 512w,https://framerusercontent.com/images/MCYyBlndRMUZSv2b2ZieUSBVKTA.gif 800w\"},\"\"),[G]:\"The chasing and clicking really adds up in other chat platforms\",[K]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Your feed, your way\"}),/*#__PURE__*/e(\"p\",{children:\"In Struct, you can create a custom feed to follow specific projects, teams, or tasks, isolating only conversations relevant to your needs. This helps you focus on the essentials, while skimming off the clutter.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s a fun example: Want to align closely with your company's mission? Create a feed for your CEO's threads and stay in sync with your company's latest vision and goals. Jump in the conversation with the right answers and get that promotion you deserve. \uD83D\uDCAA\"}),/*#__PURE__*/e(\"p\",{children:\"The possibilities are endless. What kind of feeds will you create? We can\u2019t wait to find out.\"})]}),[D]:\"\",[z]:et({src:\"https://framerusercontent.com/images/qNdH7rsVzNeAQ31XIxH6JS2lDzc.gif\"},\"\"),[F]:\"Custom feeds allow you to quickly create different views into your team \",[X]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Use tags for organization, not channels\"}),/*#__PURE__*/e(\"p\",{children:\"Tags (aka hashtags) introduce another dimension of organization, allowing threads to be further categorized by topic, project, or any identifier you choose. Together, channels and hashtags create a dual-layered system that lets you tag, assign, and streamline any conversation. This turns your chats into a useful tool for project management, task delegation, and issue tracking. All without ever leaving the app.\"})]}),[J]:\"\",[U]:et({src:\"https://framerusercontent.com/images/JrXybgiCpzD7rUAnEsnP8Ty8qo.gif\",srcSet:\"https://framerusercontent.com/images/JrXybgiCpzD7rUAnEsnP8Ty8qo.gif?scale-down-to=512 512w,https://framerusercontent.com/images/JrXybgiCpzD7rUAnEsnP8Ty8qo.gif 800w\"},\"\"),[M]:\"Add channels to your messages to send them to the right people. Add hashtags for more context\",[Q]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Want some ideas? We use Struct as our singular place for tracking projects, resources, and tasks. I use \",/*#__PURE__*/e(\"code\",{children:\"#design\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"#assign/jason\"}),\" tags to mark threads requiring my attention. Our development team operates similarly, employing \",/*#__PURE__*/e(\"code\",{children:\"p0\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"p1\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"p2\"}),\" tags to set priorities.\"]}),/*#__PURE__*/t(\"p\",{children:['Use a combination of tag filters to create really powerful feeds. For example, Manish, our Founder, created a feed called \"',/*#__PURE__*/e(\"em\",{children:\"Pending Tasks\"}),'\" to monitor our backlog. It tracks ',/*#__PURE__*/e(\"em\",{children:\"any_of\"}),\" \",/*#__PURE__*/e(\"code\",{children:\"p0\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"p1\"}),\", and \",/*#__PURE__*/e(\"code\",{children:\"p2\"}),\" tags, while \",/*#__PURE__*/e(\"em\",{children:\"excluding\"}),\" \",/*#__PURE__*/e(\"code\",{children:\"status/resolved\"}),\" tag.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Struct app UI featuring discussions between anonymous users whose avatars are in the style of Van Gogh paintings\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,kKAfz6DhtgAsDytDuxsl9BS1H0s.webp?originalFilename=blog-launch-tasks_compressed_originalsize.webp\",\"data-framer-height\":\"1796\",\"data-framer-width\":\"3098\",height:\"898\",src:\"https://framerusercontent.com/images/kKAfz6DhtgAsDytDuxsl9BS1H0s.webp\",srcSet:\"https://framerusercontent.com/images/kKAfz6DhtgAsDytDuxsl9BS1H0s.webp?scale-down-to=512 512w,https://framerusercontent.com/images/kKAfz6DhtgAsDytDuxsl9BS1H0s.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/kKAfz6DhtgAsDytDuxsl9BS1H0s.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/kKAfz6DhtgAsDytDuxsl9BS1H0s.webp 3098w\",style:{aspectRatio:\"3098 / 1796\"},width:\"1549\"}),/*#__PURE__*/e(\"h6\",{children:\"User's can tag threads with channels and hashtags to stay organized. \"}),/*#__PURE__*/e(\"p\",{children:\"Think through all the chat platforms you\u2019ve used in the past. Can you track your entire company\u2019s tasks there? I doubt it. Traditional chat is too chaotic for effective task tracking. Struct aims to bridge this gap, creating an all-in-one solution for team collaboration.\"}),/*#__PURE__*/e(\"h3\",{children:\"Dynamic access control\"}),/*#__PURE__*/e(\"p\",{children:\"Struct employs a dynamic access control system, unmatched in the chat space. This system allows a thread to belong to one or more channels, or one or more members, or just yourself. More importantly, you can add or remove access at any point in a thread's life.\"}),/*#__PURE__*/t(\"p\",{children:[\"This makes threads more versatile than any other platform. A conversation can be accessible to multiple channels to ensure all relevant parties have access. Want to discuss the upcoming premiere of \",/*#__PURE__*/e(\"em\",{children:\"The\"}),\" \",/*#__PURE__*/e(\"em\",{children:\"Three Body Problem\"}),\" with both your \",/*#__PURE__*/e(\"code\",{children:\"@FilmFriends\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"@BookClub\"}),\", simply @mention both channels in one thread to chat with both groups, together.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Looking to adjust your new business contracts? Mention your \",/*#__PURE__*/e(\"code\",{children:\"@legal\"}),\" channel and \",/*#__PURE__*/e(\"code\",{children:\"@derek-the-sales-person\"}),\" in the same thread, pulling in the right people for the job.\"]}),/*#__PURE__*/e(\"p\",{children:\"Dynamic access ensures conversations remain targeted and inclusive, removing clutter throughout your organization.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"h1\",{children:[\"Search that\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"em\",{children:\"actually\"}),\" works\"]}),/*#__PURE__*/e(\"p\",{children:\"There's a peculiar kind of agony in knowing precisely where you left something, only to find it inexplicably vanished \u2014 a crucial idea now lost to the void. On chat platforms, this is all too familiar: you're haunted by a message you know exists, yet it dodges every attempt at retrieval, leaving sifting through endless, fruitless search results.\"})]}),[H]:\"\",[O]:et({src:\"https://framerusercontent.com/images/l4bIyRNjyAmkHdoHfoXTrQtDPmg.gif\",srcSet:\"https://framerusercontent.com/images/l4bIyRNjyAmkHdoHfoXTrQtDPmg.gif?scale-down-to=512 512w,https://framerusercontent.com/images/l4bIyRNjyAmkHdoHfoXTrQtDPmg.gif 800w\"},\"\"),[Z]:\"Find what you need, quickly, with Struct's instant search\",[L]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Struct redefines search functionality from the ground up. Our platform leverages advanced search technology, merging the precision of keyword searches and vector embeddings with the intelligence of semantic analysis. This hybrid approach ensures that our search results are not just instant and accurate, but also deeply relevant to your needs.\"}),/*#__PURE__*/t(\"p\",{children:[\"With Struct, search is more than a feature \u2014 it's a foundation tool to better navigate conversations. Press \",/*#__PURE__*/e(\"code\",{children:\"Cmd/Ctrl+K\"}),\" to quickly find exactly what you're looking for: links, files, chats, all at your fingertips\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Designed around AI\"}),/*#__PURE__*/e(\"p\",{children:\"Struct generates a title and summary for every thread, so you can make better decisions on what to skim and what to skip. This empowers everyone involved with context and confidence, making it easier than ever to catch up, follow along, and engage in the conversation at hand. Summaries and titles update in real-time too, evolving as the conversation develops.\"}),/*#__PURE__*/e(\"img\",{alt:\"Struct app UI featuring discussions between anonymous users whose avatars are in the style of Van Gogh paintings\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,voF3CGRTJapI2MUWqvj80pkYHxk.webp?originalFilename=blog-launch-thread-summary_compressed_originalsize.webp\",\"data-framer-height\":\"1796\",\"data-framer-width\":\"3098\",height:\"898\",src:\"https://framerusercontent.com/images/voF3CGRTJapI2MUWqvj80pkYHxk.webp\",srcSet:\"https://framerusercontent.com/images/voF3CGRTJapI2MUWqvj80pkYHxk.webp?scale-down-to=512 512w,https://framerusercontent.com/images/voF3CGRTJapI2MUWqvj80pkYHxk.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/voF3CGRTJapI2MUWqvj80pkYHxk.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/voF3CGRTJapI2MUWqvj80pkYHxk.webp 3098w\",style:{aspectRatio:\"3098 / 1796\"},width:\"1549\"}),/*#__PURE__*/e(\"h6\",{children:\"AI generated summaries add instant context to every discussion\"}),/*#__PURE__*/e(\"p\",{children:\"Need answers fast? Structbot is your go-to. Since Struct search indexes past threads, we can leverage past conversations to help provide proactive answers and save you time. Using the power of GPT, Structbot gets the information you need, when you need it, regardless of who's online.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"We use OpenAI's GPT-4 for powering both the threads and the bot. We've found GPT-4 to be the most accurate in our testing.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,YL53w4Kp6X7IwZxHbyOzTZre9o.gif?originalFilename=blog-launch-structbot_1400px.gif\",\"data-framer-height\":\"933\",\"data-framer-width\":\"1400\",height:\"466\",src:\"https://framerusercontent.com/images/YL53w4Kp6X7IwZxHbyOzTZre9o.gif\",srcSet:\"https://framerusercontent.com/images/YL53w4Kp6X7IwZxHbyOzTZre9o.gif?scale-down-to=512 512w,https://framerusercontent.com/images/YL53w4Kp6X7IwZxHbyOzTZre9o.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/YL53w4Kp6X7IwZxHbyOzTZre9o.gif 1400w\",style:{aspectRatio:\"1400 / 933\"},width:\"700\"}),/*#__PURE__*/e(\"h6\",{children:\"Structbot provides instant answer from past references and research\"}),/*#__PURE__*/e(\"p\",{children:\"Want another life hack? Use Struct instead of using ChatGPT's interface whenever possible. You get the same responses, but now they're co-located with all your other conversations. This means you can reference the bot results together with your peers and further the discussion. Team collaboration meets AI.\"}),/*#__PURE__*/e(\"p\",{children:\"Chatting with GPT doesn't need to be such a lonely affair anymore! Plus, it\u2019d be cheaper than subscribing to ChatGPT individually. Win, win.\"}),/*#__PURE__*/e(\"p\",{children:\"AI is at the core of what we're building a Struct. We\u2019ve got big plans for Structbot, this is only the beginning.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Privacy. That's Struct.\"}),/*#__PURE__*/e(\"p\",{children:\"At Struct, the privacy and permissions of your threads are always paramount. Our platform is designed with the understanding that not every conversation is meant for every eye. Our search functionality and Structbot respect these boundaries. When you search for answers or ask Structbot for help, you'll only see results from threads you're authorized to view. So sensitive information stays with the people it's meant for, guarded from unwanted exposure.\"}),/*#__PURE__*/e(\"p\",{children:\"We also take your data privacy very seriously. Struct is a secure space for your communications.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Intelligently designed\"}),/*#__PURE__*/e(\"p\",{children:\"The Struct app is the result of a meticulous design process, one focused on minimalism and efficiency. Our interface is deliberately subtle to ensure a distraction-free environment for work. It's completely brand-agnostic, free from any disruptive colors or logos.\"}),/*#__PURE__*/e(\"p\",{children:\"We have lots of keyboard shortcuts for fast navigation, and a dark mode to reduce eye strain in low-light environments. We\u2019re also committed to meeting users wherever they are \u2014 the app works on Windows, Mac, or Linux.\"})]}),[V]:\"\",[_]:et({src:\"https://framerusercontent.com/images/3ev6f0I6y6I60vlLcjnQYCRI0.png\",srcSet:\"https://framerusercontent.com/images/3ev6f0I6y6I60vlLcjnQYCRI0.png?scale-down-to=512 512w,https://framerusercontent.com/images/3ev6f0I6y6I60vlLcjnQYCRI0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/3ev6f0I6y6I60vlLcjnQYCRI0.png 1568w\"},\"\"),[$]:\"\",[ee]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"Unleash the power of conversation\"}),/*#__PURE__*/e(\"p\",{children:\"Our vision for Struct Chat is clear: to create a space where conversations that matter can flourish. We're on a mission to enable better conversations for everyone, and the launch of the Struct Chat Platform marks an exciting step toward that goal. We can't wait for you to experience the difference.\"}),/*#__PURE__*/e(\"p\",{children:\"Welcome to the future of real-time communication.\"}),/*#__PURE__*/e(\"p\",{children:\"Welcome to Struct Chat.\"})]})},{index:1,id:\"EwQMq6r4A\",[l]:!1,[h]:!1,[d]:\"How CRISPY is Struct?\",[u]:\"how-crispy-is-struct\",[m]:\"In this live-post, we assess Struct w.r.t. CRISPY framework\",[p]:\"manish\",[g]:\"2024-02-26T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/tIAHIdUxsN8MslRcoFc83Xws9s4.webp\",srcSet:\"https://framerusercontent.com/images/tIAHIdUxsN8MslRcoFc83Xws9s4.webp?scale-down-to=512 512w,https://framerusercontent.com/images/tIAHIdUxsN8MslRcoFc83Xws9s4.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/tIAHIdUxsN8MslRcoFc83Xws9s4.webp 1032w\"},\"\"),[w]:\"var(--token-2bb14cb0-85af-46bd-8741-f9f30bf0fc1e, rgba(1, 68, 255, 0.06))\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"In this post, I'll assess Struct from the lens of CRISPY framework that I had introduced in my \",/*#__PURE__*/e(n,{href:{pathVariables:{mHqK7SaND:\"knowledge-base\"},unresolvedPathSlugs:{mHqK7SaND:{collectionId:\"H7OCenXtD\",collectionItemId:\"tEGjjUS4J\"}},webPageId:\"C4rWqDZEZ\"},openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"June\"})}),\" blog post.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Contextual Clarity: 1/1\"}),/*#__PURE__*/e(\"p\",{children:\"We use AI for generating title, summary for every thread. Moreover, you can assign multiple tags to attach additional context. You can even convert Struct into a task management system, like we've done on our team.\"}),/*#__PURE__*/e(\"h2\",{children:\"Real-Time: 1/1\"}),/*#__PURE__*/e(\"p\",{children:\"Struct's feed is IMO the most real-time feed there is, adding, updating and removing threads live. Struct uses Websockets heavily to bring anything happening anywhere, real-time to the users.\"}),/*#__PURE__*/e(\"h2\",{children:\"Isolation: 1/1\"}),/*#__PURE__*/e(\"p\",{children:'Struct\\'s Thread based design allows conversations to evolve without interleaving. Moreover, if a conversation in a thread goes out-of-scope, you can \"fork\" those chat messages into a new thread. Or, merge two very similar threads together (coming soon).'}),/*#__PURE__*/e(\"h2\",{children:\"Spam Control: 0/1\"}),/*#__PURE__*/e(\"p\",{children:\"Coming soon. We intend to build multiple systems to deal with spam, including trust-levels and AI-powered moderation.\"}),/*#__PURE__*/e(\"h2\",{children:\"Progressive Learning: 0/1\"}),/*#__PURE__*/e(\"p\",{children:\"Struct Bot can act like a GPT over your past accessible conversations, and respond directly to your queries.\"}),/*#__PURE__*/e(\"h2\",{children:\"Yieldful Search: 1/1\"}),/*#__PURE__*/e(\"p\",{children:\"We use hybrid search, a mix of keyword and semantic search, to search the most relevant threads for your search query. Moreover, when you're creating new threads, we propose to you similar threads that might already have what you're looking for. We also show similar threads for every thread that you're looking at. 1/1\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"As of Feb 22, 2024, Struct scores a 4/6 in the CRISPY framework.\"})})]}),[I]:\"\",[T]:et(void 0,\"\"),[x]:\"\",[A]:null,[C]:\"\",[P]:et(void 0,\"\"),[N]:\"\",[Y]:null,[W]:\"\",[q]:et(void 0,\"\"),[j]:\"\",[B]:null,[R]:\"\",[E]:et(void 0,\"\"),[G]:\"\",[K]:null,[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null},{index:2,id:\"aA4neZs03\",[l]:!1,[h]:!1,[d]:\"Struct Pricing Model\",[u]:\"pricing-model\",[m]:\"Struct Chat presents its innovative pricing model\",[p]:\"manish\",[g]:\"2024-02-23T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/drM35pSEQm05Lbsv2PQH1Lxpa8.webp\",srcSet:\"https://framerusercontent.com/images/drM35pSEQm05Lbsv2PQH1Lxpa8.webp?scale-down-to=512 512w,https://framerusercontent.com/images/drM35pSEQm05Lbsv2PQH1Lxpa8.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/drM35pSEQm05Lbsv2PQH1Lxpa8.webp 1032w\"},\"\"),[w]:\"var(--token-2bb14cb0-85af-46bd-8741-f9f30bf0fc1e, rgba(1, 68, 255, 0.06))\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Let's talk about pricing. \"}),\"The industry standard model of charging per user or per agent never quite sat well with me. It's time to shake things up. At Struct, we're bringing two different use cases - communities and teams - under one platform. This unique blend demands an innovative pricing model that can accommodate the varied needs of these groups.\"]}),/*#__PURE__*/e(\"p\",{children:\"Our original thought was to build pricing around active threads. But, we realized over running hundreds of orgs on Struct since our Knowledge Base launch in June is that the main cost to running a chat platform like Struct is GPT. Serving chats, threads, files and emojis isn't all that expensive, GPT is the real cost.\"}),/*#__PURE__*/e(\"p\",{children:\"Struct uses GPT for these tasks:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generating title and summary for each thread\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Questions asked to Struct Bot\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"(In development) Generate weekly newsletter to send out to members\"})})]}),/*#__PURE__*/e(\"p\",{children:\"GPT is the most variable in our costs to run the platform, and also at the same time, something that can be controlled. For example, if a team doesn't use Struct Bot to ask questions, then their GPT usage would be lower compared to another team who's actively asking questions.\"}),/*#__PURE__*/e(\"p\",{children:\"So, it only seemed right that we charge by the GPT usage, in particular, by the tokens used. To keep things simple, we treat both prompt and completion tokens the same. Our pricing model would be $9.97 per month, with 200K tokens included in the base price. Beyond that, we'd charge $0.03/1K tokens used.\"})]}),[I]:\"$9.97 per month, with 200K tokens included + $0.03/1K tokens used overage\",[T]:et(void 0,\"\"),[x]:\"\",[A]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"This pricing model works well for teams of size 5 to communities of size 100,000. In fact, we've seen that large communities tend to produce less messages and require less GPT work than teams. This model generates reasonable, predictable pricing across the entire spectrum.\"}),/*#__PURE__*/e(\"p\",{children:\"We haven't enforced any monetization on Struct so far. The focus has been on launching the chat platform. Before we introduce this pricing model, we'd ensure that our users have ways to tweak their GPT usage.\"}),/*#__PURE__*/e(\"p\",{children:\"For example, we'd allow our users to set a limit on how much they can be charged in the month, to avoid any surprises. Beyond the limit, Struct would still continue to operate sending messages, serving threads, pretty much like every other chat platform that exists today.\"})]}),[C]:\"\",[P]:et(void 0,\"\"),[N]:\"\",[Y]:null,[W]:\"\",[q]:et(void 0,\"\"),[j]:\"\",[B]:null,[R]:\"\",[E]:et(void 0,\"\"),[G]:\"\",[K]:null,[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null},{index:3,id:\"v87dewdAa\",[l]:!0,[h]:!1,[d]:\"Redesigning Anonymous Mode, for Humans\",[u]:\"redesigning-anonymous-mode-for-humans\",[m]:\"How do we protect user identities while preserving the essence of their unique personalities? \",[p]:\"manish\",[g]:\"2023-08-14T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/lLh7aN9kZgOc2Any0T6rAE.webp\",srcSet:\"https://framerusercontent.com/images/lLh7aN9kZgOc2Any0T6rAE.webp?scale-down-to=512 512w,https://framerusercontent.com/images/lLh7aN9kZgOc2Any0T6rAE.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/lLh7aN9kZgOc2Any0T6rAE.webp 1280w\"},\"Painting in the style of Van Gogh featuring famous historical figures, characterized by vivid colors and expressive brushstrokes.\"),[w]:\"rgba(61, 232, 255, 0.14)\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Conversations are, in many ways, the backbone of humanity. They shape our opinions, our personalities, and even the way we perceive the world around us. Whether it's a hearty laugh over a shared memory with an old friend or a serious discourse with a colleague, our conversations define us. But in this age of digital enlightenment, the lines between open communication and privacy have often been blurred.\"}),/*#__PURE__*/e(\"p\",{children:\"We live in a time where the importance of speaking one\u2019s mind is constantly being championed. People are urged to voice their opinions, to participate in global discussions, to be a part of the grand narrative. Yet, for many, the threat to their identity or the fear of backlash holds them back. Privacy and anonymity become their shields, allowing them to engage while maintaining a distance.\"}),/*#__PURE__*/t(\"p\",{children:[\"As we venture deeper into this, a pressing question emerges: How can we protect user identities while preserving the essence of their unique personalities? At Struct, we are excited to share our groundbreaking take on this age-old question, with \",/*#__PURE__*/e(\"strong\",{children:\"anonymous mode.\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Welcome, Algorand: Community with 37K Members\"}),/*#__PURE__*/t(\"p\",{children:[\"Struct Chat prioritizes open dialogue, making conversations accessible to the public. This approach not only enhances transparency but also enriches the knowledge reservoir of online communities. Esteemed communities like Apache Druid, Typesense, and Tooljet already trust and utilize \",/*#__PURE__*/e(n,{href:\"https://www.struct.ai/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Struct\"})}),\" to capture knowledge from their conversations.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Couple of weeks ago, \",/*#__PURE__*/e(n,{href:\"https://algorand.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Algorand\"})}),\" joined the list of Struct users. Collaborating with our newest and biggest user presented a distinctive challenge: shield the identities of its 37,000 members when presenting their Struct site to the world. We had worked on an anonymous mode briefly in the past, and this requirement allowed us to push full steam ahead in its implementation.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The biggest question was, \",/*#__PURE__*/e(\"strong\",{children:'\"How do we build anonymous mode, but for humans?\"'})]}),/*#__PURE__*/e(\"h3\",{children:\"Anonymous Mode for Humans\"}),/*#__PURE__*/t(\"p\",{children:[\"Granted, the concept of an anonymous mode isn't novel. Various platforms have such a mode. For instance, \",/*#__PURE__*/e(n,{href:\"https://www.teamblind.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Blind\"})}),\" opts to showcase just the initial of a user's email, whereas platforms like \",/*#__PURE__*/e(n,{href:\"https://discourse.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Discourse\"})}),' simply label users as \"anonymous,\" often followed by a random character, as explained in this ',/*#__PURE__*/e(n,{href:\"https://meta.discourse.org/t/use-anonymous-mode-to-reply-or-create-topics/240039\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"post\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"However, our vision is distinct. We recognize the importance of connecting with the individual behind the screen. Rather than bestowing users with generic or even frivolous usernames like 'anonymous', 'Bond007', or 'SunflowerPrincess', we aimed to resonate with the inherent human essence.\"}),/*#__PURE__*/e(\"p\",{children:\"Yet, a name is only half of one's digital identity. What about the visual representation? Platforms like Slack resort to generic avatars derived from the first letter of their identity. We felt such depictions diluted the human element, rendering interactions robotic.\"}),/*#__PURE__*/e(\"img\",{alt:\"Square blocks with the letters if the alphabet inside\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,sSUQ2jvtywdvUhQKjG87s1ql5pw.webp?originalFilename=blog-alpha-avatars_compressed_originalsize.webp\",\"data-framer-height\":\"656\",\"data-framer-width\":\"3098\",height:\"328\",src:\"https://framerusercontent.com/images/sSUQ2jvtywdvUhQKjG87s1ql5pw.webp\",srcSet:\"https://framerusercontent.com/images/sSUQ2jvtywdvUhQKjG87s1ql5pw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/sSUQ2jvtywdvUhQKjG87s1ql5pw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/sSUQ2jvtywdvUhQKjG87s1ql5pw.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/sSUQ2jvtywdvUhQKjG87s1ql5pw.webp 3098w\",style:{aspectRatio:\"3098 / 656\"},width:\"1549\"}),/*#__PURE__*/e(\"h6\",{children:\"By default, Slack profile pictures adopt the first letter of your name.\"})]}),[I]:\"Our solution? Assigning names inspired by influential figures spanning various fields \u2014 from scientists and artists to politicians and athletes. Imagine engaging in a stimulating discussion with an 'Agatha Christie', 'Rosa Parks', or 'Alan Turing'.\",[T]:et(void 0,\"\"),[x]:\"\",[A]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Our solution? \",/*#__PURE__*/e(\"strong\",{children:\"Assigning names inspired by influential figures spanning various fields\"}),\" \u2014 from scientists and artists to politicians and athletes. Imagine engaging in a stimulating discussion with an 'Agatha Christie', 'Rosa Parks', or 'Alan Turing'.\"]}),/*#__PURE__*/t(\"p\",{children:[\"To enhance this human experience, we harnessed the power of AI to \",/*#__PURE__*/e(\"strong\",{children:\"craft multiple Van Gogh style images for each person.\"}),\" Now, users wouldn't just have a notable name but also a distinctive, humanized profile picture to complement their interactions.\"]})]}),[C]:\"\",[P]:et({src:\"https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png\",srcSet:\"https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png?scale-down-to=512 512w,https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png 1536w\"},\"Painting in the style of Van Gogh featuring famous historical figures, characterized by vivid colors and expressive brushstrokes\"),[N]:\"Struct generates a unique Van Gogh style image for each profile, named after an influential person.\",[Y]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"By adopting the names of iconic personalities, Struct is doing more than just giving users a pseudonym. We\u2019re providing a cloak of credibility, a sense of familiarity. If you were to receive a message from 'Turing', your mind might inadvertently associate it with the famed scientist. The conversation suddenly takes on a richer tone, a deeper context. Even if the discourse is about something as mundane as the weather, there's an underlying gravitas added to it \u2014 a human touch.\"}),/*#__PURE__*/e(\"p\",{children:\"In our first iteration, we generated ~2500 such images that can be assigned to Struct users, when anonymous mode is turned on. And over time, we intend to keep expanding this library of human avatars.\"}),/*#__PURE__*/t(\"p\",{children:[\"To see this unique anonymous mode in action, check out \",/*#__PURE__*/e(n,{href:\"https://algorand.struct.ai/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Algorand's Struct site\"})}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"Struct app UI featuring discussions between anonymous users whose avatars are in the style of Van Gogh paintings\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,luFdbT6Kaugz7Ehm22QsgXEnY.webp?originalFilename=blog-alpha-avatars-live+view_compressed_originalsize.webp\",\"data-framer-height\":\"1776\",\"data-framer-width\":\"3098\",height:\"888\",src:\"https://framerusercontent.com/images/luFdbT6Kaugz7Ehm22QsgXEnY.webp\",srcSet:\"https://framerusercontent.com/images/luFdbT6Kaugz7Ehm22QsgXEnY.webp?scale-down-to=512 512w,https://framerusercontent.com/images/luFdbT6Kaugz7Ehm22QsgXEnY.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/luFdbT6Kaugz7Ehm22QsgXEnY.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/luFdbT6Kaugz7Ehm22QsgXEnY.webp 3098w\",style:{aspectRatio:\"3098 / 1776\"},width:\"1549\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"We feel our approach to anonymous mode underscores a profound understanding of human psychology. Humans thrive on interactions, on personal connections. When conversing with someone, even if it\u2019s behind a screen, we like to have a face, a name, something to hold on to. By using historic names and artistic avatars, Struct ensures that even in an anonymous setting, conversations remain intimate, personable.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"It reminds us that at the heart of every conversation, no matter how digital, is the human spirit.\"}),\" And it's this spirit that this take on anonymous mode captures so beautifully. Next time you're on Struct, you are not just talking to 'anonymous'; you are conversing with Kalam, with Parks, or with Lincoln. And that small detail, in our honest opinion, makes all the difference.\"]}),/*#__PURE__*/e(\"img\",{alt:\"A selection of avatars in the style of Van Gogh featuring famous historical figures, characterized by vivid colors and expressive brushstrokes\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,pRYbzEPFJdZd7Vyaxq9Xbs1pBsA.png\",\"data-framer-height\":\"1056\",\"data-framer-width\":\"3098\",height:\"528\",src:\"https://framerusercontent.com/images/pRYbzEPFJdZd7Vyaxq9Xbs1pBsA.png\",srcSet:\"https://framerusercontent.com/images/pRYbzEPFJdZd7Vyaxq9Xbs1pBsA.png?scale-down-to=512 512w,https://framerusercontent.com/images/pRYbzEPFJdZd7Vyaxq9Xbs1pBsA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/pRYbzEPFJdZd7Vyaxq9Xbs1pBsA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/pRYbzEPFJdZd7Vyaxq9Xbs1pBsA.png 3098w\",style:{aspectRatio:\"3098 / 1056\"},width:\"1549\"}),/*#__PURE__*/e(\"h6\",{children:\"Names of people from left to right, top to bottom.Middle image: Agatha Christie, A. P. J. Abdul Kalam, Abraham Lincoln, Rosa Parks, Youyou Tu, Alan TuringBottom image:Wanda Austin, Alexander Graham Bell, Evelyn Boyd Granville, Annie Jump Cannon, Coco Chanel, Charles Darwin, Leonardo Da Vinci, Edsger Wybe DijkstraMahatma Gandhi, Kadambini Ganguly, Werner Heisenberg, Thomas Jefferson, Betty Jennings, Sophie Kowalevski, Yukihiro Matsumoto, John MuirIsaac Newton, Florence Nightingale, Alfred Nobel, Betty Snyder, Rabindranath Tagore, Nikola Tesla, Sir Mokshagundam Visvesvaraya, George Washington\"})]}),[W]:\"It reminds us that at the heart of every conversation, no matter how digital, is the human spirit. \",[q]:et(void 0,\"\"),[j]:\"\",[B]:null,[R]:\"\",[E]:et(void 0,\"\"),[G]:\"\",[K]:null,[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null},{index:4,id:\"NqYggL9c7\",[l]:!0,[h]:!1,[d]:\"Bringing Conversational AI to Slack, powered by Struct and OpenAI\",[u]:\"conversational-ai-to-slack-powered-by-struct-and-openai\",[m]:\"Struct bot now utilizes the knowledge pages captured from Slack threads to directly answer users' queries\",[p]:\"manish\",[g]:\"2022-03-15T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/3WBs4XaeQpX6vAnQuXSBoMHZMU.webp\",srcSet:\"https://framerusercontent.com/images/3WBs4XaeQpX6vAnQuXSBoMHZMU.webp?scale-down-to=512 512w,https://framerusercontent.com/images/3WBs4XaeQpX6vAnQuXSBoMHZMU.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/3WBs4XaeQpX6vAnQuXSBoMHZMU.webp 1280w\"},\"Historical painting capturing Gutenberg's printing press\"),[w]:\"rgba(61, 210, 255, 0.14)\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"In my \",/*#__PURE__*/e(n,{href:\"https://www.struct.ai/blog/launching-struct-chat-platform\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"last blog post\"})}),\", I introduced Struct \u2014 the Chat Platform we're building to bridge the gap between communication and knowledge. The post was very well received, making it to the \",/*#__PURE__*/e(n,{href:\"https://news.ycombinator.com/item?id=36432743\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"front page\"})}),\" of Hacker News. And we got quite some interest \u2014 60+ orgs installed the Struct bots, resulting in conversations spanning 13,500 threads and 22,000 users.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We also got some confused questions \u2014 Is Struct a platform, or is it a bot? Let me quickly clarify that. Struct Chat is the knowledge-rich chat platform that we're building to replace Slack and Discord, both of which leave a lot to be desired (see CRISPY framework in the last blog post). We're hoping to start trialing the platform by the end of this quarter. You can \",/*#__PURE__*/e(n,{href:\"https://struct.ai/waitlist\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"sign up for the waitlist\"})}),\" here.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In the meantime, we've built Struct bots -- for \",/*#__PURE__*/e(n,{href:\"https://struct.ai/install-slack\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Slack\"})}),\" and for \",/*#__PURE__*/e(n,{href:\"https://struct.ai/install-discord\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Discord\"})}),\". They capture threads in the respective platform to generate a knowledge base. You can see current examples of knowledge bases running here:\"]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://druid.struct.ai/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Apache Druid\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://threads.typesense.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Typesense\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://threads.tooljet.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Tooljet\"})})})})]}),/*#__PURE__*/e(\"h2\",{children:\"Struct Bot captures Knowledge from Slack\"}),/*#__PURE__*/e(\"p\",{children:\"In this post, I'd talk specifically about the bot that we built for Slack.\"}),/*#__PURE__*/e(\"p\",{children:\"Struct bot picks up Slack threads and processes them through AI to generate a title, summary, resolution status for the conversation, and vector embeddings. All these allow us to generate knowledge document per thread -- which we render as an easily accessible, searchable, SEO-optimized web page.\"}),/*#__PURE__*/e(\"p\",{children:\"Moreover, Struct generates vector embeddings per query, so it can search not just by the keyword, but also by the similarity of the search term \u2014 doing a hybrid search to find the most relevant threads for your search query.\"}),/*#__PURE__*/t(\"p\",{children:[\"Note that Struct doesn't pick up individual messages in channels so far, only threads. The former are too \",/*#__PURE__*/e(\"em\",{children:\"diluted\"}),\" to be used for knowledge capture.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generative AI, Vector Embeddings, and Hybrid Search\"}),/*#__PURE__*/t(\"p\",{children:[\"Struct uses OpenAI APIs to generate the title, summary, and resolution status. To generate document and search query embeddings, we use Microsoft's \",/*#__PURE__*/e(n,{href:\"https://huggingface.co/intfloat/e5-large\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"E5 model\"})}),\" running on \",/*#__PURE__*/e(n,{href:\"https://typesense.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Typesense\"})}),\" search engine.\"]}),/*#__PURE__*/e(\"p\",{children:\"Why not just use OpenAI's embeddings? We initially used to. But, the latency turned out to be too unpredictable for generating embeddings for search queries. Thus, we rely upon OpenAI only for indexing time requests (like generating titles, summaries, etc.), while the runtime requests (like search queries) are processed through the open-source E5 model, where we control latency tightly.\"}),/*#__PURE__*/e(\"p\",{children:'In fact, we rely upon Typesense to auto-generate the embeddings by specifying the specific model we want in their schema. This model is also applied to search queries to generate embeddings for them in real time. Typesense then calculates a hybrid score, a mix of keyword search and cosine similarity search, to identify the most relevant documents corresponding to the query. We use the same mechanism to power our \"Similar Threads\" search as well.'}),/*#__PURE__*/e(\"h2\",{children:\"Conversational AI within Slack\"}),/*#__PURE__*/t(\"p\",{children:[\"All this technology has allowed us to take a giant leap. Starting today, \",/*#__PURE__*/e(\"strong\",{children:\"our Slack bot can directly answer users' questions, learning from the knowledge it has captured from your Slack conversations.\"})]}),/*#__PURE__*/t(\"p\",{children:[\"After installation, the bot would create a channel called \",/*#__PURE__*/e(\"code\",{children:\"#ask-struct-ai\"}),\". If you have restrictions on who can create a channel then the bot might not be able to create this channel. In that case, post install, the mods can create this channel, and add \",/*#__PURE__*/e(\"code\",{children:\"@struct.ai\"}),\" bot to it. Any questions asked in this channel would get a response from the AI bot. \",/*#__PURE__*/e(\"em\",{children:\"See it in action here:\"})]}),/*#__PURE__*/e(i.div,{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"var(--aspect-ratio)\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(r,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/bZxrMUxBPAhoXlARkK9C/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(c,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=cynMPN9EVMo&ab_channel=ManishRaiJain\"})})}),/*#__PURE__*/e(\"p\",{children:'To achieve this, Struct runs a hybrid search for the user\\'s query across all the captured knowledge pages so far. It picks the top k pages and generates a query prompt. It sends this query prompt to OpenAI, while specifically asking it to provide references for the generated response. The response from OpenAI is then messaged back over to the user as a \"threaded\" response, within Slack. We create threads to avoid unnecessary clutter.'}),/*#__PURE__*/e(\"p\",{children:\"The responses are surprisingly accurate if the topic had been previously discussed to any extent, even if it was a few chats within some thread. If there isn't enough information, as in, the topic was never previously discussed, the response tends to admit its limitations so as not to mislead the user.\"}),/*#__PURE__*/t(\"p\",{children:[\"Seeing this in action, I must admit, is very exciting. This is also a MAJOR step in achieving the \",/*#__PURE__*/e(\"strong\",{children:\"P in CRISPY\"}),\" -- the framework I introduced in my last blog \",/*#__PURE__*/e(n,{href:\"https://www.struct.ai/blog/launching-struct-chat-platform\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"post\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),[I]:\"Progressive Learning: Utilize AI to learn from the knowledge shared in past conversations, predict and suggest responses, and improve the conversational experience.\",[T]:et(void 0,\"\"),[x]:\"\",[A]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"As engineers, we spend a lot of time sharing knowledge within Slack and other chat platforms -- most of which act like knowledge blackholes -- never surfacing all this knowledge in any meaningful way. \",/*#__PURE__*/e(\"strong\",{children:\"For the first time, thanks to the Struct bot, the knowledge shared in Slack can not only be captured but also be used to respond to users' queries.\"}),\" This is exciting and very promising.\"]}),/*#__PURE__*/e(\"p\",{children:\"In the future, we could crawl and index the documentation, support tickets, or other channels of communication, hence, improving the positive response rate of the AI. The possibilities are endless.\"}),/*#__PURE__*/e(\"h2\",{children:\"But, What About Privacy?\"}),/*#__PURE__*/e(\"p\",{children:\"I'm sure the next natural question is. \\\"But, what about privacy?\\\" This might be OK for an open-source project, but we don't want any confidential company information to be used to train a publicly available AI model.\"}),/*#__PURE__*/t(\"p\",{children:[\"At Struct, we take \",/*#__PURE__*/e(n,{href:\"https://www.struct.ai/privacy\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"privacy\"})}),\" very seriously. Since our launch, we have introduced access control to the Knowledge Base. When you install Struct bots, the threads picked up by Struct would be accessible only to Slack members by default. This is done by enforcing channel-level permissions, accessible through Workspace Settings by the moderators. Struct then automatically limits which threads the conversational AI would use to generate the responses, based upon access level.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Screenshot of UI from the Struct app, featuring privacy setting options\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,APF0YkX5LWXeI9oaEAjuk9tvu6s.png\",\"data-framer-height\":\"1430\",\"data-framer-width\":\"3098\",height:\"715\",src:\"https://framerusercontent.com/images/APF0YkX5LWXeI9oaEAjuk9tvu6s.png\",srcSet:\"https://framerusercontent.com/images/APF0YkX5LWXeI9oaEAjuk9tvu6s.png?scale-down-to=512 512w,https://framerusercontent.com/images/APF0YkX5LWXeI9oaEAjuk9tvu6s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/APF0YkX5LWXeI9oaEAjuk9tvu6s.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/APF0YkX5LWXeI9oaEAjuk9tvu6s.png 3098w\",style:{aspectRatio:\"3098 / 1430\"},width:\"1549\"}),/*#__PURE__*/e(\"p\",{children:\"But to generate the title, summary, and responses to user's queries, we're sending that data over to OpenAI -- what about that?\"}),/*#__PURE__*/t(\"p\",{children:[\"For that, refer to the API data usage \",/*#__PURE__*/e(n,{href:\"https://openai.com/policies/api-data-usage-policies\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"policy\"})}),\" of OpenAI:\"]}),/*#__PURE__*/e(\"h6\",{children:'\"Starting on March 1, 2023, we are making two changes to our data usage and retention policies: OpenAI will not use data submitted by customers via our API to train or improve our models, unless you explicitly decide to share your data with us for this purpose. You can opt-in to share data. Any data sent through the API will be retained for abuse and misuse monitoring purposes for a maximum of 30 days, after which it will be deleted (unless otherwise required by law)\"'}),/*#__PURE__*/e(\"p\",{children:\"To summarize, OpenAI does not use the data submitted via their paid APIs to train or improve their models.\"}),/*#__PURE__*/t(\"p\",{children:[\"So you get all this amazing functionality while also maintaining privacy. Next time, when you have to ask a question, \",/*#__PURE__*/e(\"strong\",{children:\"before bugging a colleague, just ask the Struct.AI bot. It might already know the answer.\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"Our goal with Struct is to capture the knowledge that's shared in everyday communication and make it accessible. Today, we take a giant leap in that direction with the introduction of our conversational AI bot.\"}),/*#__PURE__*/e(\"p\",{children:\"Our new bot uses the knowledge pages generated from Slack threads to respond to user queries. This means you don't have to keep asking the same questions on Slack over and over again. You can just ask our bot!\"}),/*#__PURE__*/e(\"p\",{children:\"You can install Struct bots by following these links:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://struct.ai/install-slack\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Install in Slack\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://struct.ai/install-discord\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Install in Discord\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"This is a game changer for how we work together and share knowledge. In the future, we want to make our bot even smarter by letting it learn from more places, like documentation and support tickets.\"}),/*#__PURE__*/e(\"p\",{children:\"Thank you for being part of this exciting journey to knowledge accessibility in chat platforms.\"}),/*#__PURE__*/t(\"h6\",{children:[\"Image credits: \",/*#__PURE__*/e(n,{href:\"https://www.britannica.com/biography/Johannes-Gutenberg\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Source\"})})]}),/*#__PURE__*/e(\"h6\",{children:\"Gutenberg's printing press, an invention that revolutionized history by vastly increasing book accessibility, resulted in European book production soaring from a few million to about a billion copies in less than four centuries.\"}),/*#__PURE__*/e(\"h6\",{children:\"At Struct, we are similarly invigorated about the infinite potential that comes from capturing everyday conversations, making them accessible for future use. We believe in the power of unlocking this untapped knowledge, much like the transformative impact of Gutenberg's press on information sharing.\"})]}),[C]:\"\",[P]:et(void 0,\"\"),[N]:\"\",[Y]:null,[W]:\"\",[q]:et(void 0,\"\"),[j]:\"\",[B]:null,[R]:\"\",[E]:et(void 0,\"\"),[G]:\"\",[K]:null,[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null},{index:5,id:\"tEGjjUS4J\",[l]:!0,[h]:!1,[d]:\"Launching Struct Knowledge Base\",[u]:\"knowledge-base\",[m]:\"Introducing Struct KB: Turn walled communication into accessible, indexable knowledge base\",[p]:\"manish\",[g]:\"2023-06-22T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/crMuSLfgyFvgHOLBaQ9owb9KEw.webp\",srcSet:\"https://framerusercontent.com/images/crMuSLfgyFvgHOLBaQ9owb9KEw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/crMuSLfgyFvgHOLBaQ9owb9KEw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/crMuSLfgyFvgHOLBaQ9owb9KEw.webp 1280w\"},\"Struct logo surrounded by interesting UI components from the Struct app\"),[w]:\"var(--token-2bb14cb0-85af-46bd-8741-f9f30bf0fc1e, rgba(1, 68, 255, 0.06))\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Chat platforms today are inherently broken. Slack and Discord, the most commonly used chat platforms, while useful for real-time communication, create knowledge black holes, hindering the effective storage and retrieval of information.\"}),/*#__PURE__*/e(\"p\",{children:\"This article is divided into 3 main sections. In section 1, I dissect the challenges plaguing existing chat platforms. In section 2, I introduce the CRISPY framework that outlines six underlying principles all chat platforms should strive to uphold.\"}),/*#__PURE__*/e(\"p\",{children:\"And finally in section 3, I introduce Struct -- a new, innovative chat platform embodying this framework. Struct challenges the status quo, turning real-time communication into accessible, lasting knowledge and reinventing chat as we know it.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"This blog post made it to the front page of Hacker News, resulting in a very fruitful \"}),/*#__PURE__*/e(n,{href:\"https://news.ycombinator.com/item?id=36432743\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"discussion\"})})}),/*#__PURE__*/e(\"strong\",{children:\".\"})]}),/*#__PURE__*/e(\"h2\",{children:\"1. Communication Does NOT Equal Knowledge\"}),/*#__PURE__*/e(\"p\",{children:\"Since the dawn of civilization, humans have been communicating. Exchanging stories over the warm glow of campfires, and sharing thoughts over a communal meal, these exchanges form the bedrock of human connection.\"}),/*#__PURE__*/e(\"p\",{children:\"These conversations, while essential for social bonding and creating shared experiences, do not always translate into lasting knowledge. While knowledge is shared in these exchanges, without any effective capture process, they are rendered as mere memories: forgotten or irrecoverably altered over time like a game of telephone.\"}),/*#__PURE__*/e(\"p\",{children:\"Capturing knowledge and maintaining it for the future required us to invent writing and printing. It involves the process of capturing, documenting, organizing, and storing information effectively. Once captured, a written word can be handed down over generations and centuries, informing all future communication.\"}),/*#__PURE__*/t(\"p\",{children:[\"The current chat platforms like Slack, Discord, and others allow us to communicate. But, \",/*#__PURE__*/e(\"strong\",{children:\"these platforms fail at converting these conversations into knowledge.\"}),\" And therein lies the biggest problem that millions of users of these platforms suffer on a daily basis.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Chat Platforms are Knowledge Black Holes\"}),/*#__PURE__*/t(\"p\",{children:[\"As the \",/*#__PURE__*/e(n,{href:\"https://manishrjain.com/about\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"founder of Dgraph Labs\"})}),\", the fastest-growing open-source Spanner-like graph database -- I was running a growing and very active Slack community of Dgraph users. We had over 3000 members in Slack. It was the main source of support for our user base. And while Slack provided a real-time mode of communication -- its problems were manyfold.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Horrible Search:\"}),\" After dedicating over six years to Google Web Search infrastructure, I've come to appreciate the intricate balance between content, context, and 'meatiness' that makes any document fully searchable. Imagine each conversation as a document. It's not just an isolated message or two, but a group of related messages, all encapsulating the same train of thought.\"]}),/*#__PURE__*/e(\"p\",{children:'In the case of Slack, however, this ideal of a \"document\" is dramatically scaled down to a single chat message. This limitation inherently strips away the rich context and substantial content that make a conversation ripe for efficient searching. Consequently, this is why searching within Slack often feels like a wild goose chase.'}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"New Message Whac-a-Mole:\"}),\" There is an endless stream of \",/*#__PURE__*/e(\"em\",{children:\"bold-font\"}),\" channels to chase. In Slack, a channel with bold fonts means it has a new message. Every new message in the channel would cause it to become \",/*#__PURE__*/e(\"em\",{children:\"bold\"}),\". It was a tiring job as an open-source maintainer, playing \",/*#__PURE__*/e(n,{href:\"https://en.wikipedia.org/wiki/Whac-A-Mole\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Whac-a-Mole\"})}),\" with new messages popping over an array of channels.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The N+1 Channel Conundrum:\"}),\" Given that creating a channel is the sole means of establishing the context within Slack, there always seems to be a need for 'just one more channel' to cater to slightly different contexts. This approach results in a channel explosion, making navigation and organization an uphill battle.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The Echo of Repetition:\"}),\" Slack struggles with capturing and making knowledge readily available, leading to recurring questions that endlessly loop back into the conversation.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Notification Avalanche:\"}),\" The barrage of notifications becomes relentless, descending on laptops, iPads, phones, and smartwatches without mercy. This constant bombardment is the only way to keep up with the real-time flow of messages -- because Slack just isn't designed for a 'later.'\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Impossible Pricing Model:\"}),\" When running thousands of users on Slack, you have a choice between paying exorbitant amount of money to Slack or losing your chat history.\"]}),/*#__PURE__*/t(\"p\",{children:[\"These are among the key reasons that led us to \",/*#__PURE__*/e(n,{href:\"https://manishrjain.com/archive-dgraph-shutting-slack\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"shut down\"})}),\" our Slack instance, pivoting instead to Discourse. However, while Discourse is a useful platform, it's an asynchronous forum, not a real-time chat platform, making it an unsatisfactory substitute.\"]}),/*#__PURE__*/e(\"p\",{children:\"In fact, these issues aren't exclusive to Slack. The same complaint could be lodged against virtually any chat platform that exists today, whether it be Discord, IRC, or WhatsApp.\"}),/*#__PURE__*/e(\"h3\",{children:\"We can do Better.\"}),/*#__PURE__*/e(\"p\",{children:\"I have thought about this problem for the past 5 years -- and arrived at a set of principles the ideal chat platform should aspire towards. And I've formulated all that into, what I call, the CRISPY framework.\"}),/*#__PURE__*/e(\"p\",{children:\"Before I introduce the CRISPY framework, let's define what a conversation is. A conversation is a series of related chat messages exchanged between two or more participants. These messages, covering a single topic, together form a complete conversation.\"}),/*#__PURE__*/e(\"h2\",{children:\"2. CRISPY: Framework for an Ideal Chat Platform\"}),/*#__PURE__*/e(\"p\",{children:\"CRISPY is a framework that defines what one should expect from a platform that they use for meaningful communication. A platform that can not only support effective real-time communication but also capture knowledge and make it accessible.\"}),/*#__PURE__*/e(\"p\",{children:\"The CRISPY framework has 6 principles:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Contextual Clarity:\"}),\" Each conversation should have a defined title and summary for immediate understanding.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Real-time Interactions:\"}),\" Streamline short-form chats and implement real-time indicators to make the conversation lively and engaging.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Isolation:\"}),\" Enable clear separation of concurrent conversations to maintain focus and avoid confusion.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Spam Control:\"}),\" Implement robust measures to filter and prevent unwanted or disruptive messages.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Progressive Learning:\"}),\" Utilize AI to learn from the knowledge shared in past conversations, predict and suggest responses, and improve the conversational experience.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Yieldful Search:\"}),\" Incorporate an advanced search feature for effortless retrieval of past conversations.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Each of these principles serves as the cornerstone for a platform that not only facilitates effective and real-time communication but also enriches them, making them accessible and leveraging their knowledge for future interactions.\"}),/*#__PURE__*/e(\"h3\",{children:\"How CRISPY are Existing Platforms?\"}),/*#__PURE__*/e(\"p\",{children:\"Existing chat platforms like Slack and Discord fare poorly when looking from the prism of the CRISPY framework.\"}),/*#__PURE__*/e(\"img\",{alt:\"Chart labeling the CRISPY score of Slack and Discord, giving them a total of 1.5/6\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,uh2qTjxdAveHeg28pKOecVclKdk.webp\",\"data-framer-height\":\"2038\",\"data-framer-width\":\"3110\",height:\"1019\",src:\"https://framerusercontent.com/images/uh2qTjxdAveHeg28pKOecVclKdk.webp\",srcSet:\"https://framerusercontent.com/images/uh2qTjxdAveHeg28pKOecVclKdk.webp?scale-down-to=512 512w,https://framerusercontent.com/images/uh2qTjxdAveHeg28pKOecVclKdk.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/uh2qTjxdAveHeg28pKOecVclKdk.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/uh2qTjxdAveHeg28pKOecVclKdk.webp 3110w\",style:{aspectRatio:\"3110 / 2038\"},width:\"1555\"}),/*#__PURE__*/e(\"p\",{children:\"In fact, after searching over the years, I've come to realize that no existing chat platform abides by the CRISPY framework. And that's not just because I came up with the framework. While I've formulated them into an acronym, these are reasonably expected principles from any knowledge-communicating platform.\"}),/*#__PURE__*/e(\"p\",{children:\"For example, many email platforms and forums can give you 4 out of 6. Contextual Clarity, Isolation, Searchability and Spam Control. They can't provide real-time interactions. And there's probably work going on for progressive learning.\"}),/*#__PURE__*/e(\"img\",{alt:\"Chart labeling the CRISPY score of Email and Forums, giving them a total of 4.5/6\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,fGwPlukwdoXLmjigsg4kMoO5btg.webp\",\"data-framer-height\":\"2276\",\"data-framer-width\":\"3110\",height:\"1138\",src:\"https://framerusercontent.com/images/fGwPlukwdoXLmjigsg4kMoO5btg.webp\",srcSet:\"https://framerusercontent.com/images/fGwPlukwdoXLmjigsg4kMoO5btg.webp?scale-down-to=512 512w,https://framerusercontent.com/images/fGwPlukwdoXLmjigsg4kMoO5btg.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/fGwPlukwdoXLmjigsg4kMoO5btg.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/fGwPlukwdoXLmjigsg4kMoO5btg.webp 3110w\",style:{aspectRatio:\"3110 / 2276\"},width:\"1555\"}),/*#__PURE__*/t(\"p\",{children:[\"Given any decades-old email platform can score a 4.5, chat platforms are objectively worse. \",/*#__PURE__*/e(\"strong\",{children:\"You get real-time interactions, and you pretty much give up on everything else.\"}),\" With a score of 1.5, chat platforms are a horrible solution.\"]}),/*#__PURE__*/e(\"p\",{children:\"Lately, Slack and Discord, have both added threads to allow some level of isolation. But, to achieve that, they had to break away from what made them special -- the liveness of conversations. They have taken a live, real-time chat platform, with typing indicators, and hidden it all behind a number. It's a hacky design, which doesn't align with their emphasis on real-time communication.\"}),/*#__PURE__*/e(\"img\",{alt:\"Screenshot of Slack's reply feature with 55 replies hidden from view\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,30E4T3pbhjjmijYKJ6gvWhJyw.webp\",\"data-framer-height\":\"922\",\"data-framer-width\":\"3098\",height:\"461\",src:\"https://framerusercontent.com/images/30E4T3pbhjjmijYKJ6gvWhJyw.webp\",srcSet:\"https://framerusercontent.com/images/30E4T3pbhjjmijYKJ6gvWhJyw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/30E4T3pbhjjmijYKJ6gvWhJyw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/30E4T3pbhjjmijYKJ6gvWhJyw.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/30E4T3pbhjjmijYKJ6gvWhJyw.webp 3098w\",style:{aspectRatio:\"3098 / 922\"},width:\"1549\"}),/*#__PURE__*/t(\"p\",{children:[\"At this point, some readers would say -- you communicate in the chat platform. And then you capture that knowledge in other places. That's a very common practice. And I won't dwell much into it, but just say one thing -- it's an obvious \",/*#__PURE__*/e(\"em\",{children:'\"faster horses over cars\"'}),\" argument.\"]}),/*#__PURE__*/e(\"p\",{children:\"We can do better. Much better.\"}),/*#__PURE__*/e(\"h2\",{children:\"3. Introducing Struct Knowledge Base\"}),/*#__PURE__*/e(\"p\",{children:\"For the past 6 months, my team and I have been tirelessly building a new kind of chat platform \u2013 Struct. Struct fully embodies the principles of the CRISPY framework, reshaping the very concept of what a chat platform can be.\"}),/*#__PURE__*/e(\"p\",{children:\"For Struct Knowledge Base, we focused on bringing three core principles of CRISPY \u2013 contextual clarity, searchability, and progressive learning \u2013 to existing chat platforms like Slack and Discord. To accomplish this, we've developed innovative bots that extract threaded conversations and funnel them into Struct.\"}),/*#__PURE__*/e(\"p\",{children:\"Struct then utilizes AI to\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"generate the title, summary, and resolution status of the conversation for context,\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"generate vector embeddings for each page to power search and similar threads,\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"create an SEO-optimized 'knowledge' page for each thread making the page accessible \",/*#__PURE__*/e(\"strong\",{children:\"forever\"}),\",\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"conversational responses to users' queries utilizing captured knowledge.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"This generates a knowledge base out of existing conversations in Slack and Discord, with every thread getting a server-side rendered page dedicated to that conversation. As an example, see the same Slack thread (as above) when \",/*#__PURE__*/e(n,{href:\"https://threads.typesense.org/kb/t/optimizing-schema-and-reducing-memory-usage/2K1d25\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"served by Struct\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"We're launching Struct in two stages:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Stage Knowledge Base launching today: Ability to funnel conversations from Slack and Discord into Struct, to build a knowledge base. Useful for groups who can't move away from Slack or Discord.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Stage Chat Platform launching later: Ability to use the Struct chat platform, replacing a Slack or Discord instance. Useful for groups that can move away from Slack / Discord and adopt Struct fully.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"You too can transform your Slack or Discord communication into a comprehensive knowledge base.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"In essence, Struct is transforming what is currently a knowledge black hole into an intelligent, interactive, searchable knowledge base.\"})}),/*#__PURE__*/e(\"img\",{alt:\"Struct app's summary feature UI\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,PXY26fwFc65Kc5uYYIGhGeuXZoc.webp\",\"data-framer-height\":\"3574\",\"data-framer-width\":\"3110\",height:\"1787\",src:\"https://framerusercontent.com/images/PXY26fwFc65Kc5uYYIGhGeuXZoc.webp\",srcSet:\"https://framerusercontent.com/images/PXY26fwFc65Kc5uYYIGhGeuXZoc.webp?scale-down-to=1024 891w,https://framerusercontent.com/images/PXY26fwFc65Kc5uYYIGhGeuXZoc.webp?scale-down-to=2048 1782w,https://framerusercontent.com/images/PXY26fwFc65Kc5uYYIGhGeuXZoc.webp 3110w\",style:{aspectRatio:\"3110 / 3574\"},width:\"1555\"}),/*#__PURE__*/e(\"img\",{alt:\"Struct app's thread view UI\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,3fJwvjT8SrTROyhPX63OCZGMXK8.webp\",\"data-framer-height\":\"2834\",\"data-framer-width\":\"3110\",height:\"1417\",src:\"https://framerusercontent.com/images/3fJwvjT8SrTROyhPX63OCZGMXK8.webp\",srcSet:\"https://framerusercontent.com/images/3fJwvjT8SrTROyhPX63OCZGMXK8.webp?scale-down-to=512 512w,https://framerusercontent.com/images/3fJwvjT8SrTROyhPX63OCZGMXK8.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/3fJwvjT8SrTROyhPX63OCZGMXK8.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/3fJwvjT8SrTROyhPX63OCZGMXK8.webp 3110w\",style:{aspectRatio:\"3110 / 2834\"},width:\"1555\"}),/*#__PURE__*/e(\"h3\",{children:\"Struct has Amazing Users\"}),/*#__PURE__*/t(\"p\",{children:[\"Already, Struct is enhancing communication for several online communities: \",/*#__PURE__*/e(n,{href:\"https://chatwoot.struct.ai/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Chatwoot\"})}),\", \",/*#__PURE__*/e(n,{href:\"https://grafbase.struct.ai/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Grafbase\"})}),\", \",/*#__PURE__*/e(n,{href:\"https://questions.infisical.com/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Infisical\"})}),\", \",/*#__PURE__*/e(n,{href:\"https://discuss.openobserve.ai/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"OpenObserve\"})}),\", \",/*#__PURE__*/e(n,{href:\"https://supertokens.struct.ai/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Supertokens\"})}),\", \",/*#__PURE__*/e(n,{href:\"https://threads.tooljet.com/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Tooljet\"})}),\", and \",/*#__PURE__*/e(n,{href:\"https://threads.typesense.org/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Typesense\"})}),\". This is what \",/*#__PURE__*/e(n,{href:\"https://www.linkedin.com/in/jasonbosco/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Jason Bosco\"})}),\", co-founder of Typesense, had to say about Struct:\"]})]}),[I]:'\"I\u2019ve always been worried about how all the good discussions we\u2019re having in our Slack community are inside a walled garden and are hard for people to find. I love that with Struct.ai, we\u2019re now able to have these discussions publicly indexed and easily discoverable. The summaries on top of each thread are incredibly useful.\" Jason Bosco, co-founder of Typesense',[T]:et(void 0,\"\"),[x]:\"\",[A]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Struct: Chat Reinvented\"}),/*#__PURE__*/e(\"p\",{children:\"In a world that's been communicating in real-time, but faltering when it comes to preserving knowledge, we believe it's time to do things differently. As we've discussed, platforms like Slack and Discord, though important for communication, often fall short when it comes to capturing and maintaining knowledge. But what if a chat platform could also be a vault of wisdom?\"}),/*#__PURE__*/e(\"p\",{children:\"The CRISPY framework, conceived from years of observing and dealing with these challenges, suggests a pathway to a more efficient, knowledge-rich chat environment.\"}),/*#__PURE__*/e(\"p\",{children:\"I'm proud to introduce Struct, an innovative chat platform that embodies this framework. In its first stage, Struct begins by turning Slack and Discord into searchable knowledge bases. In the second stage, it evolves into a full-fledged, standalone chat platform, redefining the concept of online communication.\"}),/*#__PURE__*/e(\"p\",{children:\"Struct Chat, Inc., the company behind Struct, is backed by SignalFire, Ratio Ventures; founders of Planetscale, Supabase; and executives from Yelp, Mint.com, and others. The chat platform space feels saturated -- and yet, there isn't a great solution. Our investors stood behind the vision that we're going for. I'm very thankful for their investment, which helped us get to this launch milestone.\"}),/*#__PURE__*/e(\"p\",{children:\"The journey is just beginning because, with Struct, we're reinventing chat, we're reinventing how people communicate -- and that's never an easy task. So, come, witness, and join the reinvention.\"})]}),[C]:\"\",[P]:et(void 0,\"\"),[N]:\"\",[Y]:null,[W]:\"\",[q]:et(void 0,\"\"),[j]:\"\",[B]:null,[R]:\"\",[E]:et(void 0,\"\"),[G]:\"\",[K]:null,[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null},{index:6,id:\"iX1PgnvwB\",[l]:!1,[h]:!1,[d]:\"Terms and conditions\",[u]:\"terms-and-conditions\",[m]:\"Please read these Terms and Conditions carefully before using our Software-as-a-Service (SaaS).\",[p]:\"struct\",[g]:\"2023-06-08T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp\",srcSet:\"https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp?scale-down-to=512 512w,https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp 1280w\"},\"\"),[w]:\"var(--token-2bb14cb0-85af-46bd-8741-f9f30bf0fc1e, rgba(1, 68, 255, 0.06))\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:'These Terms and Conditions govern your use of the SaaS provided by Struct Chat, Inc. (\"we,\" \"us,\" or \"our\").'}),/*#__PURE__*/e(\"p\",{children:\"Acceptance of Terms\"}),/*#__PURE__*/e(\"p\",{children:\"By accessing or using our SaaS, you agree to be bound by these Terms and Conditions. If you do not agree with any part of these terms, you may not use our SaaS.\"}),/*#__PURE__*/e(\"p\",{children:\"License\"}),/*#__PURE__*/e(\"p\",{children:\"We grant you a limited, non-exclusive, non-transferable license to use our SaaS for your personal or business purposes, subject to these Terms and Conditions. This license does not grant you any ownership rights or intellectual property rights in the SaaS.\"}),/*#__PURE__*/e(\"p\",{children:\"Use of the SaaS\"}),/*#__PURE__*/e(\"p\",{children:\"You agree to use our SaaS in compliance with all applicable laws and regulations. You are solely responsible for your use of the SaaS, including the accuracy, integrity, and legality of any data or content you upload or transmit through the SaaS.\"}),/*#__PURE__*/e(\"p\",{children:\"Fees and Payment\"}),/*#__PURE__*/e(\"p\",{children:\"Access to our SaaS may require payment of fees. You agree to pay all fees as specified in the pricing plan or agreement. Failure to pay the fees may result in the suspension or termination of your access to the SaaS.\"}),/*#__PURE__*/e(\"p\",{children:\"Intellectual Property\"}),/*#__PURE__*/e(\"p\",{children:\"All intellectual property rights in the SaaS, including but not limited to copyrights, trademarks, and patents, belong to us or our licensors. You may not copy, modify, distribute, sell, or lease any part of the SaaS without our prior written consent.\"}),/*#__PURE__*/e(\"p\",{children:\"Privacy and Data Security\"}),/*#__PURE__*/e(\"p\",{children:\"We are committed to protecting your privacy and the security of your data. Please refer to our Privacy Policy for information on how we collect, use, and protect your personal information.\"}),/*#__PURE__*/e(\"p\",{children:\"Termination\"}),/*#__PURE__*/e(\"p\",{children:\"We reserve the right to suspend or terminate your access to the SaaS at any time, with or without cause, and without notice. Upon termination, your license to use the SaaS will be immediately revoked, and you must cease all use of the SaaS.\"}),/*#__PURE__*/e(\"p\",{children:\"Disclaimer of Warranty\"}),/*#__PURE__*/e(\"p\",{children:'Our SaaS is provided on an \"as is\" and \"as available\" basis, without any warranties or conditions, express or implied. We do not guarantee that the SaaS will be uninterrupted, error-free, or secure.'}),/*#__PURE__*/e(\"p\",{children:\"Limitation of Liability\"}),/*#__PURE__*/e(\"p\",{children:\"To the maximum extent permitted by law, we shall not be liable for any direct, indirect, incidental, consequential, or special damages arising out of or in connection with the use or inability to use the SaaS, even if we have been advised of the possibility of such damages.\"}),/*#__PURE__*/e(\"p\",{children:\"Modifications\"}),/*#__PURE__*/e(\"p\",{children:\"We reserve the right to modify these Terms and Conditions at any time. Any changes will be effective immediately upon posting the updated Terms and Conditions on our website. Your continued use of the SaaS after the modifications will constitute your acceptance of the revised Terms and Conditions.\"}),/*#__PURE__*/e(\"p\",{children:\"Governing Law and Jurisdiction\"}),/*#__PURE__*/e(\"p\",{children:\"These Terms and Conditions shall be governed by and construed in accordance with the laws of California. Any disputes arising out of or in connection with these Terms and Conditions shall be subject to the exclusive jurisdiction of the courts in California.\"}),/*#__PURE__*/e(\"p\",{children:\"If you have any questions or concerns regarding these Terms and Conditions, please contact us at hey@struct.ai.\"}),/*#__PURE__*/e(\"p\",{children:\"Effective date: June 21, 2023\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),[I]:\"\",[T]:et(void 0,\"\"),[x]:\"\",[A]:null,[C]:\"\",[P]:et(void 0,\"\"),[N]:\"\",[Y]:null,[W]:\"\",[q]:et(void 0,\"\"),[j]:\"\",[B]:null,[R]:\"\",[E]:et(void 0,\"\"),[G]:\"\",[K]:null,[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null},{index:7,id:\"xk4SXTIlO\",[l]:!1,[h]:!1,[d]:\"Privacy\",[u]:\"privacy\",[m]:\"Struct Chat Privacy Policy\",[p]:\"struct\",[g]:\"2023-06-08T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp\",srcSet:\"https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp?scale-down-to=512 512w,https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/kfiBJJ7W2Hrglv8ykcZZr8vxKeo.webp 1280w\"},\"\"),[w]:\"var(--token-2bb14cb0-85af-46bd-8741-f9f30bf0fc1e, rgba(1, 68, 255, 0.06))\",[b]:\"\",[v]:et(void 0,\"\"),[S]:\"\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"Last updated: June 8, 2023\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Overview\"}),/*#__PURE__*/e(\"p\",{children:\"This Privacy Policy describes the personal information we collect and/or process to provide the services offered by Struct Chat, Inc., a Delaware corporation (\u201CStruct Chat,\u201D \u201Cwe,\u201D \u201Cus\u201D or \u201Cour\u201D), including through any app, website, platform, or integration (the \u201CServices\u201D). Services covered in this Privacy Policy do not include services developed by us that are covered under a separate privacy policy.\"}),/*#__PURE__*/e(\"p\",{children:\"At Struct Chat, we respect your privacy rights and recognize the importance of protecting your information. Your access to and use of the Services is conditional upon your acceptance of and compliance with this Privacy Policy. If you disagree with any part of the Privacy Policy, then you do not have our permission to access or use the Services.\"}),/*#__PURE__*/e(\"p\",{children:\"We may change this Privacy Policy from time to time. If we make any changes, we will revise the date at the top of this Privacy Policy. We encourage you to periodically review our Privacy Policy to stay informed about our data protection practices and the ways you can help protect your privacy.\"}),/*#__PURE__*/e(\"h2\",{children:\"Collection of Information\"}),/*#__PURE__*/e(\"p\",{children:\"Struct Chat collects information in the following ways:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Information You Provide.\"}),\" We collect the information you directly provide to Struct Chat when you register for and/or use the Services, such as Slack usernames, email ids, messages, chats and conversations, content, information, files, images, etc.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Information We Collect Automatically.\"}),\" We collect information related to your usage of the Services and the devices you use to access those Services.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Information We Collect from Other Sources.\"}),\" We collect information from third parties, like Slack, where you have provided us with access to information from those third parties.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"There may be situations where you do not have the ability to decline to provide information. This includes where Struct Chat automatically collects personal information through your use of Services. In other situations, you can decline to provide information to Struct Chat when asked for it. If you decline to provide information where Struct Chat requires such information to operate the Services and fulfill our obligations, you may not be able to use the applicable Service(s).\"}),/*#__PURE__*/e(\"p\",{children:\"This may include situations where:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Struct Chat asks you to provide personal information to create an account;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Struct Chat asks you to provide personal information to be able to add features; or\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A third-party application asks you to provide information to use their feature or service.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Use, Sharing and Disclosure of Information\"}),/*#__PURE__*/e(\"p\",{children:\"We understand that your personal information is important to you, and that is why you have choices in how your personal information is used and shared. You can exercise your data protection and privacy rights at any time by contacting Struct Chat as provided at the end of this Privacy Policy.\"}),/*#__PURE__*/e(\"p\",{children:\"Struct Chat uses information collected to provide Struct Chat Services. We retain all the information that we collect until we no longer need the information. Struct Chat will process and transfer information within and to the U.S. and other countries and territories from which Struct Chat or its authorized third parties may operate, which may have different privacy laws from your country of residence. If you are in the European Economic Area (EEA), Switzerland, or the UK, or a resident of California or another U.S. state with applicable privacy laws, please refer to the respective dedicated sections below.\"}),/*#__PURE__*/e(\"p\",{children:\"We will not share personal information about you with any third-parties, unless you allow it, as described in this Privacy Policy, or in connection with providing you the Struct Chat Services. We may disclose information to (i) third-parties, vendors or other services providers working on our behalf; (ii) third-parties in connection with integrations or other third-party products used while working with the Services or (iii) when necessary, to protect the security and safety of our users or when required by law or a legal process. You agree that the privacy of any information shared with any third-party to provide the Struct Chat Services is pursuant to such parties\u2019 privacy terms and it is up to you to read and fully understand their privacy policies. We do not sell your personal information.\"}),/*#__PURE__*/t(\"p\",{children:[\"In connection with providing the Struct Chat Services, we may share certain of your information with third-party processors (each a \u201CSubprocessor\u201D). This may include, for example, public-facing information from your Slack account (i.e., your name or username), your posts and thread responses and the date that you added content to a Slack workspace. You consent to the sharing of your data with such Subprocessors. Specifically, we use the following Subprocessors to perform functions in connection with providing the Services:\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,xjeyd5REr4l3QXFpOMZQcAB73U.webp\",\"data-framer-height\":\"474\",\"data-framer-width\":\"2101\",height:\"237\",src:\"https://framerusercontent.com/images/xjeyd5REr4l3QXFpOMZQcAB73U.webp\",srcSet:\"https://framerusercontent.com/images/xjeyd5REr4l3QXFpOMZQcAB73U.webp?scale-down-to=512 512w,https://framerusercontent.com/images/xjeyd5REr4l3QXFpOMZQcAB73U.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/xjeyd5REr4l3QXFpOMZQcAB73U.webp?scale-down-to=2048 2048w,https://framerusercontent.com/images/xjeyd5REr4l3QXFpOMZQcAB73U.webp 2101w\",style:{aspectRatio:\"2101 / 474\"},width:\"1050\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),\"Some web browsers can be set to send \u201CDo Not Track\u201D signals to platforms, or users may use other ways to indicate their preference that certain web technologies are not used to track their online activity. Struct Chat does not comply with or accept such Do Not Track signals or similar mechanisms.\"]}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s important to be aware that if you use any public communication methods, such as chat rooms, commenting on posts, posting on threads, forums, or features offered through the Services, all information that you share will be visible to others who can read, use and collect this information and send you unsolicited messages. Struct Chat is not responsible for how others may use the personal information you choose to publicly share when using the Services.\"}),/*#__PURE__*/e(\"h2\",{children:\"Protection of Personal Information\"}),/*#__PURE__*/e(\"p\",{children:\"Struct Chat complies with all applicable data protection, privacy, and security breach notification laws. We have implemented the following measures to protect and safeguard your personal information:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limiting the amount of personal information that we collect to necessary information only.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Having comprehensive security policies and procedures.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Training our employees.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Requiring our employees to sign confidentiality agreements.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Your Rights\"}),/*#__PURE__*/e(\"p\",{children:\"You have the following rights concerning your personal information:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to access the personal information that we have collected about you.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to say no to the sale of your personal information.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to request that we delete personal information that we have collected on you.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to request that we amend any of the information that we have collected about you.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to withdraw your consent to the processing of your data.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to request that we restrict the processing of your data.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to complain about our collection, sharing and processing of data with competent authorities in the proper jurisdiction.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The right to stop receiving unwanted direct marketing.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Children\u2019s Privacy\"}),/*#__PURE__*/e(\"p\",{children:\"The Services are intended for use by a general audience and are not directed to individuals under the age of 16. We do not knowingly collect information from anyone under 16. If we become aware anyone under 16 has provided us with personal information, we will take steps to delete such information. If you become aware that anyone younger than 16 has provided us with personal information, please contact us and we will take steps to delete such information.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Cookies\"}),/*#__PURE__*/e(\"p\",{children:\"Cookies are text files with small pieces of data that are used to identify your computer as you use a computer network. When a cookie is exchanged between your computer and the network server, the server reads the ID and knows what information it should specifically serve you. As cookies are regularly used by several websites, users will be prompted to accept cookies or decline them. Disabling cookies may limit certain features of the Services. In our case, we do not set and access our own cookies, but we do use third-party cookies \u2013 like Google Analytics, cookies needed to integrate with platforms like Slack and cookies added by users to sites powered by us.\"}),/*#__PURE__*/e(\"h2\",{children:\"Third-Party Websites\"}),/*#__PURE__*/e(\"p\",{children:\"Our Services may contain hyperlinks to websites operated by parties other than us. We provide such hyperlinks for your reference only. We do not control such websites and are not responsible for their contents or the privacy or other practices of such websites. It is up to you to read and fully understand their privacy policies. Any inclusion of hyperlinks to such websites does not imply any endorsement of the material on such websites or any association with their operators.\"}),/*#__PURE__*/e(\"h2\",{children:\"California Residents\"}),/*#__PURE__*/e(\"p\",{children:\"If you are a California resident, you have the rights outlined in this section. If there are any conflicts between this section and any other provision of this Privacy Policy and you are a California resident, the portion that is more protective of your personal information shall control to the extent of such conflict.\"}),/*#__PURE__*/e(\"p\",{children:\"Your rights under the CCPA:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"16px\",\"--framer-letter-spacing\":\"0.16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(10, 11, 12)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Right to Know and Access.\"}),\" You may submit a verifiable request to learn more about our information practices and for the specific pieces of personal information we have collected about you.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Right to Correct.\"}),\" You can correct inaccurate information by updating your profile information in your account.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Right to Delete.\"}),\" You may submit a verifiable request that we delete personal information we have collected from you.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Right to Opt-out of Sales/Sharing.\"}),\" You have the right to opt out of \u201Csharing\u201D or \u201Csales\u201D of your information. If you have an account with us and you visit our site with an opt-out preference signal (such as Global Privacy Control) enabled, we will treat this as an opt-out request.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Right to Equal Service.\"}),\" We will not discriminate against you if you exercise your privacy rights.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"In addition to exercising these rights yourself, you may also designate an authorized agent to make these requests on your behalf. If the authorized agent does not provide valid power of attorney, we will ask you to verify the request via email or your password-protected account.\"}),/*#__PURE__*/e(\"p\",{children:\"If you need help\u202Fexercising these rights, contact us as indicated at the end of this Privacy Policy.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"International Data\"}),/*#__PURE__*/e(\"p\",{children:\"You agree to and acknowledge that your information may be transferred to and maintained on servers located out of your respective country, province, state, or other governmental jurisdiction where the privacy laws may not be as protective. Accessing, using, and submitting information to the Services represents your agreement to (1) the transfer of your information to the United States and (2) the collection, usage, and disclosure of your information in accordance with United States law and this Privacy Policy. To the extent that data is transferred abroad, we will ensure compliance with the requirements of the applicable laws in the respective jurisdiction in line with our obligations. In particular, we will offer safeguards if we transfer data from jurisdictions with different data protection laws, such as the EU\u2019s General Data Protection Regulation and the Asia-Pacific Economic Cooperation Cross Border Privacy Rules.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Contacting Us\"}),/*#__PURE__*/e(\"p\",{children:\"Please contact us at hey@struct.ai if you:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Have questions about this Privacy Policy;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Wish to make a complaint or have a concern about our handling of your personal information; or\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Seek to report a possible breach of privacy laws.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"We will respond to most consumer concerns within 30 of receipt, however, some requests may take longer. We will notify you in writing if we need more time to respond. We can deny your request(s) if certain exceptions in the law apply. If we do deny your request, we will provide you with the reasons for such denial.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),[I]:\"\",[T]:et(void 0,\"\"),[x]:\"\",[A]:null,[C]:\"\",[P]:et(void 0,\"\"),[N]:\"\",[Y]:null,[W]:\"\",[q]:et(void 0,\"\"),[j]:\"\",[B]:null,[R]:\"\",[E]:et(void 0,\"\"),[G]:\"\",[K]:null,[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null},{index:8,id:\"yKI0GAduD\",[l]:!1,[h]:!1,[d]:\"Where Struct team can test Struct's blog structure\",[u]:\"where-struct-team-can-test-structs-blog-structure\",[m]:\"How do we protect user identities while preserving the essence of their unique personalities? \",[p]:\"manish\",[g]:\"2023-08-14T00:00:00.000Z\",[f]:et({src:\"https://framerusercontent.com/images/ubCUZJYmTYBbv4c0MtHdCrSuk.png\",srcSet:\"https://framerusercontent.com/images/ubCUZJYmTYBbv4c0MtHdCrSuk.png?scale-down-to=512 512w,https://framerusercontent.com/images/ubCUZJYmTYBbv4c0MtHdCrSuk.png 980w\"},\"Painting in the style of Van Gogh featuring famous historical figures, characterized by vivid colors and expressive brushstrokes.\"),[w]:\"var(--token-2bb14cb0-85af-46bd-8741-f9f30bf0fc1e, rgba(1, 68, 255, 0.06))\",[b]:\"Quote 1 placeholder Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \",[v]:et({src:\"https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png\",srcSet:\"https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png?scale-down-to=512 512w,https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/90au44JilGNfdls1zJW2VB3PEY.png 1536w\"},\"\"),[S]:\"Caption of image 1\",[k]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h5\",{children:\"Conversations are, in many ways, the backbone of humanity. They shape our opinions, our personalities, and even the way we perceive the world around us. Whether it's a hearty laugh over a shared memory with an old friend or a serious discourse with a colleague, our conversations define us. But in this age of digital enlightenment, the lines between open communication and privacy have often been blurred.\"}),/*#__PURE__*/e(\"p\",{children:\"We live in a time where the importance of speaking one\u2019s mind is constantly being championed. People are urged to voice their opinions, to participate in global discussions, to be a part of the grand narrative. Yet, for many, the threat to their identity or the fear of backlash holds them back. Privacy and anonymity become their shields, allowing them to engage while maintaining a distance.\"}),/*#__PURE__*/t(\"p\",{children:[\"As we venture deeper into this, a pressing question emerges: How can we protect user identities while preserving the essence of their unique personalities? At Struct, we are excited to share our groundbreaking take on this age-old question, with \",/*#__PURE__*/e(\"strong\",{children:\"anonymous mode.\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Welcome, Algorand: Community with 37K Members\"}),/*#__PURE__*/t(\"p\",{children:[\"Struct Chat prioritizes open dialogue, making conversations accessible to the public. This approach not only enhances transparency but also enriches the knowledge reservoir of online communities. Esteemed communities like Apache Druid, Typesense, and Tooljet already trust and utilize \",/*#__PURE__*/e(n,{href:\"https://www.struct.ai/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Struct\"})}),\" to capture knowledge from their conversations.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Couple of weeks ago, \",/*#__PURE__*/e(n,{href:\"https://algorand.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Algorand\"})}),\" joined the list of Struct users. Collaborating with our newest and biggest user presented a distinctive challenge: shield the identities of its 37,000 members when presenting their Struct site to the world. We had worked on an anonymous mode briefly in the past, and this requirement allowed us to push full steam ahead in its implementation.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The biggest question was, \",/*#__PURE__*/e(\"strong\",{children:'\"How do we build anonymous mode, but for humans?\"'})]})]}),[I]:\"Quote 2 placeholder Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \",[T]:et({src:\"https://framerusercontent.com/images/K9zU0Jdx4GM2qAN3jCLzYpoqZ0U.png\",srcSet:\"https://framerusercontent.com/images/K9zU0Jdx4GM2qAN3jCLzYpoqZ0U.png?scale-down-to=512 512w,https://framerusercontent.com/images/K9zU0Jdx4GM2qAN3jCLzYpoqZ0U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/K9zU0Jdx4GM2qAN3jCLzYpoqZ0U.png 1774w\"},\"\"),[x]:\"Caption of image 2\",[A]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:\"Body 2 headline\"}),/*#__PURE__*/t(\"p\",{children:[\"Granted, the concept of an anonymous mode isn't novel. Various platforms have such a mode. For instance, \",/*#__PURE__*/e(n,{href:\"https://www.teamblind.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Blind\"})}),\" opts to showcase just the initial of a user's email, whereas platforms like \",/*#__PURE__*/e(n,{href:\"https://discourse.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Discourse\"})}),' simply label users as \"anonymous,\" often followed by a random character, as explained in this ',/*#__PURE__*/e(n,{href:\"https://meta.discourse.org/t/use-anonymous-mode-to-reply-or-create-topics/240039\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"post\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"However, our vision is distinct. We recognize the importance of connecting with the individual behind the screen. Rather than bestowing users with generic or even frivolous usernames like 'anonymous', 'Bond007', or 'SunflowerPrincess', we aimed to resonate with the inherent human essence.\"}),/*#__PURE__*/e(\"p\",{children:\"Yet, a name is only half of one's digital identity. What about the visual representation? Platforms like Slack resort to generic avatars derived from the first letter of their identity. We felt such depictions diluted the human element, rendering interactions robotic.\"}),/*#__PURE__*/t(\"p\",{children:[\"Our solution? \",/*#__PURE__*/e(\"strong\",{children:\"Assigning names inspired by influential figures spanning various fields\"}),\" \u2014 from scientists and artists to politicians and athletes. Imagine engaging in a stimulating discussion with an 'Agatha Christie', 'Rosa Parks', or 'Alan Turing'.\"]}),/*#__PURE__*/t(\"p\",{children:[\"To enhance this human experience, we harnessed the power of AI to \",/*#__PURE__*/e(\"strong\",{children:\"craft multiple Van Gogh style images for each person.\"}),\" Now, users wouldn't just have a notable name but also a distinctive, humanized profile picture to complement their interactions.\"]})]}),[C]:\"Quote 3 placeholder Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \",[P]:et({src:\"https://framerusercontent.com/images/sSFRozYjVzuaUDN5GzKXC0EXYw8.webp\",srcSet:\"https://framerusercontent.com/images/sSFRozYjVzuaUDN5GzKXC0EXYw8.webp?scale-down-to=512 512w,https://framerusercontent.com/images/sSFRozYjVzuaUDN5GzKXC0EXYw8.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/sSFRozYjVzuaUDN5GzKXC0EXYw8.webp 1640w\"},\"\"),[N]:\"Caption of image 3\",[Y]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:\"Body 3 headline\"}),/*#__PURE__*/e(\"p\",{children:\"By adopting the names of iconic personalities, Struct is doing more than just giving users a pseudonym. We\u2019re providing a cloak of credibility, a sense of familiarity. If you were to receive a message from 'Turing', your mind might inadvertently associate it with the famed scientist. The conversation suddenly takes on a richer tone, a deeper context. Even if the discourse is about something as mundane as the weather, there's an underlying gravitas added to it \u2014 a human touch.\"}),/*#__PURE__*/e(\"p\",{children:\"In our first iteration, we generated ~2500 such images that can be assigned to Struct users, when anonymous mode is turned on. And over time, we intend to keep expanding this library of human avatars.\"}),/*#__PURE__*/t(\"p\",{children:[\"To see this unique anonymous mode in action, check out \",/*#__PURE__*/e(n,{href:\"https://algorand.struct.ai/kb\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Algorand's Struct site\"})}),\".\"]})]}),[W]:\"Quote 4 placeholder Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \",[q]:et({src:\"https://framerusercontent.com/images/NDGBoxz9eNd5S0isbKC7d09ews0.webp\",srcSet:\"https://framerusercontent.com/images/NDGBoxz9eNd5S0isbKC7d09ews0.webp?scale-down-to=512 512w,https://framerusercontent.com/images/NDGBoxz9eNd5S0isbKC7d09ews0.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/NDGBoxz9eNd5S0isbKC7d09ews0.webp 1640w\"},\"\"),[j]:\"Caption of image 4\",[B]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/t(\"h3\",{children:[\"Body 4 headline\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Conclusion\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,RxRsgJND4BuhEZefQK0D1dLS6Tc.png\",\"data-framer-height\":\"384\",\"data-framer-width\":\"1024\",height:\"192\",src:\"https://framerusercontent.com/images/RxRsgJND4BuhEZefQK0D1dLS6Tc.png\",srcSet:\"https://framerusercontent.com/images/RxRsgJND4BuhEZefQK0D1dLS6Tc.png?scale-down-to=512 512w,https://framerusercontent.com/images/RxRsgJND4BuhEZefQK0D1dLS6Tc.png 1024w\",style:{aspectRatio:\"1024 / 384\"},width:\"512\"}),/*#__PURE__*/e(\"p\",{children:\"We feel our approach to anonymous mode underscores a profound understanding of human psychology. Humans thrive on interactions, on personal connections. When conversing with someone, even if it\u2019s behind a screen, we like to have a face, a name, something to hold on to. By using historic names and artistic avatars, Struct ensures that even in an anonymous setting, conversations remain intimate, personable.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"It reminds us that at the heart of every conversation, no matter how digital, is the human spirit.\"}),\" And it's this spirit that this take on anonymous mode captures so beautifully. Next time you're on Struct, you are not just talking to 'anonymous'; you are conversing with Kalam, with Parks, or with Lincoln. And that small detail, in our honest opinion, makes all the difference.\"]}),/*#__PURE__*/e(\"h6\",{children:\"Names of people from left to right, top to bottom.Middle image: Agatha Christie, A. P. J. Abdul Kalam, Abraham Lincoln, Rosa Parks, Youyou Tu, Alan TuringBottom image:Wanda Austin, Alexander Graham Bell, Evelyn Boyd Granville, Annie Jump Cannon, Coco Chanel, Charles Darwin, Leonardo Da Vinci, Edsger Wybe DijkstraMahatma Gandhi, Kadambini Ganguly, Werner Heisenberg, Thomas Jefferson, Betty Jennings, Sophie Kowalevski, Yukihiro Matsumoto, John MuirIsaac Newton, Florence Nightingale, Alfred Nobel, Betty Snyder, Rabindranath Tagore, Nikola Tesla, Sir Mokshagundam Visvesvaraya, George Washington\"})]}),[R]:\"Quote 5 placeholder Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \",[E]:et({src:\"https://framerusercontent.com/images/q8r40nUq3aJvG75OeOn7WZ1IDE.png\",srcSet:\"https://framerusercontent.com/images/q8r40nUq3aJvG75OeOn7WZ1IDE.png?scale-down-to=1024 1007w,https://framerusercontent.com/images/q8r40nUq3aJvG75OeOn7WZ1IDE.png 1742w\"},\"\"),[G]:\"Caption of image 5\",[K]:/*#__PURE__*/t(s.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:\"Body 5 headline\"}),/*#__PURE__*/e(\"p\",{children:\"We feel our approach to anonymous mode underscores a profound understanding of human psychology. Humans thrive on interactions, on personal connections. When conversing with someone, even if it\u2019s behind a screen, we like to have a face, a name, something to hold on to. By using historic names and artistic avatars, Struct ensures that even in an anonymous setting, conversations remain intimate, personable.\"})]}),[D]:\"\",[z]:et(void 0,\"\"),[F]:\"\",[X]:null,[J]:\"\",[U]:et(void 0,\"\"),[M]:\"\",[Q]:null,[H]:\"\",[O]:et(void 0,\"\"),[Z]:\"\",[L]:null,[V]:\"\",[_]:et(void 0,\"\"),[$]:\"\",[ee]:null}];for(let e of ea)Object.freeze(e);a(ea,{R21Pdw0g9:{defaultValue:!0,title:\"Live\",type:o.Boolean},SI_Namnvs:{defaultValue:!1,title:\"Featured\",type:o.Boolean},TQhrLJGGY:{defaultValue:\"\",title:\"Title\",type:o.String},mHqK7SaND:{title:\"Slug\",type:o.String},LTtt5SKUw:{defaultValue:\"\",displayTextArea:!1,maxLength:170,title:\"Lead\",type:o.String},VU0YbK2iA:{defaultValue:\"\",title:\"Author\",type:o.String},wCemQ8_Nj:{defaultValue:\"\",title:\"Date\",type:o.Date},lMxvlaqId:{title:\"Blog Header Image\",type:o.ResponsiveImage},n1oUEC9v8:{defaultValue:'var(--token-2bb14cb0-85af-46bd-8741-f9f30bf0fc1e, rgba(1, 68, 255, 0.06)) /* {\"name\":\"Radix Accent/3 alpha\"} */',title:\"Blog Header color bg\",type:o.Color},KZwuH58Qg:{title:\"Link\",type:o.Link},jgodBwla6:{defaultValue:\"\",placeholder:\"Placeholder quote\",title:\"Quote 1  (usually empty)\",type:o.String},a3bXf_66C:{title:\"Image 1 (usually empty)\",type:o.ResponsiveImage},OUnH1GaW_:{defaultValue:\"\",title:\"Caption 1  (usually empty)\",type:o.String},aJLgXPlgM:{defaultValue:\"\",title:\"Body 1\",type:o.RichText},XfNTYx5lD:{defaultValue:\"\",placeholder:\"Placeholder quote\",title:\"Quote 2\",type:o.String},El4XqhVFd:{title:\"Image 2\",type:o.ResponsiveImage},fv_E5WcqA:{defaultValue:\"\",title:\"Caption 2\",type:o.String},sIw6kQfNd:{defaultValue:\"\",title:\"Body 2\",type:o.RichText},J8rV8rKcy:{defaultValue:\"\",placeholder:\"Placeholder quote\",title:\"Quote 3\",type:o.String},y8nr5_dfB:{title:\"Image 3\",type:o.ResponsiveImage},ZivyU8SNF:{defaultValue:\"\",title:\"Caption 3\",type:o.String},vSpcjE6_1:{defaultValue:\"\",title:\"Body 3\",type:o.RichText},CQ8BX1niu:{defaultValue:\"\",placeholder:\"Placeholder quote\",title:\"Quote 4\",type:o.String},thTfiWtjZ:{title:\"Image 4\",type:o.ResponsiveImage},oFdiSTFSD:{defaultValue:\"\",title:\"Caption 4\",type:o.String},fJKG8tGLy:{defaultValue:\"\",title:\"Body 4\",type:o.RichText},FlzlI_A8d:{defaultValue:\"\",title:\"Quote 5\",type:o.String},d_Nvv6Wgv:{title:\"Image 5\",type:o.ResponsiveImage},YGxp3QMLx:{defaultValue:\"\",title:\"Caption 5\",type:o.String},z33l5xU_w:{defaultValue:\"\",title:\"Body 5\",type:o.RichText},QvwrQIppX:{defaultValue:\"\",displayTextArea:!0,title:\"Quote 6\",type:o.String},VS2ULJ0hv:{title:\"Image 6\",type:o.ResponsiveImage},QAO0KamYQ:{defaultValue:\"\",title:\"Caption 6\",type:o.String},Ygx3pvmSC:{defaultValue:\"\",title:\"Body 6\",type:o.RichText},v7ERD2vXB:{defaultValue:\"\",displayTextArea:!0,title:\"Quote 7\",type:o.String},efHQTfaES:{title:\"Image 7\",type:o.ResponsiveImage},jEKWt1i2g:{defaultValue:\"\",title:\"Caption 7\",type:o.String},tey3R3T7E:{defaultValue:\"\",title:\"Body 7\",type:o.RichText},bB_wQBAUs:{defaultValue:\"\",title:\"Quote 8\",type:o.String},mQInNq9TI:{title:\"Image 8\",type:o.ResponsiveImage},xnA23B53P:{defaultValue:\"\",title:\"Caption 8\",type:o.String},gsBShGqOE:{defaultValue:\"\",title:\"Body 8\",type:o.RichText},NPzqEDizc:{defaultValue:\"\",title:\"Quote 9\",type:o.String},fswF7C5NQ:{title:\"Image 9\",type:o.ResponsiveImage},JFczchwe2:{defaultValue:\"\",title:\"Caption 9\",type:o.String},Y5wHDQnXo:{defaultValue:\"\",title:\"Body 9\",type:o.RichText}}),ea.displayName=\"Blog\";export default ea;export const enumToDisplayNameFunctions={};export const utils={async getSlugByRecordId(e,t){var a;return null===(a=ea.find(t=>t.id===e))||void 0===a?void 0:a[u];},async getRecordIdBySlug(e,t){var a;return null===(a=ea.find(t=>t[u]===e))||void 0===a?void 0:a.id;}};\nexport const __FramerMetadata__ = {\"exports\":{\"utils\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"enumToDisplayNameFunctions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"data\",\"name\":\"data\",\"annotations\":{\"framerCollectionUtils\":\"1\",\"framerRecordIndexKey\":\"index\",\"framerRecordIncludedLocalesKey\":\"includedLocales\",\"framerSlug\":\"mHqK7SaND\",\"framerData\":\"\",\"framerCollectionId\":\"H7OCenXtD\",\"framerContractVersion\":\"1\",\"framerEnumToDisplayNameUtils\":\"2\",\"framerRecordIdKey\":\"id\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["l", "h", "d", "u", "m", "p", "g", "f", "w", "b", "v", "S", "k", "I", "T", "x", "A", "C", "P", "N", "Y", "W", "q", "j", "B", "R", "E", "G", "K", "D", "z", "F", "X", "J", "U", "M", "Q", "H", "O", "Z", "L", "V", "_", "$", "ee", "et", "e", "t", "ea", "l", "h", "d", "u", "m", "p", "g", "f", "w", "motion", "ComponentPresetsConsumer", "Youtube", "Link", "addPropertyControls", "ControlType", "H7OCenXtD_default", "enumToDisplayNameFunctions", "utils", "a", "__FramerMetadata__"]
}
