# Welcome

`Analyst` is an AI-powered Crypto Research co-pilot that helps investors make insights-driven decisions with real-time curated news, market updates, project summaries and in-depth reports, all in one place. Automate your web3 research and create your own analysis with the help of our agent, reducing your research time by orders of magnitude.

Analyst gives an increased depth of answer, high research integrity through relevant data integrations, and multiple features for user personalization.


# Intro

Let AI Do Your Own Research

### Analyst

`Analyst` is an AI-powered Crypto Research co-pilot that helps investors make insights-driven decisions with real-time curated news, market updates, project summaries and in-depth report, all in one place.&#x20;

`Analyst` helps investors 'do your own research' with 10x less time and effort.&#x20;

### Exponent

We are creators of the world's first Analyst Agent to help Investors, Researchers and the crypto curious stay on top of an evolving landscape. We're a team of crypto natives operating at the intersection of Crypto and AI.&#x20;


# Onboarding

<figure><img src="https://3490645212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbrjBvaasMqOtwBWEGNor%2Fuploads%2FLky1j5d8TTx4162cEhYW%2FScreenshot%202567-08-19%20at%2010.23.12.png?alt=media&amp;token=ef5c42fe-8436-4de4-a4dc-d6f2d9266d7d" alt=""><figcaption><p>Sign Up</p></figcaption></figure>

<figure><img src="https://3490645212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbrjBvaasMqOtwBWEGNor%2Fuploads%2FRZWZuvPU3rrwDhIeenRp%2FScreenshot%202567-08-19%20at%2010.23.46.png?alt=media&amp;token=afa24516-1d8c-4d89-b56a-4f98495e7181" alt="" width="375"><figcaption><p>Sign In</p></figcaption></figure>

Quickly create an account on [exponent.cx](https://exponent.cx/) with the standard account sign-up and authorization flow. Upon sign-in, navigate to the chat icon to have`Analyst` help research crypto projects.

<figure><img src="https://3490645212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbrjBvaasMqOtwBWEGNor%2Fuploads%2Fw5svHoDEfuIG0KRgwzJm%2FScreenshot%202567-08-19%20at%2011.13.34.png?alt=media&amp;token=9fd5fab0-0de1-46d5-bee8-40a988fa88f0" alt=""><figcaption><p>Get your questions answered</p></figcaption></figure>

{% hint style="info" %}
Want to learn about doing your own research with A.I? Head to the **Advanced Features** section to learn more.
{% endhint %}


# Key Features

## Chat / Prompt

Once a **New Chat** is started, `Analyst` takes user questions and turns them into structure analysis, providing insights into crypto projects, protocols, tokens or even verticals. Once prompted, `Analyst` provides a **plan** of analysi&#x73;**.**&#x20;

<figure><img src="https://3490645212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbrjBvaasMqOtwBWEGNor%2Fuploads%2Fc8TEjsAsBPuqP5SY4Kg4%2FScreenshot%202567-08-19%20at%2011.43.06.png?alt=media&amp;token=3547e49c-8896-492b-b547-07beca3468fd" alt=""><figcaption><p>The analysis plan can be edited until the user is ready for implementation.</p></figcaption></figure>

Once the plan is confirmed, `Analyst` starts working, users can view progress in the **Analyst Workspace**. Details of the analysis, including relevant **links**, are stored here for reference.&#x20;

<figure><img src="https://3490645212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbrjBvaasMqOtwBWEGNor%2Fuploads%2FOthShfYm4zpQT9qNYlSu%2FScreenshot%202567-08-19%20at%2011.39.22.png?alt=media&amp;token=d5422165-fea0-480f-acbe-e18ab910a4d4" alt=""><figcaption><p>Once a new chat session starts, users interact with Analyst in the middle panel, while the work is carried out in the Workspace, on the right. </p></figcaption></figure>

When `Analyst` is done analyzing, a summary is provided in the middle panel.&#x20;

## Edit

After `Analyst` is done summarizing it's analysis, users will have the option of **posting** the analysis for public (or private) consumption or for further **editing.** If the user selects **edit,** a pop up will appear prompting the user to edit the provided analysis. The user can provide a range of edits from asking `Analyst` to re-run parts of the analysis, take out certain parts, or add a new an analysis missing from the previous output.&#x20;

<figure><img src="https://3490645212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbrjBvaasMqOtwBWEGNor%2Fuploads%2FbCRwWnDm4DJWzQ422TXj%2FScreenshot%202567-08-19%20at%2012.02.20.png?alt=media&amp;token=14769901-4804-425f-8ec4-c591367ba746" alt="" width="440"><figcaption></figcaption></figure>

## Post

Once users are satisfied with `Analysts` ' work, they can either share the research as a **public** or **private** post. Public posts will appear on the front page, visible for everyone to read. Private posts will only be visible to the user.&#x20;

<figure><img src="https://3490645212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbrjBvaasMqOtwBWEGNor%2Fuploads%2FlEwfRca2im25xPw4jAoo%2FScreenshot%202567-08-16%20at%2010.08.51.png?alt=media&amp;token=ff0d072b-23a3-464b-a68a-ce27d9dc7883" alt=""><figcaption></figcaption></figure>

## Bookmark

Users can save research articles posted by other people. The bookmark icon will take users to their saved articles.&#x20;


# Use Cases

## Project Description

* **Project Overviews**: Users can request a comprehensive overview of a crypto project. This includes key details like the project's history, its development team, the problems it aims to solve, and its future roadmap. It’s beneficial for users looking to get a more in-depth understanding of a project before deciding whether to invest or research further.
* **Project Comparisons**: Users can ask the `Analyst`  to compare two or more crypto projects. The `Analyst` can highlight the similarities and differences between the projects in terms of technology, goals, team, market performance, and other relevant factors, depending on the user's prompt. This is helpful for users trying to decide between multiple projects or wanting to understand how projects stack up against each other.
* **Supported Tokens**: Users can inquire about the tokens or projects that `Analyst` supports.&#x20;

## Gather News / Research on the Web

* **Context about project campaign**: Users can ask the `Analyst`  to gather the latest news and research articles from across the web related to a specific crypto project or topic. Users can also request context and background information on a specific campaign or event related to a crypto project to get details on why the campaign is happening, its goals, and its potential impact on the project. `Analyst` will provide a summary of the most recent and relevant information, helping users stay informed about current events and trends, as well as and how they might affect their investments or research.

## Sentiment on X

* **Context for CT drama**: Users can ask the `Analyst` to analyze the sentiment around a particular crypto project or topic on X (formerly Twitter). `Analyst` will provide insights into whether the general sentiment is positive, negative, or neutral, helping users gauge public opinion and social media trends. This includes context behind recent dramas or controversies, including background information on the events, key players involved, and the potential implications for the broader  community. This is useful for users who want to stay informed about the social dynamics within the crypto space.

## Soon: Qualitative, Off-Chain data

* **White papers**: Users can ask the `Analyst` to provide or summarize the white papers of various crypto projects to understand a project’s technology, goals, business plan, among other things. This feature is valuable for users who want to understand the technical and strategic foundation of a project before making decisions.

* **Technical Documents**: Users can request access to or summaries of technical documents related to a crypto project to understand in-depth technical information about how the project operates, its architecture, and the technology it uses. This is particularly useful for users who are technically inclined or want to dive deeper into the technical aspects of a project.


# Advanced Features

## Presets

Users can use Presets to set up specific prompts that `Analyst`  will follow-up on a regular basis. These Presets help users automatically gather, analyze, and receive information about their selected topics without having to ask each time. This is useful for users who want to stay updated on certain projects or market trends consistently.

* **Daily / Weekly Debriefs**: Users can set up prompts to provide daily or weekly summaries of the most important events, trends, and updates. These debriefs help users stay informed about the latest developments without needing to check multiple sources. It’s a convenient way for users to get a quick overview of what’s happening in the market.
* **Monitoring unfolding situations**: Users can ask the `Analyst` to monitor ongoing situations or  significant events in the crypto space. `Analyst` will track updates and provide regular reports, helping users stay on top of situations that might affect their investments or interests.
* **Portfolio company monitoring**: Users can use  `Analyst`  to monitor specific companies or projects within their investment portfolio. `Analyst` can provide updated summaries on these companies, reporting on their progress, news, and any changes that might impact the user’s investments. This feature helps users manage their portfolio more effectively by staying informed about key developments.

## Feeding external URLs and Links

* **Summarize multiple links**:  Users can provide external URLs and links to  `Analyst`, such as a project's LinkTree, and ask for a summary. `Analyst` will analyze the content from these links and provide a concise summary, helping users quickly understand the key points without needing to go through each link manually.

## Analysis Deletion

* Users can delete previous analyses generated by  `Analyst`. This feature allows users to clean up their workspace and remove outdated or irrelevant information. It helps keep their research organized and focused on current data.

## Follow-up Conversation&#x20;

* Users can continue the conversation with  `Analyst` by asking follow-up questions related to a previous analysis. This feature helps users dive deeper into topics of interest, allowing for more detailed exploration without needing to start from scratch each time.

## Edit

* Users can edit analyses provided by `Analyst` by adjusting them to refine or change the focus of the analysis. This feature allows users to customize their research further, ensuring `Analyst` provides the most relevant and accurate information based on the user’s needs.


# Prompting Guide

Best practices for crafting useful prompts.

**General guidelines for crafting your next prompt**:

* Be specific about the information you would like (e.g., "Make sure to look up latest news.")
* Do not assume the `Analyst` is all knowing.
* If you have an idea of what data sources `Analyst` include that in your prompt (e.g., "Look up twitter for ..." or "Use web search to look for...")
* If you have contextual knowledge, provide this input to the agent.

**Treat your session with `Analyst` as an ongoing conversation. You can start off simple and progressively add more context as your own knowledge builds up**:

* Start off simple: "Tell me about Berachain."
* Later, add context: "I'd like recent updates and announcements from Berachain and why it is a compelling alt-L1, specifically, highlight it's Proof-of-Liquidity mechanism."

**Tell the agent how you would like the analysis output (report) to be structured**:&#x20;

* &#x20;Summarize the content into sections highlighting Berachain's Proof-of-Liquidity, tokenomics for  $BERA, $BGT, $HONEY, the governance structure and an overview of ecosystem activity."

**If you have a specific URL you would like summarized, provide the URL**:

* "Visit this URL: <https://docs.berachain.com/> and summarize the content."

**Have a specific audience in mind when crafting your prompt**:

* (someone looking to invest in $BERA): "Give me an overview of $BERA tokenomics, total supply, circulating supply, fully diluted valuations, and potential unlocks I should be aware of."
* (someone curious about Berachain ecosystem): "Give me an overview of the Berachain ecosystem, provide details on developer adoption, business development activities and how they've attracted builders."

**If there's a specific way to spell something, assume the agent doesn't know and provide the correct spelling**:

* "It is Berachain, not Bearchain."

**Use specific date ranges (when applicable)**:

* "Make sure you provide news sources that have been published after September 18, 2024)"

<br>


# Trouble Shooting

**I can't login to my account.**

* In the "Sign-In" pop-up, click "Forgot Password?" and enter your e-mail for a temporary password.

**I can't locate a previously saved article.**

* Click on "Bookmarks" tab on the left panel to see all previously saved articles&#x20;
* Go to front page to identify specific project headers (e.g., "Ethereum", "Aave") that reflect corresponding use of hash tags. Click on a heading and try locating your article.&#x20;
* Go to front page, scroll down to "Uncategorized" and try locating your article.&#x20;
* Return to the session in which you saved an article. Locate your analysis and re-click "Post". Submit a Public post to re-create your article.&#x20;

**`Analyst` is giving me an error.**

* Copy and paste the previous prompt.
* Adjust prompt with specific key words, added context and/or date ranges (if applicable)
* Open a new session and re-try previous prompt.

**`Analyst` is hallucinating.**&#x20;

* Using hashtag (e.g., # aave) to reference a project (if available)&#x20;
* Re-try your prompt with specific key words, added context and/or date ranges (if applicable)
* Click "edit" button to correct the `Analyst`<br>

**`Analyst` is stalling.**&#x20;

* If `Analyst` stalls after user enters a prompt, copy and paste the same prompt and enter it again.&#x20;
* If `Analyst` continues to sall, copy and paste the same prompt and enter into a **new session.**


# FAQ

**How do I sign-up?**

* Go to [Exponent.cx](https://exponent.cx/) and click **Sign In** at the top right corner.&#x20;

**What language models does `Analyst` use?**&#x20;

* We use models from Anthropic and OpenAI

**Is your model open source?**

* [Anthropic](https://docs.anthropic.com/en/docs/about-claude/models) and [OpenAI](https://platform.openai.com/docs/models) models are open sourced.&#x20;

**Does the model hallucinate?**&#x20;

* As with all large language models, the ones powering `Analyst` can hallucinate from time to time. Please see the [**Trouble Shooting**](https://docs.exponent.ai/getting-started/trouble-shooting) page for tips on handling hallucinations.&#x20;

**How do I know my data is safe?**&#x20;

* **We do not store your data.** Research articles you produce using `Analyst` can either be *shared* Publicly or saved Privately for later reading. Please see [**Key Features**](https://docs.exponent.ai/getting-started/key-features) on how to share articles Publicly and Privately. `Analyst` leverages open source models, we encourage you to familiarize yourself with [Anthropic](https://support.anthropic.com/en/articles/8325621-i-would-like-to-input-sensitive-data-into-free-claude-ai-or-claude-pro-who-can-view-my-conversations) and [OpenAI](https://openai.com/consumer-privacy/) policies around sensitive data.&#x20;

**What kind of questions can I ask `Analyst`?**

* You can ask `Analyst` anything about a crypto project including vision, roadmap, recent news, current events as well as X.com sentiment.&#x20;
* You can ask `Analyst` about events that have happened in the past hour, but this will require specific prompting and guidance (see [**Trouble Shooting**](https://docs.exponent.ai/getting-started/trouble-shooting) for help).
* You can ask `Analyst` about current market cap, fully diluted valuations and total volume.
* You can ask `Analyst` about a project's white papers and/or technical documents \*&#x20;
* note \* white papers and technical documents are only available for white listed projects whose links have been validated for quality control.&#x20;

**Can I ask `Analyst` about memecoins?**&#x20;

* You can ask `Analyst` about memecoins, but results may vary depending on how popular the memecoin is.&#x20;

**What crypto projects / tokens can I ask `Analyst` about?**&#x20;

* For news, current events, sentiment and basic market data you can ask about any protocol / project.
* For white papers and technical documents, we will have a **white list** of available projects to query.&#x20;

**What is a Preset? How do I make one?**&#x20;

* **Presets** are a way to prompt for recurring analyses. For example, you may want recurring project updates (e.g., *I'd like a weekly update for project XYZ. Give me an update on recent events, project updates or announcements for project XYZ over the past 7 days*). You can use **Presets** to create a  recurring analysis. Go the **Chat** icon on the left panel; click on **New Chat**, and you'll see **Explore Presets** with example Presets to see or select the **+ icon** to make a new one.

**Can I resume an existing session like other language model-based chat services?**&#x20;

* Yes, you can return to existing sessions to resume a discussion. `Analyst` will remember the previous context used in your analysis. However, if your session has stalled or you run into an error, it is recommended you start a **new** session (see [**Trouble Shooting**](https://docs.exponent.ai/getting-started/trouble-shooting)).&#x20;

**Can I delete a session?**&#x20;

* Sessions currently cannot be deleted. However, there is no cap to how many new sessions are started.&#x20;


# Editor

GitBook has a powerful block-based editor that allows you to seamlessly create, update, and enhance your content.

<figure><img src="https://gitbookio.github.io/onboarding-template-images/editor-hero.png" alt=""><figcaption></figcaption></figure>

### Writing content

GitBook offers a range of block types for you to add to your content inline — from simple text and tables, to code blocks and more. These elements will make your pages more useful to readers, and offer extra information and context.

Either start typing below, or press `/` to see a list of the blocks you can insert into your page.


# Markdown

GitBook supports many different types of content, and is backed by Markdown — meaning you can copy and paste any existing Markdown files directly into the editor!

<figure><img src="https://gitbookio.github.io/onboarding-template-images/markdown-hero.png" alt=""><figcaption></figcaption></figure>

Feel free to test it out and copy the Markdown below by hovering over the code block in the upper right, and pasting into a new line underneath.

```markdown
# Heading

This is some paragraph text, with a [link](https://docs.gitbook.com) to our docs. 

## Heading 2
- Point 1
- Point 2
- Point 3
```

{% hint style="info" %}
If you have multiple files, GitBook makes it easy to import full repositories too — allowing you to keep your GitBook content in sync.
{% endhint %}


# Images & media

GitBook allows you to add images and media easily to your docs. Simply drag a file into the editor, or use the file manager in the upper right corner to upload multiple images at once.

<figure><img src="https://gitbookio.github.io/onboarding-template-images/images-hero.png" alt=""><figcaption><p>Add alt text and captions to your images</p></figcaption></figure>

{% hint style="info" %}
You can also add images simply by copying and pasting them directly into the editor — and GitBook will automatically add it to your file manager.
{% endhint %}


# Interactive blocks

In addition to the default Markdown you can write, GitBook has a number of out-of-the-box interactive blocks you can use. You can find interactive blocks by pressing `/` from within the editor.

<figure><img src="https://gitbookio.github.io/onboarding-template-images/interactive-hero.png" alt=""><figcaption></figcaption></figure>

### Tabs

{% tabs %}
{% tab title="First tab" %}
Each tab is like a mini page — it can contain multiple other blocks, of any type. So you can add code blocks, images, integration blocks and more to individual tabs in the same tab block.
{% endtab %}

{% tab title="Second tab" %}
Add images, embedded content, code blocks, and more.

```javascript
const handleFetchEvent = async (request, context) => {
    return new Response({message: "Hello World"});
};
```

{% endtab %}
{% endtabs %}

### Expandable sections

<details>

<summary>Click me to expand</summary>

Expandable blocks are helpful in condensing what could otherwise be a lengthy paragraph. They are also great in step-by-step guides and FAQs.

</details>

### Drawings

<img alt="" class="gitbook-drawing">

### Embedded content

{% embed url="<https://www.youtube.com/watch?v=YILlrDYzAm4>" %}

{% hint style="info" %}
GitBook supports thousands of embedded websites out-of-the-box, simply by pasting their links. Feel free to check out which ones[ are supported natively](https://iframely.com).
{% endhint %}


# OpenAPI

You can sync GitBook pages with an OpenAPI or Swagger file or a URL to include auto-generated API methods in your documentation.

### OpenAPI block

GitBook's OpenAPI block is powered by [Scalar](https://scalar.com/), so you can test your APIs directly from your docs.

{% openapi src="<https://petstore3.swagger.io/api/v3/openapi.json>" path="/pet" method="post" %}
<https://petstore3.swagger.io/api/v3/openapi.json>
{% endopenapi %}


# Integrations

GitBook integrations allow you to connect your GitBook spaces to some of your favorite platforms and services. You can install integrations into your GitBook page from the *Integrations* menu in the top left.

<figure><img src="https://gitbookio.github.io/onboarding-template-images/integrations-hero.png" alt=""><figcaption></figcaption></figure>

### Types of integrations

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th></tr></thead><tbody><tr><td><strong>Analytics</strong></td><td>Track analytics from your docs</td><td><a href="https://www.gitbook.com/integrations#analytics">https://www.gitbook.com/integrations#analytics</a></td><td><a href="https://content.gitbook.com/content/brjBvaasMqOtwBWEGNor/blobs/iEiDs8hSZSP1rZAyUbkz/2.png">2.png</a></td><td></td></tr><tr><td><strong>Support</strong></td><td>Add support widgets to your docs</td><td><a href="https://www.gitbook.com/integrations#support">https://www.gitbook.com/integrations#support</a></td><td><a href="https://content.gitbook.com/content/brjBvaasMqOtwBWEGNor/blobs/nvSeyeMlx5EfOpkMUuZ2/3.png">3.png</a></td><td></td></tr><tr><td><strong>Interactive</strong></td><td>Add extra functionality to your docs</td><td><a href="https://www.gitbook.com/integrations#interactive">https://www.gitbook.com/integrations#interactive</a></td><td><a href="https://content.gitbook.com/content/brjBvaasMqOtwBWEGNor/blobs/fvONVJz57XvL5Ax20uvV/4.png">4.png</a></td><td></td></tr><tr><td><strong>Visitor Authentication</strong></td><td>Protect your docs and require sign-in</td><td><a href="https://www.gitbook.com/integrations#visitor-authentication">https://www.gitbook.com/integrations#visitor-authentication</a></td><td><a href="https://content.gitbook.com/content/brjBvaasMqOtwBWEGNor/blobs/GgWvGuTfkGGxpvSnaTKU/1.png">1.png</a></td><td></td></tr></tbody></table>


# Page


# Page 1


# Copy of Page 1

```
// Some code
```


# Test cases: Expected User Behavior / Results

The purpose of these test cases is to ensure that the product behaves correctly under various user interactions and scenarios, providing accurate, reliable, and user-friendly experiences. Each test case specifies actions that a user might take, the expected outcome, and the steps our engineering team can take to validate that the system performs as intended.

**Hash Tags**

* **Description**: Test how `Analyst` handles the use of hashtags within user prompts. The system should recognize and appropriately process hashtags to influence the context or focus of the analysis. Hash tags are formed from the token/project `id` in the database.
* **Testing**: Enter prompts containing single or multiple hashtags related to crypto topics. Verify that the hashtags guide the analysis in the expected direction, influencing the content returned by the agent.

#### Using multiple different Hash Tags in the same Session

* **Description**: Test the `Analyst`'s ability to handle multiple hashtags within a single session. The agent should be able to manage and prioritize multiple hashtags, producing an analysis that reflects the combined context.
* **Testing**: Input prompts with multiple hashtags in a single session. Observe and confirm that the analysis includes aspects of all provided hashtags, without any being ignored or overly prioritized.

#### Returning to and Resuming a Session

* **Description**: Ensure that users can return to a previously active session and seamlessly resume where they left off, with all prior context preserved.
* **Testing**: Start a session, leave it inactive for a specified period, and then return to it. Verify that the session resumes with all previous content and context intact, allowing for continuous interaction.

#### Prompting `Analyst` to summarize all session content

* **Description**: Test the functionality where users can request a summary of all content generated during a session. The summary should concisely encapsulate the key points and findings.
* **Testing**: Conduct a session with multiple interactions and then prompt the agent for a summary. Ensure that the summary accurately reflects the content covered during the session.

#### Create a Preset

* **Description**: Validate the process of creating a Preset prompt that can be used repeatedly for specific analyses. The preset should save correctly and be easily accessible for future sessions.
* **Testing**: Create a preset with a defined prompt and confirm that it saves correctly. Use the preset in subsequent sessions to verify that it functions as expected.

#### Input multiple URLs into a prompt

* **Description**: Ensure that `Analyst` can handle multiple URLs inputted into a single prompt. The agent should analyze the content of all URLs and incorporate the relevant information into the response.
* **Testing**: Input multiple URLs in a prompt and verify that the analysis includes relevant details from all provided sources, with no information missing or incorrectly prioritized.

#### Analysis Deletion

* **Description**: Test the functionality that allows users to delete previously generated analyses. The deletion should be straightforward and permanently remove the content from the session.
* **Testing**: Generate an analysis, delete it, and confirm that it is no longer accessible in the session. Attempt to retrieve the deleted analysis to ensure it is permanently removed.

#### Follow-up Conversation

* **Description**: Validate that users can initiate follow-up conversations based on previous analyses. The follow-up should build on the prior context and provide deeper insights or additional information.
* **Testing**: Conduct an analysis, then prompt the agent for a follow-up. Ensure that the agent accurately references the previous conversation and provides relevant extended analysis.

#### Editing an Analysis

* **Description**: Test the ability for users to edit a previously generated analysis. The edited content should reflect the changes made and update the session accordingly.
* **Testing**: Generate an analysis, make edits to it, and confirm that the changes are reflected in the session history and that subsequent interactions acknowledge the edits.

#### Editing a Plan

* **Description**: Ensure that users can edit a saved plan or preset within the system. The edits should be saved correctly, and the updated plan should function as intended in future sessions.
* **Testing**: Create a plan, edit it, and verify that the changes are saved. Use the edited plan in subsequent sessions to ensure it works as expected.

#### Public Posting

* **Description**: Validate the functionality that allows users to post session results or summaries publicly. The content should be shared correctly and be accessible via the intended public platform by other users.
* **Testing**: Complete a session and post the results publicly. Verify that the post is visible on the selected platform and that it accurately reflects the content of the session.

#### Private Posting&#x20;

* **Description**: Test the system’s capability to allow users to post session results or summaries privately. The content should be shared with specified individuals or groups without public access.
* **Testing**: Complete a session and post the results privately. Confirm that the content is only accessible to the intended recipients and that it is not publicly visible.


# Engineering QA Checklist

#### **Final Pre-Launch Checklist**

* **User Acceptance Testing (UAT)**
  1. Conduct final user acceptance testing with a group of target users to validate all functionality.
  2. Collect and address any feedback from UAT before going live.
* **Documentation Review**
  1. Ensure that all user-facing documentation (guides, FAQs, etc.) is complete and accurate.
  2. Confirm that internal documentation for maintenance and troubleshooting is comprehensive.
* **Pre-Launch Security Audit**
  1. Perform a final security audit to identify and mitigate any vulnerabilities.
  2. Verify that all security measures are in place and functioning correctly.


# Data Engineering

### **Data Pipeline Verification**

* **Run pipeline to load data** and verify it completes without errors.
* **Ensure data cleaning and integrity checks** are running and passing.
* **Confirm that the database is populated** with up-to-date and accurate data.
* **Validate that CMS tables** are correctly filled with token project data.
* **Ensure that all necessary data transformations** are performed correctly.
* **Implement dynamic project list generation**:
  * Automate the update of project rankings daily or as frequently as data is ingested to ensure the pipeline can dynamically account for changes in rankings.
  * Establish a **flagging system** to identify projects near the inclusion/exclusion threshold (e.g., top 300 projects by market cap).
* **Define and apply a policy for inclusion/exclusion**:
  * Set clear criteria for when a project should be included (e.g., top 300 by market cap) and when it should be excluded.
  * Implement **soft deletion** or archiving strategies for projects that fall out of the top 300, ensuring historical data is preserved while keeping the main database current and performant.
* **Define and apply policy for&#x20;**<mark style="background-color:green;">**white listing**</mark>
* **Ensure transformation consistency**:
  * Apply the same data transformation rules to all projects, whether newly included or previously included, to maintain consistency across the dataset.
  * Implement procedures to **backfill data** for projects re-entering the top 300.

### **Data Access Testing**

* **Confirm that the agent can access and retrieve data** from the database as required.
* **Test that user queries correctly match and return data** related to hashtags, slugs, and CMS entries.
* **Ensure data retrieval times** are within acceptable limits and optimized for performance.
* **Account for project fluctuations**:
  * Regularly test the system's response to project rank changes to ensure accurate and efficient data retrieval even as projects enter and exit the top 300.

### **Data Quality Checks**

* **Conduct random sampling** to verify data accuracy and integrity.
* **Ensure that data deduplication processes** are effective.
* **Validate that data retention policies** are implemented and adhered to.
* **Implement regular audits**:
  * Perform regular audits to maintain historical data integrity, ensuring that even projects excluded from the current top 300 remain accurate in the database.
* **Monitor project movements**:
  * Generate regular reports tracking which projects have entered or exited the top 300, providing insights into market trends and the overall performance of the data pipeline.
* **Set up automated alerts** for significant rank fluctuations, enabling quick identification and resolution of potential data issues.
* **Run URL checks of all white listed projects**

&#x20;


# DevOps / Systems Engineer

TBD


# User Acceptance Tests

#### **1. Signup and Login Flow**

#### **1.1. User can Signup with Google Account**

* **Steps to Reproduce:**
  1. Open the app.
  2. Click on "Signup."
  3. Select "Signup with Google."
  4. Complete the Google OAuth process.
* **Expected Result:**
  * User should be redirected to the app front page after successful Google authentication. User profile and chat menu should be shown

#### **1.2. User can Login with Google Account**

* **Steps to Reproduce:**
  1. Open the app.
  2. Make sure the user has signed up with Google
  3. Click on "Login."
  4. Select "Login with Google."
  5. Complete the Google OAuth process.
* **Expected Result:**
  * User should be successfully logged in and redirected to their dashboard.

#### **1.3. User can Signup with Email**

* **Steps to Reproduce:**
  1. Open the app.
  2. Click on "Signup."
  3. Choose "Signup with Email."
  4. Fill in email, password, and any other required fields.
  5. Confirm signup.
* **Expected Result:**
  * User should receive a verification email in their inbox
  * After verification, they should be redirected to the app home page.

#### **1.4. User can Login with Email**

* **Steps to Reproduce:**
  1. Open the app.
  2. Click on "Login."
  3. Enter email and password.
  4. Submit the form.
* **Expected Result:**
  * User should be successfully logged in and redirected to the dashboard.

***

#### **2. Analyses Creation Flow**

#### **2.1. Analysis Creation with Preset**

* **Steps to Reproduce:**
  1. Open the app.
  2. Click on the Analyst chat icon
  3. Select a preset from the available options.
* **Expected Result:**
  * Analysis should be created successfully with predefined steps according to the preset selected.

#### **2.2. Planning Offerings**

* **Steps to Reproduce:**
  1. In a new chat session with an Analyst, ask the Analyst to do something it should comply with ie. `fetch latest news and updates related to #solana`
* **Expected Result:**
  * User should see an outline of a plan that the Analyst will work on the fetch the data

#### **2.3. Planning Correction**

* **Steps to Reproduce:**
  1. After the plan proposal has been made to the user about what the Analyst will do
  2. make correction to the plan in plain text message response, ie. `instead of searching the news about update on Solana, search for Solana bull thesis instead`
* **Expected Result:**
  * User should be able to adjust the plan offering based on given feedback, and the plan should be updated in the next message

#### **2.4. Planning Confirmation Leads to Analysis Steps Being Created**

* **Steps to Reproduce:**
  1. After the plan proposal has been made to user, confirm button should be rendered alongside it.
  2. Click on `confirm` underneath the plan.
* **Expected Result:**
  * The app should automatically create the corresponding steps for the analysis based on the confirmed plan.

***

#### **3. Analyses Followup Flow**

#### **3.1. User can Ask Question That Should be Answerable by the Analysis**

* **Steps to Reproduce:**
  1. Open an existing analysis that’s been created
  2. Ask a question that falls within the scope of the analysis.
* **Expected Result:**
  * The system should generate a relevant response based on the analysis data in chat message

#### **3.2. User can Ask Question Not Answerable by the Analyst; Analyst Offers Alternatives**

* **Steps to Reproduce:**
  1. Open an analysis.
  2. Ask a question that the analysis cannot answer with fetched data.
* **Expected Result:**
  * The analyst should offer alternative suggestions or actions to take.

#### **3.2.1. User can Exit the Plan or Confirm**

* **Steps to Reproduce:**
  1. After receiving alternatives, choose to exit the analysis or confirm changes.
* **Expected Result:**
  * User exits or continues based on their choice.

#### **3.3. User can Delete Existing Analysis Step or Entire Analysis**

* **Steps to Reproduce:**
  1. Open a chat session with at least one analysis steps
  2. Select a step or the entire analysis.
  3. Click "Delete."
* **Expected Result:**
  * The selected step or entire analysis should be deleted, and the system should update accordingly.

#### **3.4. User can Edit the Response by the LLM**

* **Steps to Reproduce:**
  1. View an LLM-generated response in an analysis.
  2. Click "Edit.", and provide a natural language feedback on how Analyst should edit the text
  3. Make changes and save.
* **Expected Result:**
  * The edited response should be updated and saved in the analysis.

***

#### **4. Analysis Preset Creations Flow**

#### **4.1. User can Take an Existing Analysis and Turn it into a Preset**

* **Steps to Reproduce:**
  1. Open an existing analysis session
  2. Underneath one of the analysis, look for a preset button
  3. Click on the "Create Preset" button.
* **Expected Result:**
  * The analysis should be saved as a preset and appear in the list of available presets in new chat session

#### **4.2. User can Pin or Unpin Presets**

* **Steps to Reproduce:**
  1. View the list of presets. in a new chat session
  2. Click on "Pin" or "Unpin" next to any preset.
* **Expected Result:**
  * The preset should be pinned or unpinned based on the action taken.

#### **4.3. User can Edit Preset**

* **Steps to Reproduce:**
  1. Select a preset.
  2. Click an "Edit." icon
  3. Make changes in the prompt and save.
* **Expected Result:**
  * The preset should be updated with the new changes.

#### **4.4. User can Delete Preset**

* **Steps to Reproduce:**
  1. Select a preset.
  2. Click "Delete."
* **Expected Result:**
  * The preset should be deleted and removed from the list.

#### **4.5. User can Create a Preset from Scratch**

* **Steps to Reproduce:**
  1. Click "Create Preset." + icon from new chat session
  2. Enter details for the new preset.
  3. Save the preset.
* **Expected Result:**
  * A new preset should be created and listed among the available presets.

***

#### **5. Bookmarks Flow**

#### **5.1. For Existing Private Posts**

* **Steps to Reproduce:**
  1. Go to home page, and look under section where posts are created by you and is private
  2. View a private post.
  3. Click the "Bookmark" button.
* **Expected Result:**
  * The post should be saved to the user’s bookmarks for future reference.

***

#### **6. Analyses From Post Flow**

#### **6.1. User can Take Analysis Message or Analyst Response and Publish Private Article**

* **Steps to Reproduce:**
  1. Select an analysis or analyst response message in the chat session
  2. Click "Post" and choose to publish privately.
* **Expected Result:**
  * The article should be published privately and not visible to non-logged-in users.

#### **6.2. User can Take Analysis Message or Analyst Response and Publish Public Article**

* **Steps to Reproduce:**
  1. Select an analysis or analyst response.
  2. Click "Post" and choose to publish publicly.
* **Expected Result:**
  * The article should be published and visible to all users, including non-logged-in users.

#### **6.3. Another Logged-in User Can Start Analysis from an Article**

* **Steps to Reproduce:**
  1. Visit a public article as another logged-in user.
  2. Click "Analyze with Analyst."
* **Expected Result:**
  * A new analysis session should be created using the article content as the first message, with an established workspace for follow-up.


# User Experience / Design

TBD


# \[Draft] Preliminary Whitelisting Policy

Preliminary Policy Draft: Project and URL Whitelisting for Data Integrity and Security

**Objective:**\
This draft outlines a proactive approach to whitelisting crypto projects and their associated URLs to protect our data pipeline, users, and brand from risks such as scam or phishing links. The goal is to maintain data integrity and security while enabling a streamlined Quality Assurance (QA) process for scaling. <mark style="background-color:green;">This draft is a conversation starter / starting point</mark> for team discussions to develop a formal policy.

#### **1. Overview**

To safeguard the integrity of our data, we will create a curated whitelist for the top 300 crypto projects. This list will include approved URLs for white papers, technical documents, and key resources. The URLs must meet specific criteria to ensure they are secure, trustworthy, and accessible without errors. This policy will also define a straightforward QA process to support the scaling of the dataset with outsourced talent.

#### **2. Whitelisting Criteria**

The following criteria will guide the selection of URLs for the whitelist:

* **Direct Access to Documents:**
  * URLs must provide direct access to white papers and technical documents, either through PDF downloads or properly hosted on platforms like GitHub.
  * URLs should link directly to the correct HTML or Gitbook pages without triggering 403 (forbidden) or 404 (not found) errors.
* **Security and Reliability:**
  * All URLs must be free from phishing scams or redirects to suspicious domains. Domains must be secured with HTTPS and verified to be legitimate.
* **Continuous Monitoring:**
  * Approved URLs will be continuously monitored to ensure they remain compliant with the whitelisting criteria. Any issues will trigger a re-evaluation and potential removal from the whitelist.

#### **3.  Quality Assurance Process \[**<mark style="background-color:green;">**TBD**</mark>**]**

To scale the dataset effectively while maintaining quality, we will implement a straightforward QA process:

* **Documentation for Outsourced Talent:**
  * Develop clear guidelines and checklists to assist outsourced QA teams in validating URLs against the **whitelisting criteria**.
  * Regularly update the guidelines to reflect any changes in the criteria or processes.
* **Automated Validation Tools:**
  * Use automated tools to periodically check the status of whitelisted URLs, identifying any errors or security issues.
* **Flagging and Review System:**
  * Establish a system for flagging URLs that may no longer meet the criteria, triggering a manual review by the QA team.

#### **4. Implications for Data Engineering**

* **Data Pipeline Adjustments:**
  * Data Engineers will create a validation layers within the data pipeline to ensure only **whitelisted** projects and validated URLs are ingested. Automated checks against the whitelist should occur before data processing or storage.
  * Implement procedures for re-validating existing data periodically to maintain compliance with the whitelist, ensuring that any changes in project status are accurately reflected in the dataset.
* **Data Integrity and Historical Accuracy:**
  * Develop methods for handling projects that fall off the whitelist, such as archiving historical data to preserve continuity while keeping the active database free of potentially compromised projects.
  * Ensure that all data transformations and validations adhere to the whitelisting policy, particularly for projects that enter or exit the top project lists.

#### **5. Implications for DevOps**

* **Infrastructure Security:**
  * DevOps must implement and maintain a secure infrastructure that supports the whitelisting process, including automated tools for scanning and verifying URLs prior to their ingestion into the database.
  * Monitoring tools should be deployed to continuously assess the status and safety of whitelisted URLs, with alerts set up for any detected anomalies or potential risks.
* **Incident Response:**
  * Develop an incident response plan that allows for the swift removal of compromised projects or URLs from the whitelist, with immediate actions to prevent potential spread or damage. This plan should include clear communication channels and predefined steps to minimize impact.
* **Access Control:**
  * Ensure strict access controls are in place to limit the ability to modify or add to the whitelist to authorized personnel only, thereby reducing the risk of internal errors or malicious actions.


