Meeting Title: BF <> Default: Data Catchup Date: 2025-07-17 Meeting participants: read.ai meeting notes, Uttam Kumaran, Scratchpad Notetaker, Amber Lin, Caitlyn Vaughn, Victor Papyshev
WEBVTT
1 00:02:34.300 ⇒ 00:02:35.480 Uttam Kumaran: Hello!
2 00:02:40.420 ⇒ 00:02:41.450 Amber Lin: Hello!
3 00:02:42.358 ⇒ 00:02:45.590 Amber Lin: I see there are no takers.
4 00:02:46.370 ⇒ 00:02:49.029 Uttam Kumaran: Yeah, these are mere me and all my friends.
5 00:02:51.553 ⇒ 00:02:53.220 Uttam Kumaran: You know, my AI friends.
6 00:02:53.870 ⇒ 00:02:57.770 Amber Lin: It’s not far from their reality.
7 00:02:58.290 ⇒ 00:03:04.840 Amber Lin: I put it. I put a time on Ryan’s calendar. He hasn’t responded yet, so I don’t know if he’s okay with that time.
8 00:03:07.090 ⇒ 00:03:13.100 Uttam Kumaran: Today I’m gonna get today, we’ll get access to everything. So I’ll start. We’ll start putting some stuff in front of him.
9 00:03:14.220 ⇒ 00:03:17.040 Uttam Kumaran: and he’ll be like, wow! We have to beat.
10 00:03:17.750 ⇒ 00:03:18.660 Amber Lin: Okay.
11 00:03:18.820 ⇒ 00:03:19.550 Uttam Kumaran: Okay.
12 00:03:19.680 ⇒ 00:03:20.880 Amber Lin: Don’t do that.
13 00:03:39.980 ⇒ 00:03:42.790 Uttam Kumaran: Crazy week! Oh, my God! See!
14 00:03:42.790 ⇒ 00:03:44.449 Amber Lin: What’s what about it?
15 00:03:44.610 ⇒ 00:03:46.870 Uttam Kumaran: Just a lot of like.
16 00:03:47.670 ⇒ 00:03:51.670 Uttam Kumaran: It’s good, and it’s good. And and but like
17 00:03:52.400 ⇒ 00:03:55.110 Uttam Kumaran: we’ve we’ve been doing better in sales.
18 00:03:55.580 ⇒ 00:04:00.640 Uttam Kumaran: A lot of what we’ve invested in the past 2 months is starting to work just such a shame because, like.
19 00:04:01.100 ⇒ 00:04:07.389 Uttam Kumaran: we are right about a lot of the bets we’re taking, like the stuff we’re doing on Linkedin, the outbound campaigns.
20 00:04:07.630 ⇒ 00:04:14.240 Uttam Kumaran: the marketing stuff especially. But it, like all is hitting like right now. And so
21 00:04:14.610 ⇒ 00:04:16.899 Uttam Kumaran: if we sign 5 new clients.
22 00:04:18.510 ⇒ 00:04:23.689 Amber Lin: We can’t have of it, like every lot of stuff breaks.
23 00:04:24.740 ⇒ 00:04:25.954 Uttam Kumaran: So I’m like,
24 00:04:27.850 ⇒ 00:04:29.259 Uttam Kumaran: Figuring that out. Really.
25 00:04:29.670 ⇒ 00:04:33.990 Amber Lin: I see what is most I mean.
26 00:04:33.990 ⇒ 00:04:35.190 Uttam Kumaran: The Pm.
27 00:04:35.700 ⇒ 00:04:36.910 Amber Lin: Okay. It’s valid.
28 00:04:36.910 ⇒ 00:04:37.290 Uttam Kumaran: One.
29 00:04:37.660 ⇒ 00:04:38.760 Amber Lin: Valid.
30 00:04:38.760 ⇒ 00:04:44.599 Uttam Kumaran: Which I’m getting good hits back on my account for people. So I’m gonna start meeting people. I’m like.
31 00:04:49.740 ⇒ 00:04:54.760 Uttam Kumaran: I’m like trying to make light offers.
32 00:04:56.039 ⇒ 00:05:02.519 Uttam Kumaran: But that would solve a lot of problems. And then the next is we have to go for like, there’s another solutions. Architect, type, person like.
33 00:05:03.560 ⇒ 00:05:05.859 Uttam Kumaran: Like a mere Robert level tech person.
34 00:05:08.680 ⇒ 00:05:13.059 Uttam Kumaran: And then every other role we need. I don’t know. I don’t know.
35 00:05:14.410 ⇒ 00:05:20.119 Amber Lin: Okay. I mean, their note takers are still here. I don’t know when they’re gonna be here.
36 00:05:20.660 ⇒ 00:05:23.300 Uttam Kumaran: Give it another few minutes, and then I I’ll ping. Okay.
37 00:05:23.300 ⇒ 00:05:24.000 Amber Lin: Okay.
38 00:05:25.940 ⇒ 00:05:28.949 Uttam Kumaran: I ran out of milk, so I have to do Americano.
39 00:05:29.160 ⇒ 00:05:30.646 Amber Lin: Oh no!
40 00:05:31.730 ⇒ 00:05:34.139 Uttam Kumaran: Yeah, I don’t wanna do almond milk. I don’t wanna.
41 00:05:34.140 ⇒ 00:05:45.519 Amber Lin: I. I was at Hannah’s place yesterday, and they only had almond milk, and I was like no, I never add sugar to my coffee. But say no, Hannah, I need sugar. I cannot deal with almond milk.
42 00:05:45.520 ⇒ 00:05:50.479 Uttam Kumaran: I used to, you know. I used to be big alt milk. I was doing oat milk for like a year, and then.
43 00:05:50.480 ⇒ 00:05:53.240 Amber Lin: Oh, it’s good, but all of it has no flavor.
44 00:05:53.820 ⇒ 00:05:57.929 Uttam Kumaran: Yeah, you need to get the barista blend, cause they’d it’s like more dense. But like.
45 00:05:58.670 ⇒ 00:05:59.769 Uttam Kumaran: A little bit creamy.
46 00:05:59.770 ⇒ 00:06:00.760 Amber Lin: Oh!
47 00:06:00.760 ⇒ 00:06:01.289 Uttam Kumaran: But
48 00:06:01.970 ⇒ 00:06:06.820 Uttam Kumaran: Now I’m back to 2%. Where do 2% at the house now.
49 00:06:06.820 ⇒ 00:06:07.640 Amber Lin: Okay.
50 00:06:07.640 ⇒ 00:06:09.060 Uttam Kumaran: I want to do whole milk
51 00:06:09.250 ⇒ 00:06:11.189 Uttam Kumaran: more healthy to do 2%.
52 00:06:11.910 ⇒ 00:06:13.040 Amber Lin: Valid.
53 00:06:13.150 ⇒ 00:06:16.579 Uttam Kumaran: It’s mostly whole foods in the fridge, so it not a lot of processed stuff.
54 00:06:16.580 ⇒ 00:06:18.709 Amber Lin: Yeah, I know your fridge.
55 00:06:18.710 ⇒ 00:06:23.729 Uttam Kumaran: Yes, you do the fridge. Well, it’s a lot dude. There’s way more veggies now, because I’ve been juicing.
56 00:06:23.730 ⇒ 00:06:27.540 Uttam Kumaran: Oh, been making a lot of carrot juice, celery juice.
57 00:06:27.540 ⇒ 00:06:28.610 Uttam Kumaran: Okay.
58 00:06:29.170 ⇒ 00:06:30.410 Amber Lin: Okay.
59 00:06:30.410 ⇒ 00:06:33.820 Uttam Kumaran: Just so I could get my words per minute up. That’s the only reason.
60 00:06:34.380 ⇒ 00:06:36.970 Uttam Kumaran: That’s where it directly goes to my words per minute.
61 00:06:37.100 ⇒ 00:06:38.370 Amber Lin: Hmm, hmm.
62 00:06:43.780 ⇒ 00:06:46.890 Amber Lin: okay.
63 00:06:49.930 ⇒ 00:06:53.139 Amber Lin: yeah, I’m I’m just making ABC slides.
64 00:06:55.020 ⇒ 00:06:56.669 Amber Lin: I got. I got the urban.
65 00:06:56.670 ⇒ 00:06:57.260 Uttam Kumaran: That’ll be great.
66 00:06:57.260 ⇒ 00:07:00.210 Amber Lin: Slides! Oh, hello! Hi!
67 00:07:00.210 ⇒ 00:07:01.900 Caitlyn Vaughn: Hey? How’s it going.
68 00:07:02.781 ⇒ 00:07:05.550 Amber Lin: Is stuck. Oh, there we go!
69 00:07:05.550 ⇒ 00:07:08.210 Uttam Kumaran: Oh, sorry! I thought I thought you were stuck.
70 00:07:08.920 ⇒ 00:07:21.953 Caitlyn Vaughn: Oh, my, gosh, I had to like, I just got a new computer. And I always forget that it’s like, re download everything until like right in the moment when you need it. And you’re just like, Oh, I don’t, sigma 5 min.
71 00:07:22.750 ⇒ 00:07:24.110 Caitlyn Vaughn: How are you guys.
72 00:07:24.110 ⇒ 00:07:25.030 Uttam Kumaran: Good.
73 00:07:25.590 ⇒ 00:07:26.800 Uttam Kumaran: How are you guys.
74 00:07:27.670 ⇒ 00:07:33.069 Caitlyn Vaughn: Good. We’re going through the the weeds. We’re professional vibe coders now.
75 00:07:33.470 ⇒ 00:07:34.519 Uttam Kumaran: Yeah, me, too.
76 00:07:35.160 ⇒ 00:07:35.680 Caitlyn Vaughn: Really.
77 00:07:35.680 ⇒ 00:07:40.239 Uttam Kumaran: Me, too. Yeah. So we we built like, our, we’re building internal tools for ourselves.
78 00:07:41.850 ⇒ 00:07:45.559 Uttam Kumaran: Because none of the software. I don’t like any of the AI software
79 00:07:45.890 ⇒ 00:07:51.120 Uttam Kumaran: like for like stuff that we do, which is a client related stuff. So we build a lot of stuff internally, like
80 00:07:51.230 ⇒ 00:07:57.740 Uttam Kumaran: client related hubs and like agents for clients to help us like service them, and, like everything is.
81 00:07:58.030 ⇒ 00:08:00.980 Uttam Kumaran: we have some uis, and so all that is vibe coded, which is great.
82 00:08:00.980 ⇒ 00:08:01.770 Caitlyn Vaughn: Wait, really.
83 00:08:01.770 ⇒ 00:08:06.769 Uttam Kumaran: Yeah, cause the AI folks on my team aren’t front end folks, but they like.
84 00:08:06.770 ⇒ 00:08:07.390 Caitlyn Vaughn: Right.
85 00:08:07.390 ⇒ 00:08:11.151 Uttam Kumaran: They can vibe code front end, like they know some light typescript stuff. But
86 00:08:12.080 ⇒ 00:08:13.729 Uttam Kumaran: yeah, for the most part, like.
87 00:08:14.670 ⇒ 00:08:17.619 Uttam Kumaran: yeah, they’re just 5, coding the whole thing through cloud code.
88 00:08:18.550 ⇒ 00:08:19.019 Caitlyn Vaughn: How’s it going?
89 00:08:20.600 ⇒ 00:08:24.539 Caitlyn Vaughn: That’s the vibe. Now I know we’re we decided to like.
90 00:08:24.910 ⇒ 00:08:29.390 Caitlyn Vaughn: in some sense, kind of like, remove design, just like, V, 0, everything.
91 00:08:29.390 ⇒ 00:08:31.260 Caitlyn Vaughn: That’s what we’re doing, too. Like.
92 00:08:31.870 ⇒ 00:08:38.260 Uttam Kumaran: Well, cause it’s tough, because I used to be a product manager. So you have to sort of get this everything designed. But now that you can prototype
93 00:08:38.419 ⇒ 00:08:43.399 Uttam Kumaran: so much faster, and it like looks like half decent. So you can kind of get it out.
94 00:08:44.049 ⇒ 00:08:47.199 Uttam Kumaran: And designers will be in some backlog, for, like.
95 00:08:47.549 ⇒ 00:08:49.219 Caitlyn Vaughn: A little bit longer, you know.
96 00:08:49.430 ⇒ 00:08:51.000 Caitlyn Vaughn: Yeah, totally.
97 00:08:52.450 ⇒ 00:08:53.230 Uttam Kumaran: So.
98 00:08:53.230 ⇒ 00:09:01.329 Victor Papyshev: Sounds like sounds like the origin story of many a startup like built this internally. Because nothing existed. Therefore we we.
99 00:09:01.330 ⇒ 00:09:06.609 Uttam Kumaran: I don’t wanna be in product. Dude product is so hard. Product is hard. This is just hard enough.
100 00:09:08.930 ⇒ 00:09:12.889 Caitlyn Vaughn: One thing I don’t know of, like intro
101 00:09:12.890 ⇒ 00:09:15.000 Caitlyn Vaughn: product management right now, just like.
102 00:09:15.000 ⇒ 00:09:15.420 Uttam Kumaran: Yeah.
103 00:09:15.420 ⇒ 00:09:17.699 Caitlyn Vaughn: Downloading everything, and it’s a lot.
104 00:09:17.700 ⇒ 00:09:20.910 Uttam Kumaran: Yeah, a brain forged startup incubator, just like, yeah.
105 00:09:20.910 ⇒ 00:09:24.669 Victor Papyshev: This is what he sweaty founder like. Here’s a free idea. Here’s free game.
106 00:09:24.830 ⇒ 00:09:52.519 Uttam Kumaran: Well, I just want to be like in consult in it, consulting. It’s so far behind, like for the amount of tech work that these companies do for people? Their internal tech is horrible. But I was like, Look, I want our Pm’s. And everybody to like have access to like meeting notes be able to generate client summaries faster, like find code, faster, and like. We have helpful agents to generate linear tickets from transcripts which is literally like half of project, management.
107 00:09:53.040 ⇒ 00:09:53.360 Caitlyn Vaughn: Maybe.
108 00:09:53.360 ⇒ 00:09:56.309 Uttam Kumaran: And that stuff like that, you know, like easy stuff.
109 00:09:57.082 ⇒ 00:10:01.170 Uttam Kumaran: It’s sort of our crack team. I’m the project manager for our AI team.
110 00:10:01.310 ⇒ 00:10:05.379 Uttam Kumaran: but we all. They also work on clients. So for whatever spare time they have, I get to
111 00:10:06.480 ⇒ 00:10:07.440 Uttam Kumaran: mess around.
112 00:10:07.920 ⇒ 00:10:09.550 Victor Papyshev: Yeah, Jesus.
113 00:10:09.800 ⇒ 00:10:15.350 Victor Papyshev: Oh, give, give some ex founders some skin in the game, and just have them run with run, run with it, productizing it.
114 00:10:15.350 ⇒ 00:10:16.095 Uttam Kumaran: Yes.
115 00:10:16.840 ⇒ 00:10:17.709 Victor Papyshev: See what happens.
116 00:10:17.939 ⇒ 00:10:22.530 Uttam Kumaran: Okay, how can I? How can I help us? So tell me where where I know where we left off?
117 00:10:23.390 ⇒ 00:10:27.420 Uttam Kumaran: Talking about click house and
118 00:10:27.550 ⇒ 00:10:31.789 Uttam Kumaran: sort of the data model. I think kind of 2 things I want to try to get through today is one.
119 00:10:31.910 ⇒ 00:10:48.749 Uttam Kumaran: yeah, talk through anything that I can help with on that side of the world. I also would love to get us access to amplitude, post hog, and anything like on the product analytics side caitlin so that we can start cranking on some stuff for Ryan.
120 00:10:50.950 ⇒ 00:10:52.020 Uttam Kumaran: And
121 00:10:52.200 ⇒ 00:11:12.230 Uttam Kumaran: that’s probably the main 2 things just wanted to get through today, and then you have amber on the call. Sorry. Totally missed doing the intro. Sorry amber. We’re just in a bunch of meetings together today. So amber is a project manager on our team. She’s based in la she runs project management for our some of our AI clients and data clients as well. So
122 00:11:12.660 ⇒ 00:11:17.459 Uttam Kumaran: yeah. So she’ll be here kind of helping a lot on the product. Analytics work stream.
123 00:11:17.710 ⇒ 00:11:32.990 Amber Lin: Nice to meet you guys. I’ll probably mostly be working with Ryan. Which, talking about that, I put something on his calendar for tomorrow. Haven’t heard back. If you guys ever run into him, would you mind asking him if he is okay with that meeting time?
124 00:11:34.100 ⇒ 00:11:35.870 Caitlyn Vaughn: Yes, absolutely love.
125 00:11:35.870 ⇒ 00:11:36.300 Amber Lin: Okay.
126 00:11:36.300 ⇒ 00:11:36.789 Caitlyn Vaughn: Okay. I’m right.
127 00:11:36.790 ⇒ 00:11:44.219 Uttam Kumaran: I also know if I could. If I get into amplitude and I start sending something, I think it’ll it’ll motivate him to join that meeting. So that’s what.
128 00:11:44.220 ⇒ 00:11:44.800 Caitlyn Vaughn: Totally.
129 00:11:44.800 ⇒ 00:11:46.160 Uttam Kumaran: What I was thinking about.
130 00:11:47.110 ⇒ 00:11:53.220 Caitlyn Vaughn: Okay, yeah. I pinged him yesterday, or maybe the day before, about like owning the
131 00:11:53.490 ⇒ 00:11:55.589 Caitlyn Vaughn: in product analytics thing with you guys.
132 00:11:55.590 ⇒ 00:12:00.900 Caitlyn Vaughn: he gave us a bunch he gave us already a list of stuff to do. I just want to intro him to amber and then get like.
133 00:12:00.900 ⇒ 00:12:01.409 Amber Lin: A couple of.
134 00:12:01.410 ⇒ 00:12:03.580 Uttam Kumaran: Feedback on like a couple of things. So.
135 00:12:04.640 ⇒ 00:12:07.439 Caitlyn Vaughn: Yeah, I can bully him for you a little bit.
136 00:12:08.770 ⇒ 00:12:09.740 Uttam Kumaran: Thank you.
137 00:12:09.740 ⇒ 00:12:10.993 Amber Lin: Thank you.
138 00:12:13.780 ⇒ 00:12:14.600 Victor Papyshev: Okay. Awesome.
139 00:12:15.704 ⇒ 00:12:16.399 Caitlyn Vaughn: Yes.
140 00:12:18.790 ⇒ 00:12:39.270 Victor Papyshev: Cool. Yeah, we can get into yeah, where we left off, you know. Click house, we made a lot of like much more tangible progress on sort of the some. The things we discussed conceptually last time. On sort of our our conception of how the data flows play out and everything, and we’ve been. We’ve been able to test them at least to, I’d say a decent degree. I think there’s still some
141 00:12:39.270 ⇒ 00:13:03.709 Victor Papyshev: on tested assumptions. I actually have some pointed questions. That’s why I thought the timing was, you know, approaching good for us to connect on kind of where we’re at, like the questions we have right now. I mean, we just got off a product call kind of facing the same questions. I mean, Caitlin. I don’t know. I’m happy to get in the weeds. Maybe, before I get super in the weeds. Is there any way maybe you can present or share like your take on where we’re at of course they all have, like, very. I’ll have pointed technical questions
142 00:13:03.710 ⇒ 00:13:10.669 Victor Papyshev: and like a walkthrough. But maybe just to set the stage. You want to kind of share how you’re seeing stuff right now on this project.
143 00:13:11.348 ⇒ 00:13:14.729 Caitlyn Vaughn: Do you want me to show my V 0? Or do you want me to show figma.
144 00:13:16.148 ⇒ 00:13:21.710 Victor Papyshev: The thing like data. Pipeline. No, I’ll handle the data. Pipeline. I figured. V, 0 is probably fine.
145 00:13:22.510 ⇒ 00:13:26.409 Victor Papyshev: However, you want to just like share where we’re what we’re thinking about. I guess.
146 00:13:26.550 ⇒ 00:13:27.530 Caitlyn Vaughn: Yes,
147 00:13:28.640 ⇒ 00:13:35.010 Caitlyn Vaughn: And now I need to allow Zoom to have access to my screen.
148 00:13:35.840 ⇒ 00:13:37.570 Caitlyn Vaughn: Give me one second.
149 00:13:39.520 ⇒ 00:13:40.250 Victor Papyshev: Classic.
150 00:13:41.660 ⇒ 00:13:44.770 Uttam Kumaran: Victor, you’re going with Click House. We have a snowflake hat on.
151 00:13:45.120 ⇒ 00:13:47.860 Victor Papyshev: I know I know cheating on them.
152 00:13:48.910 ⇒ 00:13:55.360 Victor Papyshev: I found the the Snowflake hat was just at our last office, just sitting there. I’m I’m guessing it was from some events, so I just took it.
153 00:13:55.360 ⇒ 00:13:56.520 Uttam Kumaran: So.
154 00:13:56.520 ⇒ 00:13:59.230 Victor Papyshev: Some free, some free swag laying around.
155 00:13:59.430 ⇒ 00:14:01.979 Uttam Kumaran: I have some snowflake stuff around here, too. Yeah.
156 00:14:03.370 ⇒ 00:14:04.080 Victor Papyshev: Nice.
157 00:14:05.040 ⇒ 00:14:06.140 Victor Papyshev: See?
158 00:14:23.430 ⇒ 00:14:26.219 Victor Papyshev: See? I guess Caitlin’s restarting.
159 00:14:26.220 ⇒ 00:14:27.180 Uttam Kumaran: Start, yeah.
160 00:14:27.180 ⇒ 00:14:27.790 Victor Papyshev: Yeah.
161 00:14:40.500 ⇒ 00:14:41.079 Caitlyn Vaughn: Hey!
162 00:14:41.890 ⇒ 00:14:42.790 Victor Papyshev: Welcome back!
163 00:14:42.990 ⇒ 00:14:44.700 Caitlyn Vaughn: Thank you so much.
164 00:14:44.890 ⇒ 00:14:50.279 Victor Papyshev: Yeah, you want to take 5 min, maybe just catch us up on the concept where, like how the concept is developed and.
165 00:14:50.780 ⇒ 00:14:51.510 Caitlyn Vaughn: Yes, he is.
166 00:14:51.510 ⇒ 00:14:52.700 Victor Papyshev: Some of the prototypes.
167 00:14:52.910 ⇒ 00:14:54.420 Uttam Kumaran: Can you guys see my screen here?
168 00:14:54.420 ⇒ 00:14:55.010 Uttam Kumaran: Yes.
169 00:14:55.160 ⇒ 00:15:05.719 Caitlyn Vaughn: Okay, so this isn’t included. And like, just kind of conceptually allowing us to see like what we’re doing and how this architecture is like translating into
170 00:15:07.350 ⇒ 00:15:18.829 Caitlyn Vaughn: the actual product. So all I’ve worked on in here is data model, which is what we’re calling it. Basically, the 1st thing that people would do is add in the sources that they want to pull their data from
171 00:15:19.233 ⇒ 00:15:38.659 Caitlyn Vaughn: so you can add in source. Let’s say clear bit. You know you can either use a default credit or put in your own Api key, and then there will be some kind of field mapping inside of here. We’ll where we’ll give our kind of assumption for how you want to map things. It’s not that difficult, like 1st name and default should be 1st name and clear bit. Right?
172 00:15:38.660 ⇒ 00:15:49.189 Caitlyn Vaughn: You approve that save, and then it adds as a source, and then you can go ahead and map those to your destinations which essentially for us are just our default objects.
173 00:15:49.280 ⇒ 00:15:59.560 Caitlyn Vaughn: So we have 5 objects, but 4 of them require some kind of like data entry, while the 5th one is like user, which doesn’t really require any kind of like actual data mapping. It’s just.
174 00:15:59.560 ⇒ 00:16:02.349 Uttam Kumaran: User is, the user is the is the person like using that.
175 00:16:02.350 ⇒ 00:16:07.870 Caitlyn Vaughn: Yeah. So if we look at person, you should be able to come in here and see like.
176 00:16:08.830 ⇒ 00:16:17.879 Caitlyn Vaughn: based on the standard fields plus custom fields that are enabled in your account, like what providers are connected, and we’ll have some kind of configuration in here. This is.
177 00:16:18.260 ⇒ 00:16:18.900 Uttam Kumaran: Yeah.
178 00:16:19.180 ⇒ 00:16:29.459 Victor Papyshev: I can share. I can share some of the configuration. I think the mapping stuff. I can share my screen later. After we clear like this. I’ll share the schemas first, st and like the the actual data pipeline.
179 00:16:29.460 ⇒ 00:16:29.960 Victor Papyshev: I understand.
180 00:16:29.960 ⇒ 00:16:32.870 Victor Papyshev: I think that’ll be a good time to talk more on that. Just call.
181 00:16:33.750 ⇒ 00:16:34.550 Caitlyn Vaughn: Yes.
182 00:16:35.225 ⇒ 00:16:48.864 Caitlyn Vaughn: yes. And then here’s our like data waterfall for our enrichment. Providers you’ll have, the ability to like. Come in, create new waterfalls add in providers,
183 00:16:49.500 ⇒ 00:16:57.179 Caitlyn Vaughn: move like the prioritization of waterfalls up or down, depending on what you want. I’ll give you your cost latency.
184 00:16:57.790 ⇒ 00:16:59.450 Caitlyn Vaughn: and then
185 00:16:59.600 ⇒ 00:17:21.050 Caitlyn Vaughn: some like logs and performance metrics overall, and then that all feeds into like the core data model. So basically, we are taking the event based data approach. So everything in our app is going to be considered an event, and some some kind of like raw payload of the event, whether that’s like a mouse click to a form, fill to
186 00:17:21.050 ⇒ 00:17:37.360 Caitlyn Vaughn: a user behavior, to an enrichment like literally, anything will be considered an event, and that will get passed into like a Kafka that will take those event fields and basically parse them into the correlating objects right to update based on this logic.
187 00:17:37.410 ⇒ 00:17:44.370 Caitlyn Vaughn: So I don’t know if we’re going to have it like these exact data sources. But roughly, we can imagine, like.
188 00:17:44.540 ⇒ 00:18:03.930 Caitlyn Vaughn: somebody might want to prioritize 1st party data. So like, when somebody submits a few, a form on default. We want the data fields from that to map to their like instance, to update all fields that have 1st name last name email kind of a thing. But maybe for
189 00:18:04.210 ⇒ 00:18:05.830 Caitlyn Vaughn: let’s take
190 00:18:06.640 ⇒ 00:18:09.650 Uttam Kumaran: This is another object, or, like, technically, okay.
191 00:18:09.650 ⇒ 00:18:13.719 Caitlyn Vaughn: Yeah, yeah, sources, object and destination, destination. Object.
192 00:18:13.720 ⇒ 00:18:14.230 Uttam Kumaran: Okay.
193 00:18:15.096 ⇒ 00:18:36.100 Caitlyn Vaughn: But let’s say, for for company, for company. Object something that people typically are not truthful about is like employee, count or annual revenue right? So you could come in here and actually configure this from a field level which would override the object level data prioritization.
194 00:18:36.380 ⇒ 00:18:40.869 Uttam Kumaran: So let me just ask one question about. So so the view we’re looking at right now is.
195 00:18:41.070 ⇒ 00:18:42.360 Uttam Kumaran: is this is
196 00:18:43.830 ⇒ 00:18:49.599 Uttam Kumaran: so like we have. We have all the different options we also have, like a waterfall, which is a configuration of
197 00:18:50.550 ⇒ 00:18:52.919 Uttam Kumaran: like the ordering. And that’s.
198 00:18:52.920 ⇒ 00:18:53.410 Caitlyn Vaughn: It’s a water.
199 00:18:53.410 ⇒ 00:18:54.489 Uttam Kumaran: Call, object, okay?
200 00:18:54.980 ⇒ 00:18:55.470 Caitlyn Vaughn: Yeah.
201 00:18:55.470 ⇒ 00:19:01.759 Uttam Kumaran: So the the example you just gave where you’re like, okay, people aren’t truthful about annual revenue.
202 00:19:01.960 ⇒ 00:19:08.980 Uttam Kumaran: That is, the field level as part of like a destination? Or is that like a def default across any?
203 00:19:09.400 ⇒ 00:19:10.760 Uttam Kumaran: I guess you could talk about
204 00:19:11.370 ⇒ 00:19:13.979 Uttam Kumaran: that. Yeah, like the field concept.
205 00:19:14.691 ⇒ 00:19:28.739 Caitlyn Vaughn: So every object on our 5 established objects has standard fields. Right those are the fields that we’ve decided on every single default, instance will be populated and.
206 00:19:28.740 ⇒ 00:19:29.130 Uttam Kumaran: Great.
207 00:19:29.130 ⇒ 00:19:40.550 Caitlyn Vaughn: Well, you know you can’t delete them. You can’t change them. Those are the standard fields. You can add your own custom fields on top of that as many as you want, but these standard fields will persist across all instances essentially.
208 00:19:40.550 ⇒ 00:19:45.979 Victor Papyshev: We’re looking at company here right? Because if you scroll here, if you scroll up, you have like a picker, yeah, like a tab.
209 00:19:45.980 ⇒ 00:20:03.969 Caitlyn Vaughn: Person, company, opportunity. Yeah. So each like, each object has its own fields. Right? So for person, first, st name, last name are, gonna be unique to person, right versus company like you wouldn’t have 1st name last name on company. Opportunity. It’s gonna have its own.
210 00:20:04.330 ⇒ 00:20:04.970 Uttam Kumaran: Yeah, yeah, yeah.
211 00:20:04.970 ⇒ 00:20:06.829 Caitlyn Vaughn: Fields, and then event.
212 00:20:07.770 ⇒ 00:20:14.269 Uttam Kumaran: So you’re saying for the default field for the company object you’re now doing
213 00:20:14.460 ⇒ 00:20:17.649 Uttam Kumaran: the water, so is it a waterfall to field?
214 00:20:18.020 ⇒ 00:20:22.410 Uttam Kumaran: Is that, like the is that the mapping of those objects, because it’s.
215 00:20:22.410 ⇒ 00:20:22.790 Caitlyn Vaughn: Yeah.
216 00:20:22.790 ⇒ 00:20:27.360 Uttam Kumaran: Last, like a waterfall, is the sources, but then the output
217 00:20:27.800 ⇒ 00:20:29.479 Uttam Kumaran: is it like many to many.
218 00:20:30.000 ⇒ 00:20:34.030 Uttam Kumaran: for, like a 1, 1 waterfall object? Or is the like. I guess I’m trying to like, just
219 00:20:34.240 ⇒ 00:20:37.950 Uttam Kumaran: I get that one field can be pulled from multiple.
220 00:20:39.390 ⇒ 00:20:45.199 Uttam Kumaran: I guess. Yeah, sorry. I’m just kind of thinking through this whole thing. So the data waterfall is one source itself. And then you have these other 3.
221 00:20:46.270 ⇒ 00:20:47.070 Victor Papyshev: Okay, yeah.
222 00:20:47.370 ⇒ 00:21:08.820 Victor Papyshev: yeah. I think I mean just now on the call we were just on. I I said, like, maybe it makes sense for us to just start calling what we’ve been calling data waterfall. Just call it enrichment waterfall. I think, specifically like enrichment. Waterfall ordering is a thing that you manage, because you know, there are costs associated, and it also is going to be the largest. This is, gonna be where the majority of your sources probably are like we’re going to be hopefully offering, you know.
223 00:21:08.820 ⇒ 00:21:20.020 Victor Papyshev: dozens or hundreds of enrichment providers so managing those orders like here would be a lot, whereas it’s kind of its own job to be done to manage like how you want your enrichment providers to play out.
224 00:21:20.020 ⇒ 00:21:33.360 Victor Papyshev: But then, when it comes to like well, I mean what I’ve been calling like priority order when it comes to resolving field values for your for the destination objects. I’ve also been calling them that destination objects like person and company that’s kind of its own thing, and you can do override.
225 00:21:33.360 ⇒ 00:21:36.320 Uttam Kumaran: Actually cause this is this itself is a waterfall, right?
226 00:21:36.910 ⇒ 00:21:38.469 Victor Papyshev: Yeah, you could call it that. Yeah.
227 00:21:40.140 ⇒ 00:21:41.240 Uttam Kumaran: Yeah, okay.
228 00:21:41.670 ⇒ 00:21:42.500 Caitlyn Vaughn: Yeah, you’re right?
229 00:21:42.500 ⇒ 00:21:43.220 Victor Papyshev: That makes sense.
230 00:21:43.220 ⇒ 00:21:50.220 Victor Papyshev: It is. It is. Yeah, I mean, I’ve been calling it priority in my ui is just to not confuse it with like enrichment. Waterfall. But yes, this is a waterfall essentially.
231 00:21:50.220 ⇒ 00:21:55.239 Uttam Kumaran: So that’s what I think is like, this would be the enrichment waterfall. And then this is sort of the
232 00:21:56.120 ⇒ 00:21:58.903 Uttam Kumaran: yeah. It could be the data model waterfall.
233 00:22:00.860 ⇒ 00:22:02.080 Victor Papyshev: Yeah, exactly. Yeah.
234 00:22:02.080 ⇒ 00:22:03.799 Caitlyn Vaughn: You’re thinking about it the right way, Tom.
235 00:22:04.190 ⇒ 00:22:11.820 Victor Papyshev: And we have team to back this up like I can kind of like, once we get into the tables and stuff, I think we’ll kind of see how that plays out to add some clarity.
236 00:22:11.820 ⇒ 00:22:13.139 Uttam Kumaran: And then for one.
237 00:22:13.448 ⇒ 00:22:14.990 Uttam Kumaran: For one of these fields
238 00:22:15.120 ⇒ 00:22:24.040 Uttam Kumaran: you can pick from one of these 4 include, and the sub options within the enrichment waterfall, or you can just pick from these 4.
239 00:22:25.430 ⇒ 00:22:28.300 Victor Papyshev: Think I think what probably not like.
240 00:22:28.300 ⇒ 00:22:28.690 Uttam Kumaran: Okay. Okay.
241 00:22:28.690 ⇒ 00:22:37.630 Victor Papyshev: Yeah, I think my managing the enrichment order is pretty micro. Although I can see the argument to be made for that. I we might want to think that I’ll note that down as a question.
242 00:22:37.970 ⇒ 00:22:38.600 Uttam Kumaran: Okay. Okay.
243 00:22:38.600 ⇒ 00:22:57.810 Victor Papyshev: Because right now, the the override, what we’ve what we’ve been calling override, we’ve assumed those like this, call it waterfall, or these 4 in this example. Good question about how that drills into the individual enrichment providers. Because, yeah, maybe you trust Apollo more than clear bit on some data point, we’ll have to consider that.
244 00:22:59.790 ⇒ 00:23:08.169 Uttam Kumaran: Okay, this makes sense. I mean, I think that’s something you can offer later is like, you have a what you have waterfall. You have enrichment, waterfall configs and so forth.
245 00:23:08.560 ⇒ 00:23:12.929 Uttam Kumaran: and data model. You use config one versus config. 2.
246 00:23:13.180 ⇒ 00:23:17.610 Uttam Kumaran: But this is already a lot of flexibility in in what it is so far so it makes sense.
247 00:23:17.961 ⇒ 00:23:33.760 Caitlyn Vaughn: Cool. Yeah, so it’s basically like, if a you know, if a form fill comes in and yeah, you wanna you wanna update it with this, but maybe you have enrichment first, st then it would actually just use this enrichment waterfall, whichever one you chose.
248 00:23:33.970 ⇒ 00:23:34.360 Uttam Kumaran: Okay.
249 00:23:34.360 ⇒ 00:23:37.219 Caitlyn Vaughn: Right, which is its own kind of mini waterfall. But maybe.
250 00:23:37.220 ⇒ 00:23:41.239 Uttam Kumaran: Back to that one. So in enrichment waterfalls, there’s multiple here.
251 00:23:41.410 ⇒ 00:23:41.830 Caitlyn Vaughn: Yes.
252 00:23:41.830 ⇒ 00:23:43.460 Uttam Kumaran: Can you explain how
253 00:23:44.550 ⇒ 00:23:49.979 Uttam Kumaran: mult like, in which way you can use multiple? Because in the other ma, another thing, you just have
254 00:23:50.940 ⇒ 00:23:53.359 Uttam Kumaran: data data waterfall as an option?
255 00:23:53.913 ⇒ 00:23:57.149 Uttam Kumaran: Or are you able to config and select which waterfall?
256 00:23:57.270 ⇒ 00:23:58.010 Uttam Kumaran: Okay.
257 00:23:58.310 ⇒ 00:24:11.989 Caitlyn Vaughn: Yeah, you’re able to select. Because the idea here is we’re actually moving to like a much more agentic interface for workflows and for tables and everything. So agents should be able to use these waterfalls. These are basically tools for us.
258 00:24:11.990 ⇒ 00:24:31.960 Caitlyn Vaughn: Right? You could have a agent that’s gonna use an enrichment. Waterfall for form fills versus like a research waterfall. For you know, X, like, there are different use cases and different ways. You would want to prioritize the data sources. Maybe you have a person waterfall versus a company waterfall. Right? Maybe you have a technology waterfall.
259 00:24:31.960 ⇒ 00:24:32.580 Uttam Kumaran: Sure, for sure.
260 00:24:33.470 ⇒ 00:24:38.099 Uttam Kumaran: I mean similar, like in in clay. Right? We have, like you have, like tech based marketing versus account, based marketing.
261 00:24:38.240 ⇒ 00:24:38.580 Caitlyn Vaughn: Thank you.
262 00:24:38.580 ⇒ 00:24:44.250 Uttam Kumaran: Those. So basically, the workbook structure is a lot different. We’re pulling from, yeah.
263 00:24:44.250 ⇒ 00:24:44.720 Caitlyn Vaughn: Exactly.
264 00:24:45.672 ⇒ 00:25:09.839 Caitlyn Vaughn: But yeah, that’s kind of like the the core piece inside of here. You can also add in sources that are like bespoke or custom like, I use key play as the example in here. That’s a tool that we use. That’s like, not necessarily like a data source. It’s just something that aggregates data and like gives you some kind of scoring. Right? So you just pick your request type, put on your URL,
265 00:25:10.180 ⇒ 00:25:13.619 Caitlyn Vaughn: put in your key, and then.
266 00:25:14.170 ⇒ 00:25:19.560 Uttam Kumaran: This is like part of the waterfall. You can hit something to get a value back, to fill as a value.
267 00:25:20.560 ⇒ 00:25:24.060 Caitlyn Vaughn: Yeah, so this is actually different. This is not waterfall. This is.
268 00:25:24.060 ⇒ 00:25:24.550 Uttam Kumaran: Justice.
269 00:25:24.550 ⇒ 00:25:35.609 Caitlyn Vaughn: Sources that you pull data from. So it doesn’t have to be a enrichment source. It can be a Crm. It could be a 3rd party, tool, like, maybe.
270 00:25:35.610 ⇒ 00:25:38.339 Uttam Kumaran: Oh, this is like the Byo! This is like Byo.
271 00:25:38.880 ⇒ 00:25:39.830 Caitlyn Vaughn: The free way.
272 00:25:39.830 ⇒ 00:25:41.609 Victor Papyshev: Yeah, what? k, 1 is that.
273 00:25:41.610 ⇒ 00:25:42.260 Caitlyn Vaughn: Yeah, yeah.
274 00:25:42.260 ⇒ 00:25:43.879 Victor Papyshev: CIO, custom, source. Yeah.
275 00:25:44.080 ⇒ 00:25:44.430 Caitlyn Vaughn: Okay.
276 00:25:44.430 ⇒ 00:25:47.820 Uttam Kumaran: Okay. So if I so, for example, let’s say I have a 1st party
277 00:25:48.020 ⇒ 00:25:51.670 Uttam Kumaran: data set that I want to be 1st in line.
278 00:25:51.830 ⇒ 00:25:52.230 Caitlyn Vaughn: I could do.
279 00:25:52.230 ⇒ 00:25:54.009 Uttam Kumaran: Get requests where I pass in.
280 00:25:54.010 ⇒ 00:25:54.510 Caitlyn Vaughn: Yep.
281 00:25:54.510 ⇒ 00:25:58.680 Uttam Kumaran: Whatever I get that, and then I go to the enrichment sources.
282 00:25:58.990 ⇒ 00:26:00.010 Caitlyn Vaughn: Exactly.
283 00:26:00.150 ⇒ 00:26:00.929 Uttam Kumaran: Okay. Great.
284 00:26:00.930 ⇒ 00:26:07.950 Caitlyn Vaughn: Yeah, so you could add this as a source, right? An enrichment source. But it doesn’t have to be like
285 00:26:08.150 ⇒ 00:26:12.340 Caitlyn Vaughn: an enrichment data source. Specifically, you can pull it from your Crm right?
286 00:26:12.340 ⇒ 00:26:13.229 Uttam Kumaran: Makes sense. Yeah.
287 00:26:13.230 ⇒ 00:26:33.196 Caitlyn Vaughn: Okay. So when you have all of your sources and you map them, then you can establish inside of your data model. Maybe you do have that source. That is your, you know, desired source, where you want all of your data pulled from first, st which is a excel spreadsheet that you have somebody in. You know, India working on every single day. Like, Do you? Right?
288 00:26:34.074 ⇒ 00:26:35.540 Caitlyn Vaughn: So, yeah, this is kind of.
289 00:26:35.540 ⇒ 00:26:37.880 Uttam Kumaran: What is the event? Object?
290 00:26:38.520 ⇒ 00:26:39.910 Uttam Kumaran: Can you walk through? Yeah.
291 00:26:39.910 ⇒ 00:26:43.319 Victor Papyshev: I’m not sure about that one to be clear. So
292 00:26:43.500 ⇒ 00:26:46.450 Victor Papyshev: yeah. But, Caitlin, what do you think? Event is.
293 00:26:47.040 ⇒ 00:26:50.319 Caitlyn Vaughn: Yeah, I guess. Let me pull up. Can you guys still see my screen here?
294 00:26:50.320 ⇒ 00:26:50.870 Uttam Kumaran: Yeah.
295 00:26:51.320 ⇒ 00:26:58.039 Caitlyn Vaughn: Okay, so here’s our purity for core data model. When we go down, we actually worked on this quite, quite a bit ago.
296 00:26:58.260 ⇒ 00:27:02.030 Caitlyn Vaughn: So we did have event inside of here.
297 00:27:02.810 ⇒ 00:27:10.910 Caitlyn Vaughn: Source type, slack text. But possibly event could be actually, no, I think.
298 00:27:10.910 ⇒ 00:27:15.410 Uttam Kumaran: But I guess I’m wondering like, why the event gets enriched.
299 00:27:16.790 ⇒ 00:27:22.189 Uttam Kumaran: So like, yeah, if you walk me through the used case like, so you’re saying like a page view event occurs.
300 00:27:22.320 ⇒ 00:27:27.170 Uttam Kumaran: and then there is an there is an enrichment associated with that event.
301 00:27:28.310 ⇒ 00:27:29.440 Caitlyn Vaughn: Where there can be.
302 00:27:29.440 ⇒ 00:27:29.980 Caitlyn Vaughn: Yes.
303 00:27:30.380 ⇒ 00:27:35.019 Uttam Kumaran: Isn’t. But isn’t the enriched like? Won’t the event be already associated with another existing object?
304 00:27:35.020 ⇒ 00:27:35.660 Caitlyn Vaughn: Yes.
305 00:27:35.660 ⇒ 00:27:37.380 Uttam Kumaran: Existing object is enriched.
306 00:27:37.850 ⇒ 00:27:38.670 Caitlyn Vaughn: Correct.
307 00:27:38.950 ⇒ 00:27:39.600 Uttam Kumaran: Okay.
308 00:27:39.900 ⇒ 00:27:41.070 Caitlyn Vaughn: Yeah.
309 00:27:41.070 ⇒ 00:27:43.969 Uttam Kumaran: It’s gonna be associated with a person company
310 00:27:44.400 ⇒ 00:27:50.369 Uttam Kumaran: opportunity whatever. And those objects hold the yeah, hold the associations.
311 00:27:53.380 ⇒ 00:27:57.819 Caitlyn Vaughn: Yeah, Victor, what do you think? Do we have? I mean, maybe we don’t have events as like a
312 00:27:57.990 ⇒ 00:28:01.949 Caitlyn Vaughn: as like an object that feeds in data kind of similar to user.
313 00:28:03.500 ⇒ 00:28:05.940 Victor Papyshev: Yeah, I think I mean.
314 00:28:06.190 ⇒ 00:28:24.049 Victor Papyshev: not sure. I mean, it’s gonna be case by case for object destination objects. I mean, personally, I’ve been running with the clear examples just to spike out the pipeline, and, like all the concepts which is person and company specifically, which this will get in, maybe now is a good time for me to get into the the flow, just to make sure we have time to cover everything.
315 00:28:24.050 ⇒ 00:28:24.410 Uttam Kumaran: Yeah.
316 00:28:24.607 ⇒ 00:28:25.789 Victor Papyshev: If that’s okay. But I think
317 00:28:26.370 ⇒ 00:28:56.310 Victor Papyshev: person and company are obvious. And they’re they’re obvious, due to a specific technical question that’ll come up, which is identity resolution. Because person and company have a very obvious like semantic identifier, which is email and domain name which, like every enrichment provider, subscribes to, as like the key identifiers for those sort of those, those semantic objects, right person and company they have. They have external meaning in the like in the world as just objects that are relevant. I think that where I hit
318 00:28:56.330 ⇒ 00:29:22.359 Victor Papyshev: problems thinking through even something as simple as opportunity is that there or deal, let’s say, deal easier to say, like deals don’t have like an implicit, inherent identifier. That’s like a not quote unquote, natural identifier. They’re kind of. They’re created within, like your salesforce instance. And yeah, they’re associated with a domain or something. But this is an unanswered question. I’ll show you how I’ve accounted for it in the meantime, in like in the schema, and
319 00:29:22.360 ⇒ 00:29:31.329 Victor Papyshev: I’m thinking about it. But so far the only thing I’m confident in this person and company, just because they have natural identifiers, and then anything else feels more like.
320 00:29:32.440 ⇒ 00:29:41.759 Victor Papyshev: almost feels like a different like. We can treat them as core objects as far as the users concerned, but under the hood it feels a little bit different. And I’m not quite sure.
321 00:29:41.760 ⇒ 00:29:45.040 Uttam Kumaran: But I guess I’m not. I guess I’m not like, what do you mean
322 00:29:45.300 ⇒ 00:29:52.833 Uttam Kumaran: by? There’s not a clear identifier for the deal like you’re right in that. You you are right in that.
323 00:29:54.030 ⇒ 00:29:59.469 Uttam Kumaran: I don’t know whether default owns the deal object, but in salesforce and Hubspot
324 00:29:59.630 ⇒ 00:30:03.380 Uttam Kumaran: there are deal objects that then level up into
325 00:30:03.630 ⇒ 00:30:08.189 Uttam Kumaran: one of those parallels which is like the person or the company, right?
326 00:30:08.810 ⇒ 00:30:09.150 Victor Papyshev: Yourself.
327 00:30:09.150 ⇒ 00:30:14.469 Uttam Kumaran: Opportunity. Hubspot is the deal right? Like contacts the persons. Is there, so why not?
328 00:30:14.760 ⇒ 00:30:16.280 Uttam Kumaran: How is it any different.
329 00:30:16.790 ⇒ 00:30:33.239 Victor Papyshev: So let’s talk. Let’s think through that in terms of sources like we just talked through like person sources like clear bit can can be one of the sources like any enrichment, could be a source for person data, and that has a natural destination in terms of default person. And that’s because they share an identifier.
330 00:30:33.240 ⇒ 00:30:58.919 Victor Papyshev: Right? We know that we can identify by email. And therefore we know that if we receive whatever clear bit payload, we can understand where that needs to be, where that needs to be dropped in in terms of like a deal. Say like, say, Crm, like, let’s say Crm, like salesforce is a source. And I’m sourcing from salesforce. Opportunity, right? Like a sync like sync is gonna be Crm sync is a source. How do I know what deal in default
331 00:30:59.300 ⇒ 00:31:03.330 Victor Papyshev: corresponds to the to the opportunity payload. I just received.
332 00:31:03.330 ⇒ 00:31:08.259 Uttam Kumaran: You need. You need the company to be stitched right.
333 00:31:08.380 ⇒ 00:31:16.669 Victor Papyshev: Like exactly. But people have multiple deals. You know, people have multiple deals associated with one company like renewal cross sell like the initial.
334 00:31:16.670 ⇒ 00:31:17.330 Uttam Kumaran: Yeah, yeah, yeah.
335 00:31:17.330 ⇒ 00:31:26.434 Victor Papyshev: etc. That’s where like, it’s a really messy object in salesforce. It’s trivial. You just use opportunity. Id. It’s the primary key. It’s like the primary key.
336 00:31:27.050 ⇒ 00:31:48.640 Victor Papyshev: it’s harder to do that. So that’s where I think, like, we can definitely pull in opportunity data. No, no problem whatsoever like, I’m not concerned about that. It’s more like, how do we map that data and cast it on the appropriate object on our end? If we are supporting opportunity as like a key object right side by side with person and company. That’s where I’m a little tripped up, and I’ll show you how I’ve sort of thought through it so far. Once I get into the schema. But.
337 00:31:48.640 ⇒ 00:31:49.230 Uttam Kumaran: Okay.
338 00:31:49.230 ⇒ 00:31:53.410 Victor Papyshev: That’s how I characterize the question. Always like my, where I’m getting tripped up or thinking.
339 00:31:54.010 ⇒ 00:32:01.820 Uttam Kumaran: Yeah, I think it depends on. If you want to support opportunities, I mean, ultimately, like
340 00:32:03.030 ⇒ 00:32:06.780 Uttam Kumaran: again, it’s it’s if you’re using default to support like a product
341 00:32:07.060 ⇒ 00:32:10.879 Uttam Kumaran: motion, then your events are associated with
342 00:32:11.500 ⇒ 00:32:20.399 Uttam Kumaran: on a companies. But you’re more trying to. You’re trying to sell licenses right? But like, if there’s an enterprise deal, then you are looking for activities that are associated with
343 00:32:20.600 ⇒ 00:32:31.759 Uttam Kumaran: like a deal right like, for example, in in our Hubspot, I want every Zoom Meeting that happened with a person every time they liked one of my Linkedin posts. Every email I set with them
344 00:32:31.940 ⇒ 00:32:33.839 Uttam Kumaran: to all get associated with it
345 00:32:34.610 ⇒ 00:32:38.329 Uttam Kumaran: with both the company and the deal that’s active related to them.
346 00:32:38.875 ⇒ 00:32:43.609 Uttam Kumaran: Because then there may be subsequent expansion deals, or there may be subsequent cross selling.
347 00:32:44.260 ⇒ 00:32:47.869 Uttam Kumaran: Those are activities I would want associated with both objects.
348 00:32:49.550 ⇒ 00:32:51.710 Uttam Kumaran: I think it’s it depends on the type of
349 00:32:51.920 ⇒ 00:32:58.070 Uttam Kumaran: it depends on type of customer, right like, if you’re if you’re more looking at a just products where the cust it’s like just licenses.
350 00:32:58.565 ⇒ 00:33:06.159 Uttam Kumaran: Then it may not be more relevant, because there you’re not. Every person is an opportunity, and therefore every person is just a person, and you’re associating events to the person
351 00:33:08.530 ⇒ 00:33:11.880 Uttam Kumaran: right like B to C. Doesn’t look at every like A
352 00:33:12.320 ⇒ 00:33:19.299 Uttam Kumaran: unless they’re going for bespoke off. They’re not looking at every person as like an opportunity. Every person is, therefore just use the person object.
353 00:33:20.010 ⇒ 00:33:22.410 Uttam Kumaran: associate events with the person? Right?
354 00:33:22.990 ⇒ 00:33:23.700 Uttam Kumaran: Yeah.
355 00:33:23.700 ⇒ 00:33:32.669 Victor Papyshev: So that’s why I’m not even like necessarily sold on opportunity or deal, being an object in the same sense that at least not in the same sense, that person and company is an object.
356 00:33:32.670 ⇒ 00:33:43.000 Uttam Kumaran: There’s enrichment I just I’m I was trying to think of like, is there enrichment that you would do on an opportunity that you wouldn’t have already done on another object, and I don’t think so.
357 00:33:45.890 ⇒ 00:33:51.980 Victor Papyshev: Yeah, like the opportunity. If anything, it inherits data via being associated right?
358 00:33:51.980 ⇒ 00:33:55.120 Uttam Kumaran: The only thing it has is, it has properties, like.
359 00:33:55.230 ⇒ 00:33:56.540 Caitlyn Vaughn: The amount.
360 00:33:56.650 ⇒ 00:33:59.760 Uttam Kumaran: The key person that’s being sold to
361 00:33:59.960 ⇒ 00:34:04.870 Uttam Kumaran: and key tasks associated with like an opportunity that will close
362 00:34:05.000 ⇒ 00:34:09.719 Uttam Kumaran: right like that is the way it typically works in Salesforce and Hubspot, where
363 00:34:10.350 ⇒ 00:34:20.449 Uttam Kumaran: there are actions to take based on the life cycle of an opportunity right? And there is also a life cycle of a company, but the opportunity is a little bit different. But there’s no enrichment you’re doing of the opportunity.
364 00:34:21.190 ⇒ 00:34:29.709 Caitlyn Vaughn: Well, there is maybe some, I guess, enrichment in in the way that we’re thinking of it. Like, for example, amount
365 00:34:29.860 ⇒ 00:34:32.520 Caitlyn Vaughn: right? Like the deal amount is something.
366 00:34:32.770 ⇒ 00:34:38.959 Caitlyn Vaughn: If we’re using ourselves as the example. Here, we pull the deal amount from
367 00:34:39.840 ⇒ 00:35:00.690 Caitlyn Vaughn: hyper line. Now, right? Vic, like, we’re we’re pulling the deal amount from hyper line technically into salesforce and and then using that. But if we wanted to add in hyper line as a source and then map the amount in hyper line to this default. Opportunity, object. We should be able to do that.
368 00:35:00.690 ⇒ 00:35:04.260 Uttam Kumaran: Seems less like an enrichment that seems like the source of truth.
369 00:35:04.440 ⇒ 00:35:05.130 Caitlyn Vaughn: Yeah.
370 00:35:05.130 ⇒ 00:35:10.030 Uttam Kumaran: Right, because, like you wouldn’t have hyper line, and then something else, and something like you’d be like.
371 00:35:10.400 ⇒ 00:35:13.580 Uttam Kumaran: It’s just, I assume Hyperlin is some sort of sales.
372 00:35:13.790 ⇒ 00:35:14.720 Uttam Kumaran: It’s a CPU.
373 00:35:14.720 ⇒ 00:35:16.039 Caitlyn Vaughn: It’s a Cbq, yeah.
374 00:35:16.040 ⇒ 00:35:22.689 Uttam Kumaran: So that’s sort of like what I’m why, I’m like Hyperlin is to source of truth for opportunities. Then.
375 00:35:23.050 ⇒ 00:35:27.539 Victor Papyshev: Yeah. So I think that checks out like we, that’s data we want. The question is like.
376 00:35:27.970 ⇒ 00:35:54.279 Victor Papyshev: How do we? Or we can pull it in again, like we can set up a sync with hyperlin and receive data. The question is like, how do we actually, you make use of that data to land somewhere productive. So for me, it’s like we could like, let’s imagine a world where we do have the opportunity object. I mean, if the primary. Or if the identifier, let’s say primary key on opportunities and default was hyper line id, then yeah, it’s trivial, like, we got a hyperline payload from hyperline, we throw them out onto the
377 00:35:54.960 ⇒ 00:36:01.800 Victor Papyshev: opportunity and default. But hyperline id should, we should not be like coupling our identifiers with a 3rd party, probably same thing with.
378 00:36:01.800 ⇒ 00:36:05.330 Uttam Kumaran: Decide whether you want to offer opportunities like opportunity.
379 00:36:06.450 ⇒ 00:36:16.020 Uttam Kumaran: Yeah, like, kind of like the sales board as a as a offering right? Cause. You’re right. Otherwise you can only use the opportunity stuff when you have that, and then you’re going to be like.
380 00:36:17.550 ⇒ 00:36:22.339 Uttam Kumaran: I mean, I don’t know. It could be like, hey? In order to use the opportunities, module, you have to bring your own
381 00:36:22.750 ⇒ 00:36:24.239 Uttam Kumaran: source of truth for that.
382 00:36:24.520 ⇒ 00:36:36.590 Victor Papyshev: The main source could be a thing like, I mean again, it’ll also be trivial if you just say, Yeah, I the main, like the main source of opportunities is salesforce. Therefore, on our end, we’re gonna assume that the salesforce Id is a reasonable.
383 00:36:36.590 ⇒ 00:36:37.000 Uttam Kumaran: Yes.
384 00:36:37.000 ⇒ 00:36:58.570 Victor Papyshev: Call a primary key, you know. Stuff like that. I think that that’s fine. And then, like again, if Hyperlin has an integration with salesforce and and all of the payloads we’re receiving from hyperline. Have a salesforce id on them like opportunity, id or something. Then, you know, we’re we’re in the clear. It’s just like the anchor to some identifier is necessary, and it’s easy for person and company, because there’s like a shared anchor.
385 00:36:58.570 ⇒ 00:36:58.940 Uttam Kumaran: Yes.
386 00:36:58.940 ⇒ 00:37:13.239 Victor Papyshev: In the form of email and and domain. It’s less so with things like opportunity that are more like they’re coming from somewhere. They’re not. There is no opportunity. Enrichment service, because opportunity in a vacuum is not really a thing. It’s a thing.
387 00:37:13.530 ⇒ 00:37:17.290 Uttam Kumaran: I mean. No, no, it makes complete sense. You’re right like it is a time boxed
388 00:37:17.560 ⇒ 00:37:20.640 Uttam Kumaran: much more bespoke thing, I guess. Like, is there a
389 00:37:20.830 ⇒ 00:37:28.050 Uttam Kumaran: is there like a direct product, requirement for supporting opportunities? Upfront like? Is there? Is there a client, or like a set of clients that you’re like
390 00:37:28.300 ⇒ 00:37:32.830 Uttam Kumaran: they need to do opportunity related work, or they need to associate
391 00:37:33.130 ⇒ 00:37:37.880 Uttam Kumaran: events with opportunities. I mean, ultimately, their clients are selling stuff.
392 00:37:38.120 ⇒ 00:37:44.349 Uttam Kumaran: But I just don’t think every type of business is looking at opportunities the same way, like opportunities of b 2 b.
393 00:37:44.610 ⇒ 00:37:47.258 Uttam Kumaran: like a heavy b 2 b motion right?
394 00:37:48.260 ⇒ 00:37:53.659 Uttam Kumaran: I don’t know, I guess, like I would just love to hear the the product pitch for supporting opportunities.
395 00:37:54.020 ⇒ 00:38:13.026 Victor Papyshev: Yeah, I mean, I can make a bull case for it. I mean, I think that in general, like a lot of the stuff we’re building is like informed by what we’ve learned. But in general we’re more so building this out like with a platform lens, thinking about like, how much data gravity. Can we? Can we get through about via via this like source destination? Kind of model? Thank you.
396 00:38:13.510 ⇒ 00:38:39.474 Victor Papyshev: But I guess for the bull case, for supporting opportunities like call it as a core object, let’s say, like a core object with some external anchor. Id. That’s okay. But the whole case for supporting it at all, I would say, is something like, you know, people are really interested in people should be interested in using defaults at the center of the universe for their data. So in this case it would be something like being able to easily view opportunities straight out of default with
397 00:38:40.100 ⇒ 00:38:46.899 Victor Papyshev: with, like, you know, getting an a, a total amount outstanding, you know, opera, like, you know, closed
398 00:38:47.080 ⇒ 00:39:12.829 Victor Papyshev: right? Yeah. Total opportunity closed. One amounts by user, which in our case a user would be a rep right being able to do reporting like that or being able. Because and also if we’re supporting default company as a core object. It would probably be useful to see like total closed one opportunity amount by company. Things of that nature. So I think that just it’s kind of piggybacking off of the value of of the other objects we are we are treating as core competencies.
399 00:39:13.161 ⇒ 00:39:34.850 Victor Papyshev: Is the whole case. Now, if we could like simply create a field on company that does the same thing. Great, you know. I don’t know that that might feel constraining after a while. I’ll also say this might. This may or may not be a day. One thing, and I also think it’s probably not like the biggest question I always that I have on the on the data side. But it’s a good. It’s a good question.
400 00:39:35.200 ⇒ 00:39:40.940 Uttam Kumaran: Yeah, I I don’t know. I feel like. For the most part, people are gonna come to you with whatever sales
401 00:39:41.400 ⇒ 00:39:47.420 Uttam Kumaran: Crm, where they’re managing opportunities. It may be best just to be like in order to use the opportunities
402 00:39:47.810 ⇒ 00:40:02.140 Uttam Kumaran: like you need to bring your own salesforce, Api key or Hubspot, and then we’ll just do like a field mapping exercise, because also you have to support, like custom opportunity fields in those you know that that people are setting up, which is like, really.
403 00:40:02.350 ⇒ 00:40:12.349 Uttam Kumaran: I think that’s that’s where there’s a lot of people are doing a lot of stuff there. The other thing is like, what is the end goal, though, like, are people gonna start associate like? Yes, I think you want to maybe see
404 00:40:12.640 ⇒ 00:40:21.726 Uttam Kumaran: sort of total value in different pipelines, deal life cycle like speed and up speed and different things. But like are you gonna be? Are you going to be
405 00:40:23.280 ⇒ 00:40:27.140 Uttam Kumaran: Are you going to be attributing events to those opportunities.
406 00:40:28.700 ⇒ 00:40:38.289 Uttam Kumaran: Cause. That’s a thing compelling thing that is really hard to do in those other. To give you a sense of. I’m gonna do it manually like, I’m going to have things that
407 00:40:38.430 ⇒ 00:40:59.309 Uttam Kumaran: find the Hubspot Company and then find the relative related activities in my business and link those that’s not something that they offer out of the box. What they do offer out of the box is like, hook up your calendar, and so we’ll scan your calendar for events related. And we’ll push those in, hook up your email. Okay? If a domain matches someone you’re emailing put it in there.
408 00:40:59.370 ⇒ 00:41:10.349 Uttam Kumaran: But like, I want to go. Even. I want to associate like meetings. I want to associate like other events that are happening, you know, outside of things I can control, like social events, things like. So
409 00:41:10.530 ⇒ 00:41:12.610 Uttam Kumaran: in that sense, it’s it could be really.
410 00:41:13.050 ⇒ 00:41:17.980 Uttam Kumaran: really powerful. But you you will be constrained by like yes, you have to bring that
411 00:41:18.550 ⇒ 00:41:20.910 Uttam Kumaran: flexible opportunity object from somewhere else.
412 00:41:21.480 ⇒ 00:41:21.950 Victor Papyshev: Sure.
413 00:41:21.950 ⇒ 00:41:38.662 Caitlyn Vaughn: I think that was always the plan. I think that’s why we did have events, because we were planning on attributing events to like Associated Company Associated Person Associated Opportunity Associated User, basically. So that when somebody is viewing those
414 00:41:39.200 ⇒ 00:41:58.710 Caitlyn Vaughn: those objects you do have all of the events like tracking. I think that was the initial thinking as I’m like looking back as to why we had events as an object, because we’re also considering, like this, quote unquote event, based data model, where we’re bringing in everything as an event. But those are, they’re actually separate. So we should come up with different names for them.
415 00:41:59.680 ⇒ 00:42:02.889 Uttam Kumaran: I just think associating events with an opportunity.
416 00:42:03.050 ⇒ 00:42:07.839 Uttam Kumaran: It’s tough like, how do you know that? Like.
417 00:42:08.030 ⇒ 00:42:16.489 Uttam Kumaran: for example, someone that filled out a form associated with the company is necessarily related to, like one of the many opportunities that you have open with them.
418 00:42:19.440 ⇒ 00:42:20.340 Uttam Kumaran: It’s a.
419 00:42:20.340 ⇒ 00:42:29.320 Victor Papyshev: I was. Gonna ask you that actually, like you took the question. Now that we’re talking about it, I’m thinking like, is it a time box thing like, because the.
420 00:42:29.320 ⇒ 00:42:37.129 Uttam Kumaran: Like, we’re lucky because we just don’t do much business. So we have one opportunity for every client. Right? We’re not like too complicated. So if, if like.
421 00:42:37.240 ⇒ 00:42:49.349 Uttam Kumaran: if you all log into the website and fill out a form, it’s probably associated with an open deal. The only one open deal we have with you guys. But if it’s like, there’s multiple opportunities, there’s not a clear like prioritization of, like
422 00:42:49.610 ⇒ 00:42:52.470 Uttam Kumaran: how the event gets associated with the company.
423 00:42:54.690 ⇒ 00:42:55.770 Uttam Kumaran: Right? Yeah.
424 00:42:57.050 ⇒ 00:43:00.309 Victor Papyshev: Yeah, I, yeah, I think that’s let me write that as a note.
425 00:43:00.310 ⇒ 00:43:02.540 Uttam Kumaran: Maybe unless it’s like a specific.
426 00:43:03.530 ⇒ 00:43:05.340 Uttam Kumaran: Yeah, I don’t know. It’s.
427 00:43:06.030 ⇒ 00:43:10.020 Victor Papyshev: Like until you are. The question is like, how do we associate
428 00:43:10.540 ⇒ 00:43:14.190 Victor Papyshev: incoming events with a specific deal.
429 00:43:15.550 ⇒ 00:43:16.990 Caitlyn Vaughn: Yeah, like, here’s a good.
430 00:43:16.990 ⇒ 00:43:18.560 Victor Papyshev: Eyes and example, events as.
431 00:43:18.560 ⇒ 00:43:19.010 Uttam Kumaran: Yeah.
432 00:43:19.010 ⇒ 00:43:19.940 Victor Papyshev: Generically.
433 00:43:20.794 ⇒ 00:43:31.810 Caitlyn Vaughn: So quizzes is one of our clients. And we had an initial contract with them, and then we had an expansion contract for them. And then there’s also we, we create a auto opportunity.
434 00:43:31.810 ⇒ 00:43:32.299 Uttam Kumaran: For the next one.
435 00:43:32.300 ⇒ 00:43:36.590 Caitlyn Vaughn: For renewal. Right? So I’m thinking it probably.
436 00:43:36.590 ⇒ 00:43:42.670 Uttam Kumaran: But like, for example, in this example, if if someone from quizzes goes in and like, attends a default, Webinar.
437 00:43:43.810 ⇒ 00:43:45.190 Uttam Kumaran: that event.
438 00:43:45.730 ⇒ 00:43:52.500 Uttam Kumaran: like, what is it relevant to any opportunity? Or is it just relevant to the account? Is that if that person is not even on the
439 00:43:52.780 ⇒ 00:43:56.650 Uttam Kumaran: on the the team that’s signing anything like is that at all
440 00:43:57.420 ⇒ 00:44:02.980 Uttam Kumaran: important like? I don’t know. It’s kind of advanced like. I’m not sure anyone’s.
441 00:44:02.980 ⇒ 00:44:08.201 Caitlyn Vaughn: Let me give an example of something that I would value as a sales rep
442 00:44:08.890 ⇒ 00:44:18.019 Caitlyn Vaughn: or maybe, like even a customer success person. So one of the problems that we have in our current sales Org and I have experienced at every company I’ve worked at in sales is
443 00:44:18.130 ⇒ 00:44:26.589 Caitlyn Vaughn: for customer success. You are past an opportunity, right? That has closed. And now it’s your job to like implement the
444 00:44:26.700 ⇒ 00:44:55.109 Caitlyn Vaughn: implement, the account like you’re running implementation with them, and a lot of the time you’re missing. So much of the context of this account like, is this somebody that you have had good relationships with? Is this like a difficult person like, how much have you talked to them? We’ve had some accounts that are from partners one call close. We never talked to them, and then they’re a really shitty lead, right? Or a terrible fit for our company. And Cs has no context on that. So if there was some kind of like eventing of like
445 00:44:55.110 ⇒ 00:45:15.800 Caitlyn Vaughn: George, you know, emailed them back and forth. Here’s all of their emails, plus they met with them every week for the last 6 weeks, and plus here’s a summarization of like their calls. And like, here’s the sentiment of this customer. That’s where I see it being really valuable in like the eventing of opportunities. And I think it makes sense for us to like
446 00:45:15.940 ⇒ 00:45:35.920 Caitlyn Vaughn: make an assumption on time boxing. Perhaps. Right? This is like what pylon does of like making assumptions for like where tickets go, and arguably, it’s pretty pretty medium. But I think there’s a way in which we could do it in which it would be valuable. We could tie it to the account and the opportunity and the contacts like. Why would we not attach it to all of the above.
447 00:45:35.920 ⇒ 00:45:36.580 Uttam Kumaran: I think.
448 00:45:37.730 ⇒ 00:45:38.270 Victor Papyshev: Sorry.
449 00:45:38.270 ⇒ 00:45:38.980 Uttam Kumaran: Sorry go ahead.
450 00:45:39.505 ⇒ 00:45:53.819 Victor Papyshev: My only interjection is like it would probably have to come down to incoming events being processed in the context of the the opportunities and their stage. So I guess, like this, this opportunity is in discovery. So incoming events on the quizzes account
451 00:45:54.090 ⇒ 00:46:09.519 Victor Papyshev: can be associated with any non closed lost, or one stage opportunities, because they’re likely because those events are relevant to those opportunities. They’re not real. These closed one opportunities. They’re not relevant to anything going on with quizzes. But this discovery.
452 00:46:09.520 ⇒ 00:46:24.139 Uttam Kumaran: It just assumes there’s for every client. You’re only gonna have one open opportunity of which it may. It’s not the case for a lot of companies, especially when you’re dealing with like large organizations. Second, I still feel like Caitlin, the use case. You can be solved by still sourcing all the events with the company.
453 00:46:24.310 ⇒ 00:46:24.870 Uttam Kumaran: and like.
454 00:46:26.090 ⇒ 00:46:30.120 Uttam Kumaran: You still solve that problem right? So maybe the best go forward is like.
455 00:46:30.970 ⇒ 00:46:44.160 Uttam Kumaran: do opportunities. But you can’t associate events. Or maybe you have manual associations where someone can go in and say, these events are associated with this opportunity manually. And then you guys can kind of like, see? See how people are using it.
456 00:46:45.170 ⇒ 00:46:46.040 Uttam Kumaran: and then, like.
457 00:46:47.480 ⇒ 00:46:51.560 Caitlyn Vaughn: I agree with you, I wonder, like we actually already have some
458 00:46:51.700 ⇒ 00:47:05.700 Caitlyn Vaughn: activity kind of notes and history here. So I wonder if we just auto populate. Maybe we do do that. We only associate events with contacts or companies. But any opportunity.
459 00:47:05.970 ⇒ 00:47:21.669 Caitlyn Vaughn: any opportunity that is on top of a account or company like attached to them. Maybe all of that like activity can be aggregated on the contact and account on an opportunity like, maybe you don’t have to decide like, is it.
460 00:47:21.670 ⇒ 00:47:22.219 Uttam Kumaran: It’s relevant.
461 00:47:22.220 ⇒ 00:47:25.730 Caitlyn Vaughn: As we know, it’s attached to the account, like it probably is relevant in some capacity.
462 00:47:25.730 ⇒ 00:47:30.509 Uttam Kumaran: Well, maybe maybe this is where you sort of layer on some AI which is like.
463 00:47:30.780 ⇒ 00:47:56.060 Uttam Kumaran: Hey, for this opportunity, like, let’s let’s take. Let’s take this example. Is there a contact on this like from their site? So to char right? So Tushar and and Madison, let’s say there’s a call I had with them, and then I see that they came and subscribed to something. And there’s a couple of other events associated with them. I’m gonna be able to. You’re gonna be able to see this on default and say, let me see the associate events with this person.
464 00:47:56.140 ⇒ 00:48:01.780 Uttam Kumaran: and that’s going through the contact. That’s not necessarily like associating it with the opportunity.
465 00:48:02.210 ⇒ 00:48:12.898 Uttam Kumaran: So that’s like a little bit of a light version of saying, Hey, this person is associated with this deal, and therefore any events so do. Associated with that person. You can sort of see, in a view.
466 00:48:13.180 ⇒ 00:48:14.120 Caitlyn Vaughn: Exactly.
467 00:48:14.120 ⇒ 00:48:26.069 Uttam Kumaran: You don’t need to necessarily be like, well, there’s there’s multiple deals going on. And so like, which should I opportunity? And there’s maybe no associate direct association between an opportunity and event. It has to go through
468 00:48:26.390 ⇒ 00:48:41.919 Uttam Kumaran: either the contact or the company. But the way you can accomplish this is just through the product design, which is like, you can easily see for a given deal the contacts or companies, and therefore see the events associated with those objects easily
469 00:48:42.410 ⇒ 00:48:43.520 Uttam Kumaran: versus like
470 00:48:43.870 ⇒ 00:48:58.000 Uttam Kumaran: having to decide like what are the most relevant events. That’s something I think you could probably innovate on with some AI which is like you have this event stream, you have all these properties of an opportunity. Tell me the most relevant events that seems like a great, prompt, and a great like.
471 00:48:58.420 ⇒ 00:49:03.370 Uttam Kumaran: Thing to figure out, but like probably to do that in post.
472 00:49:04.220 ⇒ 00:49:05.010 Uttam Kumaran: I like.
473 00:49:05.140 ⇒ 00:49:15.669 Uttam Kumaran: I think I think, just having the events associated with the person. Because I think when you’re looking at a deal, it’s actually still relevant to see all events associated with person, not just the ones associated with a deal
474 00:49:15.880 ⇒ 00:49:21.269 Uttam Kumaran: like, how long have we been talking to them? Are they in my network like, what else have they done with us?
475 00:49:21.510 ⇒ 00:49:26.719 Uttam Kumaran: So maybe that’s probably the easiest way to go like. And you can still offer opportunities.
476 00:49:27.590 ⇒ 00:49:33.240 Uttam Kumaran: It kind of just has the few fields that you you offered, and there’s a direct sync to Salesforce or Hubspot.
477 00:49:34.950 ⇒ 00:49:35.540 Victor Papyshev: Cool.
478 00:49:35.680 ⇒ 00:49:56.680 Victor Papyshev: Well, I think that sort of touches on some of the event stream processing bit and like how we’re thinking about that, because I think, like we’re talking about like associations and how the data ends up landing and whatnot. So I know we’ve got. Maybe you can take the last 10 min or so I can do a lightning round to just walk through sort of what we have. I mean might be good to have a second, like dedicated technical call.
479 00:49:57.029 ⇒ 00:50:06.459 Victor Papyshev: But I’ll get through what I can with the remaining time. If that works for us today. Awesome. Okay, cool. Let me share the right screen.
480 00:50:06.910 ⇒ 00:50:10.360 Victor Papyshev: Also, I’ll be, I guess. Probably just share my whole screen. Let’s do that.
481 00:50:17.610 ⇒ 00:50:18.430 Victor Papyshev: Okay.
482 00:50:18.650 ⇒ 00:50:19.890 Victor Papyshev: Can y’all see this.
483 00:50:20.060 ⇒ 00:50:20.650 Uttam Kumaran: Yes.
484 00:50:21.030 ⇒ 00:50:22.439 Victor Papyshev: Alright cool, so
485 00:50:22.874 ⇒ 00:50:43.509 Victor Papyshev: I will start in fig jam where we’ve been modeling the flows. For the most part. I’ll do a quick walkthrough, and I also have in my chrome. I have, like the various cloud providers and setups pulled up as well as some notes where I’ve just been doing a running dev log of just every sequel. Query, definition I could. I could. Well, as I go about it, instead of having to go back and like re document
486 00:50:43.510 ⇒ 00:51:04.129 Victor Papyshev: so. But I’ll walk through the high level flow 1st like real quick. So what we ended up doing is, you know, since we last talked, we add a lot of definition and actually built out slash, spiked out like in terms of configuration. A lot of the cloud providers. We might be using. We may end up self hosting. We may not but for now, just using the cloud providers to as like the critical path to prove like
487 00:51:04.130 ⇒ 00:51:23.210 Victor Papyshev: poc, like testing assumptions. So firstly, so again, like this, all kind of the backbone of this is a raw event stream. Various raw event streams coming from, say, clients, let’s say something like@dotdefault.com, or like our our web pixel capturing web activity. Whatever does or Crm syncs that we set up doesn’t matter coming from somewhere.
488 00:51:23.501 ⇒ 00:51:37.760 Victor Papyshev: What ends up happening is that gets collected by some right now we have it spiked out, and just as a next serverless back end endpoint. But it it’s a Kafka producer. That is just responsible for pretty dumb endpoint. All it does is just like pass along
489 00:51:38.053 ⇒ 00:51:44.520 Victor Papyshev: raw events. Pretty much, maybe does some light validation to make sure they’re not junk, and then, if they pass pass along.
490 00:51:44.660 ⇒ 00:52:11.610 Victor Papyshev: ended up weaving together 2 2 data stream like Kafka Slash Kafka like providers, confluent Cloud and Red Panda. So Kafka and Red Panda and I’ll explain why. They both serve distinct purposes specifically. You know, in Kafka slash confluent, you know, it’s really good at stateful, stateful workflows where, thanks like K tables like being able to have tables that are synced
491 00:52:11.610 ⇒ 00:52:40.770 Victor Papyshev: like, say, from postgres to Kafka, using Debezium or whatever like a postgres Cdc, so that’s great because we have like user land stuff that’s relevant to the processing of an event. User land stuff, meaning form field mapping specifically for like a form submission. Event, general object, field mappings. That’s what caitlin demoed at the beginning, and if I have time I can do like a 30 second demo of how I’ve stood that up actually, with this schema in mind. So I have a like a v 0 that I dropped into our working code base like our
492 00:52:40.770 ⇒ 00:52:51.889 Victor Papyshev: prototype code base. I’ll show that if we have time or I’ll just share some screenshots after the fact, maybe like a video. But you know, Tldr user land step, user land stuff. It’s actually experimental in a couple of.
493 00:52:51.890 ⇒ 00:52:54.820 Uttam Kumaran: It’s relevant. It’s it’s relevant to get these.
494 00:52:54.930 ⇒ 00:52:56.860 Uttam Kumaran: Because.
495 00:52:57.610 ⇒ 00:53:07.420 Uttam Kumaran: like, can you, can, you give an example of an event and what the form field mappings need is this, is this, like an event comes in and we need to know what or gets associated with basically.
496 00:53:07.820 ⇒ 00:53:17.959 Victor Papyshev: So org can be, we’re expecting org to be on the raw event, this actually perfect. I can jump. I can pull up the actual definitions. So for form field mappings.
497 00:53:18.190 ⇒ 00:53:40.179 Victor Papyshev: So let me find the right one. It’s a little bit out of order. So yeah, for raw events, right? This stream that I have set up case equal, like, create stream raw events. v. 1. That’s this initial collector topic. I have that defined as containing event, id event, which is like a you would event type, which is key. That’s like critical. That’s like form, submission, form, underscore or form hyphen submission dot v 1
498 00:53:40.180 ⇒ 00:54:06.830 Victor Papyshev: clearbit dot person hyphen enrichment dot v. 1 etc. So this is what’s going to tell us. How do we process this event downstream? And that’s happening in Red Panda, because Red Panda actually notably does not have a SQL. Engine, but it does have their wasm transform engine which can actually sit right on top of in line. I call it inline in the data stream to process your events on a topic which I thought, like their whole philosophy as a company is that they don’t believe in all the ping Pong stuff that you have to do with Kafka.
499 00:54:06.830 ⇒ 00:54:07.400 Uttam Kumaran: Yes.
500 00:54:07.400 ⇒ 00:54:33.609 Victor Papyshev: Topics, and like that’s something that a. I didn’t want to maintain. B. If I were to do that in confluent. It requires, like Jvm, like Java Flink jobs and stuff like that. And it’s like I do. I don’t want that in my stack. I don’t know, Java. I don’t really want to go out and hire Java engineers if I can avoid it, etc. So I was like hunting high and low for something that would help me do this, so I thought it’d be trivial, and it kind of turned out to be a pain to do in confluent slash. Kafka red Panda was a great fit, so I’ll walk through that in a second
501 00:54:33.610 ⇒ 00:54:40.100 Victor Papyshev: 5 time. Maybe this will be more of it, since we have 5 min. This might be more of an intro to like, lead us into a follow up conversation, but.
502 00:54:40.100 ⇒ 00:54:40.800 Uttam Kumaran: Yeah.
503 00:54:41.068 ⇒ 00:55:06.580 Victor Papyshev: But yeah, I guess back to the actual raw event, payload can be just arbitrary payload that is defined by the event type. We have this stuff typed in in code. We can have it typed here if we want to do some validation, I guess. But payload is just an arbitrary map, string, string. And then Meta is going to carry more of like the actual identifiers. I did add, just like some some arbitrary join keys to make it easier to do stuff later if we do need some sort of like.
504 00:55:06.670 ⇒ 00:55:23.929 Victor Papyshev: I don’t know. I don’t. I’m not sure why, it’s kind of point. But notably, we are gonna want ingest timestamp. That’s important. We’re gonna want, which we can do at that on this collector endpoint. If we want to just do date. Now, I think not necessarily, because let’s, let’s say, like an engineer brought this up the other day.
505 00:55:23.930 ⇒ 00:55:25.950 Uttam Kumaran: Yeah, no, it needs to come from the source.
506 00:55:25.950 ⇒ 00:55:44.129 Victor Papyshev: Yeah, exactly like if it’s if something is generating from like a salesforce sync and it it. But it takes some time for salesforce to send us that we’re gonna want to use that as a timestamp. So it just depends on where the events coming from. So there’s that, and then form id, that’s like very specific for form submissions, because that’s.
507 00:55:44.130 ⇒ 00:55:47.040 Uttam Kumaran: Form. Id. You’re getting from the front end. Getting from this.
508 00:55:47.756 ⇒ 00:55:56.750 Victor Papyshev: For form id, we’re gonna be getting from some other service. So the way we’re thinking about it now is like, let’s say, our pixel product is what’s capturing a form submission, like literally from the client side.
509 00:55:56.750 ⇒ 00:55:57.150 Uttam Kumaran: Yeah.
510 00:55:57.471 ⇒ 00:56:15.488 Victor Papyshev: That that might hit like a handle, submit like endpoint, right? That intern that might use. Do an internal method call to push the route, the correct data up to our event or data pipeline for for example. So where it comes from depends. But for forms, it would specifically be from here.
511 00:56:16.100 ⇒ 00:56:18.320 Victor Papyshev: So however, we, we end up building that
512 00:56:18.440 ⇒ 00:56:20.590 Victor Papyshev: it’s pretty much what we do today, really.
513 00:56:20.950 ⇒ 00:56:32.020 Victor Papyshev: but again, I’m assuming, like we probably do something under the hood where you know this has some HTML form id. And then, like we know on our, we have a configuration saved from user land on our end to know what to do with that
514 00:56:32.494 ⇒ 00:56:38.525 Victor Papyshev: pretty much, or to identify it as a default. Form configuration on our end. Something like that.
515 00:56:39.440 ⇒ 00:56:44.810 Victor Papyshev: Sorry. I know I’m rushing. I just yeah. Anything. Any questions on that.
516 00:56:44.810 ⇒ 00:56:45.870 Uttam Kumaran: No, no, this is great.
517 00:56:46.050 ⇒ 00:57:03.879 Victor Papyshev: Okay, cool. And then organization, id super super critical. Just name spacing by by customer. Ultimately. So and that that’s also like we control that we’re not. We wouldn’t want to support like just our someone. I mean, I guess it’d be you would. So that should be okay. Yeah, we’d wanna make sure we secure that, etc, etc. Table stakes.
518 00:57:04.350 ⇒ 00:57:26.919 Victor Papyshev: So that gets piped into confluent. I think this is where a Kafka topic and confluent. I think this is this, right? Here is the crux of why we’re using Kafka here is because of what we can do with case equal. dB joins where we sync from user land to Kafka tables. And then we can actually perform, like a state essentially stateful, join to enrich these events with user land config, such as
519 00:57:27.327 ⇒ 00:57:35.882 Victor Papyshev: field mappings. So so that we can get the right object updates created downstream over here in the transform, and
520 00:57:36.300 ⇒ 00:57:50.420 Victor Papyshev: form field mapping. So that’s like more of a very specific case. But the broad case for every event that’s relevant is like mapping such as clear bit person. 1st name maps to default person, 1st name, etc, etc. Those are things, and they are like
521 00:57:50.470 ⇒ 00:57:51.790 Victor Papyshev: Crm.
522 00:57:51.960 ⇒ 00:58:05.320 Victor Papyshev: or I’m sorry. Clear bit naics code like industry, like naics like industry classification that maps to the D, this default user, like this organization’s custom naics code field, you know.
523 00:58:05.320 ⇒ 00:58:11.759 Uttam Kumaran: But then what happens if they change the mappings like, are you guys backfilling or like what happens.
524 00:58:11.760 ⇒ 00:58:22.049 Victor Papyshev: We just discussed this yesterday on the edge side. This is where I again maybe even a dedicated chat for this would be good I don’t know how you are in time. But.
525 00:58:22.050 ⇒ 00:58:24.900 Uttam Kumaran: I can do like, probably 5 more minutes. And then, okay, well done.
526 00:58:24.900 ⇒ 00:58:26.720 Uttam Kumaran: I’ll definitely grab more time. Yeah.
527 00:58:26.720 ⇒ 00:58:41.649 Victor Papyshev: Cool. Yeah, we can keep it going. But yeah, that’s a great question. I think that we we we decided we learned, I guess Caitlin was just talking about this. We, the all this does have, like the boon from the the architecture that we can do event, replay.
528 00:58:41.650 ⇒ 00:58:42.040 Uttam Kumaran: Yes.
529 00:58:42.040 ⇒ 00:59:05.549 Victor Papyshev: But but we don’t. We probably don’t want to be doing event replay every time a user changes a mapping that’s very heavy. And I I probably doubt that we can. It’s it’s expensive to pull data from like Glacier, right? Because, like these, these Kafka topics, they’re gonna start cleaning up very fast. You know, at Mo. At most, we have 7 day retention, and that we’re gonna exceed like whatever the limits are. And we’re gonna start deleting via clean up very soon.
530 00:59:05.550 ⇒ 00:59:05.900 Uttam Kumaran: Yeah.
531 00:59:06.162 ⇒ 00:59:29.490 Victor Papyshev: So. And we do. That’s definitely not like the kind of backfilling we want to be doing through like an S. 3 glacier like rehydration, or whatever the terminology is, I’m not sure so we figured that we would do some parse out. This is a little bit downstream. I might be skipping a step. But I’m thinking, and I got proposed this to the engine, he said. It sounds like it tracks. We’ll have to test it, really. But I’m thinking that let’s say clear bit event
532 00:59:29.490 ⇒ 00:59:44.800 Victor Papyshev: has like a hundred fields on it like a clear bit payload has a hundred various like. If you. If you flatten the Json you have like a hundred a hundred values, we could flatten that and store it in click house as events. So this where it would be easier to
533 00:59:44.800 ⇒ 00:59:49.929 Victor Papyshev: to get it. Get what? Get what we’re thinking here if I showed you our clubhouse tables real quick. But
534 00:59:50.463 ⇒ 01:00:13.079 Victor Papyshev: we’re thinking that in line, like quote, unquote in line, like as we’re processing the event initially, we use the the users currently set up object field mappings to generate these object updates. But we also have the ability to store all like the flattened fields separately, so that if the user changes their mappings, you know. Tomorrow, then we have the data.
535 01:00:13.080 ⇒ 01:00:13.450 Uttam Kumaran: Do it all.
536 01:00:13.819 ⇒ 01:00:19.730 Victor Papyshev: Yeah, at the ready. Like, pretty much like, select all of the data points where the
537 01:00:20.100 ⇒ 01:00:27.920 Uttam Kumaran: I mean this, all in click house is way, better, like, basically going in and updating like, okay, here’s 100,000 events. We just want to change
538 01:00:28.420 ⇒ 01:00:30.100 Uttam Kumaran: the mapping for one of them, you know.
539 01:00:30.310 ⇒ 01:00:33.580 Victor Papyshev: Exactly. Yeah. I think something that an engineer called out, is that
540 01:00:33.800 ⇒ 01:00:41.630 Victor Papyshev: click house is pretty slow at updates. But I was thinking we could just like bulk, select the ones we need to update. And then, just like, write rewrite and update. I’ll show you.
541 01:00:41.630 ⇒ 01:00:45.589 Uttam Kumaran: Slow, but like, do people? If people want to do that, then what are you gonna do.
542 01:00:45.920 ⇒ 01:00:48.559 Victor Papyshev: Well, I mean, I think that
543 01:00:48.730 ⇒ 01:00:58.569 Victor Papyshev: not only slow, I guess the thing, the specific thing, the engineer called out, is, it’s which I think we’ve accounted for like we can definitely do this, even like with our current setup, like the way we’ve been thinking about is that it’s a little bit more like
544 01:00:58.720 ⇒ 01:00:59.586 Victor Papyshev: call it
545 01:01:00.170 ⇒ 01:01:07.070 Victor Papyshev: Best practice to rather than overwrite is to actually like insert update rows instead.
546 01:01:07.390 ⇒ 01:01:11.189 Uttam Kumaran: You want to null out. You basically want to do like change data capture where you just
547 01:01:11.680 ⇒ 01:01:15.149 Uttam Kumaran: you have it active to on columns.
548 01:01:15.540 ⇒ 01:01:18.030 Uttam Kumaran: And then you just yeah, you can basically
549 01:01:18.730 ⇒ 01:01:21.610 Uttam Kumaran: null those out or whatever yeah.
550 01:01:22.140 ⇒ 01:01:23.440 Victor Papyshev: Yeah, I mean, I’ll show you.
551 01:01:23.440 ⇒ 01:01:27.810 Uttam Kumaran: It’ll be easier to create those new records versus running the updates. Yeah.
552 01:01:27.810 ⇒ 01:01:51.876 Victor Papyshev: Yeah. And we’re already doing essentially like what we’ll be. Call it waterfall, I guess. Like, I’m trying to not mix up our terms here, but like, call it waterfall. We’re already waterfalling, based on priority and click outs. I’ll show you how we’re generating these views so you can see person snapshots and company snapshots. Let’s look at person. Snapshots like 1st name, 1st name, source, last name, last name source. So I’ll skip a few steps and I’ll let you go so that you’re not too late to what you have next.
553 01:01:52.390 ⇒ 01:02:17.360 Victor Papyshev: transform. This is, go. They support typescript, but their typescript integration is broken the wasm. The binary is too large to be uploaded, so I had to rewrite it and go whatever it generates updates that end up in click house via click pipes we could do we could do like red panda, connect red Panda, connect is actually what’s getting it out of confluent into red Panda but whatever right now we’re using click pipes because it’s easy.
554 01:02:17.714 ⇒ 01:02:23.700 Victor Papyshev: And then what you we end up with is red panda object updates v, 1 table
555 01:02:23.800 ⇒ 01:02:46.919 Victor Papyshev: which, like here, we have like 150,000 rows. Right? Event type, 1st name. This is what the that go code is generating. Essentially. So it’s that go code is writing to a topic in red panda, like object updates. And then that topics being consumed to be piped into click house. So we end up with this running record with Timestamps, object, field, object, type, org id source value.
556 01:02:46.970 ⇒ 01:03:04.550 Victor Papyshev: This is where I’m going with identity, type and identity value. Because, like, I, I think the identity stuff is was tripping me up. So I made it. Maybe we can support different types of identity like, maybe phone number, maybe email, right now, I’m just running with email, I’m just like using identity value itself. Maybe later, we could do some more complex stuff.
557 01:03:04.550 ⇒ 01:03:23.210 Victor Papyshev: And then the view that actually creates people. So if I pull up person snapshots, I can now do queries like Select Star, where 1st name like Pat, right, and then I end up with like a row, with value, 1st name, last name, and then this is essentially a compilation of all of the activity. Like all the I guess this kind of gets into the activity model.
558 01:03:23.503 ⇒ 01:03:30.600 Victor Papyshev: That we that we kicked off a conversation about where we have an a running record of everything that’s ever happened, that as an update
559 01:03:31.037 ⇒ 01:03:46.212 Victor Papyshev: and then we distill. I guess this like snapshot out of that to this is where the point about the the the prior, not the the priorities, actually go into effect right away. Because I have a current object priorities thing that is used
560 01:03:46.920 ⇒ 01:03:48.250 Victor Papyshev: I’ll show this after I know we’re.
561 01:03:48.250 ⇒ 01:03:48.650 Uttam Kumaran: Yeah.
562 01:03:48.650 ⇒ 01:03:53.919 Victor Papyshev: Running over. But yeah, this, that’s kind of the Tldr. Maybe we can like correlate this into another chat.
563 01:03:53.920 ⇒ 01:04:09.339 Uttam Kumaran: I mean, I think I think the Kafka. I think the conflict makes sense. I also heard great things about Red Panda. Yeah, I’m curious to kind of poke around and click house. And it’s gonna see how the event structure is. What else can I be? I mean, I would love, I mean, I don’t know what your schedule is like. Tomorrow I grab time.
564 01:04:09.480 ⇒ 01:04:13.550 Uttam Kumaran: Monday. I don’t, or yeah. Whenever, like, what’s what’s convenient.
565 01:04:14.140 ⇒ 01:04:18.539 Victor Papyshev: Yeah, tomorrow would be great. Yeah. Send over some. I mean, let me check my calendar real quick.
566 01:04:22.920 ⇒ 01:04:25.480 Uttam Kumaran: Even like this, next hour tomorrow. I’m free.
567 01:04:26.040 ⇒ 01:04:29.880 Uttam Kumaran: Basically, like, after this time, the rest of the day tomorrow, I’m basically free.
568 01:04:29.880 ⇒ 01:04:34.155 Victor Papyshev: Cool. I’m free. After 3 pm. Eastern.
569 01:04:34.690 ⇒ 01:04:39.249 Uttam Kumaran: Okay, perfect. So I’ll send something there and then. Yeah, I don’t know if you mind sharing me that the notion
570 01:04:39.400 ⇒ 01:04:40.789 Uttam Kumaran: and then the fig jam
571 01:04:41.190 ⇒ 01:04:46.729 Uttam Kumaran: that way. I can just take a look at those I could send a note on slack, and then anything else I could up
572 01:04:48.000 ⇒ 01:04:57.750 Uttam Kumaran: time or anything. I’m just gonna read through a little bit more in detail now that I have sort of the structure. And I can note down some of our conversations about opportunities and the events in that sheet, too.
573 01:04:58.280 ⇒ 01:05:01.659 Victor Papyshev: Sure. Yeah. Do you want a click house? Invite.
574 01:05:01.940 ⇒ 01:05:11.340 Uttam Kumaran: Yes, click, us inbox would be would great as well. I guess. Like. Let me know. One thing question I asked. If you guys want to create a brain forge a default.com that way. If you guys have Sso for stuff.
575 01:05:11.700 ⇒ 01:05:13.139 Victor Papyshev: We don’t have to break that.
576 01:05:13.980 ⇒ 01:05:14.640 Victor Papyshev: Sure.
577 01:05:14.640 ⇒ 01:05:16.850 Uttam Kumaran: That’s probably yeah, we can. We can do that.
578 01:05:16.850 ⇒ 01:05:21.860 Uttam Kumaran: Okay. So I’ll send a note with that, and then I’ll just send a couple couple of notes after this, with with that, and then.
579 01:05:22.270 ⇒ 01:05:23.790 Uttam Kumaran: yeah, I’ll put a meeting on for tomorrow.
580 01:05:24.240 ⇒ 01:05:25.030 Victor Papyshev: Alrighty! Let’s do it!
581 01:05:25.030 ⇒ 01:05:27.379 Uttam Kumaran: Click pipes, click pipes is not bad. Right?
582 01:05:27.830 ⇒ 01:05:35.150 Victor Papyshev: No, it’s it. It works. I mean, it’s a it. I’ll send you some. I’ll send you the docs that we’re that we’re concerning. But overall it’s good.
583 01:05:35.390 ⇒ 01:05:36.679 Uttam Kumaran: Okay. Okay. Nice.
584 01:05:37.140 ⇒ 01:05:40.449 Victor Papyshev: The bat. You don’t have much. You don’t have control over the batching as much as I’d like, so.
585 01:05:40.450 ⇒ 01:05:40.980 Uttam Kumaran: Whatever.
586 01:05:40.980 ⇒ 01:05:44.420 Victor Papyshev: It’s every 5 seconds, so it’s a little bit slower than we thought it would be.
587 01:05:44.420 ⇒ 01:05:45.469 Uttam Kumaran: Oh, okay.
588 01:05:45.470 ⇒ 01:05:48.799 Victor Papyshev: I’ll send you the Doc. I think you’ll find it interesting.
589 01:05:48.800 ⇒ 01:05:51.769 Uttam Kumaran: Okay. Okay. Okay. Alright, then. Well, I’ll send a note for it tomorrow.
590 01:05:52.060 ⇒ 01:05:53.089 Victor Papyshev: Alright, awesome thanks.
591 01:05:53.090 ⇒ 01:05:53.780 Uttam Kumaran: Alright. Thank you.
592 01:05:53.780 ⇒ 01:05:54.769 Victor Papyshev: We’ll keep it rolling. Yeah.
593 01:05:54.770 ⇒ 01:05:55.950 Uttam Kumaran: Okay? Bye.