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.
- 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.
- 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 outOne main prompt for every kind of question.
- 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 outStaying on Pinecone, the store in the first stack.
- 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.
- 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
What we built
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.
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.
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.
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
{
"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
Cloud and infrastructure
Apps and APIs
Also in the stack
How it shipped
Proposal and architecture
A summarized solution proposal and an architecture diagram for a knowledge base assistant, followed by revised diagram versions.
Scope revisions
Three rounds of scope revisions with the client and a scope meeting with its CEO, ending in a Phase I milestone plan.
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.
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.
Related work
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.
