Trevor Paulsen
Lehi, Utah, United States
8K followers
500+ connections
View mutual connections with Trevor
Trevor can introduce you to 10+ people at UKG
or
New to LinkedIn? Join now
By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.
View mutual connections with Trevor
or
New to LinkedIn? Join now
By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.
About
Experienced Product Manager with a proven track record in driving revenue growth and…
Activity
8K followers
-
Trevor Paulsen shared thisTurns out funnels are pretty easy to build... it's the layers underneath that do the real heavy lifting 😅... ✅ Identity stitching across channels/devices ✅ The data group layer pre-sorts events by timestamp ✅ Sessionization ✅ The semantic layer for metrics/dimensions So the funnel SQL builder ended up being shockingly small 😆. It composes step booleans, picks the right GROUP BY key, and hands the work to ClickHouse's "windowFunnel" aggregate function. That one built-in function does the timestamp scanning, conversion window enforcement, AND the longest-prefix calculation in a single pass. The lesson I keep relearning: when the foundation is right, every new feature on top gets cheaper (and easier for Claude to build!). Demo of the block in action below. Full write-up (with the SQL, the gotcha that bit me, and the architecture) in the comments 🔗
-
Trevor Paulsen shared thisOne of the hardest things about building a journey analytics tool that includes an AI assistant is making sure the "chat experience" and the "actually exploring your data" experience don't feel like two different products bolted together 😬 I've been wrestling with this for weeks, and I think I finally landed on something I'm excited about. The idea: every piece of analysis in Trevorwithdata is a "block" - a table, a funnel, a chart. Blocks live inside notebooks when a user is exploring, and the exact same block can get rendered inside an Ask Trevor chat message. Same component. Same query pipeline. No parallel code paths. 🤖 The unexpected win: because blocks take a structured config instead of raw SQL, the AI never generates SQL at all. It just emits a tiny JSON config and hands it to the same engine the UI uses. Way faster, way fewer tokens. ⚡ Short demo below showing the moment Ask Trevor drops a live interactive table into a chat. Full write-up in the comments 📝 Would love to hear how you are thinking about the handoff between humans and AI in your #analytics tools? 🤔
-
Trevor Paulsen shared thisLatest addition to Trevorwithdata? An amazing AI assistant with a very corny name: Ask Trevor 😆 If you've been following this #journeyanalytics build, you know there are a LOT of things that need to be configured before anyone can start analyzing data - warehouses, datasets, identity stitching, metrics, dimensions, segments. And every step has enough nuance that getting it wrong means your data looks weird downstream 😬 So I built an AI assistant on top of the whole thing. It uses Anthropic's Claude Agent SDK (same framework that powers Claude Code) with 13 custom MCP tools that map to every API in Trevorwithdata. The idea is simple - anything a user can do through the UI, the assistant can do too. Here's what it actually does in practice: you describe your data and your KPIs in plain language, and the assistant handles connecting your warehouse, creating datasets, setting up identity stitching, defining metrics and dimensions - the whole pipeline. It's not just automating clicks. It's making real decisions, like recognizing that "revenue per visitor" needs two standard metrics created before it can build the calculated one, or defaulting to person-scoped segments for cross-device journeys. The secret sauce is honestly a 1,800-line system prompt where I crammed everything I know about journey analytics 😅. Decision rules, workflow patterns, scoping logic - all the domain knowledge that would normally take weeks to learn. The vision goes way beyond just setup (analysis, reporting, exploration are next), but I wanted to show where it was so far. Check out my latest post to see how I built it (and some of the system prompts I created) - link in comments 🔗
-
Trevor Paulsen shared thisRounding out the last bit of componentry needed for analysis this week with calculated metrics! 🎉 Now that we've got metrics, dimensions, and segments in place for our DIY #journeyanalytics platform, calculated metrics (conversion rate, average order value, revenue per visitor, etc.) were the last we needed before we shift focus to actual analysis and AI capabilities. It's tablestakes #analytics functionality, but a couple things in the implementation turned out interesting: 📐 Formula-level segments - you can embed segment filters directly inside a formula. So conversion rate isn't just "orders / sessions," it's {sessions:sessions_with_purchase} / {sessions}. This allows you to filter the numerator to only converting sessions while keeping the denominator unfiltered, and even compare mobile vs desktop conversion rates side by side in the same report. 🤖 Auto-segment creation - halfway through building the calc metric flow, I realized how annoying it is to leave the formula builder to create a segment you need. So now if the AI assistant sees you need a segment you don't have yet, it can create it without losing your place. Small thing, but sometimes it's the little things in life...😆 📊 Live preview - the formula builder runs your metric against real data as you build it, so you can immediately tell if you got it right. Full walkthrough with demo video in the blog post - link in comments 🔗
-
Trevor Paulsen shared thisNext up, segments! This was a fun excuse to add a few segmentation capabilities I've always wanted to see 😄 Fair warning - video is a bit longer, but so much to share! In most #analytics tools, a "segment" is just a SQL WHERE clause - each row either matches or it doesn't. In #journeyanalytics, you need things like "people who browsed the website and then called the call center in the same session" - and that requires joining cross-channel events, matching them to the same person, and verifying the order. Tough to do with a WHERE filter. So #ClaudeCode and I built a segment engine that handles three things traditional filters can't: 1️⃣ Scope control - the same condition evaluated at event, session, or person level gives you completely different answers (and the engine handles the windowing automatically) 2️⃣ Sequential patterns - a THEN keyword that verifies events happened in order, with optional time constraints like WITHIN 30m or WITHIN SESSION 3️⃣ An AI builder that inspects your actual data, generates the expression, validates it against ClickHouse, and even tells you if you already have a segment that does what you're asking for 🤖 The expressions end up being pretty readable too. Instead of nested window functions and CTEs, you write something like: {event_type} = 'page_view' THEN WITHIN SESSION IS_NOT_EMPTY({call_reason}) Full walkthrough with examples in the blog post - link in comments 🔗
-
Trevor Paulsen shared thisNext step in the DIY journey analytics build: metrics and dimensions 🎉 "Revenue by Marketing Channel" is one of those reports that sounds trivial, but if you've ever tried to build it on top of raw event data, you know there's a lot hiding under the surface. The UTM parameters only show up on the first page view, the revenue is on a purchase event way later in the session, and sometimes that purchase event fires twice because the customer refreshed the checkout page. Getting a correct answer means solving attribution, persistence, and deduplication before you even get to the actual analysis. This is the problem that a semantic layer solves in journey analytics, and it's a different kind of problem than what BI semantic layers like LookML or MetricFlow are built for. In journey data, the dimension value and the metric value often live on completely different events, and the relationship between them is sequential. So for our build, I wanted users to only have to write the simple part (a CASE WHEN expression for channel logic, for example) and let the system handle the hard sequential stuff through configuration: 1️⃣ Dimension persistence carries values forward to downstream events 2️⃣ Metric deduplication catches duplicate events automatically 3️⃣ An AI assistant can help generate the SQL expressions from plain English Full walkthrough with examples in the blog post - link in comments 🔗
-
Trevor Paulsen shared thisOne of the things I was most proud of when we built CJA at Adobe was "report time processing" - recomputing everything at query time instead of pre-computing ahead of time. Why? Journey analytics data doesn't sit still. Identity stitching rewrites who did what. Late-arriving data reshuffles session boundaries. Records get corrected retroactively. Anything you pre-compute is potentially wrong the moment it's written. So for this DIY build, I took the same approach - a 6-layer nested SQL query that recomputes it all at query time 😅 That means sessionization, array expansion, metric computation, segment evaluation, deduplication, and final aggregation - all happening in a single nested SQL query, every time someone runs a report. Six layers deep. The part that makes it actually work? ClickHouse's physical sort order. Our tables are sorted by person_id → date → event_id on disk, which means window functions for sessionization read data sequentially instead of reshuffling. That's the difference between "seconds" and "minutes" for this kind of layered query. Fair warning, this is a nerdy one 🤓. Full blog post with SQL examples in comments 🔗
-
Trevor Paulsen shared thisOf all the features we worked on during my time at Adobe, identity stitching was the one that generated the most questions. Here's the scenario: one person browses your site on a laptop (cookie_abc), logs into your app on their phone (device_xyz), buys something in-store (CRM-4821), then calls support (555-0142). Four interactions, four IDs, one person. Without stitching, your analytics sees four separate "people" and every journey report is wrong. I spent the weekend building identity stitching for our DIY journey analytics using ClickHouse, and the approach boils down to two things: 1️⃣ Stitch new events in real time using a JOIN against an identity map inside ClickHouse materialized views 2️⃣ Retroactively replay historical events when identity mappings change - using an atomic soft-delete + re-insert pattern so queries never see partial state The part that took the most thought was replay. When you learn that cookie_abc is actually trevor@email.com, you need to go back and re-stitch every historical event for that cookie. The solution was a single atomic INSERT that both deletes the old versions and re-inserts updated ones, and ClickHouse's ReplacingMergeTree handles the cleanup automatically. The blog post covers all of this with SQL examples, plus how we handle GDPR/CCPA deletions using the same pattern. Link in comments 🔗 If you want to kick the tires yourself, I just added a waitlist signup on the blog - I'm letting a few people try it for free 🙌 #ClaudeCode #Anthropic #JourneyAnalytics #ClickHouse #DataAnalytics #AIcoding
-
Trevor Paulsen shared thisI spent the weekend on ClickHouse ORDER BY clauses and materialized views 😑. Not glamorous, but maybe the most important design decision in this whole DIY journey analytics build. Here's the problem: journey analytics needs data from everywhere - web, mobile, CRM, transactions. But each source has different schemas, different field names, different ways of identifying users. You can't just UNION them and call it a day. So I built what I'm calling a "Data Group" layer. It takes separate source tables and combines them into one unified, queryable events table. The system: ✅ Auto-infers and merges schemas across sources ✅ Uses ClickHouse materialized views to route data in real-time ✅ Handles cookieless traffic, junk values, and missing fields ✅ Backfills historical data automatically The part I nerded out on the most: sorting data on disk by person_id, then date, then event_id. In ClickHouse, ORDER BY controls physical layout - not just query results. So every sessionization query, every funnel, every attribution model reads data sequentially instead of reshuffling it. It's the kind of invisible decision that makes everything downstream 10x faster. Will it hold up at scale? I think so, but only time will tell... 😅 Full deep-dive with SQL examples in the blog - link in comments 🔗
-
Trevor Paulsen liked thisTrevor Paulsen liked thisSomehow it's been a week since Summit has ended. The time always goes by so fast, so much happens at Summit that it takes a while to fully digest. This year was no different, between the keynotes announcements, roadmap items, and tips and tricks, Adobe never stops evolving. But the things that stood out most to me weren't the sessions, it was the connections I made. For four years now I've been lucky to attend Summit as one of the Adobe Analytics Champions. This program has helped me form not just connections, but also friendships, with practitioners from around the world. Summit is a bit like a reunion, getting to see people that I talk to online all the time, but only see in person once or twice a year. The Champions program is also currently open for applications for next year. If you use Analytics, AEM, AEP, Marketo, Workfront, or Commerce you can apply to be a part of this group. Check out the link below if you think you have what it takes to be a Champion. https://lnkd.in/eCDKPeZB #Adobe #AdobeSummit #AdobeSummit2026 #AdobeAnalytics #AdobeChampions
-
Trevor Paulsen liked thisTrevor Paulsen liked thisAs I depart Las Vegas after another fantastic, successful, and exhilarating #AdobeSummit, I continue to be impressed by every single Sneak technology that was highlighted and every technologist that presented them 👏 As I mentioned on stage - come play with the Sneaks you saw on our interactive Sneaks experience: adobe.ly/sneaks Congrats to Tongyu Zhou 👑 Doga Dogan 🏆 Paolo Mottadelli Vishesh Goswami Yuzhe You Shivangi Aggarwal Jordan Hall — thank you all for your hard work and making this an incredible session!
-
Trevor Paulsen reacted on thisTrevor Paulsen reacted on thisHighlights for me for #AdobeSummit Day 2! The #Analytics community is seriously the best and made it so fun in our Too Hot For Main Stage session where we got great feedback about where to take our #AdobeAnalytics producgts. For anybody who missed it, you'll be able to catch the recordings once those are posted (hopefully by Friday!). Jacob Draper and Stephanie Burton also had an incredible session about #CustomerJourneyAnalytics tips and tricks that was a ton of fun. #AdobeSneaks with the amazing Eric Matisoff never disappints and Iliza Shlesinger as co-host made it a lot of fun. Wrapped up th day with #AdobeBash and #BNL put on a great show! #AdobeLIfe
-
Trevor Paulsen reacted on thisTrevor Paulsen reacted on thisAt Adobe Summit one of the best sessions every year is Too Hot for the Main Stage. This year Derek Tangren and Brandon George presented using a battle of the bands theme. They demo'd a bunch of features that may or may not make it into the product. But the purpose of this session is to get feedback from the audience! One of the great things about Adobe is the way that the product teams actually listen to the feedback provided. Absolutely amazing session, and even though the live feedback is closed, still definitely worth watching once it's posted. #Adobe #AdobeSummit2026 #AdobeSummit #AdobeAnalytics #AdobeCustomerJourneyAnalytics
-
Trevor Paulsen reacted on thisTrevor Paulsen reacted on thisDecades ago I hit a jogger in my car on the way to an interview. A dilemma: Not be late for the interview Or stop to help the jogger? I decided getting a job was more important. With career success I could help hundreds of joggers. Guess who was interviewing me when I showed up? It was the jogger. He told me what happened and asked "what would you do if you were driving the car?" I said "screw the interview, I'd help the jogger." He hired me on the spot. Always tell the interviewer what they want to hear.
-
Trevor Paulsen liked thisTrevor Paulsen liked thisClaude Code: turning "zoning out in a meeting" into "accidentally building a prototype." It is the most productive distraction of all time.
Experience
Education
Recommendations received
1 person has recommended Trevor
Join now to viewView Trevor’s full profile
-
See who you know in common
-
Get introduced
-
Contact Trevor directly
Other similar profiles
Explore more posts
-
Towards Data Science
646K followers
No A/B test? No problem. Learn how Regression Discontinuity Design (RDD) can uncover causal effects in observational data by exploiting sharp cutoffs. Dive into the theory and a real-world e-commerce example in Alejandro Alvarez Pérez's newest article.
21
2 Comments -
PixlData
662 followers
If your datasets are poorly labeled, you’re inviting a host of issues like noise, bias, and inconsistencies that can seriously hurt your model's accuracy and reliability when it’s out in the wild. That's why data labeling has evolved from being just a preliminary step into a vital part of engineering and operations in the AI lifecycle.
7
-
Anirban Nandi
Albertsons Companies India • 19K followers
Leadership in AI sits at the intersection of business ambition and team capability. Influencing upward requires clarity and conviction. Enabling downward requires protection, context, and trust. Balancing executive expectations while creating space for teams to build sustainably is a constant discipline, not a one-time decision. Appreciate the thoughtful conversation around this very real leadership tension Kausik Kumar. #AILeadership #AI #Analytics #TeamBuilding
24
-
Erin Davison Medeiros
Vision Insights • 629 followers
We're facing more and more questions about the use of synthetic data in market research. I'd recommend this blog post, which really resonated with me. So much of the conversation is "how closely can this replicate human data?" But there are so many other considerations researchers should be thinking about. https://lnkd.in/eSQfSTPj
31
3 Comments -
evolv Consulting
8K followers
Snowflake’s Snowpipe Streaming just got a major upgrade, and we’ve broken it all down for you. From blazing-fast ingestion speeds to seamless SDK integration and in-flight transformations, this is a game-changer for modern data pipelines. 🔍 Learn how your organization can move beyond batch processing and embrace true real-time analytics in this blog post by Chris Schneider here: https://lnkd.in/gpFFqY7f #DataEngineering #Snowflake #RealTimeAnalytics #evolvConsulting #SnowpipeStreaming
44
-
Brewster Consulting Group
886 followers
Every great dashboard, forecast, or AI model starts with one thing: clean, consistent data. When data lives in different formats, with unclear timestamps or undefined update cycles, it becomes nearly impossible to act with confidence. Here's why standardizing data quality matters more than you might think.
-
Martechvibe
16K followers
Marketing tech is moving fast. Keep up daily. 1. C5i Unveils Marketing Data Cloud with Databricks “Marketing Data Cloud combines C5i's data, AI, and marketing domain expertise with Databricks' and scalability to drive precision and impact," said Ashwin Mittal, Executive Chairman of C5i. 2. LinkedIn Expands Video Ads with Creators, Publishers “Advertisers are incredibly interested in connecting with people who make decisions, particularly in the business-to-business marketplaces,” said Matthew Derella, LinkedIn’s VP of Marketing Solutions. 3. SheerID Unveils New Features for ADP “Our new capabilities provide marketing teams with deeper ways to engage with their customers while making identity verification faster and more secure than ever," said Carter Lassy, CPO of SheerID. 4. Spectrum Reach Acquires ShowSeeker “In a fragmented media landscape, the integrated solution will streamline planning and execution to save agencies valuable time,” said Rob Klippel, SVP, Product, Technology & Operations for Spectrum Reach. For more details, visit: https://lnkd.in/dyD-ifrr
9
-
Josue “Josh” Bogran
zeb • 29K followers
It is hard to understand Fabric's long-term strategy. On one hand, it was smart to build it around PBI, the leading BI platform. On the other hand, the key to Power BI's success in dethroning Tableau was its' extremely affordable licensing. Competitive licensing is not an element that Fabric's always-on pricing model can boast of at current rates, especially when the likes of Databricks, Snowflake, and other rising platforms are around. Perhaps Microsoft will be content with Fabric always being the 3rd/4th best option?
39
32 Comments -
Kevin Cheung
Snowflake • 126 followers
Lately I’ve been jumping between a few AI and data-intelligence projects at Snowflake, and one thing keeps hitting me over and over again: the hardest part of AI has very little to do with the model itself. Models are cool. They look great in slides and polished demos. But the second you plug them into real workflows, real products, and real customers… things get interesting really fast. Here are a few things I keep running into: Data looks clean until the moment you actually rely on it Every team has its own idea of how something “should work” A perfect solution on paper turns into something completely different in production Integrations sound easy, right up until you start doing them for real And my personal favorite: “We’ll fix that later,” which usually translates to “we’ll rebuild this twice” What’s funny is that these challenges barely change from company to company. Whether it was Snowflake, ServiceNow, Cisco, or even earlier in my research days, the pattern is pretty much identical: AI only becomes useful when teams communicate well and work through the messy parts together. It’s not glamorous. It’s not magic. It’s just alignment, transparency, and adjusting when reality doesn’t match the plan. And honestly, that’s what I like about this field. The tech is fun, but the real progress comes from people actually building things together. Just wanted to jot this down before I forget. Curious what others are seeing in your teams lately. For you, what’s been harder: the model or the people part? By the way, here’s a video that showed up in my feed and fits this topic pretty well 👇 https://lnkd.in/g3wTuzb6
2
-
Unravel Data
8K followers
Curious how your Databricks data estate is really performing? Download a free sample of Unravel's Databricks Health Data Estate Report and see the kind of deep insights you can unlock: 📈 Performance insights to speed up jobs and workflows 📈 Productivity boosts with top improvement areas—no log diving required 📈 Savings projections for clusters and pipelines 📈 SLA attainment metrics to reduce pipeline delays 📈 Job health visibility to fix frequent failures fast Start uncovering hidden opportunities for efficiency: https://lnkd.in/gJ7qu4Nu #Databricks #CloudFinOps #DataObservability #PerformanceTuning #DataEfficiency #UnravelData
5
Explore top content on LinkedIn
Find curated posts and insights for relevant topics all in one place.
View top content