Laerdalwith The Lossless Group

Custom Project

Needing to migrate to a Microservices architecture.

Update as of Feb 22, 2024

Imagekit

Update as of Feb 20, 2024

The rabbit hole has been how to set up Microservices and make each Front-End it's own app, thus limiting the damage Code Generators can do to a working app as it tries to rewrite everything.

So, the below screenshot looks inconsequential. !Screenshot 2025 02 20 at 5.37.23 AM_Data Augmenter Layout.png But, it's not. Here's evidence a Monorepo approach is working. (Vite has a package that orchestrates "federated modules"). !Screenshot 2025 02 20 at 5.38.29 AM _Data Augmenter Ports.png Now, the project is in GitHub !Screenshot 2025 02 20 at 5.58.10 AM_Data Augmenter GitHub.png Onwards.

Rationale for Microservices

Code Generation tools need Microservices.

Recent Demo

This is a demo as of January 28, 2025.

Synopsis of Purpose

Laerdal, like any organization, has a lot of data in a lot of places. Through legacy decisions, Laerdal has not only legacy systems but also legacy data, much of which should create untapped value -- if only it was properly tapped.

However, even though this trove of data can create untapped value, it's also in legacy condition. The Data & Analytics team has been doing the heroic (and often thankless) job of bringing all the accessible data together in DataBricks.

Throughout my conversations with many individuals and teams at Laerdal, a recurring theme keeps coming up:

"If only Laerdal knew what Laerdal knows." Or, more fittingly, can Laerdal know what Laerdal has known?

In light of this, as The Lossless Group had discussions with Jon Laerdal about what we might be able to build using new tools and technique as a "demonstration project" -- we were given a pretty broad and hugely important scope and task:

Could we find a way to use AI to to empower and enable our Product and Design talent to have more data -- nay, more data-driven insights -- at their fingertips?

We took this to mean using AI to augment the data Laerdal already has, given part of our general hypotheses was that unlocking value now is about Stack Engineering and Data Fluidics.

And from that broad mandate, The Lossless Group team has been in an iterative design process to converge on using new tools to augment existing data sources, and bring this augmentation together in a way that can create actionable insights.

Can Al Augment Data?

There is a whole arena of AI Powered Data Capture tooling. These tools can help augment existing data in Salesforce and other places by following instructions to go gather and summarize data from target locations, and respond in target formats.

Dovetail and Salesforce now have their own AI Copilots. Moreover, there is now a vast landscape of AI Generated Customer Insights 1 tooling. !AI Generated Customer Insights 1

Custom Project

Positioning took awhile.

Much of our work has been trying out way too many newfangled products and services, given some key Laerdal stakeholders thought our best use of time and energy was in evaluating and providing recommendations on tech tool adoption.

Part of our challenge has been to really understand what is worth building, as the most expensive thing a company can do is build and maintain something not worth building in the first place.

Avoiding building something not worth building requires a hyper-awareness of the common pitfalls we've outlined. Seeing the vast trove of is available in the marketplace mades us quite cautious to move from ideation and into prototyping. Make sure you've watched our summary of these pitfalls:

In a world of Internal Tool Builders, App Builders, Agentic AI, Retrieval-Augmented Generation and Knowledge Base AI, Knowledge Hubs galore, what is worthwhile?

Direction Synopsis

We've been building a KAG or Retrieval-Augmented Generation app that augments existing data at Laerdal. Our first iteration had no UI, and was written in Python. After more conversations with the Design team and the Digital Business Unit, it's clear there is momentum around converging on React.

We are experimenting with various Code Generators, with best results right now in Bolt.new. We have yet to figure out how to get it to use the Life Design System as it is available as a package on NPM-js

Summary of User Flow

This "Data Augmentation Assembly Line" has the following basic User Flow:

  1. pull customer records out of DataBricks, that have their origin in Salesforce.

  2. request customer records out of the Database App, NocoDB

  3. use scripts to generate custom prompts for each customer

  4. send prompts to the Perplexity API, potentially other AI Models

  5. receive returned data in JSON format

  6. (evaluate the quality of data) <-- This is proving a conundrum.

  7. If not substantial, then recursively improve it through

    1. SCARP improvements to the prompt, then hitting the Perplexity API again.

    2. The use of AI Assisted Data Capture tooling to augment the data.

  8. Given 6 and 7, we believed that we needed to create a tool (that may already exist elsewhere, and if not definitely will)

  9. Push the data into other APIs, looking to push the data. Particularly, into Dovetail and ProductBoard. And, potentially, back into Salesforce.

Working Specification

A Video Orientation to the other videos:

Can we get the Code Generators to use the Laerdal Component Library?

The Life Design System is implemented as a React package here on npmjs.

You can find the more useful web UI components pulled into our Figma files, with more or less the same components:

Microservices

#### Services - User Service - Workspace Service - Data Sources Service - Query Sources Service - Target-Destinations Service - Records Service - Prompt Service - Response Service - Highlights Service - Ready-Information Service

Does there need to be a State Management Service?

Dynamic Layout UI

The layout will have a main area that will load a list of "Panes," with each Pane revealing a "Micro-Front End"

#### Micro Front-Ends (Panes):
01: Data Loader
1. User can upload CSV
	1. Data Loader will flexibly accept any data in CSV format.
2. User can connect to data sources via API.
	1. User can add, edit, and remove API connection content, including private keys. If they are creating a connection to a Source (website, app) that has never been added before, they can add an App Icon. 
		1. If User is in a team/workspace with others, User can select the team/workspace API Connection.
3. User sees a "list" of records
	1. User can search or filter records by text. 
4. User can launch a Record-Model-Modal
	1. User can create computed and transformed properties using JavaScript or REGEX syntax, respectively.
	2. User can hide or show properties (to simplify the review of records with many properties)
	3. User can 
5. User can save records to a Data Store for data persistence. 
6. User can select one or more records.
Components:

$ Data-Sources-Manager $ Data-Source-Connections__Row-of-Icons $ Data-Source-Connections__List-Modal $ Data-Source-Connections__List-Modal__Add-or-Edit-one-Data-Source-Connection $ Record-Model-Modal Record__Properties-List Record__Property-Item-Display Record__Variable-Syntax-Copier Record__Property-Item-Edit $ Records--List $ Search-Box--Records-List $ Record--List-Item--Display-Record-Preview Variants: Unselected, Selected

Data:

Data-Source-Connections-List Record-Model Computed or Transformed Properties Records-Listed Records-Selected Data-Persistence-Connections-List

State API:

Records-Selected

02: Prompt Manager
1. User sees a list of available prompts.
	1. If none, a call to action to create a prompt. 
2. User can create and edit Prompts with MDX syntax, including inserting variables for interpolation. 
	1. User can create prompts by uploading MD and MDX files.
3. User can select one or more prompts.
	1. If user selects more than one prompts, they are appended together in the Prompt Preview 
4. User can see an AI options component, and can add and edit API connection details. 
Components:
Data:
State API:
03: Prompt Selections Preview
04: Response Collector
User Stories
Components

Response-Context-Wrapper Response-Reviewer Response-Editor Response-Item-Display Response-Item-Context-Wrapper

Data

Response-List Response-Items

State API
  • Highlight-Snippets

  • Highlight-Metadata

    • Created-by-User

    • Created-at-Timestamp

    • Created-with-Model, Model-Provider

    • Created-from-Prompt

06: Highlight Aggregator

I've tried to discuss the Highlight Aggregator Pane from a screenshot of a previous demo before AI broke its own app:

Because the Code Generator overwrote the working code, it may make more sense to rewatch the video and pay attention at minute 4:00. Here's a direct link.

  1. Highlight Collector

  2. Insight Summarizer

    1. Export Manager

Tasks

User Journey

From client-content/Laerdal/Gameplan/04 - AI to Actionable Insights.md · lossless-group/lossless-client-content