I worked full-time at StayWell (acquired by WebMD Health Services in 2020) between 2010 and 2025. When I started, the company was called StayWell Interactive. The company restructured and underwent ownership changes several times. During the first major restructuring the company changed its name to Krames StayWell. When our employer-based population health management software product moved from StayWell Interactive to MediMedia's sister company StayWell Health Management, I moved with it. The companies later merged together as Krames Staywell. Merck then purchased a majority stake in the company and it was renamed StayWell.
StayWell acquired the company Provata Health in 2018 and transitioned all customers to a new Java/React platform. In July 2020 WebMD Health Services acquired StayWell and has migrated all customers to their "WebMD One" platform.
My primary responsibilities have included maintaining and extending our primary external facing web application StayWell Online (later called StayWell Portal), implementing client customizations, and building/maintaining miscellaneous internal applications.
Some things I took part in while working on StayWell Online:
While working on StayWell Portal I had the opportunity to design a number of features and either build them myself or work on them with my team while also directing the work as a team lead. Below are some of the highlights.
The goal with this project was to integrate with a fitness and health data aggregation company called Validic. By integrating with Validic we were able to provide our users the opportunity to track a variety of health related data like steps and weight and integrate this data into several other features within our application like badges, incentives, self directed coaching programs and others.
Our integration consisted of a UI to allow the users to authorize data transfer and connect physical devices to the data collection service and an API to do the actual data transfer from Validic's system to StayWell's system on a real time basis.
Five main challenges of this project:
The most interesting part of this project for me was the performance tuning. During data pulls there are 7 types of data, each with 2 variants, for a total of 14 different API endpoints, each endpoint requiring paging of requests. Rather than doing all the work synchronously I implemented the data pull logic using multi-threading. That by itself is not terribly interesting, but I also throttled calls using a semaphore to ensure that the optimal amount of work was always being done without bottoming out the server's resources and without lulls that could have been caused by queing up chunks of work and running each chunk till done.
Allowing near real-time use of new data as it comes in with other features in our application uses a queue and a windows service to offload the work. Here is one of the diagrams from our documentation that illustrates this process:
The goal with the Snapshot project was to create a simple framework for developers to easily wire up nightly report data that can be viewed in our admin tool and also emailed to a specified list of users. Before implementing this feature each team had their own method of creating report data that was often inconsistent and error prone. After the Snapshot feature was completed and teams implemented it with their features, it was easy to get a high level view of the status and possible concerns there might be on a daily basis.
Because reflection is used to find all implementations, all a develop has to do to implement this with a feature is to add a value to an enum and implement a base class. This diagram encapsulates how each component of this feature relates:
Communities was a feature built to act as a sort of topic-based user discussion forum that also ties into other features within the application. It can be used as a stand-alone page or as part of the Group Coaching feature (see Group Coaching below). The challenge with this project was to implement it in such a way that an administrator had a number of customization options that allowed for things like cross-client forums vs single-client versions and custom content on the dashboard for the community.
Group Coaching is a set-length program that involves weekly activities, group meeting live meeting sessions and topical discussion forums (see Communities above). An administrator has the ability to configure a Group Coaching program including the topic, content for discussion each week, setup of group live meeting times each week, program completion criteria, etc. The feature has also has tools tied into the applications existing coaching platform that allow coaches to track individual participation progress.
Onpoint was a feature meant to bundle together several other features for the specific topic of Diabetes. Features bundled include Group Coaching, Communities, Support Coaching as well as device data tracking (see HealthTracker above).
The Engagement platform is a set of functionality that allows all other features within our application to manage email and sms messages to participants. Technically this was Engagement 2.0. The first version was written by another team early in the application's life before all requirements were known, and eventually the product owners requested additional functionality that required a redesign/rewrite of this feature.
Design philosophy:
System Diagram:
Since StayWell aquired Provata Health in 2018, we have been working on porting features to a new react/node/java application. Eventually the goal is to transition all our existing clients to the new application. See MyStaywell Platform