diff --git a/devrev_search_custom_pipeline.ipynb b/devrev_search_custom_pipeline.ipynb new file mode 100644 index 0000000..b440c79 --- /dev/null +++ b/devrev_search_custom_pipeline.ipynb @@ -0,0 +1,1106 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DevRev Search Dataset\n", + "\n", + "Loading and exploring the `devrev/search` dataset from Hugging Face.\n", + "\n", + "**Dataset Structure:**\n", + "- `annotated_queries` — Queries paired with annotated (golden) article chunks\n", + "- `knowledge_base` — Article chunks from DevRev's customer-facing support documentation\n", + "- `test_queries` — Held-out queries used for evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install -r requirements.txt\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_dataset\n", + "import pandas as pd\n", + "import voyageai\n", + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "import zvec\n", + "import numpy as np\n", + "from tqdm import tqdm\n", + "import time\n", + "import os\n", + "import json\n", + "import pickle\n", + "from rank_bm25 import BM25Okapi\n", + "from collections import defaultdict\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Load Annotated Queries\n", + "Queries paired with annotated (golden) article chunks for training/validation." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DatasetDict({\n", + " train: Dataset({\n", + " features: ['query_id', 'query', 'retrievals'],\n", + " num_rows: 291\n", + " })\n", + "})\n" + ] + } + ], + "source": [ + "# Load annotated queries\n", + "annotated_queries = load_dataset(\"devrev/search\", \"annotated_queries\")\n", + "print(annotated_queries)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
| \n", + " | query_id | \n", + "query | \n", + "retrievals | \n", + "
|---|---|---|---|
| 0 | \n", + "0ae94217-c6a0-4895-83a2-841a95f01637 | \n", + "create DevRev ticket from Microsoft Teams | \n", + "[{'id': 'ART-4216_KNOWLEDGE_NODE-26', 'text': ... | \n", + "
| 1 | \n", + "d0b209b3-6cea-46d8-bfac-bd0e286ea21b | \n", + "workflow builder auto close ticket after 48 ho... | \n", + "[{'id': 'ART-2012_KNOWLEDGE_NODE-24', 'text': ... | \n", + "
| 2 | \n", + "40c1aa6f-cd21-46ab-8f6f-76fdc267b584 | \n", + "automated reminder to customer ticket will be ... | \n", + "[{'id': 'ART-3068_KNOWLEDGE_NODE-24', 'text': ... | \n", + "
| 3 | \n", + "e47d883f-b712-4f98-bd06-14ade143e3c2 | \n", + "connect Bitbucket account to DevRev account | \n", + "[{'id': 'ART-2030_KNOWLEDGE_NODE-27', 'text': ... | \n", + "
| 4 | \n", + "2e6f9413-15ac-4974-a380-7aa22fc98a61 | \n", + "use of workflows in DevRev | \n", + "[{'id': 'ART-1961_KNOWLEDGE_NODE-28', 'text': ... | \n", + "
| \n", + " | query_id | \n", + "query | \n", + "
|---|---|---|
| 0 | \n", + "a97f93d2-410a-431f-ae9a-1e23ed35d74c | \n", + "end customer organization name not appearing i... | \n", + "
| 1 | \n", + "7dd7e2b4-9349-4535-8007-1d706e0fabff | \n", + "Android SDK session generated with Unknown user | \n", + "
| 2 | \n", + "4bc92187-cdaa-4c20-b189-abd1672e5a71 | \n", + "email reply received on wrong ticket | \n", + "
| 3 | \n", + "4d9878e8-f746-4df5-8bf6-f9444989b385 | \n", + "manage access and privileges in DevRev | \n", + "
| 4 | \n", + "483151ec-aff4-4569-b3df-651f578b61d8 | \n", + "SSO setup SAML IDP metadata connection string ... | \n", + "
| \n", + " | id | \n", + "text | \n", + "title | \n", + "
|---|---|---|---|
| 0 | \n", + "ART-17711_KNOWLEDGE_NODE-0 | \n", + "b'We ran into a case where an AirSync was star... | \n", + "Sync fails when original sync owners loses per... | \n", + "
| 1 | \n", + "ART-17711_KNOWLEDGE_NODE-1 | \n", + "access.\\n\\nOnce Person A was re-added with the... | \n", + "Sync fails when original sync owners loses per... | \n", + "
| 2 | \n", + "ART-17650_KNOWLEDGE_NODE-0 | \n", + "b\"American cybersecurity leader unifies securi... | \n", + "American cybersecurity leader unifies security... | \n", + "
| 3 | \n", + "ART-17650_KNOWLEDGE_NODE-1 | \n", + "DevRev\\n======================================... | \n", + "American cybersecurity leader unifies security... | \n", + "
| 4 | \n", + "ART-17650_KNOWLEDGE_NODE-2 | \n", + "solutions help organisations build and deploy ... | \n", + "American cybersecurity leader unifies security... | \n", + "
\\\\r\\\\n\", \\n 12| \"inReplyToId\": { \\n 13| \"stringValues\": [ \\n 14| \"jksdnfjnsflkdsfkjaabcdefghiuK8BA@mail.gmail.com\" \\n 15| ] \\n 16| }, \\n 17|" }, { - "id": "ART-1953_KNOWLEDGE_NODE-35", - "text": "installed [Auto-reply snap-in](https://docs.devrev.ai/automations/auto-reply).\\n\\n[PreviousUpdates](/docs/product/updates)[NextRoles](/docs/product/roles)\\n\\n#### On this page\\n\\n* [White-label customer email notifications](#whitelabel-customer-email-notifications)\\n* [Reply to the customer on a conversation](#reply-to-the-customer-on-a-conversation)\\n* [Reply to the customer on a ticket](#reply-to-the-customer-on-a-ticket)\\n* [Ticket linked to a", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-2027_KNOWLEDGE_NODE-44", + "title": "Email | Integrate | Snap-ins | DevRev", + "text": "ticket title.\\n\\nSpecifically, threading breaks when the order of words in the subject is changed, when words are replaced, or when words or symbols are inserted in the middle or appended. Threading is maintained if the subject change is limited to the addition of words before :, words between [], words between ##, or common prefixes, such as Re or Fwd.\\n\\nRate limiting\\n-------------\\n\\nTo ensure that your support system is protected from potential spam attacks as well as from issues arising" }, { - "id": "ART-1979_KNOWLEDGE_NODE-47", - "text": "validate the fix with the user and then to *resolved*. If the user wants to cancel the ticket then the stage moves to *canceled*.\\n\\n**Closed**\\n\\n* *Canceled* (C)\\n\\n The ticket is determined to be invalid either by the user or the customer experience engineer. In certain scenarios, a ticket may have been created by accident and may be canceled by the creator. In other scenarios, garbage tickets may be created through automation or because of spam. Automation or the customer experience", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-1953_KNOWLEDGE_NODE-30", + "title": "Customer email notifications | Computer by DevRev | DevRev", + "text": "linked to a conversation\\n-------------------------------\\n\\n* **Trigger**: A ticket is linked to an existing conversation.\\n* **Action**: The system sends out a notification with the linked ticket number.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"test email body\\\\r\\\\n
|\\n| 2 | This is an article with one image. |\\n| 3 |
|\\n| 4 | |\\n| 5 | Turing Answers** and turn on the **Turing Answers** toggle.\\n\\nSuggest-only mode\\n-----------------\\n\\nComputer only suggests an answer to the user query. A support agent can accept or make edits to the answer, then send it to the user.\\n\\nContent-powered mode\\n--------------------\\n\\nComputer",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "title": "Turing AI agent | Computer for Support Teams | DevRev",
+ "text": "[articles](./articles) for more information.\\n\\nOnce you have added your knowledge base, Turing can be switched on in two modes: suggestion or auto-response. You can configure Turing in **Settings > Turing Answers** and turn on the **Turing Answers** toggle.\\n\\nSuggest-only mode\\n-----------------\\n\\nComputer only suggests an answer to the user query. A support agent can accept or make edits to the answer, then send it to the user.\\n\\nContent-powered mode\\n--------------------\\n\\nComputer"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-24",
- "text": "(Beta)](#goaloriented-mode-beta)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Turing AI agent](/docs/product/conversational-bot)\\n\\nComputer for Your Customers and Turing\\n======================================\\n\\nUsing Turing, Computer can be used to deflect user queries in conversation or to suggest articles from your knowledge base for resolving tickets. It will try to answer customer queries based on the articles and QA pairs provided in the",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-12391_KNOWLEDGE_NODE-25",
+ "title": "Conversational workflows | Workflows | Computer by DevRev | DevRev",
+ "text": "customer support conversations with our\\nworkflow engine. You can either build an AI agent handle to handle all or parts\\nof your customer support conversations, or you can also create deterministic\\nbutton-based flows.\\n\\nAI agents in your conversational workflow\\n-----------------------------------------\\n\\n![]()\\n\\nTo enable AI agents for customer support, please contact us through the\\nchat widget.\\n\\n### AI agents for conversations or tickets\\n\\n1. Set the trigger for workflow to start"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-28",
- "text": "Computer either creates a ticket or routes the conversation using the relevant routing rule.\\n\\n![]()\\n\\nGoal-oriented mode (Beta)\\n-------------------------\\n\\nThe goal-oriented agent allows users to create complete workflows triggered by their actions.\\n\\nGoal-oriented mode is currently in beta. Contact our support team for more information.\\n\\n[PreviousCollections](/docs/product/collection)[NextBest practices for documentation that supports AI](/docs/product/writing-bp)\\n\\n#### On this",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-1987_KNOWLEDGE_NODE-27",
+ "title": "Turing AI agent | Computer for Support Teams | DevRev",
+ "text": "automatically replies to the user query before it gets assigned to support. It goes through the knowledge base (articles and QAs), generates an answer, and checks with the user if the answer is useful or not.\\n\\n* If Computer doesn't understand the query, it gives the user an option to rephrase the question and ask again.\\n* If the user marks the answer as useful, Computer asks the user if they have more questions, then resolves the conversation.\\n* If the user marks the answer as not useful,"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-23",
- "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Suggest-only mode](#suggestonly-mode)\\n* [Content-powered mode](#contentpowered-mode)\\n* [Goal-oriented mode",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-1987_KNOWLEDGE_NODE-24",
+ "title": "Turing AI agent | Computer for Support Teams | DevRev",
+ "text": "(Beta)](#goaloriented-mode-beta)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Turing AI agent](/docs/product/conversational-bot)\\n\\nComputer for Your Customers and Turing\\n======================================\\n\\nUsing Turing, Computer can be used to deflect user queries in conversation or to suggest articles from your knowledge base for resolving tickets. It will try to answer customer queries based on the articles and QA pairs provided in the"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-0",
- "text": "b\"Turing AI agent | Computer for Support Teams | DevRev\\n\\n* Computer\\n* Resources\\n* [Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nComputer\\n\\nResources\\n\\n[Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nSearch\\n\\n`CMD`\\xc2\\xa0+\\xc2\\xa0`K`\\n\\n* [Introduction](/docs)\\n* [Computer by DevRev](/docs/intro)\\n\\n + [Core concepts](/docs/product/core)\\n + [Apps](/docs/product/apps)\\n +",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-1987_KNOWLEDGE_NODE-25",
+ "title": "Turing AI agent | Computer for Support Teams | DevRev",
+ "text": "Knowledge base, while keeping a support agent subscribed to conversations. If it cannot answer a certain query or you request it to connect to the team, it will redirect it to the default owner of the conversation.\\n\\nWhen looking for a source to inform its answer, it will prioritize the QA pairs, which are intended to serve as definitive answers to commonly repeated questions.\\n\\n![]()\\n\\nFor Computer to suggest articles, you need to add articles to your DevRev instance. Refer to"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-12",
- "text": "Node](/docs/automations/search-node)\\n - [Sentiment evaluator](/docs/automations/sentiment-evaluator)\\n - [Subtype Migration](/docs/automations/subtype-migration)\\n - [Real-time sentiment evaluator](/docs/automations/realtime-sentiment-evaluator)\\n - [Send customized emails](/docs/automations/send-emails)\\n - [StageFlow automator](/docs/automations/stageflow-automator)\\n - [Smart issue creator](/docs/automations/smart-issue-creator)\\n - [Set user preference for",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-1987_KNOWLEDGE_NODE-28",
+ "title": "Turing AI agent | Computer for Support Teams | DevRev",
+ "text": "Computer either creates a ticket or routes the conversation using the relevant routing rule.\\n\\n![]()\\n\\nGoal-oriented mode (Beta)\\n-------------------------\\n\\nThe goal-oriented agent allows users to create complete workflows triggered by their actions.\\n\\nGoal-oriented mode is currently in beta. Contact our support team for more information.\\n\\n[PreviousCollections](/docs/product/collection)[NextBest practices for documentation that supports AI](/docs/product/writing-bp)\\n\\n#### On this"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-29",
- "text": "page\\n\\n* [Suggest-only mode](#suggestonly-mode)\\n* [Content-powered mode](#contentpowered-mode)\\n* [Goal-oriented mode (Beta)](#goaloriented-mode-beta)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer works](/how-computer-works)\\n\\nApps\\n\\n* [For Support Teams](/for-support-teams)\\n* [For Builders](/for-builders)\\n* [For Customers](/for-customers)\\n* [For User",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-1987_KNOWLEDGE_NODE-23",
+ "title": "Turing AI agent | Computer for Support Teams | DevRev",
+ "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Suggest-only mode](#suggestonly-mode)\\n* [Content-powered mode](#contentpowered-mode)\\n* [Goal-oriented mode"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-25",
- "text": "Knowledge base, while keeping a support agent subscribed to conversations. If it cannot answer a certain query or you request it to connect to the team, it will redirect it to the default owner of the conversation.\\n\\nWhen looking for a source to inform its answer, it will prioritize the QA pairs, which are intended to serve as definitive answers to commonly repeated questions.\\n\\n![]()\\n\\nFor Computer to suggest articles, you need to add articles to your DevRev instance. Refer to",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-1987_KNOWLEDGE_NODE-29",
+ "title": "Turing AI agent | Computer for Support Teams | DevRev",
+ "text": "page\\n\\n* [Suggest-only mode](#suggestonly-mode)\\n* [Content-powered mode](#contentpowered-mode)\\n* [Goal-oriented mode (Beta)](#goaloriented-mode-beta)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer works](/how-computer-works)\\n\\nApps\\n\\n* [For Support Teams](/for-support-teams)\\n* [For Builders](/for-builders)\\n* [For Customers](/for-customers)\\n* [For User"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-31",
- "text": "Program](/partners)\\n* [Startups Program](/startups)\\n* [Gr.ai.ce](/graice)\\n\\n* [Security](https://security.devrev.ai/)\\n* [SLA](/legal/sla)\\n* [DPA](/legal/dpa)\\n* [Subprocessors](/security/sub-processors)\\n* [Cookie Policy](/legal/cookie-policy)\\n* [Privacy Policy](/legal/privacy-policy)\\n* [Terms of Service](/legal/terms-of-service)\\n\\n[System Status](/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n![]()\"",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-3205_KNOWLEDGE_NODE-6",
+ "title": "Set user preference for group | Automate | Snap-ins | DevRev",
+ "text": "+ [Turing AI agent](/docs/product/conversational-bot)\\n\\n - [Best practices for documentation that supports AI](/docs/product/writing-bp)\\n + [Commands](/docs/product/commands)\\n + [Service-level agreement](/docs/product/sla)\\n + [Operational-level agreement](/docs/product/ola)\\n + [Support snap-ins](/docs/product/snapins-support)\\n* [Computer for Builders](/docs/product/build)\\n\\n + [Issues](/docs/product/issues)\\n + [Now, Next, Later](/docs/product/nnl)\\n + [Sprint"
},
{
- "id": "ART-1987_KNOWLEDGE_NODE-30",
- "text": "Insights](/for-user-insights)\\n* [Marketplace](https://marketplace.devrev.ai/)\\n\\nResources\\n\\n* [Blog](/blog)\\n* [Our Customers](/case-study)\\n* [Snap-In Extensions](https://developer.devrev.ai/public/snapin-development/concepts)\\n* [DevRevU training](/docs/DevRevU)\\n* [Documentation](https://docs.devrev.ai/)\\n* [API References](https://docs.devrev.ai/api/)\\n\\nCompany\\n\\n* [About](/about)\\n* [Events](/events)\\n* [Careers](/careers)\\n* [What Why How](/what-why-how)\\n\\nInitiatives\\n\\n* [Partner",
- "title": "Turing AI agent | Computer for Support Teams | DevRev"
+ "id": "ART-13023_KNOWLEDGE_NODE-11",
+ "title": "Set-Future Org Schedules \u2014 DevRev | Docs",
+ "text": "Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational AI?](https://devrev.ai/what-is-conversational-ai)\\n\\n[](https://devrev.ai)\\n\\n[](https://www.linkedin.com/company/devrev)[](https://medium.com/devrev)[](https://twitter.com/devrev)\\n\\n[System"
}
]
},
@@ -564,54 +564,54 @@
"query": "how to make MIS report with available data on DevRev",
"retrievals": [
{
- "id": "ART-1963_KNOWLEDGE_NODE-15",
- "text": "[Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment sync](/docs/automations/ticket-linked-issues-comment-sync)\\n - [Slack message agent](/docs/automations/slack-message-agent)\\n",
- "title": "Accessing DevRev | Computer by DevRev | DevRev"
+ "id": "ART-1952_KNOWLEDGE_NODE-27",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "bring in data from other sources as well.\\n\\nDiscover\\n--------\\n\\nTo get started, click the \\xe2\\x9a\\xa1 button on a vista. The following options are available:\\n\\n* Create New Report\\n* View Past Reports: Created by me or shared with me\\n\\nYou can also search for reports and find more on the **Explore** page.\\n\\n![]()\\n\\n### Create\\n\\nYou can create your own reports by adding a name, description, and creating widgets. Here, you'll also be able to preview your report and make any necessary"
},
{
- "id": "ART-1963_KNOWLEDGE_NODE-4",
- "text": "insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n + [Conversations](/docs/product/conversation)\\n\\n - [Conversation to",
- "title": "Accessing DevRev | Computer by DevRev | DevRev"
+ "id": "ART-1952_KNOWLEDGE_NODE-35",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "well.\\n\\n### Save\\n\\nAdd measures, dimensions, and filters. Experiment with arranging them, preview your changes, and remember to **Save** your widget. This ensures the widget appears on the dashboard.\\n\\n### Custom fields\\n\\nYou can also create reports based on custom fields by creating them via Object Customization. You\\xe2\\x80\\x99ll be able to utilize these custom fields in report generation, as they can be used in measures, dimensions, and filters.\\n\\n### Cross-entity"
},
{
- "id": "ART-2046_KNOWLEDGE_NODE-15",
- "text": "[Operational SLA Metrics](/docs/automations/operational-sla-metrics)\\n - [Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment",
- "title": "DevRev for Jira app | Jira Software AirSync | AirSync | Snap-ins | DevRev"
+ "id": "ART-1952_KNOWLEDGE_NODE-29",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "together to form a dashboard.\\n\\n**Data source**\\n\\nA data source specifies the backing data that powers the widget. You don\\xe2\\x80\\x99t need to worry about the data source, as it\\xe2\\x80\\x99s all auto-populated.\\n\\n**Measures & Dimensions:**\\n\\nMeasures & Dimensions provide additional details about the required columns from the base SQL-constructed view.\\n\\n* Each column that needs to be part of the visualization in the chart must be specified as either a measure or a dimension.\\n* Columns"
},
{
- "id": "ART-15792_KNOWLEDGE_NODE-9",
- "text": "information sharing and reporting by converging support, product and user data in one shared view.\\n\\nAutomated knowledge base management: AI agents remember successful resolutions and instantly apply them to future issues, reducing customer wait time.\\n\\nSource: [DevRev Support](https://devrev.ai/support)BuildWhat is DevRev Build?\\n\\nDevRev Build is a full-featured product development platform built for modern businesses and trusted by leading organizations\\n\\nKey Features:\\n\\nAuto-generate",
- "title": "DevRev Products and Agents"
+ "id": "ART-1952_KNOWLEDGE_NODE-28",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "adjustments before finalizing it.\\n\\nWidget builder\\n--------------\\n\\nWith the widget builder, you can create custom widgets for your vista reports. You can define the widget's data source, construct measures, dimensions, and pick a suitable visualization. The widget builder offers a range of tools and options to help you create the ideal widget for your report.\\n\\nWidgets represent the building blocks of DevRev Dashboards. They are the leaf-level data visualizations which are composed"
},
{
- "id": "ART-1952_KNOWLEDGE_NODE-27",
- "text": "bring in data from other sources as well.\\n\\nDiscover\\n--------\\n\\nTo get started, click the \\xe2\\x9a\\xa1 button on a vista. The following options are available:\\n\\n* Create New Report\\n* View Past Reports: Created by me or shared with me\\n\\nYou can also search for reports and find more on the **Explore** page.\\n\\n![]()\\n\\n### Create\\n\\nYou can create your own reports by adding a name, description, and creating widgets. Here, you'll also be able to preview your report and make any necessary",
- "title": "Vista Reports | Vistas | Computer by DevRev | DevRev"
+ "id": "ART-1652_KNOWLEDGE_NODE-269",
+ "title": "Export \u2014 DevRev | Docs",
+ "text": "endpoint for DevRev metrics data from clients.\\nRequest.\\n\\nThis endpoint expects an object.\\nmetrics list of objects Required\\nMetrics data received from Dev orgs.\\nShow 5 properties\\nAPI Reference product-usage Uoms Count.\\n\\nGET https:// api.devrev.ai / uoms.count\\nCounts the number of Unit of Measurements based on the given filters.\\nQuery parameters.\\n\\naggregation_types enum Optional\\nList of aggregation types for filtering list of UOMs.\\nShow 8 enum values\\nids string Optional\\nList of"
},
{
- "id": "ART-3208_KNOWLEDGE_NODE-31",
- "text": "Select the import you want to view.\\n3. Select the context menu (\\xe2\\x8b\\xae) > **View Report**.\\n\\n### Periodic sync\\n\\nAfter successfully importing to DevRev, you have the option to enable a periodic sync. This allows for automatic synchronization with DevRev on a regular basis. By default, the sync occurs once an hour.\\n\\nTo configure periodic sync, follow these steps:\\n\\n1. Go to **Settings** > **Integrations** > **AirSyncs**.\\n2. Locate the previously imported project.\\n3. Select the",
- "title": "DevRev AirSync | AirSync | Snap-ins | DevRev"
+ "id": "ART-1952_KNOWLEDGE_NODE-36",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "joins\\n\\nDevRev\\xe2\\x80\\x99s data model is a reflection of Computer's powerful Memory. Leveraging the data model is key to getting answers to key questions and obtaining strategic insights. Here\\xe2\\x80\\x99s the data model you\\xe2\\x80\\x99d need for constructing widgets and answer questions around a vista. For example, ticket-based vista.\\n\\nYou don\\xe2\\x80\\x99t have to worry about these join paths, as DevRev identifies the entity relationships and populate them for you. You just need to search"
},
{
- "id": "ART-2046_KNOWLEDGE_NODE-4",
- "text": "analytics](/docs/product/support-analytics)\\n\\n - [Conversation insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n +",
- "title": "DevRev for Jira app | Jira Software AirSync | AirSync | Snap-ins | DevRev"
+ "id": "ART-1952_KNOWLEDGE_NODE-24",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "generator](#autovisualization-generator)\\n* [Preview](#preview)\\n* [Filters](#filters)\\n* [Save](#save)\\n* [Custom fields](#custom-fields)\\n* [Cross-entity joins](#crossentity-joins)\\n* [Edit](#edit)\\n* [Share](#share)\\n* [Authorization (MFZ)](#authorization-mfz)\\n\\n1. [Documentation](/docs)\\n3. [Computer by DevRev](/docs/intro)\\n[Vistas](/docs/product/vistas)\\n[Vista Reports](/docs/product/vista-reports)\\n\\nVista Reports\\n=============\\n\\nReal-time reporting represents a paradigm shift in the"
},
{
- "id": "ART-738_KNOWLEDGE_NODE-8",
- "text": "purchase a product, you consider the need, cost, runway, future needs, etc.\\n\\nNow, say you want to prioritize which work you should focus on and deliver in the next sprint. You\\xe2\\x80\\x99d need information about other items in-flight, staff workload, customer impact of items, dependent opportunities, and a lot of additional data.\\n\\nWith DevRev, we have the full context and can use that to feed into the models. With the other point systems, you\\xe2\\x80\\x99d need to consolidate somewhere",
- "title": "DevRev | Built for AI (not by AI... yet)"
+ "id": "ART-1952_KNOWLEDGE_NODE-33",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "can see a real-time representation of the data or elements you have chosen. This feature provides you with an opportunity to review and make any necessary adjustments to ensure everything is perfectly set up. It serves as a preventive measure to help avoid mistakes or misunderstandings, ultimately saving you time and effort in the long run. Utilize the **Preview** button effectively to maintain the quality and accuracy of your reports.\\n\\n### Filters\\n\\n* **Vista Filters**: Most or all of the"
},
{
- "id": "ART-15687_KNOWLEDGE_NODE-26",
- "text": "For example, to find opportunities data, search for opportunity and select the dim\\\\_opportunity dataset.\\n4. Write a SQL query and run it.\\n\\nTesting your query in Notebook ensures you have the correct dataset for your visualization.\\n\\n* **Access the widget builder**:\\n\\nGo to the widget builder by modifying your DevRev workspace URL. For example, your\\\\_workspace\\\\_slug/widget-preview.\\nThe builder provides a boilerplate code that you can modify.\\n\\n![]()\\n\\n* **Define your dataset (Oasis",
- "title": "Dashboards | Computer by DevRev | DevRev"
+ "id": "ART-13189_KNOWLEDGE_NODE-30",
+ "title": "March and April 2025 | Changelog | DevRev",
+ "text": "underlying object data seamlessly. This enhancement simplifies data interaction, making insights more accessible and customizable within Vista reports.\\n\\n **Features**:\\n\\n + Enables a default tabular view for widgets in Vista reports, carrying over the base query without the need for additional dashboard setup.\\n + Users can view underlying data in the drill-through view and apply additional filtering within the same view.\\n\\n **What's improved**:\\n\\n + Users' ability to analyze the"
},
{
- "id": "ART-15792_KNOWLEDGE_NODE-11",
- "text": "to maintain visibility of resource allocation even as you scale\\n\\nProduct 360 Analytics: Enhance customer experience, product velocity, and developer productivity with robust Product 360 analytics\\n\\nCustomer-focused Development: Make development customer-focused with sprints that adapt to customer requirements\\n\\nSource: [DevRev Build](https://devrev.ai/build)User ObservabilityWhat is DevRev User Observability?\\n\\nDevRev User Observability helps you gain a clear window into your user journeys",
- "title": "DevRev Products and Agents"
+ "id": "ART-1952_KNOWLEDGE_NODE-23",
+ "title": "Vista Reports | Vistas | Computer by DevRev | DevRev",
+ "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Discover](#discover)\\n* [Create](#create)\\n* [Widget builder](#widget-builder)\\n* [Auto-visualization"
}
]
},
@@ -621,53 +621,53 @@
"retrievals": [
{
"id": "ART-1277_KNOWLEDGE_NODE-6",
- "text": "objects of type\\n **Issue** or **Ticket** are created in DevRev.\\n2. **Text command**: This manual trigger is achieved by utilizing a slash\\n command in the **Discussions** tab of the objects that support this feature.\\n\\n#### Action\\n\\nTo implement the desired action of adding a comment to the object timeline, it\\nis essential to identify the appropriate [API]\\nfor this task. In this scenario, the `/timeline-entries.create` API is the\\ndesignated choice for executing the action of adding a",
- "title": "Snap-in triggered by a DevRev event | DevRev | Docs"
+ "title": "Snap-in triggered by a DevRev event | DevRev | Docs",
+ "text": "objects of type\\n **Issue** or **Ticket** are created in DevRev.\\n2. **Text command**: This manual trigger is achieved by utilizing a slash\\n command in the **Discussions** tab of the objects that support this feature.\\n\\n#### Action\\n\\nTo implement the desired action of adding a comment to the object timeline, it\\nis essential to identify the appropriate [API]\\nfor this task. In this scenario, the `/timeline-entries.create` API is the\\ndesignated choice for executing the action of adding a"
},
{
- "id": "ART-1265_KNOWLEDGE_NODE-9",
- "text": "timeline of an issue/ticket using the `timeline-entries.create` API with different visibilities. You can now use this to create comments on timeline using automation or manually based on your use case.\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/guides/webhooks)[#### Object customization\\n\\nNext](/guides/object-customization)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)\\n\\n![]()'",
- "title": "Restricted messages on a timeline | DevRev | Docs"
+ "id": "ART-1485_KNOWLEDGE_NODE-10",
+ "title": "Snap-in triggered by a DevRev event \u2014 DevRev | Docs",
+ "text": "invoke the snap-in, two distinct triggers are implemented:\\n\\n 1. **Creation of work item** : This trigger is activated when new objects of type **Issue** or **Ticket** are created in DevRev.\\n\\n 2. **Text command** : This manual trigger is achieved by utilizing a slash command in the **Discussions** tab of the objects that support this feature.\\n\\n#### Action\\n\\nTo implement the desired action of adding a comment to the object timeline, it is essential to identify the appropriate [API] for"
},
{
- "id": "ART-1425_KNOWLEDGE_NODE-2",
- "text": "id=don:core:dvrv-us-1:devo/example:ticket/123:comment/comment-id\\n[/code] \\n \\nTry it\\n\\n200getExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"timeline_entry\": { \\n 3| \"created_by\": { \\n 4| \"display_id\": \"foo\", \\n 5| \"id\": \"foo\", \\n 6| \"display_name\": \"foo\", \\n 7| \"display_picture\": { \\n 8| \"display_id\": \"foo\", \\n 9| \"id\": \"foo\", \\n 10| \"file\": { \\n 11| \"type\": \"foo\", \\n 12|",
- "title": "Get Timeline Entry \u2014 DevRev | Docs"
+ "id": "ART-1485_KNOWLEDGE_NODE-33",
+ "title": "Snap-in triggered by a DevRev event \u2014 DevRev | Docs",
+ "text": "19| const body = { \\n 20| object: workCreated, \\n 21| type: \"timeline_comment\", \\n 22| body: bodyComment, \\n 23| }; \\n 24| \\n 25| // Sending the request to create the timeline entry comment \\n 26| const response = await devrevSDK.timelineEntriesCreate(body as any); \\n 27| \\n 28| // Returning the response from the DevRev SDK \\n 29| return response; \\n 30| }\\n[/code] \\n"
},
{
- "id": "ART-1471_KNOWLEDGE_NODE-9",
- "text": "}\\n[/code] \\n \\nYou can check the object to which you sent a message in the UI. It\\xe2\\x80\\x99s visible to the creator and the users you added in `private_to`.\\n\\n## Summary\\n\\nIn this tutorial, you learned how to post a comment on the timeline of an issue/ticket using the `timeline-entries.create` API with different visibilities. You can now use this to create comments on timeline using automation or manually based on your use case.\\n\\nWas this page helpful?YesNo\\n\\n[SDKsUp",
- "title": "Restricted messages on a timeline \u2014 DevRev | Docs"
+ "id": "ART-1485_KNOWLEDGE_NODE-29",
+ "title": "Snap-in triggered by a DevRev event \u2014 DevRev | Docs",
+ "text": "38| object: workCreated.id, \\n 39| type: \"timeline_comment\", \\n 40| body: bodyComment, \\n 41| }; \\n 42| const response = await devrevSDK.timelineEntriesCreate(body as any); \\n 43| \\n 44| // Returning the response from the DevRev SDK \\n 45| return response; \\n 46| }\\n[/code] \\n \\nThis function illustrates the process of handling events, extracting necessary information from the payload, and utilizing the DevRev SDK to create a timeline"
},
{
- "id": "ART-4184_KNOWLEDGE_NODE-28",
- "text": "relationships.\\n\\n![]()\\n\\n* Comments synchronize only between directly linked items.\\n* Editing a comment after synchronization does not update the synchronized copies.\\n* Ticket threads are not fully supported yet. DevRev supports only one level of nesting; threaded comments in tickets are supported as flat items.\\n\\n[PreviousTicket approval workflow](/docs/automations/ticket-approval-workflow)[NextSlack message agent](/docs/automations/slack-message-agent)\\n\\n#### On this page\\n\\n* [Key",
- "title": "Ticket linked issues comment sync | Automate | Snap-ins | DevRev"
+ "id": "ART-1277_KNOWLEDGE_NODE-23",
+ "title": "Snap-in triggered by a DevRev event | DevRev | Docs",
+ "text": "= event.input_data.global_values.input_field_array; |\\n| 28 | |\\n| 29 | // Appending extra comments to the body if requested |\\n| 30 | if (extraComment) { |\\n| 31 | for (let comment of extraComments) { |\\n| 32 | bodyComment = bodyComment + \" \" + comment; |\\n| 33 | } |\\n| 34 | } |\\n| 35 | |\\n| 36 | // Creating the timeline entry comment using DevRev SDK |\\n| 37 | const body = { |\\n| 38 | object: workCreated.id, |\\n| 39 | type: \"timeline_comment\", |\\n| 40 | body: bodyComment, |\\n| 41 | }; |\\n|"
},
{
- "id": "ART-1227_KNOWLEDGE_NODE-6",
- "text": "|\\n```\\n\\nCreates a new entry on an object\\'s timeline.\\n\\n### Headers\\n\\nAuthorizationstringRequired\\n\\nBearer authentication of the form `Bearer
|\\n| 12 | user: |\\n| 13 | - name:
|\\n| 17 | |\\n| 18 | - name: