1 comentários

 
GN⁺ 2024-03-02
Opiniões no Hacker News
  • Houve muitas ferramentas que prometiam selecionar “o que merece minha atenção”, mas nenhuma realmente funcionou bem para mim ou para a equipe. Fico curioso para saber o que há de diferente no Struct
    Perguntas que anotei ao assistir ao vídeo da landing page do Struct: os canais parecem ser o ponto de partida de threads/feeds; fico curioso se são simplesmente um conceito para agrupar usuários, e se também é possível conversar dentro de um canal. Se a estrutura é tal que o usuário só vê as threads exibidas no feed em tempo real, também fico curioso sobre como lidam com o problema de threads com muita atividade, mas pouco sinal, ocuparem espaço e empurrarem para fora threads importantes, porém com pouca atividade. Tags são importantes para filtragem, mas, como tags do JIRA, tendem a virar uma bagunça de conjuntos de textos parecidos, mas diferentes; fico curioso se há uma forma de gerenciar isso. Como são tratadas threads criadas independentemente por usuários diferentes sobre o mesmo assunto, e conversas privadas 1:1 também aparecem só rapidamente no vídeo, então gostaria de saber mais. A ferramenta em si claramente parece ter potencial

    • No Struct, canais são apenas grupos de pessoas, e a forma de definir permissões de acesso a uma thread é mencionar o canal como se estivesse falando com um usuário
      Não é uma estrutura em que você entra em um canal para conversar. No feed, a altura de cada thread é fixa, então threads muito ativas não consomem espaço indefinidamente; também planejamos adicionar recursos para arquivar uma thread por determinado período ou silenciá-la. Tags têm limite de quantidade por thread e são usadas para adicionar contexto e criar feeds personalizados; também as usamos para acompanhar prioridades de tarefas, como um sistema leve de gerenciamento de trabalho. Será possível mesclar tags parecidas, e também controlar, por exemplo, permitindo que apenas moderadores criem novas tags. Threads parecidas podem ser mescladas, e estamos preparando um recurso para selecionar parte de uma conversa dentro de uma thread e fazer um fork em uma nova thread, mantendo links entre as threads. Para conversas privadas, basta mencionar os usuários desejados; ao mencionar @struct, é criada uma DM com o bot, e ao mencionar a si mesmo é criada uma “DM consigo mesmo” para TODOs ou notas. Como o mercado está cheio de plataformas de chat, o Struct pode parecer “mais um app de chat”, mas acabamos criando por conta própria porque esperamos por anos que outras plataformas fizessem coisas que achávamos óbvias e elas não fizeram
    • O problema é que todo mundo quer que suas próprias chamadas não sejam filtradas, enquanto quer filtrar as dos outros
      Se alguém quiser minha atenção, vai continuar encontrando uma forma de roubar atenção, como criar uma nova thread
  • É um dos primeiros concorrentes do Slack que chamou minha atenção, e parece estar seguindo a direção certa. Minha impressão ao ver o vídeo foi positiva no geral, mas de algum modo pareceu uma ferramenta menos pessoal
    As salas do Slack pareciam “salas” digitais, enquanto o Struct passa a sensação de um mural de avisos do escritório. Minha primeira impressão é que, se eu entrasse como novato em uma empresa totalmente baseada no Struct, seria mais difícil criar conexões pessoais com colegas. Não sei exatamente por quê, mas foi isso que senti vendo a demo. Pensando na bagunça de comunicação que eu vivia quando trabalhava como líder de engenharia no Vale do Silício, acho que teria sido bom ter uma ferramenta dessas na minha última empresa

    • Como fundador, Jason e eu pensamos bastante sobre isso. É difícil equilibrar entre deixar o painel esquerdo bagunçado listando o nome de todo mundo e dar a sensação de estar na mesma sala
      Plataformas baseadas em feed tendem, em geral, a ser muito assíncronas e quase virar fóruns. Por isso, o design do feed em tempo real do Struct tentou enfatizar a sensação de “estas pessoas estão nesta sala agora e estão falando neste momento”. O instante em que uma nova thread aparece ou uma nova mensagem surge no feed é bem divertido e interessante. Mostrar uma lista de pessoas online pode dar vontade de iniciar uma conversa, e só mostrar outras pessoas participando também pode ajudar. Certamente há espaço para otimizar para que conversas comecem melhor
    • Parece que seria possível criar threads úteis sempre prontas para onboarding de novos funcionários
      Ainda assim, fazer com que novos funcionários se sintam acolhidos é importante para qualquer organização, e especialmente para organizações com grande proporção de trabalho remoto. É possível criar espaços como @random, @club-channels e @annoucements para compartilhar links divertidos ou materiais de anúncio e usá-los como espaços para conhecer colegas. Internamente, o @struct é bastante focado em trabalho, e gostamos de construir coisas, mas também precisamos trazer diversão
  • Muito bom. Gosto da ideia de manter canais e usar threads focadas, e o design também é bom
    Mas fico curioso sobre o plano de longo prazo. Antes de colocar muitos dados nesse tipo de serviço, quero saber que não é algo que vai crescer com dinheiro de venture capital para depois ser vendido e abandonado

    • A intenção é continuar operando o Struct. Somos uma equipe pequena de 3 pessoas — backend, designer e frontend — então também não é um produto intensivo em capital
      No roadmap que estamos planejando há chamadas de voz/vídeo e webinars, controle de spam para comunidades, melhorias e redução de custos em bots de IA e recursos de recall, indexação de documentos compartilhados no Struct e respostas de IA mantendo o controle de acesso. O que torna o Struct interessante é que ele substitui, de uma vez, chat de equipe e chat de comunidade, sistema de gerenciamento de tarefas, ChatGPT, lista pessoal de TODOs e uma base de conhecimento pública e indexável. É surpreendente o que se torna possível quando se pode confiar que o sistema não vai esquecer
  • Parece promissor. Mas seria bom refinar a exibição de preços
    É complicado calcular por conta própria, e me preocupa que uma discussão exploda de repente e os custos também explodam. Seria bom dar exemplos e mostrar em formato de tabela. Não façam o usuário ter que pensar. Também acho estranho haver um limite mínimo de 6 caracteres para o nome do Struct. A partir de 4 caracteres já não seria suficiente? E não existem mais padrões internacionais com mais de 3 letras, certo? E seria bom se o ícone do app para macOS fosse monocromático, como os de outros apps

    • Temos dados de organizações que estão usando de verdade. Resumindo: o Struct é muito mais barato que o Slack
      A mensalidade básica é de US$ 9,97, e cobramos apenas pelo uso de IA, não pelo número de usuários, threads ou mensagens. O preço básico inclui 200 mil tokens, o que é suficiente para organizações pequenas que usam apenas para gerar títulos e resumos de threads. Entre usuários reais, o uso médio da Typesense fica nesse nível, e o Apache Druid usa cerca de 400 mil tokens por mês. Mil tokens custam 3 centavos, então 200 mil tokens representam um acréscimo de US$ 6 sobre a mensalidade básica. Ambos usam o Struct como base de conhecimento. Quando começarmos a aplicar a cobrança, permitiremos definir um limite de gasto mensal para evitar cobranças inesperadas, e os custos após a mensalidade básica podem ser mantidos tão baixos quanto você quiser
  • Parabéns pelo produto. Tenho idade suficiente para lembrar dos tempos antigos dos fóruns e, sinceramente, pareceu uma redescoberta dos fóruns
    Refiro-me à estrutura de threads que sobem quando há uma atualização. A grande diferença é que a UI é mais parecida com chat/Facebook, e, enquanto os fóruns eram estruturados de forma estática pelos administradores, no Struct não ficou tão visível uma estruturação de threads tipo pastas, necessária em grandes organizações com muitos assuntos acontecendo ao mesmo tempo. Por outro lado, e-mails podem ser agrupados até certo ponto em “conversas” e também podem ser estruturados em pastas pessoais. O fato de ter “AI” junto também soa cansativo hoje em dia. O resumo dinâmico de threads em si faz sentido, mas, se a thread for simples como um chat, não precisa de resumo; se for longa como e-mail/fórum, não tenho certeza de quão bem isso vai funcionar na prática. Então não sei bem se isso é um app de marketing em formato de chat com a palavra da moda AI colada, ou se perdi algo fundamentalmente diferente de threads de fórum ou conversas de e-mail

    • O Struct se inspirou bastante no Discourse e é uma mistura única de aplicativo de fórum e chat
      Todos os fóruns, incluindo e-mail, têm threads e feeds, mas fóruns são assíncronos e não foram projetados em torno de chat em tempo real. A dificuldade de aplicar os conceitos de threads e feeds a uma plataforma de chat é que isso precisa ser em tempo real, e é exatamente essa parte que o Struct tenta resolver. Eu discordo um pouco da ideia de que “se é chat, não precisa de resumo”. Já participei bastante de conversas intermináveis, e mesmo em equipes pequenas há threads com centenas de mensagens. Resumos realmente ajudam bastante e, no mínimo, só ter um título já torna o feed muito mais compreensível. É possível estruturar threads com tags e criar feeds em torno dessas tags; isso corresponde a pastas. Lembro de quando o Gmail surgiu e as pessoas precisavam entender labels como equivalentes às pastas SMTP. A diferença entre threads do Struct e threads do Discourse é que o Struct enfatiza uma comunicação curta, em tempo real, de idas e vindas, enquanto o Discourse enfatiza postagens únicas, longas e ponderadas. O primeiro é chat; o segundo é fórum. O motivo de o design do Struct ser difícil também está no equilíbrio entre estrutura, conhecimento e tempo real
    • O recurso de resumo por AI que existiu por um tempo no Discord era bem engraçado
      Ele sempre perdia completamente o ponto central da discussão e gerava resumos absurdos, rendendo horas de risadas
  • A frase “Crie feeds a partir das threads do CEO para se alinhar à visão e aos objetivos mais recentes da empresa. Entre na conversa com uma resposta apropriada e conquiste a promoção merecida” me fez dar um sorriso amargo
    No fim, isso me faz lembrar de novo que o importante não é o que você faz, mas quem vê aquilo

    • Falando como engenheiro que aprendeu gestão construindo uma startup: faça o trabalho, mas também faça com que ele seja visível
      No meu primeiro emprego, no Google, eu só ficava construindo coisas e tinha dificuldade em comunicar por que aquilo que eu fazia era importante. Meu primeiro gerente promoveu todo o time menos eu, e isso ainda dói. Quando mudei de equipe e de gerente, ouvi que eu estava sendo avaliado 2 níveis abaixo de onde deveria estar. A conclusão é: entre nessas conversas. Não precisa ser inconveniente, mas é preciso tornar sua presença conhecida
    • Imagino que também não seja trabalho do gerente se manter atualizado sobre o que os subordinados estão fazendo?
      Incentivar funcionários a gastar tempo fazendo marketing de si mesmos para os chefes também não beneficia a empresa. Vejo isso com frequência, mas para mim parece principalmente um sinal de que a maioria dos gerentes não faz bem essa parte do trabalho
  • runForThread.executeReq.Get.messages: executeReq.client.Do: Get "[https://api.openai.com/v1/threads/thread_*******/messages?li...](<https://api.openai.com/v1/threads/…;)": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
    Espero que um dia novos produtos possam surgir também sem dependência da OpenAI

    • Preciso dar uma ajeitada nas mensagens de erro. Não é que eu esteja tentando esconder a OpenAI; só precisa ficar mais apresentável
      Gosto da OpenAI. O GPT-4 funciona muito bem. Também testei outros modelos mais baratos, mas a qualidade não era tão boa
    • Às vezes penso em simplesmente bloquear domínios .ai no roteador até essa onda voltar ao normal
      Falando sério, este produto parecia realmente interessante até eu ver a frase “…e AI”. Talvez eu simplesmente não seja o público-alvo
  • Resumir é uma das tarefas em que AI realmente é muito boa, então acho este produto excelente
    Tenho curiosidade sobre quais tecnologias foram usadas. Gostaria de saber se há dgraph ou badger por dentro, se a hospedagem é em uma das big 3 ou em outro lugar, se usam Kubernetes, se usam Elastic Search. E também se o Struct é uma ferramenta que faz scraping online do Slack/Discord, ou se agora ou no futuro pretende ser um app de chat independente

    • A stack técnica é Go, Postgres, OpenAI, React/Next.JS, Loops.so, Imgproxy, embeddings Microsoft E5, busca Typesense, Figma, Framer e servidores Hetzner
      O maior custo vem da OpenAI, e os embeddings usam Microsoft E5, não OpenAI. Typesense é usado para busca e também é usuário do Struct. Usar Badger em vez de Postgres não fazia sentido, mas estamos considerando Badger para outros usos. Internamente usamos bastante ristretto e roaring bitmaps. O Struct tem uma integração muito boa com o Slack, então pode ser usado como uma interface para o Slack. Meus colegas usam Slack, e eu respondo pelo Struct, algo como um Superhuman para Gmail. A integração com Discord também é boa, e ambas já estão sendo usadas por empresas open source para criar bases de conhecimento públicas a partir de conversas no Slack/Discord. [1]: https://github.com/struct-chat/embedding
  • Às vezes penso se não estamos tentando otimizar produtividade do jeito errado. Em vez de ferramentas para gerenciar o ruído da comunicação, talvez haja ganhos maiores em reduzir a comunicação desde o início e ainda assim concluir bem o que precisa ser feito
    Por exemplo, mesmo que haja dezenas de reuniões, eu não quero otimizar para acompanhar melhor as atas. Quero menos reuniões, mas mais eficazes

    • Concordo muito. A indústria está presa ao paradigma do “botão mágico”, e a IA só faz coisas legais quando esse botão é apertado
      Se a IA consegue criar resumos automáticos a partir de transcrições de reuniões, não há motivo para ela não conseguir dar continuidade até os próximos passos ou itens de ação. Se o próximo passo é a Janine marcar uma reunião com o Carlos, acho que a IA poderia entrar em contato com o Carlos e ajudar a agendar. Hoje estamos pensando pequeno demais
    • Faz sentido dizer que precisamos reduzir reuniões. Vejo plataformas de chat ou ferramentas como o Loom, no fim das contas, como tentativas de reduzir o número de reuniões necessárias
      Mas também não dá para escapar da Lei de Metcalfe. A maior parte do trabalho moderno acontece em equipes e, se o tamanho da equipe é N, é preciso pagar um custo de comunicação O(N^2). Não acho que a comunicação total vá diminuir; precisamos das ferramentas certas para lidar com ela de forma mais eficaz
  • Excelente. O Discord é péssimo para buscar informações e acompanhar threads
    Dá a sensação de estar respondendo às mesmas perguntas repetidamente

    • O Discord também acabará adicionando busca baseada em modelos de linguagem de grande escala, como o Slack AI anunciou, e então esse problema desaparecerá
    • Este produto parece mirar mais no Slack ou no Teams do que no Discord