{
  "version": "1.0",
  "exportDate": "2025-05-07T15:45:07.781Z",
  "entries": [
    {
      "id": "text-context-1746630115375",
      "timestamp": 1746630115375,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Pulse Interactive Documentation",
      "textContent": "You are the interactive documentation helper for \"Pulse\", a peer-to-peer AI platform with a ton of interesting features. A high level overview:\n\n- Quantum Search - used to search your node or other nodes, which will respond based on their ACL rules\n- Connections - Pulse's equivalent of 'friends', nodes you have direct access to\n- ACL Rules - Access control rules dictate how an AI should interact with your data and what nodes are allowed to work with an AI following that set of instructions, each should have a 'for access control' statement, a 'for responses' statement (which may include conducting searches using the vector search tool), and a 'for highlights' statement (even if it's just don't generate highlights)\n- Highlights - created after receiving an incoming quantum search (if the AI is instructed to), these are added to your 'highlights' feed and separated by tag (if requested), these can be used to replace existing social media workflows like posts, threads, etc\n- Directives - general user-provided guidelines that apply to all ai generated highlights for you node\n- Ingestion - Pulse's ingest tool can import data from almost any format as a text 'digest' (photos, text, spreadsheets, videos, audio, etc) digests are made available for basic keyword/tag search as well as imported into the vector search tool for more advanced queries\n- Vector Search - A custom vector database implementation that includes both embedding-model based search and web search, it also has a summarization feature allowing an AI to return a summarized result and a swarm feature where all results are fed through a swarm of AI workers to extract key information. This can be thought of as our alternative to deep research tools. Vector search also has a simple chart generation tool, metadata extracted from digests can be displayed as a chart with a configurable x and y axis.\n- Advanced Analysis tool - a post-chatbot interface with modular context blocks that integrates all features of our vector search pipeline (including swarm and summary) and includes the ability to export the analysis as a simple json file that can be imported and continued or remixed on any other node\n\nIf the user asks how to get help for different features let them know that they can enable the context block in the current UI.",
      "isActive": true,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746630808011",
      "timestamp": 1746630808011,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Quantum Search Help",
      "textContent": "Quantum search is relatively simple.\n\nClick the plus icon on the righthand side of the search bar to open the node list, add any nodes you want to search or hit the refresh icon to pull an updated list from your connections. Then hit the search button on the righthand side of the search bar.\n\nYou can search multiple nodes at the same time, they will all be sent exactly the same query.\n\nWhen performing a quantum search your query moves through several stages:\n\n- PENDING (your node has not sent the query yet)\n- SENT (your node has sent the query)\n- ACK (the other node has acknowledged, but is not yet processing your query)\n- ALLOW/DENY (deny stops the process, allow means that the query was matched to a rule on the other node)\n- PROC (query is being processed by the other node)\n- DONE (query has been responded to)\n\nafter processing an additional quality check will be applied to each result, which will be flagged:\n\n- NOT_REVIEWED (response looks like an error message or garbled AI response)\n- REVIEWED (response is good, but not great)\n- HELPFUL (response is on-target)\n- NOT_HELPFUL (response is not helpful, spam, etc)\n\nCommon issues:\n\n- you may occasionally have to re-send a search due to an overly cautious ACL rule decision, generally 3 or more failed searches means you're not matching any rules\n\n- quantum searches cannot be scheduled to repeat - we would like to add this feature but it requires more compute, this is subject to change\n\n- searches may occasionally get stuck in ACK status, if this happens just re-send the search",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746631260419",
      "timestamp": 1746631260419,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Connections Help",
      "textContent": "Connections are Pulse's equivalent of a friend request, the workflow for adding a connection is:\n\n- go to the connections page\n- click add a connection\n- enter their node url\n- click create\n\nYour connection will receive a new contact in \"pending\" status on their node and will be prompted to click 'share key'\n\nAfter clicking share key the status of the connection on both nodes will say \"connected\" rather than \"pending\"\n\nPlease note that creating a connection and pressing share key yourself only provides the other person's node with a new key, you won't be connected until the OTHER node clicks 'share key'.",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746631686778",
      "timestamp": 1746631686778,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Workers Help",
      "textContent": "Workers allow you to assign different models to respond to quantum searches. Lower tier accounts have access to Qwen or small gpt models, higher tiers have access to all models from openai. We plan on adding more as we find more cost effective models that work well with our approach to tool-use.\n\nTo create a worker go to the \"workers\" page and select from the available models. Workers are then assigned to access control rules. Your first worker will be the default assignee if one is not selected.\n\nEach worker gets one \"thread\" on our backend, that way you can assign multiple different workers to different ACL rules to prevent your node from getting bogged down, for example, with a large number of public requests hitting the same rule. That worker will take care of those requests while other manage other rules.",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746631501652",
      "timestamp": 1746631501652,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "ACL Rules Help",
      "textContent": "Access Control List (ACL) Rules define how your node handles incoming search queries — whether they’re from you, a contact, or the public.\nAt their core, every ACL rule has two components:\nAccess Control Statement\nALLOW – respond to this query\nCONTINUE – skip to the next rule\nDECLINE – ignore or block the request\nResponse Statement\nDescribes what to do if access is granted.\n(optional) Highlight Statement\nDescribes how to (or not to) handle highlights created from this rule\nExample:\n\"For Access Control: ALLOW all queries that relate to logistics monitoring, CONTINUE all others so they can be evaluated by other rules\n\nFor Responses: This rule is for logistics-monitoring. Respond by using the search tool to summarize 50 digests with the date/time range requested in the query prepend tags contains logistics-monitoring to all searches to ensure we're using the correct tag\n\nFor Highlights: If anything in the search result involves a lost package or missed delivery create a highlight and include the order number in question\"---\n\n\n🧭 Rule Evaluation Logic\nACL Rules are evaluated in order of priority, filtered by who is making the request:\n👤 You (the node owner):\nAll rules are evaluated — no restrictions.\n🌐 Public (non-contact searches):\nOnly public-facing rules are evaluated, and only if “Allow Public Queries” is enabled in your UI settings.\n🤝 Connections (trusted nodes):\nEvaluated against:\nPublic rules\nAny specific rules they are assigned to via your UI\n✅ Tip: Keep public rules clean, safe, and minimal.\n🤫 Use contact-level rules for deeper, collaborative access.---\n\n\n🧠 Why Use ACL Rules?\n🔐 Privacy by default – nothing is shared without an explicit rule\n🧰 Modular control – tailor responses to different users, contacts, or roles\n🧠 Intelligent automation – pair with Highlights & Directives for powerful downstream effects---\n\n\n🛠️ Managing ACLs\nCreate, edit, and reorder rules via the ACL section in your node UI\nAssign rules to specific Connections\nTest rules by running mock queries in the Search Console---\n\n\n🧩 Advanced Use Cases\nACL rules are the foundation for:\nAutomated Highlight Generation\nScoped Sharing with Other Nodes\nMulti-tenant Data Management\nRole-Based Intelligence Feeds\nControlled Swarm Collaboration---\n\n\n🔐 Default Stance: Cautious\nIf no ACL rule matches a query, your node does nothing.\nThis ensures maximum safety — no accidental leaks, no surprise behaviors.\n\nNote: Each worker gets one thread on the backend, so it's a good practice to configure a separate worker for acl rules that are public to avoid tying up requests from your network.",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746632049308",
      "timestamp": 1746632049308,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Highlights & Directives Help",
      "textContent": "Currently, we use a small, fast model for highlights, but that comes with limitations. Try to keep instructions simple and expect the occasional weird highlight, they're easy to dismiss or delete.\n\nWhen creating a highlight the model can see:\n\n- the ACL rule configuration\n- the incoming request\n- the reply\n\nHighlights can be made from any single or combination of these and summarized according to your instructions.\n\nNote that instructions for creating highlights that you want followed closely should ALWAYS be included in the acl rule rather than directives, directives are for general instructions like formatting or length.\n\nYou have to explicitly tell the engine to NOT create highlights, otherwise the AI may try its best and create a weird automated feed.",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746632243574",
      "timestamp": 1746632243574,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Ingestion Help",
      "textContent": "# Ingest Tool\nThe ingest tool converts data from videos, documents, audio files, spreadsheets, and images (with more to come) into tagged, structured, digests according to your prompt. Here's an overview of how ingest currently handles each type of document:\n\n# **Quirks**\nLong-running requests will often trigger 500 errors - wait a minute or two and check vector, your upload is most likely working, just taking a long time to complete. This is due to limitations Chrome and other browsers place on request times.\n\n# **Videos**\n- Videos can be ingested whole but keep in mind the ingesting agent is most likely only a 7B LLM with video understanding capabilities and smaller chunks will yield better understanding\n- Set the clip length to divide the video in to segments of that length\n- clip length can be thought of as the \"resolution\" you want to look at the video under\n- example 1: to get analysis of an intense soccer clip it would be best to keep clip length to around 20 seconds to make sure the AI captures all the information\n- example 2: if you're just looking at a podcast you may mostly want analysis of the audio context and submit the entire video as a single clip\n\n- The context prompt can be used to request structured output (ex: \"count the number of people in the photos and output only peoplecount: N (newline) scenedescription: description\")\n\n# Audio\n- Audio files can be ingested and transcribed whole or using clip length, similar to video\n- Audio transcription currently does not support context prompts, as soon as a model becomes available that will this feature will be added to the next sprint\n\n\n# Images\n- Images can be transcribed with or without a context prompt\n- If ingested without a context prompt the default prompt will instruct the ingesting agent to describe the image in a paragraph of text\n- Context prompts can be used to gather specific information and structure output, this is very useful for quality control and customer service scenarios\n- Example: \"Please create structured entries with failure_mode: failure mode (newline) product_name: (newline) scene_description: scene description\"\n\n# Documents \n**Simple documents**\n- RTF and TXT files are read directly into whole entries or into entries the length of the Chunk Size setting\n- Word and ODF documents are currently ingested as text-only (graphs will not currently be \"read\" by the ingest tool)\n\n**PDFs**\n- Image Pdfs: Image PDFs are \"transcribed-described\" (an image recognition model is used to both transcribe the document and describe any figures) page by page, each page currently becomes a new feed entry\n- Text Pdfs: Text PDFs are read and chunked like simple documents\n- \"Image PDF Mode\" is triggered when a PDF does not have a proportionately high amount of text defined in its data structure\n\n# Spreadsheets\n- Spreadsheets are ingested such that each row becomes its own feed entry (while this may initially seem like it creates performance concerns our backend effectively runs off of a RAM Disk)\n- Multiple worksheet ingestion is supported\n- Ingestion of graphs/etc is not currently supported, but can be emulated by uploading screenshots of graphs if needed\n\n# Tag Selection\n- Tags can be selected to apply to the new feed entries for all ingestion workflows\n\nKnown issues:\n- currently only one tag may be entered for an upload (UI is not correctly separating comma-separated tags)",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746632398931",
      "timestamp": 1746632398931,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Vector Search Help",
      "textContent": "# Introduction\nVector search is a new way to interact with your data. Where previous systems used API commands and query languages to retrieve data, Pulse uses natural language. This system is robust enough that we're on track to use it as the core of our user interface, which is why we refer to it as a \"unified interface.\"\n\n# How to Use Vector Search\n\n# **Basic Settings**\n- **Threshold** – The minimum \"relevance level\" for search results (0 to 1, where 0.5 = 50%). Lower values return broader matches; higher values return only highly relevant matches.\n- **Limit** – The maximum number of search results you want retrieved (e.g., \"10 funny cat pictures\" or \"500 FDA lawsuit filings\").\n- **Date Range** – Filters results based on the created date of the digest.\n  - **Note:** This filters based on the digest's ingestion date, not metadata fields. To filter by metadata date fields, use a metadata search.\n  - This is also not applied to web searches, for web searches include the date in the web search so the metasearch engine can see it\n  - It is generally a good idea to remind workers in acl rules to put the date in the query when using web searches as they'll sometimes try to enter it through the date fields by mistake\n- **Capture Results:** By Default web searches only keep the top 3 results, swarms and summaries only return the final top-level answer, check this to get:\n    - All web search results\n    - All intervening swarm steps\n    - All results used for a summary\nas part of the final response from the system.\n\n# **Natural Language Queries**\n- Pulse's search model responds to natural language queries.\n- **Example 1:** \"I'm looking for posts that read like they were written by a grumpy old man.\"\n- **Example 2:** \"I'm trying to find parts for a 2001 Chevy Suburban.\"\n\n# **Natural Language Operators**\n- Use WEB at the start of a query to trigger a web search\n- Use CONTEXT at the end of a query followed by whatever information about your search you want to pass to the summary or swarm workers\n- EX: WEB canary in the coal mine CONTEXT what does this idiom  mean?\n\n# **Metadata Search**\n- Any sequence formatted as `fieldname: fieldcontent (newline)` is extracted as metadata.\n- Metadata operators can be combined with natural language to refine searches beyond traditional systems.\n\n# **Special Metadata Fields**\n- **\"ObjectType\"** – Represents the type of object the digest contains (e.g., connection, search result, or standard digest).\n- **\"Content\"** - Represents the entire text of an entry, can be used for generic queries like \"content contains dog\" \n\n# **Example Metadata Queries**\n- **Example 1:** \"I'm looking for posts that read like they were written by a grumpy old man content contains dentures\" – Limits results to posts containing the word \"dentures.\"\n- **Example 2:** \"I'm trying to find parts for a 2001 Chevy Suburban price < 200\" – Returns digests with a `price` metadata field of less than $200.\n- **Example 3:** `price<200` – A metadata-only query.\n\n# **Metadata Operators**\nMetadata operators allow you to filter structured fields directly, giving you precise control over results. Unlike natural language search, which infers meaning, metadata operators enforce strict filtering rules.\n\n- **Equals (`=`)** – Find posts with a specific value (e.g., `source=olympics` for gym and athletic competition fails).\n- **Greater than (`>`)** – Find entries above a certain value (e.g., `probability > 80` for leads with a high chance of success).\n- **Less than (`<`)** – Find entries below a certain value (e.g., `cost < 70000` for parts under $70,000).\n- **Contains** – Filter results based on a keyword in a field (e.g., `description contains mantis` for insect-related posts).\n- **Tags** – Specify a tag by using \"tags contains [tag]\" to refine results by tag\n\n# **Operators AND by Default**\n- Adding multiple operators combines them as required conditions.\n- **Example:** `tags contains salesopportunity probability > 40 description contains texas-based` – Filters results to sales opportunities with a probability over 40% that mention \"Texas-based.\"\n\nKnown issues:\n- sometimes the text 'is' will be mis-detected as a metadata equals, we're working on adjusting regexes for this and are very sorry\n\nTips:\n- check 'capture results' on summarize and swarm searches to see the original source data, this can be exported and used in the analysis tool or re-ingested as a digest for further study, it makes a great research loop!",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "text-context-1746632471223",
      "timestamp": 1746632471223,
      "order": 0,
      "type": "context",
      "contextType": "text",
      "name": "Analysis Tool Help",
      "textContent": "1. Assemble Your Context Blocks\nPulse lets you build your own analysis stack using context blocks. These are curated input panes that can contain:\nRaw text\nPaste in any note, document excerpt, meeting fragment, or thought. Use context blocks to structure your thinking—each block stands alone; together, they form your analysis backbone.\nVector Search Results\nTap into the Pulse database using natural language search. Results appear just like in the vector search sidebar—select any digest or snippet and instantly add it as a context block.\nHot tip: The analysis tool’s search bar is “mini but mighty”—you can filter results by tags, time, user, or semantic content just like in the main search.---\n\n\n2. Control the Order of Context\nArrow Icons (^/v)\nRearrange your context blocks in any sequence. The AI will see the blocks in the order you set—meaning you decide what’s “up front” (primary), and what’s background or supporting detail.\nDeclarative Order = Declarative Output\nThis is more than cosmetic: first blocks frame the analysis, later ones qualify or supplement. Sculpt your context stack for synthesis or argument-by-example, as needed.---\n\n\n3. Activate / Deactivate / Delete Context\nToggle Blocks On/Off\nEach block has an activation switch. Deactivated blocks are ignored by the AI—try turning sections off to focus responses, or quickly test how the AI behaves with/without certain pieces.\nDelete Unneeded Blocks\nRemove distractions or bad leads entirely by deleting a block. Keep your workspace lean, focused, and tailored to the current analytic goal.---\n\n\n4. Import / Export Analyses\nImport:\nDrop in past analyses, saved context assemblies, or team templates as full context block sets. Great for working from canon, group workflows, or starting with a best-practice stack.\nExport:\nCapture your current analysis—including all context blocks, order, and status. Share with colleagues, publish as a reusable template, or archive for cross-case followup.---\n\n\n5. Run the Analysis On Your Terms\n“Add” vs. “Send to Worker”\nAdd brings new context blocks into your assembly area; nothing goes to the AI yet.\nSend to Worker fires off exactly what’s visible and active in your context stack to the AI engine for analysis, summarization, comparison, etc.\nIterate Freely\nYou can adjust blocks, try different orders, or swap content before invoking the AI—enabling controlled, reproducible experiments and rock-solid audit trails.---\n\n\n6. Why It Matters\nThis fine-grained control is what sets Pulse apart:\nNo “chat fog” or accidental memory leaks.\nReproducible, auditable outputs—a paper trail you can iterate, remix, or share.\nViral creativity:\nBuild chatbots, games, research tools, or documentation workflows—then share, remix, and re-export with your team or the world.---",
      "isActive": false,
      "displayMode": "summary"
    },
    {
      "id": "msg-1746630853383",
      "timestamp": 1746630853383,
      "order": 1,
      "type": "user",
      "content": "How do I send a quantum search?",
      "isActive": false
    },
    {
      "id": "msg-1746630862941",
      "timestamp": 1746630862941,
      "order": 2,
      "type": "assistant",
      "content": "To send a quantum search in Pulse, follow these steps:\n\n1. **Open the Node List**: Click the plus icon on the right-hand side of the search bar to open the node list. This list shows all the nodes you have direct access to (connections).\n\n2. **Select Nodes**: Add any nodes you want to search by clicking on them in the node list. You can select multiple nodes simultaneously by holding down the `Ctrl` (Windows/Linux) or `Cmd` (Mac) key while clicking on different nodes.\n\n3. **Initiate the Search**: Once you've selected the nodes, click the search button on the right-hand side of the search bar. This will initiate the quantum search process.\n\n4. **Monitor the Query Status**:\n   - Your query will move through several stages: PENDING, SENT, ACK, ALLOW/DENY, PROC, and DONE.\n   - Each stage indicates the progress of the query as it moves through the nodes.\n   - After the query reaches the DONE stage, an additional quality check will be applied to each result, flagging them as NOT_REVIEWED, REVIEWED, HELPFUL, or NOT_HELPFUL.\n\nBy following these steps, you can effectively send a quantum search and monitor its progress through the various stages.",
      "isActive": false,
      "model": "qwen",
      "usedContexts": [
        {
          "id": "text-context-1746630115375",
          "name": "Pulse Interactive Documentation",
          "type": "text",
          "content": "You are the interactive documentation helper for \"Pulse\", a peer-to-peer AI platform with a ton of interesting features. A high level overview:\n\n- Quantum Search - used to search your node or other nodes, which will respond based on their ACL rules\n- Connections - Pulse's equivalent of 'friends', nodes you have direct access to\n- ACL Rules - Access control rules dictate how an AI should interact with your data and what nodes are allowed to work with an AI following that set of instructions, each should have a 'for access control' statement, a 'for responses' statement (which may include conducting searches using the vector search tool), and a 'for highlights' statement (even if it's just don't generate highlights)\n- Highlights - created after receiving an incoming quantum search (if the AI is instructed to), these are added to your 'highlights' feed and separated by tag (if requested), these can be used to replace existing social media workflows like posts, threads, etc\n- Directives - general user-provided guidelines that apply to all ai generated highlights for you node\n- Ingestion - Pulse's ingest tool can import data from almost any format as a text 'digest' (photos, text, spreadsheets, videos, audio, etc) digests are made available for basic keyword/tag search as well as imported into the vector search tool for more advanced queries\n- Vector Search - A custom vector database implementation that includes both embedding-model based search and web search, it also has a summarization feature allowing an AI to return a summarized result and a swarm feature where all results are fed through a swarm of AI workers to extract key information. This can be thought of as our alternative to deep research tools. Vector search also has a simple chart generation tool, metadata extracted from digests can be displayed as a chart with a configurable x and y axis.\n- Advanced Analysis tool - a post-chatbot interface with modular context blocks that integrates all features of our vector search pipeline (including swarm and summary) and includes the ability to export the analysis as a simple json file that can be imported and continued or remixed on any other node"
        },
        {
          "id": "text-context-1746630808011",
          "name": "Quantum Search Help",
          "type": "text",
          "content": "Quantum search is relatively simple.\n\nClick the plus icon on the righthand side of the search bar to open the node list, add any nodes you want to search or hit the refresh icon to pull an updated list from your connections. Then hit the search button on the righthand side of the search bar.\n\nYou can search multiple nodes at the same time, they will all be sent exactly the same query.\n\nWhen performing a quantum search your query moves through several stages:\n\n- PENDING (your node has not sent the query yet)\n- SENT (your node has sent the query)\n- ACK (the other node has acknowledged, but is not yet processing your query)\n- ALLOW/DENY (deny stops the process, allow means that the query was matched to a rule on the other node)\n- PROC (query is being processed by the other node)\n- DONE (query has been responded to)\n\nafter processing an additional quality check will be applied to each result, which will be flagged:\n\n- NOT_REVIEWED (response looks like an error message or garbled AI response)\n- REVIEWED (response is good, but not great)\n- HELPFUL (response is on-target)\n- NOT_HELPFUL (response is not helpful, spam, etc)"
        },
        {
          "id": "msg-1746630853383",
          "type": "message",
          "sender": "user",
          "content": "How do I send a quantum search?"
        }
      ]
    },
    {
      "id": "msg-1746630974099",
      "timestamp": 1746630974099,
      "order": 3,
      "type": "user",
      "content": "My search didn't go through",
      "isActive": false
    },
    {
      "id": "msg-1746630988592",
      "timestamp": 1746630988592,
      "order": 4,
      "type": "assistant",
      "content": "It seems like your quantum search did not go through successfully. Let's troubleshoot this issue step-by-step:\n\n1. **Check Node Status:**\n   - Ensure that the nodes you are searching are active and not in a maintenance mode.\n   - Verify that the nodes are part of your connections and are accessible.\n\n2. **ACL Rules:**\n   - Check the ACL rules on the nodes you are trying to search. Sometimes overly cautious rules can prevent searches from going through.\n   - Look for any specific ACL rules that might be blocking the search.\n\n3. **Query Content:**\n   - Review the content of your search query. Ensure it is clear and does not contain any typos or errors.\n   - Make sure the query aligns with the ACL rules of the nodes you are targeting.\n\n4. **Search History:**\n   - Check the history of your previous searches. If you have encountered issues before, it might be related to similar problems.\n   - Look for patterns or common issues that might be recurring.\n\n5. **Error Messages:**\n   - If there were any error messages during the search process, note them down.\n   - These messages can provide clues about why the search did not go through.\n\n6. **Node List:**\n   - Ensure that the nodes you are searching are listed in your node list.\n   - If you are searching across multiple nodes, make sure all nodes are correctly configured and accessible.\n\n7. **Connection Status:**\n   - Check the connection status between your node and the nodes you are searching.\n   - Ensure there are no network issues or connectivity problems.\n\n8. **Retry:**\n   - Try resending the search. Sometimes, a simple resend can resolve issues caused by overly cautious ACL rules.\n   - If you encounter repeated failures, consider resending the search a few times to see if the issue resolves itself.\n\n9. **Documentation:**\n   - Refer to the Pulse Interactive Documentation for detailed steps and troubleshooting tips.\n   - The Quantum Search Help section provides guidance on common issues and how to handle them.\n\nIf you continue to experience issues, please provide more details so I can assist you further.",
      "isActive": false,
      "model": "qwen",
      "usedContexts": [
        {
          "id": "text-context-1746630115375",
          "name": "Pulse Interactive Documentation",
          "type": "text",
          "content": "You are the interactive documentation helper for \"Pulse\", a peer-to-peer AI platform with a ton of interesting features. A high level overview:\n\n- Quantum Search - used to search your node or other nodes, which will respond based on their ACL rules\n- Connections - Pulse's equivalent of 'friends', nodes you have direct access to\n- ACL Rules - Access control rules dictate how an AI should interact with your data and what nodes are allowed to work with an AI following that set of instructions, each should have a 'for access control' statement, a 'for responses' statement (which may include conducting searches using the vector search tool), and a 'for highlights' statement (even if it's just don't generate highlights)\n- Highlights - created after receiving an incoming quantum search (if the AI is instructed to), these are added to your 'highlights' feed and separated by tag (if requested), these can be used to replace existing social media workflows like posts, threads, etc\n- Directives - general user-provided guidelines that apply to all ai generated highlights for you node\n- Ingestion - Pulse's ingest tool can import data from almost any format as a text 'digest' (photos, text, spreadsheets, videos, audio, etc) digests are made available for basic keyword/tag search as well as imported into the vector search tool for more advanced queries\n- Vector Search - A custom vector database implementation that includes both embedding-model based search and web search, it also has a summarization feature allowing an AI to return a summarized result and a swarm feature where all results are fed through a swarm of AI workers to extract key information. This can be thought of as our alternative to deep research tools. Vector search also has a simple chart generation tool, metadata extracted from digests can be displayed as a chart with a configurable x and y axis.\n- Advanced Analysis tool - a post-chatbot interface with modular context blocks that integrates all features of our vector search pipeline (including swarm and summary) and includes the ability to export the analysis as a simple json file that can be imported and continued or remixed on any other node"
        },
        {
          "id": "text-context-1746630808011",
          "name": "Quantum Search Help",
          "type": "text",
          "content": "Quantum search is relatively simple.\n\nClick the plus icon on the righthand side of the search bar to open the node list, add any nodes you want to search or hit the refresh icon to pull an updated list from your connections. Then hit the search button on the righthand side of the search bar.\n\nYou can search multiple nodes at the same time, they will all be sent exactly the same query.\n\nWhen performing a quantum search your query moves through several stages:\n\n- PENDING (your node has not sent the query yet)\n- SENT (your node has sent the query)\n- ACK (the other node has acknowledged, but is not yet processing your query)\n- ALLOW/DENY (deny stops the process, allow means that the query was matched to a rule on the other node)\n- PROC (query is being processed by the other node)\n- DONE (query has been responded to)\n\nafter processing an additional quality check will be applied to each result, which will be flagged:\n\n- NOT_REVIEWED (response looks like an error message or garbled AI response)\n- REVIEWED (response is good, but not great)\n- HELPFUL (response is on-target)\n- NOT_HELPFUL (response is not helpful, spam, etc)\n\nCommon issues:\n\n- you may occasionally have to re-send a search due to an overly cautious ACL rule decision, generally 3 or more failed searches means you're not matching any rules\n\n- quantum searches cannot be scheduled to repeat - we would like to add this feature but it requires more compute, this is subject to change"
        },
        {
          "id": "msg-1746630974099",
          "type": "message",
          "sender": "user",
          "content": "My search didn't go through"
        }
      ]
    },
    {
      "id": "msg-1746631277293",
      "timestamp": 1746631277293,
      "order": 5,
      "type": "user",
      "content": "How do I add a new connection?",
      "isActive": false
    },
    {
      "id": "msg-1746631285966",
      "timestamp": 1746631285966,
      "order": 6,
      "type": "assistant",
      "content": "To add a new connection on Pulse, follow these steps:\n\n1. **Go to the Connections Page**: Navigate to the section of your Pulse dashboard where you manage your connections.\n\n2. **Click Add a Connection**: Look for an option labeled \"Add a Connection\" or something similar. Click on it.\n\n3. **Enter Their Node URL**: In the form that appears, input the URL of the node you want to connect with. This URL typically starts with `https://` followed by the node's unique identifier.\n\n4. **Click Create**: After entering the URL, click the \"Create\" button to initiate the connection process.\n\n5. **Wait for Confirmation**: Your connection will appear in a \"pending\" status on their node. They will then need to click the \"Share Key\" button to finalize the connection. Once they do so, the status on both nodes will change to \"Connected\".\n\nRemember, creating a connection and pressing \"Share Key\" yourself only provides the other person's node with a new key; you won't be connected until the other node clicks 'share key'.",
      "isActive": false,
      "model": "qwen",
      "usedContexts": [
        {
          "id": "text-context-1746631260419",
          "name": "Connections",
          "type": "text",
          "content": "Connections are Pulse's equivalent of a friend request, the workflow for adding a connection is:\n\n- go to the connections page\n- click add a connection\n- enter their node url\n- click create\n\nYour connection will receive a new contact in \"pending\" status on their node and will be prompted to click 'share key'\n\nAfter clicking share key the status of the connection on both nodes will say \"connected\" rather than \"pending\"\n\nPlease note that creating a connection and pressing share key yourself only provides the other person's node with a new key, you won't be connected until the OTHER node clicks 'share key'."
        },
        {
          "id": "text-context-1746630115375",
          "name": "Pulse Interactive Documentation",
          "type": "text",
          "content": "You are the interactive documentation helper for \"Pulse\", a peer-to-peer AI platform with a ton of interesting features. A high level overview:\n\n- Quantum Search - used to search your node or other nodes, which will respond based on their ACL rules\n- Connections - Pulse's equivalent of 'friends', nodes you have direct access to\n- ACL Rules - Access control rules dictate how an AI should interact with your data and what nodes are allowed to work with an AI following that set of instructions, each should have a 'for access control' statement, a 'for responses' statement (which may include conducting searches using the vector search tool), and a 'for highlights' statement (even if it's just don't generate highlights)\n- Highlights - created after receiving an incoming quantum search (if the AI is instructed to), these are added to your 'highlights' feed and separated by tag (if requested), these can be used to replace existing social media workflows like posts, threads, etc\n- Directives - general user-provided guidelines that apply to all ai generated highlights for you node\n- Ingestion - Pulse's ingest tool can import data from almost any format as a text 'digest' (photos, text, spreadsheets, videos, audio, etc) digests are made available for basic keyword/tag search as well as imported into the vector search tool for more advanced queries\n- Vector Search - A custom vector database implementation that includes both embedding-model based search and web search, it also has a summarization feature allowing an AI to return a summarized result and a swarm feature where all results are fed through a swarm of AI workers to extract key information. This can be thought of as our alternative to deep research tools. Vector search also has a simple chart generation tool, metadata extracted from digests can be displayed as a chart with a configurable x and y axis.\n- Advanced Analysis tool - a post-chatbot interface with modular context blocks that integrates all features of our vector search pipeline (including swarm and summary) and includes the ability to export the analysis as a simple json file that can be imported and continued or remixed on any other node"
        },
        {
          "id": "msg-1746631277293",
          "type": "message",
          "sender": "user",
          "content": "How do I add a new connection?"
        }
      ]
    },
    {
      "id": "msg-1746631797602",
      "timestamp": 1746631797602,
      "order": 7,
      "type": "user",
      "content": "It takes my node a long time to respond to searches if I get multiple incoming searches, what could be wrong?",
      "isActive": false
    },
    {
      "id": "msg-1746631809443",
      "timestamp": 1746631809443,
      "order": 8,
      "type": "assistant",
      "content": "If your node is taking a long time to respond to multiple incoming searches, there could be several potential causes:\n\n1. **Overloaded Workers**: Ensure that you have enough workers configured to handle the load. Each worker has its own thread on the backend, so having too many public-facing rules might tie up resources. Consider creating a separate worker specifically for handling ACL rules that are public.\n\n2. **Resource Constraints**: Make sure your node has sufficient computational power and memory to handle the load. If your node is running low on resources, it might slow down significantly.\n\n3. **ACL Rule Complexity**: If your ACL rules are complex or if they involve a lot of conditions, it might cause delays. Simplifying the rules or breaking them down into smaller, more manageable pieces could help.\n\n4. **Query Processing**: Check if the queries themselves are causing delays. Sometimes, the complexity of the queries or the number of digests involved in the search can slow down the process.\n\n5. **Network Latency**: Ensure that there isn't significant network latency between your node and the other nodes it's communicating with. High latency can significantly impact performance.\n\n6. **ACL Rule Evaluation**: Verify that the evaluation logic is not causing unnecessary delays. Ensure that the rules are straightforward and that the evaluation process is efficient.\n\n7. **Worker Configuration**: Double-check the configuration of your workers. Ensure that they are properly assigned and that the threads are not being overused.\n\n8. **Debugging**: Use the Search Console to run mock queries and test the response times. This can help identify bottlenecks and areas that need optimization.\n\nBy addressing these potential issues, you should be able to improve the responsiveness of your node to incoming searches.",
      "isActive": false,
      "model": "qwen",
      "usedContexts": [
        {
          "id": "text-context-1746630115375",
          "name": "Pulse Interactive Documentation",
          "type": "text",
          "content": "You are the interactive documentation helper for \"Pulse\", a peer-to-peer AI platform with a ton of interesting features. A high level overview:\n\n- Quantum Search - used to search your node or other nodes, which will respond based on their ACL rules\n- Connections - Pulse's equivalent of 'friends', nodes you have direct access to\n- ACL Rules - Access control rules dictate how an AI should interact with your data and what nodes are allowed to work with an AI following that set of instructions, each should have a 'for access control' statement, a 'for responses' statement (which may include conducting searches using the vector search tool), and a 'for highlights' statement (even if it's just don't generate highlights)\n- Highlights - created after receiving an incoming quantum search (if the AI is instructed to), these are added to your 'highlights' feed and separated by tag (if requested), these can be used to replace existing social media workflows like posts, threads, etc\n- Directives - general user-provided guidelines that apply to all ai generated highlights for you node\n- Ingestion - Pulse's ingest tool can import data from almost any format as a text 'digest' (photos, text, spreadsheets, videos, audio, etc) digests are made available for basic keyword/tag search as well as imported into the vector search tool for more advanced queries\n- Vector Search - A custom vector database implementation that includes both embedding-model based search and web search, it also has a summarization feature allowing an AI to return a summarized result and a swarm feature where all results are fed through a swarm of AI workers to extract key information. This can be thought of as our alternative to deep research tools. Vector search also has a simple chart generation tool, metadata extracted from digests can be displayed as a chart with a configurable x and y axis.\n- Advanced Analysis tool - a post-chatbot interface with modular context blocks that integrates all features of our vector search pipeline (including swarm and summary) and includes the ability to export the analysis as a simple json file that can be imported and continued or remixed on any other node"
        },
        {
          "id": "text-context-1746630808011",
          "name": "Quantum Search Help",
          "type": "text",
          "content": "Quantum search is relatively simple.\n\nClick the plus icon on the righthand side of the search bar to open the node list, add any nodes you want to search or hit the refresh icon to pull an updated list from your connections. Then hit the search button on the righthand side of the search bar.\n\nYou can search multiple nodes at the same time, they will all be sent exactly the same query.\n\nWhen performing a quantum search your query moves through several stages:\n\n- PENDING (your node has not sent the query yet)\n- SENT (your node has sent the query)\n- ACK (the other node has acknowledged, but is not yet processing your query)\n- ALLOW/DENY (deny stops the process, allow means that the query was matched to a rule on the other node)\n- PROC (query is being processed by the other node)\n- DONE (query has been responded to)\n\nafter processing an additional quality check will be applied to each result, which will be flagged:\n\n- NOT_REVIEWED (response looks like an error message or garbled AI response)\n- REVIEWED (response is good, but not great)\n- HELPFUL (response is on-target)\n- NOT_HELPFUL (response is not helpful, spam, etc)\n\nCommon issues:\n\n- you may occasionally have to re-send a search due to an overly cautious ACL rule decision, generally 3 or more failed searches means you're not matching any rules\n\n- quantum searches cannot be scheduled to repeat - we would like to add this feature but it requires more compute, this is subject to change\n\n- searches may occasionally get stuck in ACK status, if this happens just re-send the search"
        },
        {
          "id": "text-context-1746631686778",
          "name": "Workers Help",
          "type": "text",
          "content": "Workers allow you to assign different models to respond to quantum searches. Lower tier accounts have access to Qwen or small gpt models, higher tiers have access to all models from openai. We plan on adding more as we find more cost effective models that work well with our approach to tool-use.\n\nTo create a worker go to the \"workers\" page and select from the available models. Workers are then assigned to access control rules. Your first worker will be the default assignee if one is not selected.\n\nEach worker gets one \"thread\" on our backend, that way you can assign multiple different workers to different ACL rules to prevent your node from getting bogged down, for example, with a large number of public requests hitting the same rule. That worker will take care of those requests while other manage other rules."
        },
        {
          "id": "text-context-1746631501652",
          "name": "ACL Rules Help",
          "type": "text",
          "content": "Access Control List (ACL) Rules define how your node handles incoming search queries — whether they’re from you, a contact, or the public.\nAt their core, every ACL rule has two components:\nAccess Control Statement\nALLOW – respond to this query\nCONTINUE – skip to the next rule\nDECLINE – ignore or block the request\nResponse Statement\nDescribes what to do if access is granted.\n(optional) Highlight Statement\nDescribes how to (or not to) handle highlights created from this rule\nExample:\n\"For Access Control: ALLOW all queries that relate to logistics monitoring, CONTINUE all others so they can be evaluated by other rules\n\nFor Responses: This rule is for logistics-monitoring. Respond by using the search tool to summarize 50 digests with the date/time range requested in the query prepend tags contains logistics-monitoring to all searches to ensure we're using the correct tag\n\nFor Highlights: If anything in the search result involves a lost package or missed delivery create a highlight and include the order number in question\"---\n\n\n🧭 Rule Evaluation Logic\nACL Rules are evaluated in order of priority, filtered by who is making the request:\n👤 You (the node owner):\nAll rules are evaluated — no restrictions.\n🌐 Public (non-contact searches):\nOnly public-facing rules are evaluated, and only if “Allow Public Queries” is enabled in your UI settings.\n🤝 Connections (trusted nodes):\nEvaluated against:\nPublic rules\nAny specific rules they are assigned to via your UI\n✅ Tip: Keep public rules clean, safe, and minimal.\n🤫 Use contact-level rules for deeper, collaborative access.---\n\n\n🧠 Why Use ACL Rules?\n🔐 Privacy by default – nothing is shared without an explicit rule\n🧰 Modular control – tailor responses to different users, contacts, or roles\n🧠 Intelligent automation – pair with Highlights & Directives for powerful downstream effects---\n\n\n🛠️ Managing ACLs\nCreate, edit, and reorder rules via the ACL section in your node UI\nAssign rules to specific Connections\nTest rules by running mock queries in the Search Console---\n\n\n🧩 Advanced Use Cases\nACL rules are the foundation for:\nAutomated Highlight Generation\nScoped Sharing with Other Nodes\nMulti-tenant Data Management\nRole-Based Intelligence Feeds\nControlled Swarm Collaboration---\n\n\n🔐 Default Stance: Cautious\nIf no ACL rule matches a query, your node does nothing.\nThis ensures maximum safety — no accidental leaks, no surprise behaviors.\n\nNote: Each worker gets one thread on the backend, so it's a good practice to configure a separate worker for acl rules that are public to avoid tying up requests from your network."
        },
        {
          "id": "msg-1746631797602",
          "type": "message",
          "sender": "user",
          "content": "It takes my node a long time to respond to searches if I get multiple incoming searches, what could be wrong?"
        }
      ]
    },
    {
      "id": "msg-1746632528823",
      "timestamp": 1746632528823,
      "order": 9,
      "type": "user",
      "content": "How would I set the analysis tool up to make a funny parody chatbot?",
      "isActive": false
    },
    {
      "id": "msg-1746632550109",
      "timestamp": 1746632550109,
      "order": 10,
      "type": "assistant",
      "content": "Setting up the analysis tool to create a funny parody chatbot involves several steps, including assembling the context blocks, controlling the order, activating/deactivating blocks, and running the analysis. Here’s a step-by-step guide to achieve this:\n\n### Step 1: Assemble Your Context Blocks\n\n1. **Raw Text**: Start by adding a context block with the raw text of the parody script. Ensure it’s clear and humorous to get the AI to generate funny responses.\n\n2. **Vector Search Results**: If you have a specific topic or theme for the parody, use the vector search function to find relevant snippets or documents that might inspire or provide material for the parody. Add these as context blocks.\n\n3. **Hot Tip**: Use the search bar to filter results by tags, time, user, or semantic content to ensure you’re getting the most relevant and humorous snippets.\n\n### Step 2: Control the Order of Context\n\n1. **Arrow Icons**: Rearrange the context blocks so that the primary elements of the parody script are at the top. This ensures the AI focuses on the core of the parody first.\n\n2. **Declarative Order**: Frame the analysis with the primary elements of the parody script first, then add supporting details or context blocks that qualify or supplement the primary elements.\n\n### Step 3: Activate / Deactivate / Delete Context\n\n1. **Toggle Blocks On/Off**: Ensure only the necessary context blocks are activated. Turn off any blocks that might distract or lead the AI astray from the intended parody.\n\n2. **Delete Unneeded Blocks**: Remove any unnecessary blocks that don’t contribute to the humor or flow of the parody chatbot.\n\n### Step 4: Import / Export Analyses\n\n1. **Import**: If you have a previous successful parody chatbot setup, import it as a full context block set. This ensures you start with a solid foundation.\n\n2. **Export**: Once you’ve fine-tuned the parody chatbot, export the current analysis as a reusable template. This allows you to share the setup with others or reuse it for future projects.\n\n### Step 5: Run the Analysis On Your Terms\n\n1. **Add vs. Send to Worker**: Use the \"Add\" function to bring new context blocks into your assembly area without sending them to the AI yet. This gives you flexibility to adjust and refine the setup before invoking the AI.\n\n2. **Iterate Freely**: Adjust blocks, try different orders, or swap content before invoking the AI. This enables controlled, reproducible experiments and rock-solid audit trails.\n\n### Step 6: Finalize and Run\n\n1. **Finalize Setup**: Ensure all context blocks are in place, activated, and in the correct order. Make sure the primary elements of the parody script are at the top.\n\n2. **Run the Analysis**: Use the \"Send to Worker\" function to fire off the active context stack to the AI engine for analysis, summarization, comparison, etc.\n\n### Example Scenario\n\nLet’s say you want to create a parody chatbot about cats:\n\n1. **Context Block 1**: Raw text containing the core joke about cats.\n2. **Context Block 2**: Vector search results related to cat jokes.\n3. **Context Block 3**: Raw text containing additional cat-related humor.\n\nEnsure the primary joke is at the top, and the supporting details are below. Deactivate any blocks that might not contribute to the humor or flow of the parody chatbot.\n\nBy following these steps, you can set up the analysis tool to create a funny parody chatbot efficiently and effectively.",
      "isActive": false,
      "model": "qwen",
      "usedContexts": [
        {
          "id": "text-context-1746630115375",
          "name": "Pulse Interactive Documentation",
          "type": "text",
          "content": "You are the interactive documentation helper for \"Pulse\", a peer-to-peer AI platform with a ton of interesting features. A high level overview:\n\n- Quantum Search - used to search your node or other nodes, which will respond based on their ACL rules\n- Connections - Pulse's equivalent of 'friends', nodes you have direct access to\n- ACL Rules - Access control rules dictate how an AI should interact with your data and what nodes are allowed to work with an AI following that set of instructions, each should have a 'for access control' statement, a 'for responses' statement (which may include conducting searches using the vector search tool), and a 'for highlights' statement (even if it's just don't generate highlights)\n- Highlights - created after receiving an incoming quantum search (if the AI is instructed to), these are added to your 'highlights' feed and separated by tag (if requested), these can be used to replace existing social media workflows like posts, threads, etc\n- Directives - general user-provided guidelines that apply to all ai generated highlights for you node\n- Ingestion - Pulse's ingest tool can import data from almost any format as a text 'digest' (photos, text, spreadsheets, videos, audio, etc) digests are made available for basic keyword/tag search as well as imported into the vector search tool for more advanced queries\n- Vector Search - A custom vector database implementation that includes both embedding-model based search and web search, it also has a summarization feature allowing an AI to return a summarized result and a swarm feature where all results are fed through a swarm of AI workers to extract key information. This can be thought of as our alternative to deep research tools. Vector search also has a simple chart generation tool, metadata extracted from digests can be displayed as a chart with a configurable x and y axis.\n- Advanced Analysis tool - a post-chatbot interface with modular context blocks that integrates all features of our vector search pipeline (including swarm and summary) and includes the ability to export the analysis as a simple json file that can be imported and continued or remixed on any other node"
        },
        {
          "id": "text-context-1746632471223",
          "name": "Analysis Tool Help",
          "type": "text",
          "content": "1. Assemble Your Context Blocks\nPulse lets you build your own analysis stack using context blocks. These are curated input panes that can contain:\nRaw text\nPaste in any note, document excerpt, meeting fragment, or thought. Use context blocks to structure your thinking—each block stands alone; together, they form your analysis backbone.\nVector Search Results\nTap into the Pulse database using natural language search. Results appear just like in the vector search sidebar—select any digest or snippet and instantly add it as a context block.\nHot tip: The analysis tool’s search bar is “mini but mighty”—you can filter results by tags, time, user, or semantic content just like in the main search.---\n\n\n2. Control the Order of Context\nArrow Icons (^/v)\nRearrange your context blocks in any sequence. The AI will see the blocks in the order you set—meaning you decide what’s “up front” (primary), and what’s background or supporting detail.\nDeclarative Order = Declarative Output\nThis is more than cosmetic: first blocks frame the analysis, later ones qualify or supplement. Sculpt your context stack for synthesis or argument-by-example, as needed.---\n\n\n3. Activate / Deactivate / Delete Context\nToggle Blocks On/Off\nEach block has an activation switch. Deactivated blocks are ignored by the AI—try turning sections off to focus responses, or quickly test how the AI behaves with/without certain pieces.\nDelete Unneeded Blocks\nRemove distractions or bad leads entirely by deleting a block. Keep your workspace lean, focused, and tailored to the current analytic goal.---\n\n\n4. Import / Export Analyses\nImport:\nDrop in past analyses, saved context assemblies, or team templates as full context block sets. Great for working from canon, group workflows, or starting with a best-practice stack.\nExport:\nCapture your current analysis—including all context blocks, order, and status. Share with colleagues, publish as a reusable template, or archive for cross-case followup.---\n\n\n5. Run the Analysis On Your Terms\n“Add” vs. “Send to Worker”\nAdd brings new context blocks into your assembly area; nothing goes to the AI yet.\nSend to Worker fires off exactly what’s visible and active in your context stack to the AI engine for analysis, summarization, comparison, etc.\nIterate Freely\nYou can adjust blocks, try different orders, or swap content before invoking the AI—enabling controlled, reproducible experiments and rock-solid audit trails.---\n\n\n6. Why It Matters\nThis fine-grained control is what sets Pulse apart:\nNo “chat fog” or accidental memory leaks.\nReproducible, auditable outputs—a paper trail you can iterate, remix, or share.\nViral creativity:\nBuild chatbots, games, research tools, or documentation workflows—then share, remix, and re-export with your team or the world.---"
        },
        {
          "id": "msg-1746632528823",
          "type": "message",
          "sender": "user",
          "content": "How would I set the analysis tool up to make a funny parody chatbot?"
        }
      ]
    },
    {
      "id": "msg-1746632675851",
      "timestamp": 1746632675851,
      "order": 11,
      "type": "user",
      "content": "How do I get help with ACL rules?",
      "isActive": false
    }
  ]
}