Josh Johnson

Notes from JJ

Week 05 July 12, 2026 · 4 min read

Omnichannel Aggregation, OpenTutor, and Discord Classrooms

NPI-keyed dbt models, and meeting students where they already hang out

Managing diverse datasets requires clear pipelines and user-friendly interaction layers. This week, I've been working on aggregating commercial data streams for a pharma launch and deploying AI tutors into educational chat channels.

Pharma Data Strategy: The Reality of Omnichannel Aggregation

In commercial pharma, "omnichannel" is a major buzzword. The reality is that it's a hard data engineering problem. You have to connect HCP-level prescribing data from third-party vendors (like IQVIA or Symphony) with CRM engagement data (from Veeva) and digital marketing touchpoints (from Marketo or Adobe).

My approach has been to design a unified master data model using dbt on top of Snowflake. By standardizing national provider identifiers (NPIs) as our primary key and building incremental daily consolidation layers, we've enabled marketing teams to see the direct correlation between digital ad clicks and field rep visits within 48 hours of occurrence.

Side Projects: OpenTutor and Discord Classrooms

On the education front, I've been updating OpenTutor + Vibe, a parent-supervised AI homeschool platform.

Rather than building a complex custom chat app from scratch, we decided to meet students where they already hang out: Discord. We developed an integration bot (named Vibe Bot) that connects directly to the Claude API. Parents can set up a private Discord server for their home curriculum, and children can query the AI bot for math explanations or science definitions.

Builder Life: Meeting Users Where They Are

Too often, we build complex interfaces when our users just want to interact through the channels they already use. Integrating our tutoring agents into Discord rather than forcing students into a new portal drastically increased engagement. Keep your entry barrier as low as possible.

— Josh