Show HN: Struct – A Feed-Centric Chat Platform (struct.ai)

298 points by jdplex ↗ HN
Hi HN! I’m Jason, a product designer at Struct Chat.

At Struct, we're frustrated by the clutter, distractions, and inefficiencies plaguing existing chat platforms like Slack and Discord.

We've built a radical new chat platform that leverages threads, feeds, and AI to help alleviate these problems, and give you back more time in your day.

Struct uses a thread-first approach to keep conversations on-topic. It applies AI-generated titles and summaries to help you decide what's worth your attention. Threads are then organized in a real-time feed, keeping all your conversations up-to-date and at the ready, eliminating the need for channel hopping.

Comprehensive search tools make finding things a breeze, and Strucbot, our AI assistant can answer questions based on what it’s learned from prior threads. It can even proactively respond when it notices repeat requests, providing quick answers so you don’t have to. Structbot is fully GPT-4 enabled, so you can riff with Chat GPT and your peers (generate code, ask questions, all the good stuff) without ever switching apps.

Struct is available on Linux, Windows, Mac, and even works as a Slack interface. Give us a try and let us know what you think.

142 comments

[ 5.9 ms ] story [ 193 ms ] thread
(comment deleted)
I installed the chatbot on my discord but it’s not indexing anything, do I need to sign up for a trial or something like that?

It’s my own little discord server so I have a super low volume of messages :-)

https://bembem.struct.ai/

Manish, founder here.

On Discord, the bot only picks up Discord threads, not the chats in a channel. Could that be it? Unless there's some issue with sync.

That must be it! I don't really have any threads I don't think. Oh so Struct uses that as boundary to summarize? Makes sense, although a lot of Slack and Discord servers don't really use threads. Like, the golang one in Slack specifically asks people to NOT use threads, out of some usability concern, I think (screen readers or something).
Yeah. We now pick up chats from channels in Slack, and convert them into threads. Somepoint we'd do the same for Discord too.

Chats in channels are too diverse to act like threads. Jury is out on how good those threads look.

Looks very cool, planning on giving it a try. Also appreciate transparency around pricing.
Thanks! Yeah, we've been thinking about fair pricing for a long time.
This is awesome. Discord is the worst for trying to search and follow threads of information. Seems like I'm always answering the same questions over and over again.
I don’t see this going after discord but Slack or teams perhaps?
Founder here. Struct is designed for both teams and communities. Because the problems affecting Slack and Discord are the same. We already have a bunch of community features, like publicly indexable knowledge base from threads, public-to-internet channels -- which are being used by many OSS companies (list on home page).

Teams is a different product. Companies who use Teams are there because they have tight integration with Microsoft Office, which is the USP there.

We switched from Slack to Teams because we were going all in on Office 365 and Teams is included.... so why pay for Slack? But, honestly, we don't use a lot of the integrations, except for maybe the Sharepoint access when adding attachments which is, admittedly, pretty nice.

We also don't use Threads in Teams. Things got lost trying to jump back and forth between the "Chat" tab and the "Teams" tab. So now, we just create a new chat conversation for each project we're working on and add the relevant participates and rename the chat to the Jira Ticket #. That provides enough context/summary for what the chat is about.

All that said, Struct looks really nice and I could see it benefitting our team. Especially the AI portion. We have chats going back years for long-lived projects that get shelved and then picked back up later. Being able to interact with a ChatBot to help find answers within these chats would be killer. I assume there are no plans for a Struct for Teams though.

Perhaps a good start would be to create a Struct org, for communicating within the team?

We'd surely look into Teams integration at some point. Though, I'm not sure how many takers would be there for Teams/Struct integration. My perception is that Teams users tend to be medium-to-large businesses who are tied to Microsoft Office, and would be very hard to sell to. I might be wrong.

I'm sure you're probably spot on. Going to take a deeper look at Struct regardless; it's intriguing.
Discord will inevitably add LLM-based search like Slack AI just announced, and you won't have that problem anymore.
I know Discord is already trying some AI stuff out like Summaries, but AI search doesn't seem like the kind of thing that Discord would add, given their audience and that they took down Clyde AI.
(comment deleted)
EDIT: This was an inadvertent copywriting/cms mistake. I'm leaving the original below for context only.

  >>> OLD POST FOLLOWS <<<
So while reading the landing page I came across a keyword that I'm always conscious of when considering anything AI related... you mentioned PRIVACY

Privacy. That's Struct.

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.

We have lots of keyboard shortcuts for fast navigation, and a dark mode to reduce eye strain in low-light environments. We’re also committed to meeting users wherever they are — the app works on Windows, Mac, or Linux.

Now... I'm hoping this was just a copywriting fail, perhaps you trusted some ChatGPT output a little more than you should and as a startup you don't exactly have heaps of spare people to re-read things that seem good to go... But the problem is that Privacy is a pretty important detail when it comes to communications between people, a lot of us like to know who else can read our messages, where they're sent, how they're stored... that sort of thing.

So I keep reading, and re-read it a few times... and nope sorry... I cant connect the line in the H1, to anything in the following two paragraph tags. Your two paragraphs about how minimal and easy to use the app is... have nothing to do with privacy... and the conspicuous absence of anything about privacy after a statement saying how about privacy you are, has immediately made me incredibly suspicious of your company, and its otherwise interesting product...

Since you might still be reading comments jdplex hopefully you see this... You might want to fix your copy before it puts off more potential customers... But unless its a whole bunch of missing extra information about actual good privacy related, you've probably already lost me as a possible customer due to too much suspicion.

Crud! I'm sorry, you're so right. I screwed up in my CMS.

Thanks for catching this copy error. I read this thing a hundred times and got blind to it. grrr

Don't be too hard on yourself, editing text is hard...

I'm pretty sure almost everyone will make the the mistake of leaving something out or adding something in the wrong place at least once. The human brain is pretty good at doing clever things like a gap in words with what it thinks should be there, or skipping over little things that shouldn't... or unscrambling usftf that is just completely up.

;-)

Also I edited my comment reflect that it was a mistake.

Thanks, techdragon for helping us identify and fix this issue.
oh man, thanks for the kind words!

Scrambled or unscrambled I'm sure my brain can find a way to screw it up :)

Can’t recommend enough Zulip.

First-class topics, tools for organizing messages between streams & topics, open-source self-hostable, no engagement of ML out of the box (but probably possible thanks to Python plugin support), Vim-like keyboard shortcuts.

I was about to say the same thing - I use Zulip at current employment - and after you get used to it it’s pretty great software that already solves all the problems struct aims to (without the AI nonsense)
Founder of Struct here. I looked at Zulip before starting Struct. And I'm sorry -- I don't think it's the same. Threads in Zulip are really sub-channels, and the idea of a unified feed like "All Threads" doesn't exist -- at least, that was my perception of Zulip. And just looking at the site right now, it feels the same as before. I could be wrong.

Struct is different. It's a reimagination of what a chat platform would look like if you were to completely give up the idea of chats in a serial log of channels (IRC, Slack, Discord), and embrace threads and feeds whole-heartedly. When everything is a thread, the platform can work remarkably well for users.

> unified feed like "All Threads"

I don't understand why I'd need or want this. I saw it in the video and was horrified. Multiple feeds updating as I'm watching them is just too much going on.

When I'm chatting, I don't want to pay attention to 10 different things at once. I'm most productive when I am working on one task (with a single topic), which may require me to refer back to Slack periodically.

Struct looks like it has two differentiating features: 1) it surfaces irrelevant distractions in the All Threads channel, and 2) it creates the tl;dr summary. The former seems actively harmful to productivity, and the latter seems like it could be useful.

You could create a focused custom feed. For example, I have one for "tasks assigned to me". That's what I set to when I'm focused working.

That's the beauty right -- you can control and filter what you see. As opposed to channel based interactions, where your boundaries are set in stone on channel creation.

But I don't currently use Slack as a task manager and don't want an unstructured task manager with no due dates or tags.
Yup. That's the point I'm making. Slack is used as ephemeral messaging system, a knowledge void. Struct aims to proves that more is possible.
Gmail threads can also be task managers. That doesn't mean they're the right UI for it.
> the idea of a unified feed like "All Threads" doesn't exist

I believe it does. You get a feed of all messages; and still organized by a topic, quite conveniently.

I don’t use it, though, since from anywhere in GUI I can immediately jump to the next unread message, irregardless of topic or stream, simply by pressing “n” on keyboard (preceded by Esc if I happened to be typing; my draft is saved reliably).

Looks cool, but unfortunately another company that treats single sign-on as a luxury feature, not a core security requirement by jacking the price way up to get SAML support. Companies really need to stop doing this.
Single-sign-on is a large and painful feature to develop, that most people don't need, and that the companies that need it are willing to pay for. It's the perfect candidate for a higher-tier pricing structure. This makes much more sense than tiering on a feature that everyone needs.
SSO in 2017? Sure. In 2024? No way.
Sso should be the default really. And as a starting point every language has openid connect implemented. Yes it needs work but surely better than the average password reuse?

For large and small companies surely the best way to maintain their users

I see it as an open-source product that you are free to run in whatever fashion you like, behind SSO or not. For a place for contributors to chat about an open-source project, for example, it’s hard to see how SSO is a must.

Demanding SSO from Zulip would be like demanding SSO from self-hostable Discourse, Jitsi, etc.

God, I was interested in the pitch until "and AI".

I'm just so, so tired of LLMs and having to work around all the new and surprising ways they don't quite work the way they're supposed to. At the very least, when other programs don't work the way I want them to, I can usually get used to the issue or find a workaround sometimes. When something is AI-powered, I just have to kind of resign myself to the fact that sometimes it's just... not gonna do the thing. And usually in a new way that I have to develop a new workaround for, or sometimes there's just no workaround, it just sometimes doesn't work and you have to deal with that!

It's like I can never develop any sort of armour around the rushed or poor decisions and features I encounter, because it's fresh, interesting poor decisions, automated at scale!

Founder here.

TLDR: AI word is overthrown these days, sorry about that. But, what makes Struct different isn't AI. It's feeds and threads.

Longer version: The AI in Struct is, IMO, a balanced approach. Struct is different, not because of AI. It's different because of going hard on feeds and threads.

And AI helps in generating titles and summaries for threads -- something which pre-2023 me would have basically asked the user to create. In fact, that was the original idea that users would set their own titles for threads. But, users are forgetful and threads deviate from their intended purpose. And that's where AI can really help -- keep both title and summary up to date.

And you could stop there with the AI.

But, then you start playing with Struct bot, and it's ability to recall bits of information from older threads -- that's really nice. It's saved me so much digging around, personally. But, it's optional, you never have to talk to it.

This is killer. Love the idea of focused threads while still having channels. Really like the design of everything, too.

Only question: long-term plans? Before I commit a lot of data to something like this it'd be good to know it's not a VC flip and dump.

Manish, founder here.

We intend to keep Struct running. Struct is built with a small of 3: Backend, Designer and Frontend. It's not that capital intensive.

We have a roadmap of features that we're excited to get to, combining both teams and community usecases:

- Enable audio / video calls, webinars. - Various spam control systems for community. - Improving the AI bot and recall, making it cheaper to run. - Index the docs shared on Struct, so AI can respond to questions from there as well (obv while maintaining access control) - the list goes on.

The thing is. What excites me about Struct is that, it combines a bunch of use cases for us.Struct is replacing two chat platforms (team and community), a task management system, a ChatGPT, my personal TODO list, a publicly indexable knowledge-base for us.

It's amazing what you can do when you can trust a system to not forget.

3 people for this product is highly impressive.
3 people is insanely lean for something that looks this polished.

Try and maintain that for as long as you can.

> AI to 2x your productivity

I'm out. Sorry, but this is just obnoxious.

This is one of the first Slack competitors that has caught my attention. I really think you're on to something here. I have one thought after watching the video (other than a generally positive feeling about it):

It feels, somehow, less personal. Where Slack rooms felt like digital _rooms_, this gave me the feeling of an office bulletin board. I'm imagining being a new employee at a company that is fully bought in on Struct, and somehow I feel like developing personal connections with my coworkers would be more difficult. I don't really get why, that's just my first impression from the demo.

Otherwise, as a currently funemployed but past SV eng leader, I would have loved to have had this at my last company while dealing with all of the communication chaos that entails.

Founder here. Jason (OP) and I think about this a lot. The balance of cluttering everyone's names on the left panel, v/s making it feel like you're in the same room as these people.

If you look at feed based platforms, they tend to get very asynchronous (almost forum like). And so our design for the real-timeness of the feed was to emphasize the fact that you're in this room with these people, and they're talking right now. It's really fun when a new thread pops up, or a new chat emerges in the feed. That is exciting.

I think perhaps it would help to show a list of online people, so you feel like starting a conversation. Or, perhaps, just seeing other people participate would help. There's surely room to optimize to get the conversations going.

yeah, you've hit it on the head – I think what I felt was missing in the demo was a feeling of presence. a hard thing to capture. anyways, awesome job and good luck!
Thanks! We'll be brainstorming ways of making user presence felt, while keeping it clean.
+1 for human presence. I agree with the commenter upthread that it feels off-puttingly impersonal. Show me the faces!

Otherwise, I totally get the problem you're trying to solve so I poked it and quite liked it.

As someone with 2091 years worth of Slack convos (and Slack wanting me to upgrade to export them) can you let me know how you handle imports and exports?

You can install the Struct bot in Slack: https://struct.ai/install-slack -- This would by default pick up the last 3 months of conversations (we do this to decrease the unpaid load on GPT). You can ping us and we can help sync it from the beginning of whatever history Slack shows.

We don't have an exporter yet, but can surely put one together which provides a SQL / CSV formatted output (or whatever works best for users). We would never charge for exports.

I can imagine a series of useful threads always at the ready for onboarding new people.

But I hear you, ensuring new employees to feel warm and welcomed is crucial for every organization. Especially true for orgs that lean more remote.

Orgs can still use @random channels, @club-channels and you could set up an @annoucements to have spaces for fun links and bulletin materials, and other ways to get to know your peers.

@struct we lean pretty work-focused, we love building. But we should bring the fun too!

(comment deleted)
(comment deleted)
(comment deleted)
BTW I think this is brilliant because summarization is one of those things where AI works really well.

Out of curiosity, I wonder if you could share some of the tech you used? Any dgraph or badger under the hood by any chance? :-) How about hosting? Big three or something else? K8s or no? Elastic Search? etc.

Edit: Also curious if struct is supposed to online scrape slack/discord or become and standalone chat app now/in the future.

The Stack is this:

- Go - Postgres - OpenAI (biggest bill producer is this) - React / Next.JS - Loops.so for Emails - Imgproxy for handling images - Microsoft E5 for embeddings (not OpenAI) - Typesense for Search (also a user of Struct) - Figma (design) - Framer (website) - Server on Hetzner

Badger wouldn't have made sense to use instead of Postgres. I'm thinking of using Badger for other purposes. I do use ristretto and roaring bitmaps a lot internally.

Struct has a very nice integration with Slack. So, you can actually use Struct as a Slack interface. Essentially, your peers can be using Slack, while you could responding to them via Struct - think Superhuman for Gmail.

We have a good integration with Discord too. Both are being used by OSS companies to generate public knowledge bases from their Slack/Discord conversations.

[1]: https://github.com/struct-chat/embedding

(comment deleted)
If OpenAI is your biggest expense maybe I can help. Have reduced LLM cost for several companies by factors of 10 and more. Email in bio.
Something that has always stopped us from migrating away from Slack is the integrations. We have 10s of integrations on Slack and those are a pain to migrate. Any thoughts or plans on how you would support that?
Yeah, that's what we're going to focus on next. Identify the top 5-10 integrations to build.

Would love to learn what integrations you use, and in what capacity. Based on my interactions, it's really only a few integrations that 80% Slack users use.

That's one of the best landing pages I've seen recently. Congratulations on the launch!
Thanks! Kudos to Jason (OP). One of the best designers I've had a privilege to work with.
Flying high on this comment!
I think this product is useful only 1) if you have a lot of channels aka if you work in an enterprise setting, and 2) you get ping'ed a lot.
I'm biased. But, hear me out. We're a team of 3, and we think it's way more useful than Slack would have been.

As mentioned elsewhere, Struct is replacing two chat platforms (team and community), a task management system, a ChatGPT, my personal TODO list, a publicly indexable knowledge-base for us.

It's nice when you don't have to treat your chat platform as an ephemeral, knowledge void.

This product is way better than Slack IMO! We have so much information lost in Slack and hard to summarize the key insights with so much data dump! Kudos Struct team, what an exciting product we will test it with our slack integration.
Countless tools have promised to highlight "what's worth my attention". None of them have worked for me or my team. What's different on Struct?

A few questions I jotted down while watching the video on Struct's landing page:

1. the concept of channels seems to be important on Struct as channels are the starting point of threads/feeds. Could you clarify the concept of channels on Struct? Is it just a concept to group users? Can you also chat on channels?

2. Conceptually how do you handle the fact that only the threads on the realtime feed are visible to the user? Maybe there's a low-signal high-activity thread that takes space and hides the high-signal low-activity thread which results in users missing important information or reminders.

3. Tags are crucial for filtering threads, is there a way to "police" the tags? Using tags usually grow into a mess of similar-but-not-the-same collection of text. Think of JIRA tags.

4. How to handle threads created independently by different users but discussing the same topic?

5. Not a question, but I'd be interested in knowing more about private conversations between two parties. It's mentioned only briefly in the video.

Hopefully these questions don't come out as overly critical. The tool definitely has potential.

Good points. Let me try and address those.

1. Channels for Struct are just groups of people. You engage with a channel, just like you'd engage with a user. You start a thread, and then mention users or channels to define access for that thread. You don't go to a channel to chat.

2. A thread can only take so much space on the feed. The height per thread is fixed. So, both the threads you mentioned could be in the feed, visible to the user. We'd also add a way to archive or mute a thread for some time, that should help with cleaning up that feed.

3. There's a limit on how many tags can be added per thread. Tags help with adding context, and more importantly, very useful for creating custom feeds. We use them for tracking task priorities, which converts our Struct into a lightweight task management system. Nothing to beat Jira, but it's nice to have just one platform for all discussions.

We'd allow tags to be merged. That should deal with similar tags growing parallely, creating confusion. And perhaps, we can also limit new tag creation to moderators. Many controls are possible.

4. You can merge similar threads. You can also select a bunch of chats in a thread and fork them into a new thread. We'd maintain links between threads. Coming soon.

5. To do a private conversation (DM), just mention the users you want to DM with. For example, mentioning @struct would invoke a DM between you and the bot. Mentioning yourself would create a "self-DM" (useful for TODOs, or just remembering stuff, or as a starter thread which you later mention other users/channels to expand reach).

Keep the questions coming. I know the market is filled with chat platforms, and Struct might feel like "yet another". But, I've looked and waited for years for other platforms to do what I thought should be obvious, but they didn't. And that's why I decided to build Struct.

> You can also select a bunch of chats in a thread and fork them into a new thread. We'd maintain links between threads. Coming soon.

Just want to chime in and say this is an essential feature IMO, I hope it’s prioritized.

Absolutely! We already have one chat message fork working. Backend supports multiple message forks as well. So, very close.
In the time you wrote this interview you could also just have tried the app yourself
I think that rather avoids one of the best parts of hacker news - getting the vision/justifications from the creator directly.
The problem is that everyone wants to screen their calls but no one wants _their_ call screened.

People will keep finding ways to steal your attention if they want it (starting new threads, etc).

This looks promising. Can you please re-work on the pricing presentation? Honestly, I'm not smart enough to do the math and worry if I might hit an explosion on discussion and pay the price for it. Give examples, present it in a tabular format, perhaps with examples. Please don't make me think.

Also, what's with minimum 6-character requirement for a Struct name? Anything from 4-characters should be fine, right -- there are no more international standards beyond 3-characters!

Edit: A small request, please make the App Icon solid like all the other macOS Apps.

Yeah, good point. We have data from orgs who're using Struct.

Short story: It's significantly cheaper compared to Slack. Struct charges 9.97 per month. And we only charge for AI usage, not number of users or threads or chats.

Base price comes with 200K tokens free, which is enough for most small orgs, if they're only using it to generate thread titles and summaries.

In fact, that's the average token usage by Typesense, one of our users. Apache Druid is around 400K tokens per month. 1K tokens cost 3 cents, so 200K tokens would cost $6 (on top of the base price). Both use Struct as a knowledge-base.

When we start enforcing monetization, we'd allow users to set a cap on monthly spend, so there're no surprises. Beyond the base price, it can be as cheap as you want.

Awesome. Thanks. Great work.

I signed up to try it out and use it personally before deciding for the other team/company. I would really wish to retain org name to 5-characters. ;-)

Update: I can actually change the URL from inside Struct. It would still be nice to be able to choose that during the sign-up steps.

You might have found a loophole, ser. Enjoy the exploit!