Blog Post

Developer Blog
4 MIN READ

How we built it: Search Anywhere and the Resource Center

RyanPi's avatar
RyanPi
Khoros Staff
4 years ago

 

In 2019, the Customer Experience team at Khoros planned to improve the digital experience of our customers through a series of initiatives.

One of the primary tasks was to make Atlas the focal point of documentation and support articles for Marketing products, just like it was for Care products. The change involved two steps:

  • Moving all our product technical and functional documentation from third-party software to Atlas
  • Maintain the ability to search for documentation from within the product websites i.e. search for documentation from Marketing and Care platforms from the in-app Resource Center

What is the Resource Center?

The Resource Center in this post refers to the tool powered by third-party software (Pendo) to house additional contextual help and include standard help articles or FAQs, as well as in-app Guides that will walk users through specific processes.

 

Most of the existing Marketing customers were frequent users of the search within the app tool. So, it was important for us to retain this experience.

However, these changes were due in less than two months, given the licensing deadline with a third-party application. This presented two key challenges:

  • How to look up information from the Community?
  • How to embed the Search Anywhere tool (yes, that’s what we named it internally) into the Resource Center and into the product website?

How we solved looking up information from Community:

  • Community platform supports the awesome API layer, known in developer circles, as LiQL - the Lithium Query Language
  • LiQL enables you to search Community information based on tags, title etc. However, you must have the “correct” permissions via the API keys in order to pull the information
  • The Triumph team built the oAuth based mechanism to provide the API access from a web application
  • The premise was that we could register the Search Anywhere tool as an app on the Community platform and use the specific keys to make API calls and this is how it works currently
  • A key feature that was necessary was to limit the ability to only lookup information limited to only certain “boards” (or nodes if you happen to know Community well). We achieved this by attaching a unique role, based on the application (Marketing or Care)
  • We registered unique apps for Care and Marketing to “sandbox” access to relevant information within each of the products
  • We needed the ability to show some posts by “default”, for example, if you land on the “Social Marketing” page in the Marketing product, the tool would show “top” posts from the “Social Marketing” board in our Community
  • We achieved this using “tags”, a way to label the posts in Community. This required identifying and tagging the relevant posts in specific boards in the Community. Our Product Content Experience team helped with this laborious but important task.

Going the extra mile -- Integrating Resource Center into Community and Community Analytics

Following the introduction of the Resource Center embedded into the Marketing product, we wished to integrate Pendo and the Resource Center in Community and Community Analytics in order to provide a consistent help experience for our customers across all of Khoros products.

The community Admin, Studio, Moderation Manager, and Toolbox areas have a plethora of options, and community admins are required to understand their use and purpose for configuring community as per their brand’s needs.

To improve the customer experience, Pendo integration is done with Community to provide dynamic help on the admin section. 

We leveraged the Search Anywhere work to identify the right resources for Pendo and created the Community integration.

Abhishek Gupta, Vaibhav Chawla, and John Dowden collaborated for integrating and creating Search Anywhere built with Atlas tags associated with hundreds of Atlas articles. Search Anywhere makes use of Tags (not Custom Tags like we have in the legacy Admin/Studio Help drawer) to fetch the right information. 

The sheer number of Tags required to cover the Admin, Studio, Moderation Manager, API Browser, and Toolbox sections was quite a challenge.

To top that up, Community Analytics had to be identified through a single Search Anywhere build. The team put in a lot of effort and created a JSON mapping to make it dynamic and easy to upgrade as well as completing a small but very important task to improve the customer experience. 

For the technically inclined:

  • Vanilla is the way
    • The tool is written in JavaScript and modularized for easy readability
  • Tokens
    • The tool uses Community’s OAuth APIs to obtain and refresh access tokens
  • Build
    • We dockerized the build to make it easy for incremental updates
    • This also helps in developing and testing the tool on any machine
    • Since different apps were registered, we parameterized the build for the code to “know” the context and use appropriate access keys to invoke APIs. If you build this tool with the parameter “CARE”, the output code can only access information from the “Care” board in our Community
  • Deployment
    • The binaries (word for the files that is output from all the code we write) are pushed to an S3 bucket from where the code is copied into the resource center

The project was a unique and proactive collaboration between Engineering, Customer Experience and Product Content Experience teams. It did lay the foundation for great working relationships among those involved in the project, very much embodying our value: We win and grow as one team.

Callouts:

Updated 4 years ago
Version 2.0
  • DanCr's avatar
    DanCr
    Khoros Alumni (Retired)

    StanGromer we use Pendo across our solutions for multiple use cases (not just content/discovery). It's more cost effective for our use case to go 3rd party rather than build and maintain, given the distributed cost across our organization. 

    As for why Pendo vs others; great partnership. Across the 5 years I've personally used them, they've been a wonderful technology partner in every aspect.

  • DanielD's avatar
    DanielD
    Khoros Alumni (Retired)

    Congrats on the success here!  Great to see the adoption take off.

  • Oh, I'll have so many questions later. This is great. So I'll start with a simple one - Why limit the search to specific nodes vs. unleashing the power of Community / index it all?

    Similarly, is there any actual user permission checks taking place, or it's all or nothing (IE: If you added in so you could search the greater Community, I'm guessing you guys didn't work about things like EA Groups where roles are limited?) - Any plans? 

    And the deeper question for my own curiosity if you can answer at all - Why Pendo vs building some of this in-house vs. other vendors out there  - Curious the business case/decisions there. We're building a lot of similar functionality (or could be similar) to what Pendo does right now in a similar way to what you all did (Integrating all the things), so neat to see!

  • SantoshS's avatar
    SantoshS
    Khoros Alumni (Retired)

    StanGromer thank you for your questions and yes, they it does make sense 🙂. Let me try to answer them.

    1. Are there actual user permission checks taking place? Instead of user permission checks, Search Anywhere is configured as a " web application" on which we enforce certain access checks. The roles are defined and managed internally by the Atlas admins.
    2. Why Pendo vs in-house vs other vendors? Pendo is the choice of Khoros business to add contextual help based on ease of configuration, customization and ability to embed within our products. I am tagging DanCr to help you with any other detailed questions in this regard.
  • JustinC's avatar
    JustinC
    Khoros Alumni (Retired)

    Love to see this!  Scaleable solutions ftw!

     

  • LarissaT's avatar
    LarissaT
    Khoros Alumni (Retired)

    Thanks for sharing! I love the detail and found it interesting. 🙂 

  • P.S. We can't edit our own comments in this node it seems, so I can't fix my grammar issues in my above post that I wrote over an hour and hit send before reading it, so... hopefully that made sense 😂