Xây một con Telegram bot để lưu trữ thông tin hiệu quả trong 3 tuần
Không phải do tiết kiệm đâu, làm vậy để hiệu quả hơn thôi...
Không phải do tiết kiệm đâu, làm vậy để hiệu quả hơn thôi
Hi, team mình là SaveDay, và team đang trong quá trình xây dựng một con Telegram bot có thể lưu trữ lại bất kỳ thông tin nào một cách nhanh chóng và thông minh nhất. Trong trường hợp các bạn muốn thử nghiệm con bot này trước khi đọc bài, vào link phía dưới này nhé!
Vậy thì chúng mình đã bắt đầu từ đâu?
Bắt đầu từ vấn đề của chính bản thân
Về bối cảnh tạo ra chiếc sản phẩm này thì đơn giản là:
- Các thành viên trong team mình đều thích đọc, thích học. Thậm chí tụi mình đã lập ra 1 kênh chat trên Slack có tên là #hoi-ham-hoc chuyên để share các link, tài liệu cho nhau nữa. Và bạn biết đấy, đây là kênh sôi động nhất
- Tụi mình đã cùng nhau phát triển 1 sản phẩm khác nhưng không thành công
Chính vì vậy đây là thời điểm mà mọi người bắt đầu suy nghĩ về việc “Team sẽ làm gì tiếp theo?” và sếp mình đã bâng quơ một câu: "Sao mình không giải quyết vấn đề mà chính mình gặp phải trong quá trình quản lý kiến thức cá nhân?"
👀Fun fact là nickname trên mạng của ổng cũng tên là @bookmark luôn 🥸
Bookmark cũ rồi, từ giờ hãy "everything-mark"
Bookmark là một khái niệm tới từ việc đánh dấu một trang sách để lưu lại tiến trình đọc, giúp việc truy cập lại sau này dễ dàng hơn.
Và như chúng ta đều đã biết, Sách thì đã có từ 7749 đời nay, và từ thế kỷ 20 với sự ra đời của Internet đã khiến mọi câu từ trong sách đều được đưa lên mạng. Ngày nay thì ai cũng thấy rõ là mình không chỉ tiêu thụ thông tin dưới dạng từ ngữ nữa. Như Youtube, Tiktok,... khiến các nội dung video thông dụng hơn. Spotify, Apple, Google mang podcast là dạng nội dung âm thanh đến gần hơn với mọi người, đặc biệt là trong các hoàn cảnh mà không thể xem hoặc đọc được. Pinterest là một nguồn thông tin chỉ dùng hình ảnh, và các mạng xã hội như Facebook, Twitter khiến nội dung dài chỉ cần cô đọng vào các bài post ngắn….
Tuy nhiên thì các công cụ bookmarking như Pocket, Raindrop hay browser bookmark (chức năng mà các bạn thường sử dụng ở thanh công cụ của Chrome, Firefox,...) vẫn giải quyết những vấn đề khá cũ và không đổi mới:
- Chỉ dùng tốt với các nội dung chữ và là link, bấm một cái là lưu lại. Với các nội dung hình ảnh, âm thanh, files, videos mà không có link là khỏi lưu
- Không hỗ trợ tìm kiếm nếu nội dung bạn lưu không phải chữ. Nhưng nếu bookmark không phải để truy cập lại sau này thì bookmark còn ý nghĩa gì?
Giờ tới vấn đề của người dùng tiềm năng
Vì thời gian có hạn, nên mình đã làm một chiếc nghiên cứu nhanh và cùng cả team tự điền chính trải nghiệm của bản thân, bởi việc tiêu thụ thông tin là nhu cầu của tất cả mọi người. Nghiên cứu này hướng tới việc tụi mình có thể hiểu hơn về hành trình tiếp nhận thông tin, kiến thức với nhiều nhu cầu và background khác nhau.
Một số khó khăn mà mọi người gặp phải được liệt kê ở dưới này
- Tiêu thụ nhiều thông tin, dưới nhiều dạng nhưng không thể nhớ hết toàn bộ kiến thức từ đó ra.
- Lưu trữ nội dung ở nhiều nguồn (trong máy tính, điện thoại, app chat, trên thanh browser, trong app take note,...) và mỗi lần cần tìm lại thì không nhớ mình lưu ở đâu.
- Không thể tìm được nội dung khác chữ (ảnh, video, audio,...) mà phải mò lại từng nguồn
- Mỗi người có một cách ghi nhớ thông tin khác nhau. Tụi mình cũng đã làm thêm một nghiên cứu nhỏ nữa về cách mọi người ghi nhớ thông tin để tìm lại khi cần và từ đó cho ra nhiều hình dung khác nhau. Người thì nhớ về "một bài viết về data có hình con tắc kè màu xanh" hoặc "một bài viết về case study của Gojek về nút bấm trong màn chat",... Tụi mình nhận thấy rằng mỗi người có một "memory cue" khác nhau, và đó có thể là nội dung, hình ảnh, màu sắc,...
- Việc truy cập lại kiến thức cần phải có bối cảnh. Mỗi lần tìm lại "kiến thức A" thì phải mở lại cả bài để đọc, vì không có bối cảnh có thể khiến "kiến thức A" bị ngộ nhận hoặc hiểu nhầm
Một số ý chính nữa về hành vi của user
- Một số users cực kỳ chủ động trong quá trình tìm kiếm và tiêu thụ thông tin. Họ tự dành thời gian cá nhân để đọc, xem,... và take note lại (đặc biệt là take note về bối cảnh) trong công cụ quản lý kiến thức cá nhân của mình (PKMS - personal knowledge management system). Họ thậm chí còn có thể từ kết nối các kiến thức đã có với nhau bằng các ứng dụng như Obsidian, …
- Một số khác thì thích đọc và tìm hiểu nhưng không có thời gian hoặc không tin vào việc cần phải xây dựng PKMS cho bản thân. Họ đơn giản là vứt tài liệu, link vào nhiều nguồn khác nhau để lưu lại. Các nguồn này có thể là app nhắn tin (Messenger, Telegram,...) hoặc app take note (Apple note, Evernote,...),... và kết quả là cực kỳ khó tìm lại
- Một số thì chỉ cần thông tin khi được yêu cầu (ví dụ công việc yêu cầu) và ngoài ra họ thì không có nhu cầu lưu trữ để sau tìm lại
Và Team mình quyết định là sẽ giải quyết vấn đề cho hội Knowledge sloth như trong ảnh
Hook product = Telegram bot
Nhìn lại journey, Team mình tìm thấy một cơ hội triển vọng trong việc sử dụng các ứng dụng nhắn tin như một sản phẩm để kiểm tra nhu cầu của user, bởi tụi mình nhìn thấy rất nhiều users có hành vi gửi thông tin cho chính mình trên các app này để lưu trữ.
Sẽ ra sao nếu họ vẫn gửi thông tin vào đó, nhưng nó sẽ giúp họ lưu trữ thông tin và tìm kiếm lại dễ dàng hơn?
Và Telegram là một khởi đầu phù hợp:
Có nhu cầu:
- Telegram cũng là một trong những ứng dụng chat được nhiều người sử dụng nhất. Chắc chắn là không ai muốn xây sản phẩm trên một ứng dụng chat đang chết dần cả...
- Người dùng Telegram đã và đang dùng ứng dụng này để gửi các thông tin lưu trữ
Dễ thử nghiệm về mặt công nghệ:
- Telegram là ứng dụng mở, nên việc cấu hình dễ dàng hơn
- Đồ phát triển cho bot trên Telegram rất đầy đủ, nên dễ làm các lệnh và luồng trải nghiệm
Và những gì mà con Telegram bot sẽ làm mình sẽ giải thích trong mục value proposition ngay dưới này
Con bot này có 3 nhóm tính năng chính:
Lưu trữ:
- Hỗ trợ lưu trữ nhiều loại nội dung (link, ảnh, audio, video, files,...)
Tìm kiếm:
- Tìm kiếm được nhiều loại nội dung
- Tìm kiếm theo keyword (lexical search) và theo cả ngữ nghĩa (semantic search), để phục vụ nhu cầu tìm kiếm phù hợp với trí nhớ của mỗi người. Mọi nội dung được lưu trữ sẽ có những đặc điểm khác nhau (nội dung, hình ảnh, màu sắc,...), và các đặc điểm này sẽ đều tìm kiếm được
Nội dung phái sinh (Generated content):
- Lấy ý chính của bài viết/ video (được viết theo phương pháp Zettelkasten) nhằm giúp mỗi người có thể chỉ cần đọc lại ý chính chứ không phải đọc lại toàn bộ nội dung
- Mindmap (có cùng mục đích như việc tổng hợp ý chính, nhưng để đáp ứng nhu cầu tiêu thụ ý chính dưới một hình thức khác thôi!~)
- Các hình ảnh trình bày ý chính thành từng note để phục vụ nhu cầu chia sẻ cho bạn bè hoặc trên mạng xã hội. Các tờ note này cực kỳ hữu dụng cho ai làm content creator, vì bạn có thể dễ dàng cầm nó đi share ở bất cứ chỗ nào
Các quyết định về mặt công nghệ:
- Luồng giao tiếp của bot với người được cấu hình trên n8n - một tool no-code để cắt giảm tối đa công việc của developer.
- Các nội dung phái sinh được đẻ ra từ API của OpenAI, nhưng tất nhiên là qua một quá trình tối ưu prompt nghiêm ngặt (người làm là sếp mình luôn, đọc 7749 cái research để làm).
- Hybrid search giữa tìm kiếm theo keyword (lexical search - dùng Algolia) và theo ngữ nghĩa (semantic search - dùng embedding model của OpenAI).
- Database: Bọn mình sử dụng Postgres và Pinecone (vector database).
Và cuối cùng, sản phẩm của tụi mình cũng có hình hài
Team vẫn chưa launch sản phẩm chính thức, nhưng tụi mình đã mở Telegram bot để mọi người vào trải nghiệm các luồng bookmark, tìm kiếm và generate key notes
Dưới đây là demo về các tính năng này (trên này không embed được video vào, mọi người chịu khó vào từng link xem vậy :>)
Bookmark
Search
Get key points
Dưới đây là mấy ảnh mà mình generate ra từ các ý chính của 1 bài về UX, mình đã dùng chính con Telegram bot này và share trên LinkedIn, siêu tiện
Trong cái khó ló cái khó hơn
Trong quá trình làm, Team cũng đã rút ra nhiều bài học qua những lần bế tắc:
- Xây dựng trải nghiệm dựa trên tin nhắn chat khác hẳn với những gì mà tụi mình từng làm mobile app hay website. Tụi mình nhận ra là cần tìm hiểu và thay đổi tư duy khác hơn về trải nghiệm, về luồng giao tiếp và hơn nữa là hiểu rõ giới hạn của app
- Team code ít hơn, dùng no-code nhiều hơn để ít phụ thuộc vào developers. Chúng mình dùng n8n, và n8n có những giới hạn riêng
- Đây là lần đầu tiên team làm với OpenAI nhiều thế, và hóa ra prompt không phải chỉ là prompt. Để ra được kết quả thỏa mãn mong muốn của sản phẩm thì cần rất nhiều kỹ thuật để tối ưu prompt. Các bài học đã trải qua của team bao gồm việc tối ưu hiệu quả, bẻ nhỏ xử lý từng cụm thông tin, ....
Và tất cả những vấn đề này sẽ được chia sẻ kỹ hơn, chi tiết hơn ở những bài sau, nếu bạn hứng thú với nó thì hãy chờ đợi và đón đọc nhé!
Tiếp theo sẽ là gì
- Mindmap đang được phát triển, và sẽ ra mắt sớm
- Tụi mình sẽ Launch chính thức sản phẩm. Mong các bạn sẽ đồng hành và feedback sản phẩm này để nó hoàn thiện hơn nhé!
- Tính năng hỏi đáp dựa trên thông tin đã lưu cũng đang được tính toán để làm trong bot
- Chúng mình không hướng tới việc sẽ là Notion hay Obsidian thế hệ tiếp theo, nên việc tích hợp được với các ứng dụng này để import/export dữ liệu là điều cần thiết
- Bot trên các nền tảng chat khác, để bao phủ được nhiều hoàn cảnh sử dụng hơn
- Và còn nhiều mục khác nữa, nếu cũng có ý kiến gì thì các bạn có thể đóng góp nhé
Dùng thử sản phẩm tại save.day đi, miễn phí trọn đời :">
Dành một tràng pháo tay cho @huy, @phuong, @co, @longbb, @thinh, @bit, @anhpm, @tradao, @zoe vì đã cùng xây dựng sản phẩm này :">
Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
- Hot nhất
- Mới nhất