Skip to content

Latest commit

 

History

History
133 lines (107 loc) · 4.29 KB

README.md

File metadata and controls

133 lines (107 loc) · 4.29 KB

BrainButler Documentation

Summary

BrainButler is an AI-powered knowledge management system that helps users organize, research, and generate content. It features a Chrome extension and web app for input, multiple AI crews for processing information, and customizable knowledge bases. The system offers various paths for information processing and a user-friendly interface for managing and viewing content.

System Architecture

Input Methods

  • Chrome extension
  • Web app

Information Processing Flow

  1. New information entry
  2. Generate best routes for info processing
  3. Compare with current pages
  4. Action:
    • Add info to existing page
    • Create parent or child for existing page
    • Create new page
  5. Add to knowledge base

RAG Paths for Information

  1. Simple note-taking: Format user's saved info nicely
  2. Research assistant: Use internet and knowledge base to generate report and possible new paths
  3. Project planning: Use knowledge base to organize and plan

AI Crews

  1. Knowledge Base Crew: Organizes knowledge bases, suggests, and creates new ones
  2. Assimilation Crew: Decides how to incorporate info into a knowledge base
  3. Creation Crew: Researches and generates pages

Features

  • User-controlled page generation from notes
  • Selectable knowledge base(s) for page generation
  • User feedback on generated pages (like, dislike, direct feedback)
  • Manual page creation option

User Interface

Chrome Extension

  • Note categorisation
  • User notetaking with AI prompt generation
  • Save note
  • Redirect user to web app to view existing notes
  • Pinata API Key-Secret/JWT Token authentication

Web App

  • Login functionality
  • API key entry
  • Knowledge base creation/modification
  • File upload to pages

Views

  • Pages displayed as sortable squares (by date, knowledge base, or category)
  • (Future feature) Tree view of knowledge base

Data Storage

User Data

  1. Knowledge base outlines: Generated by Knowledge Base Crew
  2. Pages (main content): Generated by Creation Crew
  3. Notes: Source input for pages
  4. Metadata: User behavior & preferences, used to modify prompts

Example knowledge base dict/json structure

knowledge_base_example = { "knowledge_base": { "title": "BrainButler Knowledge Base", "pages": [ { "page_id": "001", "title": "Summary", "description": "Overview of BrainButler's features and capabilities." }, { "page_id": "002", "title": "System Architecture", "description": "Details on input methods, information processing flow, and AI crews." }, { "page_id": "003", "title": "Features", "description": "List of features including user-controlled page generation and feedback options." }, { "page_id": "004", "title": "User Interface", "description": "Information on the Chrome extension and web app functionalities." }, { "page_id": "005", "title": "Data Storage", "description": "Explanation of how user data, pages, and metadata are stored." } ] } }

example page dictionary

This dictionary (stores in pinata as json) represents a page in the system. It includes:

  • Page ID: A unique identifier for the page.
  • Title: The title of the page.
  • Content: A brief description or content of the page.
  • Links: An array of pointers to related pages and files. Each link has a type (either 'page' or 'file'), an ID, and a title or filename. The frontend can use this dictionary to dynamically fetch and display related content by following the IDs in the links array. This structure allows for easy navigation and organization of interconnected pages and files.

page_example = { "page_id": "123", "title": "Introduction to BrainButler", "content": "This page provides an overview of BrainButler.", "links": [ { "type": "page", "id": "124", "title": "System Architecture" }, { "type": "file", "id": "file_001", "filename": "README.md" } ] }