← All work

Amove

Amove's team gets product, pricing and cloud cost answers inside Slack

Amove's live multi-cloud drive product kept its answers in a wiki, FAQs and pricing pages. We built a Slack assistant that returns a stored FAQ at once and routes every other question to the right prompt for features, pricing or cost comparison.

B2B SoftwareInternal product knowledge assistantAI added to a live product

Where it lives
The team's existing Slack workspace
Answers from
Product wiki, stored FAQs and pricing content
Stored FAQ answers
Returned at once, before any model call
Status
Tested by Amove in its own Slack

The challenge

Product, pricing and FAQ answers sat in wiki pages and documents in different shapes, and people searched them by hand. Amove wanted the answers in Slack.

What we did

Wiki and pricing ingestion into a search index, stored FAQs answered first, prompts split by question type, and a Slack bot with threads, follow-up suggestions and tables.

The outcome

Ingestion, FAQ answers, prompt routing and a working Slack bot were done in the first phase. Amove tested it in its own Slack and asked us to keep going.

The starting point

Amove sells a Mac and Windows app that connects several cloud storage accounts, mounts them as drives, syncs and backs them up. The product was live, with its own development team, a product wiki, FAQs and pricing content.

What had to change

Answers about features, pricing and how cloud providers compare sat in wiki pages, FAQs and pricing documents written in different shapes, so people searched for them by hand. The client wanted those answers inside Slack, where the team already worked.

What could not break

  • The assistant lives in the team's existing Slack, with no new tool to adopt
  • Answers come from Amove's own wiki, FAQs and pricing content
  • A question with a stored FAQ gets that answer as written
  • Replies fit Slack's message formats: threads, blocks and tables
  • The live desktop product stays untouched

The calls we made

We treated it as a retrieval problem over the company's own content, with each kind of question answered the cheapest reliable way, inside the chat tool the team already used.

  1. 01

    Stored FAQs before the model

    Common questions already had approved answers, so the service returns a matching stored FAQ as written and only falls back to retrieval and the model when none fits. In our tests FAQ answers came back at once, while model answers took two to three seconds.

  2. 02

    One prompt per kind of question

    Feature questions, pricing questions and provider comparisons need different instructions, so we split the main prompt into general, pricing and comparison sections and pick one by measuring how close the question is to each.

    Ruled out

    One main prompt for every kind of question.

  3. 03

    A managed search index

    We first loaded the scraped wiki into a quick vector store to prove retrieval, then chose Azure Cognitive Search for the index as the assistant grew and the project requested Azure access.

    Ruled out

    Staying on Pinecone, the store in the first stack.

  4. 04

    Answers shaped for Slack

    Slack has limited formatting, so replies use Block Kit: threaded answers, follow-up suggestions, tables rebuilt as blocks and a cost comparison view, first against mock responses and then on the real answer service.

  5. 05

    A controlled demo before the client tried it

    We tested query sets and tuned prompts in a controlled environment first, then Amove tested the bot in its own Slack and sent its feedback in a review sheet.

How the system fits together

asksquestionAPI callFAQs, then passagespassages,promptanswerthreaded replyscrapeclean textvectorsAmove teamAsks about features,pricing…Slack workspaceWhere the teamalready worksProduct wiki andpricingPages in manyshapes, raw HTMLSlack botBolt actions, BlockKit threads…Ingestion scriptsScrape, clean HTML,embed, loadAnswer servicePython and Flask:FAQs first,…Search indexWiki passages,pricing, stored FAQsOpenAI GPTGeneral, pricing orcomparison promptOpenAI embeddingsVectors for passagesand questions
PeopleClient's existing systemBuilt by DaticsData storeAI modelThe assistant answers from Amove's own wiki, pricing content and stored FAQs, and sits beside the product in Slack without touching the desktop app.

What we built

01

Wiki and pricing ingestion

Scripts that scrape the product wiki and pricing content, strip the raw HTML into clean text, create embeddings and load them into the search index, checked against the latest content the client shared.

02

FAQ-first answering

Stored FAQs are embedded and returned as written when a question matches, so retrieval and the model run only when no FAQ fits.

03

Prompt routing and cost comparison

Each question goes to a general, pricing or comparison prompt, and comparison answers draw on scraped provider pricing to compare cloud storage options.

04

Slack bot

Built with Bolt and Block Kit for threaded answers, follow-up suggestions and table layouts, first against mock responses and then on the real answer service.

How it works

Ask in Slack

A team member asks a question in the Slack workspace they already use.

Check stored FAQs

The service first looks for a stored FAQ that matches and returns its answer as written.

Route the question

If no FAQ fits, the question goes to the general, pricing or comparison prompt that is closest to it.

Retrieve and answer

The model answers from the closest passages in the search index, and the bot replies in a thread with suggestions or a table where needed.

A closer look

One answer as the bot posts it to Slack (Block Kit, sample values)Sample data
{
  "text": "How do I add a second cloud storage account?",
  "blocks": [
    { "type": "section",
      "text": { "type": "mrkdwn",
        "text": "*From the FAQ:* Open *Accounts*, choose *Add account*, pick the provider and enter its access keys." } },
    { "type": "section",
      "fields": [
        { "type": "mrkdwn", "text": "*Step*\n1. Accounts\n2. Add account" },
        { "type": "mrkdwn", "text": "*Where*\nDashboard\nAccounts screen" } ] },
    { "type": "actions",
      "elements": [
        { "type": "button", "text": { "type": "plain_text", "text": "Mount it as a drive" },
          "action_id": "suggestion_1" },
        { "type": "button", "text": { "type": "plain_text", "text": "Compare providers" },
          "action_id": "suggestion_2" } ] }
  ]
}

What changed

By the end of Phase I, ingestion, FAQ answers, prompt routing, cost comparison and a working Slack bot on the real answer service were done. Amove tested it in its own Slack and asked for the work to continue toward a beta.

Under the hood

Datics role
AI added to a live product
Integrations
Slack through Bolt for interactive actions and Block Kit for threaded replies, and the product wiki and pricing content through scraping scripts.
Data boundary
Answers come from Amove's own wiki, pricing content and stored FAQs; stored FAQs are checked before any model call, and the desktop product was not touched.
Retrieval
Clean text embedded with OpenAI embeddings into a search index, FAQs stored alongside, and GPT through LangChain with one prompt per question type.
Bot development
The Slack bot was built against mock responses, including mock tables, then switched to the real answer service and tested end to end.

AI and models

OpenAI GPTOpenAI embeddingsLangChain

Cloud and infrastructure

Azure Cognitive Search

Apps and APIs

Python

Also in the stack

FlaskSlack Bolt and Block Kit

How it shipped

  1. Proposal and architecture

    A summarized solution proposal and an architecture diagram for a knowledge base assistant, followed by revised diagram versions.

  2. Scope revisions

    Three rounds of scope revisions with the client and a scope meeting with its CEO, ending in a Phase I milestone plan.

  3. Phase I build

    Ingestion, FAQ answers and retrieval on one side and the Slack bot against mock responses on the other, with daily scrums between the engineers.

  4. Tuning and client testing

    Query tests, prompt iterations and routing, the real answer service behind the bot, then Amove tested it in its own Slack and we fixed what it found.

In the client's own Slack

The assistant was built for Amove's Slack, and we worked with its team in a shared Slack channel throughout the build.

Scope in writing, then daily scrums

A proposal, diagrams and three scope revisions came before any code, and the build ran with daily scrums against a Phase I milestone plan.

Feedback from the client's own testing

Amove tested the bot in Slack and sent its comments in a review sheet, and we tuned answers and follow-up suggestions and removed links from replies in response.

What this unlocked

The next step was re-syncing and automatic syncing, so the assistant keeps up as the wiki and pricing change.

Have a product with the same kind of constraints?

Tell us what already exists and what you want it to do. We will tell you what it takes.

Book a 30-minute Product Review