Boosting Stability and Reducing Technical Debt for a User Research Platform
Dscout offers a remote experience research tech platform that simplifies usability tests, product discovery, competitive analysis, and more. The portfolio of companies Dscout collaborates with includes numerous Fortune 1000 companies.
The client reached out to us looking for experienced multimedia and Elixir specialists to fine-tune a custom researcher tool for editing video content. After successfully completing the initial project, Dscout asked us to rewrite its administrative panel from Ruby on Rails to Elixir. By migrating the panel and modernizing key frontend libraries, we helped improve the platform’s scalability and reduced its technical debt.
- Frontend modernization
- Web development
- Integration with 3rd-party tools
- Migration to Elixir
- React
- Elixir
- FFMPEG
- Apollo GraphQL
- Ruby on Rails
- JavaScript
- TypeScript
- React Router

Challenges
- Developing Dscout's custom video editing tool
- Addressing issues with legacy Ruby on Rails parts of the platform that no longer met performance demands
- Tackling technical debt in frontend libraries like React and Apollo GraphQL, which hindered functionality and updates
Developing Playlist Editor
Dscout wanted to expand the functionality of Playlist Editor – a custom researcher tool for editing and sharing video content – to make it more user-friendly and simplify presenting research findings. One of the first improvements we introduced was the option to insert slides between clips, which significantly helped users organize their presentations.
We also improved audio control by implementing EBU R128 loudness normalization standard, enabling platform users to effortlessly adjust volume levels with one-click, without thinking: "What would be the correct volume level for my video?".
What’s more, to ensure researchers can easily protect participant privacy, we collaborated with Dscout to introduce an interactive feature that allows users to blur faces in survey recordings.

Rewriting the admin panel from Ruby on Rails to Elixir
After our successful work on the new features of Playlist Editor, Dscout chose to expand our collaboration with a more complex and time-intensive project – migrating the administrative panel from Ruby on Rails to Elixir.
We began by diving into the existing Ruby code, simultaneously identifying areas for improvement. One of the first major tasks in rebuilding the panel was to make the platform management more user-friendly, improve user permissions and build a better search engine.
We also worked on rewriting email processing, email previews and CSV exports, improving the original features where possible on-the-fly.
Frontend modernization
As the Dscout platform expanded, it became necessary to modernize the frontend tech stack. To keep up with modern web technologies, we were engaged in updating key frontend libraries and addressing the technical debt associated with them.
Upgrading React
The React library is at the heart of the Dscout web platform. However, since the version in use was outdated and lacked many modern features, it started causing growing maintainability issues.
During the migration, we worked hand in hand with Dscout engineers. We tackled several technical challenges, including infinite loops in certain user interactions scenarios and flickering UI elements. The regressions were caused by slight changes in React internals and required diving deep into complex abstraction layers. Due to the platform’s size, we also encountered hard-to-identify edge cases, mostly due to a heavy reliance on React behaviors.
With the support of thousands of automated end-to-end test scenarios, we collaboratively identified and resolved all edge cases and regressions, and then fixed them with an incremental approach. This enabled Dscout to further modernize the platform, improve the tech stack and take advantage of new cutting-edge web features.

Modernizing Apollo GraphQL
The Dscout platform relies on the GraphQL API, with the Apollo Client library handling the communication layer and caching mechanism on the frontend. Because of the data-intensive nature of the app, it required hundreds of API query configurations, complex cache management, and requests cooperation.
Upgrading the Apollo Client library was crucial to fix multiple issues and benefit from new features and mechanisms provided by its latest versions.
The migration required a deep understanding of Apollo internal changes and modernization of Dscout's own data fetching layers. To ensure a seamless transition, we carried out extensive manual and automated testing.

Modernizing React Router
React Router is the core library used for navigation within the Dscout platform, connecting every part of the app. Modernizing this library was essential to support the latest web navigation features.
Since React Router is used on every page and in hundreds of components, the biggest challenge was the scale of the update – it couldn’t be done incrementally. The major changes in the API forced us to completely rebuild the application's routing layers, including multiple nested paths and component compositions. To ensure the app remained stable after migration, we carefully tested and monitored all functionalities.


Rebuilding translation mode
To make multilingual research more accessible for Dscout's team members, we helped redesign the translation mode. Previously, managing the translations of research questions required switching to a separate tab. What’s more, edits to questions would delete existing translations, which was both inefficient and error-prone.
To solve this, we integrated translation mode into the question builder, adding language tabs and status indicators to show current, missing, or outdated translations. This allows users to update translations immediately after editing questions.
We also helped introduce backend improvements to ensure translations stay in sync with questions. When a question changes, translations are automatically flagged as outdated, and users are asked to revise specific sections. What’s more, validation checks prevent launching missions with incomplete or outdated translations. The improved translation mode allows Dscout to easily toggle between languages, displaying the original text alongside translations for reference.
Building an audit log
To improve Dscout’s observability, we rebuilt its audit log, transforming it into a friendly and reliable tool for tracking user actions and system events.
The original audit log used advanced terminology that was hard to comprehend for non-technical users. To address this, we added a mapping layer that automatically translates system events into clear, actionable descriptions, while preserving technical accuracy for future updates.
The improved audit log ensures regulatory compliance and tracks sensitive events while also offering valuable insights for diagnostics and troubleshooting.

Supporting Dscout's growth
We’ve continued our partnership with Dscout, working together to expand the platform with new features, such as:
- Bulk updates of consumable balances – Dscout's business intelligence team needed a straightforward way to upload consumable balances, such as activity credits and available support hours, directly into the platform. Thus, we developed a custom solution that allows for seamless CSV uploads via LiveViews. This not only makes bulk updates easier, but also improves data accuracy and overall efficiency in managing consumables.
- New roles and flexible seats – we supported Dscout in enhancing the role management system, giving clients more flexibility as their needs evolve. Previously, roles had fixed limits and payment tiers, which didn’t allow for much customization or growth. We worked with the client to redefine roles like researchers, admins, and contributors, making them more adaptable. We also migrated the existing framework to support this role-based system, ensuring a smooth transition. Now, clients can scale roles as their teams grow. If an account reaches role limits, Dscout notifies them and offers flexible licensing options, simplifying expansion and creating upselling opportunities.
- Consumables management system – we helped develop a system to manage consumables, which are incentives deducted from clients to support research respondents. By automating the complex conditions behind consumables allocation, the solution ensures reliable distribution of incentives and can easily adapt to changes in business logic.
- Optimized license management – managing Dscout clients’ subscriptions previously required frequent API requests through both their own and third-party paid APIs. With a high volume of licenses and API requests occurring every few minutes, the associated costs were quickly adding up. To address this, we worked with Dscout to create a more efficient solution. By implementing batch processing for licenses, we built a solution that enables handling multiple requests at once, significantly reducing the number of individual API calls. This quick win led to noticeable cost savings, allowing Dscout to manage licenses more efficiently.
“The team & Software Mansion engineers are incredibly responsive and adaptive to our process and only strive to make things better. When it comes to communication with the vendor, their Account Managers are responsive, understanding of any issues that arise (if any) and helping to think through the situations while thinking of the best outcome for both our company and their team. I'm impressed with their very high-quality and result-oriented team members. SWM has been a great partner for us!”
Results
We've been partnering with Dscout since 2021, ensuring developed solutions provide a strong foundation for future growth and meet user needs.
By successfully migrating the admin panel to Elixir and modernizing key frontend libraries, we helped boost the platform’s scalability and stability, while reducing technical debt.
To simplify researchers’ workflows, we expanded Playlist Editor and integrated 3rd-party tools to make data analysis more efficient.
Additionally, we improved platform observability with a new audit log, providing Dscout teams with deeper insights on user actions and system events.
