Meeting Title: Magic Spoon dbt Testing Sync Date: 2026-04-01 Meeting participants: Demilade Agboola, Michael Thorson
WEBVTT
1 00:06:43.360 ⇒ 00:06:47.200 Michael Thorson: Hey, sorry, Demi, I was caught in some meeting.
2 00:06:51.740 ⇒ 00:06:55.780 Demilade Agboola: Hello, I was just about to text you and say… and ask if you will be…
3 00:06:56.450 ⇒ 00:06:57.870 Demilade Agboola: If we should re-check.
4 00:06:58.000 ⇒ 00:07:00.080 Demilade Agboola: But it came right in time.
5 00:07:01.270 ⇒ 00:07:14.160 Michael Thorson: Yeah, sorry, I got caught in some AI meeting. I feel like my… everyone at Magic Spoon is, like, so energetic about Cloud Code right now, so I keep being like, what… I just got back from vacation, and everyone’s just like…
6 00:07:14.640 ⇒ 00:07:18.229 Michael Thorson: talking about AI and trying to use it and whatnot, so…
7 00:07:18.610 ⇒ 00:07:27.610 Michael Thorson: It’s interesting. I don’t know how I feel about things. As a technical person, I’m kind of like, I like… I like the gatekeeping, but… fair.
8 00:07:29.860 ⇒ 00:07:35.760 Demilade Agboola: Yeah, yeah, I mean, it’s the buzz right now. It’s one of those things where…
9 00:07:35.860 ⇒ 00:07:43.010 Demilade Agboola: if you don’t know how to use AI or how to prompt things better, it’s kind of hard to…
10 00:07:44.390 ⇒ 00:07:47.239 Demilade Agboola: Be the engineer that’s providing value, so…
11 00:07:47.410 ⇒ 00:07:51.189 Demilade Agboola: everyone’s, everyone’s, I think, learning how to do it.
12 00:07:51.820 ⇒ 00:08:04.199 Michael Thorson: Yeah. Are you guys… is Springforge pushing, like, internally, like, use AI, get better at it, or is it, like, kind of an ad hoc, like, individual, like, bottom-up driven? Super curious.
13 00:08:04.350 ⇒ 00:08:10.420 Demilade Agboola: Oh, no, we lean heavy on AI. Like, even non-engineers, we try to ensure that,
14 00:08:10.830 ⇒ 00:08:16.900 Demilade Agboola: AI is a major part of your day-to-day, and how exactly
15 00:08:17.070 ⇒ 00:08:22.619 Demilade Agboola: You want to deliver in your job. So that goes even to, like, the sales teams.
16 00:08:23.150 ⇒ 00:08:26.589 Demilade Agboola: we integrate lots, like, lots of MCPs and stuff, so…
17 00:08:27.020 ⇒ 00:08:33.120 Demilade Agboola: Yeah, we try to integrate AI into stuff, and it does make certain processes faster.
18 00:08:33.470 ⇒ 00:08:37.679 Demilade Agboola: I mean, obviously, it sets a lacks some context of…
19 00:08:37.900 ⇒ 00:08:41.150 Demilade Agboola: Deliverables and what, like, clients want to see.
20 00:08:41.650 ⇒ 00:08:42.159 Demilade Agboola: Oh.
21 00:08:43.409 ⇒ 00:08:47.029 Demilade Agboola: But it can give you a good foundation to build things from.
22 00:08:49.440 ⇒ 00:08:50.940 Michael Thorson: Yeah, for sure.
23 00:08:51.260 ⇒ 00:08:52.190 Michael Thorson: Huh.
24 00:08:52.950 ⇒ 00:09:03.000 Michael Thorson: Interesting… interesting to hear. I’m like… I don’t know, man, I already feel myself atrophying as I’m leaning into it, so I’m like, I want to keep the skills up without, black boxing too much.
25 00:09:03.000 ⇒ 00:09:03.650 Demilade Agboola: Yeah.
26 00:09:05.130 ⇒ 00:09:06.560 Michael Thorson: Yeah, that’s interesting.
27 00:09:07.300 ⇒ 00:09:10.930 Michael Thorson: Well, the future’s here, whether I like it or not.
28 00:09:12.730 ⇒ 00:09:15.669 Demilade Agboola: Yes, it is one of those things at this point,
29 00:09:16.260 ⇒ 00:09:19.059 Demilade Agboola: Speaking of AI, I actually started using some AI to…
30 00:09:19.330 ⇒ 00:09:22.549 Demilade Agboola: Like, properly, like, scope out the…
31 00:09:24.720 ⇒ 00:09:31.649 Demilade Agboola: I wanted to see if we had foundational dbt tests in here, and so I just asked, like, hey, do we have any dbt tests in the models directory?
32 00:09:32.100 ⇒ 00:09:32.620 Michael Thorson: Yeah.
33 00:09:32.620 ⇒ 00:09:45.940 Demilade Agboola: And it’s just like, nope, no, there are no tests. I’m like, alright, cool. So at least it does give you, like, it’s one of those things that, instead of, like, going through every single file and just trying to read every line, this gives you a disk really quickly, and you’re like, oh, I can move on.
34 00:09:46.260 ⇒ 00:09:47.850 Demilade Agboola: That kind of power to do. Yeah.
35 00:09:48.740 ⇒ 00:09:55.649 Michael Thorson: Totally. Yeah, the context… are you in cursor, or what’s your IDU? Nice, nice.
36 00:09:55.940 ⇒ 00:10:06.040 Michael Thorson: Yeah, I love cursor, man. Like, that’s, like, the perfect use case. As we’re, like, opening up to, like, business use cases, I’m like, dude, really?
37 00:10:08.410 ⇒ 00:10:09.390 Michael Thorson: Dick.
38 00:10:09.810 ⇒ 00:10:11.509 Michael Thorson: So, yeah, we got no tests.
39 00:10:11.770 ⇒ 00:10:12.700 Michael Thorson: Confirm.
40 00:10:18.420 ⇒ 00:10:25.669 Demilade Agboola: So, yeah, in terms of, like, just being able to build that out, so DVT has a number of
41 00:10:25.880 ⇒ 00:10:26.750 Demilade Agboola: Tests?
42 00:10:27.530 ⇒ 00:10:32.639 Demilade Agboola: So there are some that are out of the box. Give me one second… I used to have this…
43 00:10:32.740 ⇒ 00:10:33.710 Demilade Agboola: file.
44 00:10:35.360 ⇒ 00:10:36.030 Demilade Agboola: Criminal.
45 00:10:36.240 ⇒ 00:10:38.060 Demilade Agboola: Elementary, yes, this.
46 00:10:40.380 ⇒ 00:10:44.929 Demilade Agboola: This is probably, like, the golden grill of almost every test you can think of.
47 00:10:45.760 ⇒ 00:10:46.230 Michael Thorson: So this is the.
48 00:10:46.230 ⇒ 00:10:51.380 Demilade Agboola: run by a company called Elementary, who they themselves do their… own tests.
49 00:10:53.980 ⇒ 00:11:00.250 Demilade Agboola: And so they have their tests, obviously, it’s good publicity for them, but they also integrate, like, commonly used dbt tests.
50 00:11:00.380 ⇒ 00:11:04.889 Demilade Agboola: As well as dbt tests that come straight out the box. So you can…
51 00:11:05.270 ⇒ 00:11:08.760 Demilade Agboola: Like, unique tests, you can do, like, standard deviation tests.
52 00:11:08.940 ⇒ 00:11:15.220 Demilade Agboola: You can do… You know, primary key tests, like, there’s just a number of things you can do.
53 00:11:15.660 ⇒ 00:11:21.849 Demilade Agboola: Which is all fine and good, but I think the fundamental…
54 00:11:22.360 ⇒ 00:11:25.599 Demilade Agboola: The thing is just, since we have no tests at all.
55 00:11:26.050 ⇒ 00:11:33.579 Demilade Agboola: the first thing we would want to do is, in my opinion, we need to, like, do primary key tests. Those are very important, so we ensure that
56 00:11:33.710 ⇒ 00:11:40.089 Demilade Agboola: Our primary keys are not null, as well as they’re not unique. I’m sorry, as well as the fact that they are unique.
57 00:11:40.640 ⇒ 00:11:44.530 Demilade Agboola: And then 2 would always be, like, freshness tests as well.
58 00:11:44.740 ⇒ 00:11:48.689 Demilade Agboola: So, some of the things that you pick up from, like.
59 00:11:49.030 ⇒ 00:11:51.779 Demilade Agboola: Prefect’s not running and loading fresh data.
60 00:11:52.380 ⇒ 00:11:58.919 Demilade Agboola: We can also have, like, dbt let us know, hey, this is not properly this data is stale.
61 00:12:00.400 ⇒ 00:12:03.419 Demilade Agboola: And so we can do that for different, like.
62 00:12:03.960 ⇒ 00:12:06.270 Demilade Agboola: Levels of intensity as well, so…
63 00:12:06.550 ⇒ 00:12:10.159 Demilade Agboola: Another thing we test is their levels of intensity, so you can have
64 00:12:10.280 ⇒ 00:12:12.819 Demilade Agboola: A warning, you can have an error.
65 00:12:13.160 ⇒ 00:12:15.330 Demilade Agboola: And those function differently.
66 00:12:15.570 ⇒ 00:12:21.570 Demilade Agboola: So, if you have a warning test, what ends up happening is when dbt runs, it would…
67 00:12:21.820 ⇒ 00:12:23.820 Demilade Agboola: Flag that there is an error.
68 00:12:24.460 ⇒ 00:12:28.750 Demilade Agboola: But it will just warn you. It will be like a warning flag, kind of like what you see.
69 00:12:29.850 ⇒ 00:12:34.990 Demilade Agboola: right now, when you look at DVTs, you see, like, warnings for stuff, so…
70 00:12:35.190 ⇒ 00:12:39.390 Demilade Agboola: part of things that I will change, by the way, is that… They’re setting, like.
71 00:12:39.690 ⇒ 00:12:41.529 Demilade Agboola: Configurations that have been changed.
72 00:12:42.280 ⇒ 00:12:47.209 Demilade Agboola: So, like, source path in dbt Project YAML is no longer called source path, it’s called ModelPath.
73 00:12:47.570 ⇒ 00:12:54.090 Demilade Agboola: So those are, like… obviously, dbt knows what to still do, But it’s not explicitly…
74 00:12:54.370 ⇒ 00:12:56.489 Demilade Agboola: It won’t break things.
75 00:12:56.710 ⇒ 00:13:00.640 Demilade Agboola: But in terms of, like, once you set a test and you set it to error.
76 00:13:01.410 ⇒ 00:13:04.160 Demilade Agboola: Then, it would… it will fail to run.
77 00:13:04.480 ⇒ 00:13:08.490 Demilade Agboola: So, obviously, that needs to be done in, like, extreme circumstances.
78 00:13:08.960 ⇒ 00:13:14.360 Demilade Agboola: That way, you don’t want to break your run unnecessarily.
79 00:13:15.110 ⇒ 00:13:17.220 Demilade Agboola: Yeah, so this is the severity.
80 00:13:18.000 ⇒ 00:13:18.550 Michael Thorson: Hmm.
81 00:13:18.550 ⇒ 00:13:30.820 Demilade Agboola: So you can have error, or you can have one, and then, basically, you put the conditions in which there’s an error. So, for instance, freshness test might be, hey, if the data is less than 12 hours.
82 00:13:31.020 ⇒ 00:13:32.980 Demilade Agboola: It’s less than 24 hours.
83 00:13:33.430 ⇒ 00:13:45.300 Demilade Agboola: maybe we expect to get us coming every 6 hours, for instance. If it’s less than 24 hours freshness, like, so it’s greater than 6, but it’s less than 24, create a warning.
84 00:13:45.430 ⇒ 00:13:49.890 Demilade Agboola: However, if it is greater than, you know, 24 hours or 48 hours.
85 00:13:51.110 ⇒ 00:14:01.129 Demilade Agboola: make it an error. So it will break the run, and that forces everyone to go, like, oh, what the hell is going on? And we can then say, oh, actually, yeah, this data has not loaded in, you know, 48 hours.
86 00:14:01.540 ⇒ 00:14:04.189 Demilade Agboola: So those are, like, the levels of tests that we can do.
87 00:14:04.420 ⇒ 00:14:07.470 Demilade Agboola: And kind of the severity of it.
88 00:14:13.110 ⇒ 00:14:14.799 Demilade Agboola: Do you have any questions so far?
89 00:14:16.030 ⇒ 00:14:17.700 Michael Thorson: And this…
90 00:14:18.690 ⇒ 00:14:27.459 Michael Thorson: the… is… are the tests defined in, like, a new YAML file, or are they defined… that’s the one, just, configuration piece that I’m not… I haven’t explored.
91 00:14:28.910 ⇒ 00:14:31.370 Michael Thorson: Or is this defined in, like, dbt projects?
92 00:14:32.040 ⇒ 00:14:32.880 Demilade Agboola: The test?
93 00:14:33.520 ⇒ 00:14:37.489 Michael Thorson: Or a prof… yeah. Like, the actual YAM file that this lives in.
94 00:14:38.480 ⇒ 00:14:41.909 Demilade Agboola: For the test. Okay, so there are a couple ways you can do it.
95 00:14:42.800 ⇒ 00:14:45.600 Demilade Agboola: So, let’s… let’s go about the different ways you can do it, so…
96 00:14:45.940 ⇒ 00:14:55.270 Demilade Agboola: You have… we have… each folder here has, different… Files in there.
97 00:14:56.280 ⇒ 00:15:01.809 Demilade Agboola: And then we have, like, the schema that gives some context as to what’s going on in each of these files.
98 00:15:02.620 ⇒ 00:15:03.380 Demilade Agboola: Right?
99 00:15:03.940 ⇒ 00:15:05.889 Demilade Agboola: There’s a couple of things we can do.
100 00:15:07.310 ⇒ 00:15:11.560 Demilade Agboola: One is, we can add this in here.
101 00:15:12.910 ⇒ 00:15:15.920 Demilade Agboola: And so, it would refer to the model
102 00:15:16.280 ⇒ 00:15:24.060 Demilade Agboola: that is found in, like, so, like, Amazon Fulfilled Shipments, it would assign it to AmazonFulfilledShipments.sql.
103 00:15:24.470 ⇒ 00:15:30.209 Demilade Agboola: And that whatever test we put in that folder, or in that file, sorry, is referring to this
104 00:15:30.370 ⇒ 00:15:34.990 Demilade Agboola: particular model, so I can of the Amazon ID, so let’s say.
105 00:15:37.920 ⇒ 00:15:46.520 Demilade Agboola: So, I can quickly just go and say, hey, for this folder, given the Amazon order ID is the primary key, set up primary key test for…
106 00:15:47.030 ⇒ 00:15:50.569 Demilade Agboola: Amazon order ID, as well as a freshness test.
107 00:15:51.020 ⇒ 00:15:56.270 Demilade Agboola: For… let me see… is there a… Deets.
108 00:15:58.820 ⇒ 00:16:00.620 Demilade Agboola: Basically, okay, purchased it, yeah.
109 00:16:00.830 ⇒ 00:16:03.589 Demilade Agboola: So, purchase dates, we can set up a test.
110 00:16:03.920 ⇒ 00:16:06.959 Demilade Agboola: That there should be purchase dates within…
111 00:16:09.570 ⇒ 00:16:20.740 Demilade Agboola: they should be a purchase date within the last, like… like, they should always be purchased within the last 24 hours, for instance. And so those two things will come together, and we would have context on what we’re trying to do in that regard.
112 00:16:20.960 ⇒ 00:16:23.350 Demilade Agboola: And so we can do that there.
113 00:16:23.780 ⇒ 00:16:28.359 Demilade Agboola: Another thing is we can try to create, specifically, a test.
114 00:16:28.470 ⇒ 00:16:31.909 Demilade Agboola: YAML file, so instead of having it here.
115 00:16:32.070 ⇒ 00:16:34.330 Demilade Agboola: Where we have all of it living.
116 00:16:34.850 ⇒ 00:16:37.839 Demilade Agboola: Under, like, one big folder.
117 00:16:38.890 ⇒ 00:16:44.550 Demilade Agboola: we can create another, like, YAML file specifically for that, so I can actually create…
118 00:16:45.270 ⇒ 00:16:47.979 Demilade Agboola: So, like, Amazon here, I can create a new file.
119 00:16:48.760 ⇒ 00:16:49.310 Michael Thorson: Hmm.
120 00:16:49.310 ⇒ 00:16:56.940 Demilade Agboola: Let me go… let me switch its branches. Check out… Tests… creation.
121 00:17:02.140 ⇒ 00:17:07.770 Demilade Agboola: Alright, so… I can create a new file, and I can say, like, Amazon.
122 00:17:10.819 ⇒ 00:17:14.660 Demilade Agboola: Customize… dot YAML.
123 00:17:16.010 ⇒ 00:17:20.699 Demilade Agboola: And now I can also just create… same thing I’m having here, but I’ll just create the…
124 00:17:20.839 ⇒ 00:17:24.719 Demilade Agboola: folder, like, the structure, and then put the test here as well.
125 00:17:28.490 ⇒ 00:17:31.620 Demilade Agboola: So, I think, let me give you an example of what that would look like.
126 00:17:54.910 ⇒ 00:17:56.990 Demilade Agboola: Alright, so now I can also put the…
127 00:18:01.240 ⇒ 00:18:01.920 Demilade Agboola: Check on.
128 00:18:02.230 ⇒ 00:18:07.249 Demilade Agboola: Also, so you can’t have multiple, like, references to the same.
129 00:18:07.790 ⇒ 00:18:09.349 Demilade Agboola: folder, like, so the same…
130 00:18:09.970 ⇒ 00:18:11.140 Michael Thorson: If not you.
131 00:18:11.140 ⇒ 00:18:12.540 Demilade Agboola: cause issues.
132 00:18:13.390 ⇒ 00:18:17.910 Demilade Agboola: So now, if I did this format instead, I can always just put, like, okay…
133 00:18:20.070 ⇒ 00:18:22.540 Demilade Agboola: or Amazon, let me add this here…
134 00:18:42.380 ⇒ 00:18:43.310 Michael Thorson: Yes.
135 00:19:00.800 ⇒ 00:19:03.279 Demilade Agboola: And so now, it will just, like, go through.
136 00:19:08.600 ⇒ 00:19:10.630 Michael Thorson: Yeah. At primary awareness.
137 00:19:19.970 ⇒ 00:19:21.190 Michael Thorson: I mean.
138 00:19:30.130 ⇒ 00:19:35.890 Michael Thorson: So I think, education policy.
139 00:19:36.240 ⇒ 00:19:37.180 Demilade Agboola: Okay…
140 00:19:38.310 ⇒ 00:19:42.589 Michael Thorson: We definitely, like, have gone for part, but, like, they were definitely…
141 00:19:49.220 ⇒ 00:19:49.990 Michael Thorson: April.
142 00:19:53.370 ⇒ 00:20:02.839 Demilade Agboola: Sometimes the advantage of AI is that it does it, sometimes it can be slow. Like, if I was to do the YAML valve myself.
143 00:20:05.690 ⇒ 00:20:07.070 Demilade Agboola: Surely it won’t take this long.
144 00:20:07.780 ⇒ 00:20:11.440 Michael Thorson: Yeah, and is it calling? I guess we’ll see in a second.
145 00:20:11.440 ⇒ 00:20:11.810 Demilade Agboola: Yeah.
146 00:20:11.810 ⇒ 00:20:13.129 Michael Thorson: Alright, nice, they’re going.
147 00:20:13.460 ⇒ 00:20:17.449 Michael Thorson: This is the part that I was, like, curious about…
148 00:20:19.280 ⇒ 00:20:23.340 Demilade Agboola: So, it’s saying that the column is this, but customers, so yeah.
149 00:20:24.640 ⇒ 00:20:27.679 Demilade Agboola: Oh, actually, no, it was fulfillment shipments we’re looking at, actually.
150 00:20:29.800 ⇒ 00:20:30.720 Demilade Agboola: But yeah.
151 00:20:31.790 ⇒ 00:20:35.970 Demilade Agboola: Cause… Under…
152 00:20:38.280 ⇒ 00:20:40.789 Michael Thorson: Yeah, oh, yo, I was like, why did it?
153 00:20:41.350 ⇒ 00:20:44.130 Demilade Agboola: He basically just added some more context to it.
154 00:20:44.130 ⇒ 00:20:45.069 Michael Thorson: Oh, yeah.
155 00:20:45.380 ⇒ 00:20:46.080 Demilade Agboola: Yeah.
156 00:20:46.560 ⇒ 00:20:48.729 Michael Thorson: Which you think is unnecessary?
157 00:20:48.730 ⇒ 00:20:51.779 Demilade Agboola: Yeah, I mean, you can just ensure that
158 00:20:52.420 ⇒ 00:20:56.080 Demilade Agboola: In this case, it is not unique, and it is not null.
159 00:20:56.720 ⇒ 00:20:57.300 Michael Thorson: Got you.
160 00:20:57.300 ⇒ 00:20:58.220 Demilade Agboola: at the…
161 00:20:59.150 ⇒ 00:20:59.920 Michael Thorson: Oh, wow.
162 00:20:59.920 ⇒ 00:21:01.460 Demilade Agboola: Creator purchased it, yeah.
163 00:21:02.010 ⇒ 00:21:02.870 Michael Thorson: Yeah.
164 00:21:03.200 ⇒ 00:21:10.300 Demilade Agboola: So now, on this data, since we’re doing a distinct email, for instance, it should always be unique, and it should always be not known.
165 00:21:11.170 ⇒ 00:21:11.650 Michael Thorson: Right.
166 00:21:11.650 ⇒ 00:21:14.499 Demilade Agboola: Well, like, I think on this table, it’s unnecessary, to be honest.
167 00:21:15.460 ⇒ 00:21:23.970 Michael Thorson: Yeah, no, totally. Bad example, but I get you. My one question on the YAML, though, is, the…
168 00:21:24.210 ⇒ 00:21:29.070 Michael Thorson: it’s calling… where is it actually pointing for that, the unique test, for example? Like…
169 00:21:31.100 ⇒ 00:21:33.060 Demilade Agboola: I’m not sure I get… I’m not sure I get that question.
170 00:21:33.470 ⇒ 00:21:35.990 Michael Thorson: Oh, yeah. One sec, I’ll let you take.
171 00:21:35.990 ⇒ 00:21:38.050 Demilade Agboola: Why is it calling the unique test?
172 00:21:39.160 ⇒ 00:21:46.720 Michael Thorson: Yeah, so, like, the tests, just that last segment down in the YAML.
173 00:21:46.920 ⇒ 00:21:47.400 Demilade Agboola: Okay.
174 00:21:47.400 ⇒ 00:21:50.449 Michael Thorson: Amazon customers, YAML, yeah, the,
175 00:21:52.380 ⇒ 00:22:10.959 Michael Thorson: just where you’re saying, columns, name, email, description, whatever, and tests, it’s the dash unique and dash not null. Is that pointing to a file in this dbt project, or is that, like, calling something from dbt cloud? Down below, I guess.
176 00:22:10.960 ⇒ 00:22:12.099 Demilade Agboola: Oh yes, this part?
177 00:22:12.360 ⇒ 00:22:12.960 Michael Thorson: Yeah…
178 00:22:13.560 ⇒ 00:22:19.500 Demilade Agboola: This is DBT’s, this is part of dbt’s… documentation.
179 00:22:19.630 ⇒ 00:22:23.979 Demilade Agboola: And, like, how dbt sets up. So, basically, dbt is a SQL compiler.
180 00:22:24.100 ⇒ 00:22:24.810 Demilade Agboola: Right.
181 00:22:25.230 ⇒ 00:22:37.970 Demilade Agboola: And so, it just knows how to structure the SQL in such a way that it makes the most sense. So, when you integrate these tests, especially the ones that come right out the box, it has SQL that it runs to confirm
182 00:22:38.390 ⇒ 00:22:40.560 Demilade Agboola: That… those tests are true.
183 00:22:40.890 ⇒ 00:22:43.739 Demilade Agboola: So when you say a,
184 00:22:44.210 ⇒ 00:22:48.120 Demilade Agboola: is unique. It will do a count of that column.
185 00:22:48.290 ⇒ 00:22:50.839 Demilade Agboola: And a group buy, and ensure that
186 00:22:52.040 ⇒ 00:22:55.920 Demilade Agboola: There is not… there isn’t a scenario where, like, we have more than one.
187 00:22:56.360 ⇒ 00:22:58.509 Demilade Agboola: If there is, then it will fail it.
188 00:22:59.340 ⇒ 00:23:08.760 Demilade Agboola: to fail the test. Same thing with not null. It will do a count of that column, and do count where is null, like, count where columnName email is null.
189 00:23:08.890 ⇒ 00:23:17.459 Demilade Agboola: Again, if that comes up with… and if that comes up with the number, then it knows that there are no columns, or there are no rows in that column. So that’s what.
190 00:23:17.460 ⇒ 00:23:17.880 Michael Thorson: It’s interesting.
191 00:23:17.880 ⇒ 00:23:23.190 Demilade Agboola: underneath the skin. It’s kind of like structuring The tests on the data.
192 00:23:23.850 ⇒ 00:23:24.790 Michael Thorson: Yeah.
193 00:23:25.090 ⇒ 00:23:31.489 Michael Thorson: If you were to run this low… I just noticed, like, if you scroll down on the left, in the main repo.
194 00:23:31.630 ⇒ 00:23:39.370 Michael Thorson: And we do have a test folder, but I notice it’s empty, so I was like, will this actually run, or will this just, like…
195 00:23:39.610 ⇒ 00:23:42.900 Michael Thorson: Fail to identify unique or the not null tests?
196 00:23:43.550 ⇒ 00:23:44.719 Demilade Agboola: No, no, it will run.
197 00:23:45.060 ⇒ 00:23:45.660 Michael Thorson: Oh, what?
198 00:23:45.660 ⇒ 00:23:46.590 Demilade Agboola: Yeah.
199 00:23:47.150 ⇒ 00:23:52.429 Demilade Agboola: So, here’s another even, like, really fun fact, is that you can actually create custom tests.
200 00:23:52.650 ⇒ 00:23:55.780 Michael Thorson: Right, that’s what I was imagining in the test folder is for, so…
201 00:23:55.780 ⇒ 00:23:59.980 Demilade Agboola: Yeah, so, like, if I wanted to do tests that ensured
202 00:24:00.370 ⇒ 00:24:05.540 Demilade Agboola: That, like, so if I know, for instance, revenue every day, that there is no day revenue should be lower than…
203 00:24:06.020 ⇒ 00:24:11.649 Demilade Agboola: say, you know, $200,000, right? I know, like, there is no day we should have revenue below that.
204 00:24:11.820 ⇒ 00:24:15.920 Demilade Agboola: I can create a custom test, or I can, you know, even include the value in here.
205 00:24:16.450 ⇒ 00:24:16.810 Michael Thorson: Oops.
206 00:24:16.850 ⇒ 00:24:19.280 Demilade Agboola: of the group by revenue by day.
207 00:24:19.580 ⇒ 00:24:30.889 Demilade Agboola: should be greater than 200,000, it will flag it for me. So I know that there was a particular day which is less than $200,000, and I can go in there and look into it.
208 00:24:33.110 ⇒ 00:24:33.980 Demilade Agboola: So…
209 00:24:34.620 ⇒ 00:24:41.249 Demilade Agboola: there are custom tests we can make, basically based off custom SQL, that we’re like, hey, I want this logic to hold true.
210 00:24:42.260 ⇒ 00:24:48.710 Demilade Agboola: There isn’t any right out of the box that we can utilize. We can also utilize this, like I said, today, a bunch of them.
211 00:24:49.150 ⇒ 00:24:52.579 Demilade Agboola: dbt expectations and dbt…
212 00:24:53.270 ⇒ 00:25:01.150 Demilade Agboola: Give me one second… diversity core, diversity utilities, diversity expectations. Those are, like, the three main ones I yield.
213 00:25:01.360 ⇒ 00:25:01.980 Demilade Agboola: Use.
214 00:25:01.980 ⇒ 00:25:02.660 Michael Thorson: Hmm.
215 00:25:05.020 ⇒ 00:25:07.089 Demilade Agboola: Right? In fact, you can also do, like.
216 00:25:07.550 ⇒ 00:25:15.219 Demilade Agboola: references to previous, like, tables. You can say, hey, I need to ensure that any name in this table
217 00:25:15.350 ⇒ 00:25:17.949 Demilade Agboola: appears in the… Upstream table.
218 00:25:18.630 ⇒ 00:25:22.680 Demilade Agboola: Or any customer ID in this table appears in the upstream table.
219 00:25:23.040 ⇒ 00:25:29.750 Demilade Agboola: that we… New values don’t just get imputed into your, like, your downstream table without you knowing, like.
220 00:25:30.110 ⇒ 00:25:31.080 Demilade Agboola: What’s happening with that.
221 00:25:32.530 ⇒ 00:25:49.050 Michael Thorson: Yeah, that’s a super good point, because, I mean, one of the things we were just working on, like, two weeks ago, for example, is, like, the… there’s, like, a sales order header, and then there’s sales order, like, lines, and we had a missing, join, basically, even though we would expect one-to-one, so…
222 00:25:49.530 ⇒ 00:25:50.110 Demilade Agboola: Yeah.
223 00:25:50.420 ⇒ 00:25:51.859 Michael Thorson: Yeah, that’s super interesting.
224 00:25:52.160 ⇒ 00:25:54.960 Demilade Agboola: Yeah, so there are just a bunch of things you can do.
225 00:25:55.120 ⇒ 00:26:00.090 Demilade Agboola: So what I’m going to do now, or, like, what I’m trying to do now, is basically, especially for, like.
226 00:26:00.240 ⇒ 00:26:04.580 Demilade Agboola: I believe the main things you use are, like, Business Central, Shopify.
227 00:26:05.920 ⇒ 00:26:10.910 Demilade Agboola: And I could also potentially do, like, spins as well. Do, like, best for them.
228 00:26:12.320 ⇒ 00:26:15.009 Demilade Agboola: And just do, like, primary key tests for the ones I can see.
229 00:26:15.360 ⇒ 00:26:19.489 Demilade Agboola: And then for, like, like, further down.
230 00:26:20.050 ⇒ 00:26:23.259 Demilade Agboola: In terms of, like, downstream models and, like, more
231 00:26:23.590 ⇒ 00:26:28.689 Demilade Agboola: complex, convoluted business logic. You can let me know, like, things that make sense for…
232 00:26:28.920 ⇒ 00:26:30.920 Demilade Agboola: How the data should be.
233 00:26:31.790 ⇒ 00:26:33.000 Demilade Agboola: a,
234 00:26:33.100 ⇒ 00:26:51.950 Demilade Agboola: for this, in this scenario, there shouldn’t be any nulls, or in this scenario, this should be unique. Or in this scenario, the values, when we sum up the revenue per, you know, brand, it should not be less than this amount, or whatever, like, whatever that logic is, and whatever that looks like.
235 00:26:53.190 ⇒ 00:26:55.669 Demilade Agboola: We… we can start to put that together.
236 00:26:59.160 ⇒ 00:27:08.989 Michael Thorson: Yeah, that’s super… that’s a really good point. I can start brainstorming those, too, and to your point, I think it’s, like, the one… I’ve… I already identified, like, the most, like.
237 00:27:09.110 ⇒ 00:27:11.449 Michael Thorson: Frequent, high visibility.
238 00:27:11.620 ⇒ 00:27:20.909 Michael Thorson: data models, so, like, can walk you through that, too, so we can, like, at least start small, and then we can, like, expand out. Honestly, like, most of the…
239 00:27:21.360 ⇒ 00:27:28.169 Michael Thorson: Most of our models will probably be fine with Unique key in data freshness.
240 00:27:28.570 ⇒ 00:27:32.350 Michael Thorson: And then, like, there’s just, like, I think I’ve identified, like, 5…
241 00:27:32.800 ⇒ 00:27:40.809 Michael Thorson: like, critical high-visibility models that we’ll probably want to do some sort of, like, advanced business logic, so…
242 00:27:40.970 ⇒ 00:27:43.750 Michael Thorson: Happy, like, to walk you through those.
243 00:27:46.370 ⇒ 00:27:53.760 Demilade Agboola: Can you share a screen, please? Also, I was gonna say, and so, like, for instance.
244 00:27:54.190 ⇒ 00:27:59.559 Demilade Agboola: you know how to see what’s happening in Prefect, like, if Perfect has loaded data, you kind of have.
245 00:27:59.560 ⇒ 00:28:00.110 Michael Thorson: That’s cool.
246 00:28:00.110 ⇒ 00:28:01.210 Demilade Agboola: Intro Perfect.
247 00:28:01.430 ⇒ 00:28:02.599 Demilade Agboola: And then… Yeah.
248 00:28:02.730 ⇒ 00:28:07.040 Demilade Agboola: By setting these tests, especially, like, freshness tests, within DBT,
249 00:28:07.260 ⇒ 00:28:10.200 Demilade Agboola: We can start to see it from dbt.
250 00:28:10.870 ⇒ 00:28:11.420 Michael Thorson: for instance.
251 00:28:11.420 ⇒ 00:28:15.950 Demilade Agboola: If, like, we set the 6-hour, you know, whatever, 12-hour time
252 00:28:16.230 ⇒ 00:28:22.200 Demilade Agboola: frame, on the freshness of the data. Before it starts the run, or when it does the run, it will do a check
253 00:28:22.320 ⇒ 00:28:28.590 Demilade Agboola: On what the latest, what the max updated art is, or, you know, whatever time column we’re using.
254 00:28:28.710 ⇒ 00:28:35.909 Demilade Agboola: And if it’s over 6 hours, then we can say, hey, something went wrong, this data is not fresh anymore, and so we can.
255 00:28:36.520 ⇒ 00:28:44.989 Demilade Agboola: it makes it easier to identify what’s going on in Prefect, because we don’t have to, like, necessarily monitor two separate entities back and forth.
256 00:28:45.630 ⇒ 00:28:46.949 Michael Thorson: Yep, yep.
257 00:28:47.130 ⇒ 00:28:53.230 Michael Thorson: No, that makes a lot of sense, and, like, that solves for an issue of, like, where in the…
258 00:28:53.360 ⇒ 00:29:05.809 Michael Thorson: I mean, it’s usually, like, a prefixed issue of, like, causing data freshness, but totally agreed. It’s like, we should have a one-stop shop visibility in dbt tests. It’s like, this is a prefix problem, or this is a dbt problem.
259 00:29:06.180 ⇒ 00:29:10.960 Michael Thorson: Nice. I’ll share my screen, like, I…
260 00:29:11.310 ⇒ 00:29:27.480 Michael Thorson: did a quick wireframe, just, like, hitting a couple… because I was trying to solve the same problem recently, and I was like, we don’t really have a consolidated prefig versus dbt failure dashboard, so I was like, let me just run a really quick…
261 00:29:27.680 ⇒ 00:29:34.070 Michael Thorson: wireframe, that’s what this is. But I, like, talked to the team, it was basically, like, what is important? .
262 00:29:34.070 ⇒ 00:29:34.600 Demilade Agboola: Okay.
263 00:29:35.030 ⇒ 00:29:44.770 Michael Thorson: Yeah, it’s, like, pretty straightforward, though. It’s, like, the Shopify order is marked, so this is actually, like, the end state, but we can trace back that lineage, and kind of, like, build some tests around it.
264 00:29:45.190 ⇒ 00:29:52.249 Michael Thorson: It’s kind of our… I can, like, pull the actual names, too, like, the marked names. But it’s basically, like, Shopify…
265 00:29:52.940 ⇒ 00:30:05.190 Michael Thorson: BC sales orders, BC invoices, that’s basically, like, our wholesale. It’s, like, what we’re selling to our customers that are on the retail side, and then, like, Shopify is usually…
266 00:30:05.340 ⇒ 00:30:11.620 Michael Thorson: Just, like, all of our D2C business. So it’s like, these are, like, where we’re tracking revenue, so it’s, like, that’s what everyone cares about.
267 00:30:11.810 ⇒ 00:30:19.589 Michael Thorson: And then, the last one, kind of a similar story, though, is BC General Ledger, which is, like, this will cover both
268 00:30:19.970 ⇒ 00:30:27.409 Michael Thorson: Yeah, all, like, spend, this will cover all… yeah, it’s just, like, our general ledger. It’s, like, our most important financial document, so…
269 00:30:27.590 ⇒ 00:30:29.010 Michael Thorson: And then I had, like…
270 00:30:29.180 ⇒ 00:30:39.150 Michael Thorson: kind of similar to what you’re talking about, where, like, I started to just monitor, like, how many rows are being added in the past, like, 24 hours, just to get, like, an idea of, like, how big is this thing growing?
271 00:30:39.280 ⇒ 00:30:43.989 Michael Thorson: General Ledger being, like, the most complicated, largest table, but
272 00:30:44.560 ⇒ 00:30:51.699 Michael Thorson: I think those are the dbt tests we should focus on first, though. And to your point, I think, like, start with base, just, like.
273 00:30:51.940 ⇒ 00:30:57.280 Michael Thorson: do exactly, like, do a data freshness check, do a unique ID check,
274 00:30:57.390 ⇒ 00:31:04.730 Michael Thorson: And then we can move towards, like, I have some business logic in mind that I can, like, flush out, so you don’t have to kind of play the guessing game.
275 00:31:05.050 ⇒ 00:31:05.770 Demilade Agboola: Okay.
276 00:31:06.120 ⇒ 00:31:15.500 Michael Thorson: Yeah, or I could even… I’d love to take a stab at those, so maybe if you focus on base, I could, like, build those out and be like, what do you think of these? Like, did I configure these tests right?
277 00:31:15.720 ⇒ 00:31:20.260 Michael Thorson: And then you can… you can help me tweak the final 10% or whatever.
278 00:31:20.570 ⇒ 00:31:21.609 Demilade Agboola: Alright, sounds good.
279 00:31:22.090 ⇒ 00:31:22.690 Michael Thorson: Boom.
280 00:31:22.690 ⇒ 00:31:24.629 Demilade Agboola: Yeah, cause it, like, the…
281 00:31:25.300 ⇒ 00:31:30.029 Demilade Agboola: Oh, okay. This is pretty cool, like, do you… do you… can I get access to this dashboard?
282 00:31:30.680 ⇒ 00:31:38.960 Michael Thorson: Yeah, I can give you access to this. It’s just, like, publicly hosted Vercel… I just, like, vibe-coded this in Claude, speaking of AI.
283 00:31:39.520 ⇒ 00:31:49.060 Michael Thorson: And the most important thing for me, though, was, like, it’s… I wanted to get an idea of how often things are actually failing, and for how long, because…
284 00:31:49.420 ⇒ 00:31:56.489 Michael Thorson: I think what I noticed in here is I know that these failures, these are all coming from Business Central.
285 00:31:56.800 ⇒ 00:32:06.330 Michael Thorson: So it’s telling me that the API times out, like, pretty frequently, and it often will time out for, like, a full day, which is, like.
286 00:32:07.030 ⇒ 00:32:15.379 Michael Thorson: I think it’s just gonna be a fact of business, but it tells me, it’s like, when we’re making these DBT tests, maybe we can reference this and be like, warning, unless it’s…
287 00:32:15.690 ⇒ 00:32:19.649 Michael Thorson: Like, over a day… over, like, two, you know, two days, or whatever it is.
288 00:32:19.650 ⇒ 00:32:21.179 Demilade Agboola: 36 hours or something.
289 00:32:21.560 ⇒ 00:32:25.919 Michael Thorson: Exactly. And then just, like, I’ll be in charge of, like, communicating that.
290 00:32:26.040 ⇒ 00:32:28.080 Michael Thorson: To our teams.
291 00:32:28.310 ⇒ 00:32:28.930 Demilade Agboola: Okay.
292 00:32:29.270 ⇒ 00:32:35.610 Michael Thorson: Because it’s like, usually fine to wait 2 days, and then sometimes our team’s like, we need it now, basically.
293 00:32:36.300 ⇒ 00:32:36.910 Demilade Agboola: Yeah.
294 00:32:37.660 ⇒ 00:32:46.459 Michael Thorson: Yeah. Cool. Yeah, that’s… that’s kind of what I’m thinking, is just, like, this was a good kind of framework. It’s probably too detailed, we probably just need to run DVD tests.
295 00:32:48.040 ⇒ 00:32:53.489 Michael Thorson: But I’ll shoot you access to this, you can, like, take a look, and just kind of, like, understand what the expectations are.
296 00:32:53.890 ⇒ 00:33:05.860 Demilade Agboola: Yeah, this will help me, like, this just even lets me know what the most important, like, things that you need to have access to. Like, I kind of figured that the… it was going to be stuff around, like.
297 00:33:07.500 ⇒ 00:33:09.069 Demilade Agboola: the business central data.
298 00:33:09.390 ⇒ 00:33:17.670 Demilade Agboola: Yeah, so we’ll definitely just, like, ensure that the present central data has, like, good… Good tests.
299 00:33:17.830 ⇒ 00:33:29.329 Demilade Agboola: Set up on there. And, you know, like, once we start to have those tests set up, we can therefore start to think, okay, like, once we were sure of the freshness and the amount of data that’s coming in.
300 00:33:29.680 ⇒ 00:33:30.890 Demilade Agboola: Mmm.
301 00:33:31.880 ⇒ 00:33:43.309 Demilade Agboola: We can also do row counts, by the way. There are also, like, other things we can do. So, we can do, like, ensure that the row count that comes in any particular day is above a certain amount, or, like, it’s not normal. You know, sometimes…
302 00:33:43.510 ⇒ 00:33:46.599 Demilade Agboola: You might only get, like, a limited number of rules that come in.
303 00:33:46.870 ⇒ 00:34:00.409 Demilade Agboola: So yeah, things like that. We can definitely play around with things. We’ll do the basics first. I think the basics are always very important. Once we have them in a good spot, then we start to, like, play around with, like, how we want the numbers to… to look.
304 00:34:00.750 ⇒ 00:34:03.540 Demilade Agboola: And how we can get more specific with our tests.
305 00:34:04.440 ⇒ 00:34:17.510 Michael Thorson: Yeah, I’m super curious, too, what’s your take? Because I think the base testing is super important, because it’s, like, monitoring how we’re doing, and then what I could also offer in conjunction is, like.
306 00:34:17.510 ⇒ 00:34:27.199 Michael Thorson: when I was doing this, I was like, wait, this… all this data could honestly live in Omni, for the most part? Like, this is… download, like, this is a row count by day.
307 00:34:27.570 ⇒ 00:34:46.119 Michael Thorson: So, I was thinking, like, I could almost build a dashboard to do the monitoring while we understand, like, what is the expected row count, because we actually… I actually don’t really know by model, like, what the expectation is. I kind of started tracking it here, but, like, it’s probably better to do this in Omni.
308 00:34:46.449 ⇒ 00:34:47.619 Demilade Agboola: Yeah, so for.
309 00:34:47.620 ⇒ 00:34:47.940 Michael Thorson: So…
310 00:34:47.949 ⇒ 00:34:54.609 Demilade Agboola: Like, there’s some… there’s some tables that seem to have zero rows, and it’s like, okay, is that due to the failure?
311 00:34:55.009 ⇒ 00:34:57.489 Demilade Agboola: or adezon, like, you know…
312 00:34:57.729 ⇒ 00:35:01.529 Demilade Agboola: I think it is the failure, but, like, it’s been coming in that way for a number of days.
313 00:35:01.890 ⇒ 00:35:03.030 Michael Thorson: Yeah.
314 00:35:03.030 ⇒ 00:35:06.220 Demilade Agboola: So that itself is something we could always, like, look into.
315 00:35:08.230 ⇒ 00:35:20.859 Michael Thorson: It’s probably, like, an API call error. Like, it’s because I vibe-coded this, I didn’t QA the dashboard. Realistically probably garbage AI slop.
316 00:35:21.040 ⇒ 00:35:26.329 Demilade Agboola: Armin… It does put us directionally in, like, where we want to be.
317 00:35:26.620 ⇒ 00:35:37.160 Demilade Agboola: But yeah, I get what you mean. So we’ll definitely, like, so once we start putting up tests, you can start to think of monitoring and, like, dbt creates metadata from tests as well.
318 00:35:37.340 ⇒ 00:35:56.449 Demilade Agboola: So we can start to put up the numbers in, like, Omni, we can, if we want to use from APIs directly, we can use the APIs directly, and we can kind of, like, have that in one dashboard, so that everybody, like, anybody can just go into that dashboard and kind of see, okay, these are the dashboards that have failed.
319 00:35:57.000 ⇒ 00:35:57.340 Michael Thorson: Yep.
320 00:35:57.340 ⇒ 00:36:15.169 Demilade Agboola: This… the data here has gone over 24 hours without any updates to it in dbt. Therefore, this is… we can understand that this would affect this downstream models, and it would affect, like, you know, revenue for that day, or the next couple days, or whatever that looks like.
321 00:36:15.930 ⇒ 00:36:32.999 Michael Thorson: Yeah, and then that’s, like, where I think the real product of this will be. It’ll be kind of, like, OmniDashboard, some of those dbt, like, the metadata flowing through. Like, is model… is, like, the run okay? Were there any errors? And then almost having, like, a…
322 00:36:33.450 ⇒ 00:36:47.559 Michael Thorson: like, I can do that analysis, like, if this failed, this is the impact, and then also, probably including just, like, a quick button, like a UI, to be, like, rerun dbt, because a lot of times it’s just, like, a dbt hang up, or, like, a, we need a refresh.
323 00:36:47.810 ⇒ 00:36:49.470 Michael Thorson: Now? No.
324 00:36:49.920 ⇒ 00:37:06.100 Michael Thorson: Yeah, I think let’s start small, obviously, but I’d love maybe for the next steps, like, let’s get these five, kind of, DBT tests set up, and then I’d love kind of a guide to how to access that, test metadata that you’re talking about. I have never looked at it, honestly, but that sounds really, really valuable.
325 00:37:06.310 ⇒ 00:37:10.810 Demilade Agboola: Yeah, and even, like, within DBT itself, you can start to see some of these numbers up here.
326 00:37:11.120 ⇒ 00:37:14.749 Demilade Agboola: And once you start to have those numbers appear.
327 00:37:15.200 ⇒ 00:37:18.549 Demilade Agboola: It does help, especially in the cat’s world.
328 00:37:20.280 ⇒ 00:37:33.840 Demilade Agboola: Once you have the catalog, it starts to help show you, hey, these tests are taking a really long time to run, and all the other details about that. But like I said, once we start to build it out, it’s much easier to…
329 00:37:35.650 ⇒ 00:37:40.179 Demilade Agboola: It’s much easier to, go beyond, once we have that.
330 00:37:41.490 ⇒ 00:37:58.549 Michael Thorson: Yeah. Perfect. But yeah, I think we have a first step, then, is, like, let’s run with those, like, base tests. I’ll help out where I can with the MART testing and, like, that logic. Or if you want to build, and you just have questions about, like, hey, what should I be looking for? Just Slack me, and I can, like, shoot you some…
331 00:37:58.680 ⇒ 00:38:04.710 Michael Thorson: initial ideas, I guess, if you’re… if you want to do that this week. I’m not sure what your priorities…
332 00:38:04.710 ⇒ 00:38:05.760 Demilade Agboola: I, yeah.
333 00:38:05.760 ⇒ 00:38:06.240 Michael Thorson: I don’t know.
334 00:38:07.060 ⇒ 00:38:11.509 Demilade Agboola: I think we could definitely, like, I definitely could do that, this week.
335 00:38:12.340 ⇒ 00:38:21.040 Michael Thorson: Oh, sick. Yeah, then let’s go ahead and proceed, and like, just use me as a resource if we want to focus on those 5 models or so.
336 00:38:21.270 ⇒ 00:38:22.509 Demilade Agboola: Okay, alright, will do.
337 00:38:23.360 ⇒ 00:38:24.110 Michael Thorson: What do you need?
338 00:38:24.400 ⇒ 00:38:28.579 Michael Thorson: Do you need a list, or are you familiar with, like, what you need to point at?
339 00:38:29.050 ⇒ 00:38:34.809 Demilade Agboola: I mean, I have an idea of where I’m going to point out, but, like, if you, like, if you feel like it’s best…
340 00:38:35.870 ⇒ 00:38:44.659 Demilade Agboola: to show me the echo, that would be much appreciated. So I was going to suggest to, like, the Business Central models, I was going to do stuff around Shopify models.
341 00:38:44.820 ⇒ 00:38:47.650 Demilade Agboola: And I was going to do stuff around…
342 00:38:48.170 ⇒ 00:38:52.280 Demilade Agboola: Probably, like, Spain’s models, because they were just coming in and just wanted to be sure that everything was fine.
343 00:38:52.750 ⇒ 00:38:53.320 Demilade Agboola: Cool.
344 00:38:53.320 ⇒ 00:38:53.700 Michael Thorson: requirements.
345 00:38:54.430 ⇒ 00:39:00.049 Demilade Agboola: You felt like there are other things that we need to look at specifically, like, that’s fine as well.
346 00:39:03.640 ⇒ 00:39:06.100 Michael Thorson: No, I think that’s honestly…
347 00:39:06.850 ⇒ 00:39:21.570 Michael Thorson: That’s a perfect starting place. I’m scanning through the list right now, just to, like, double check, but, like, honestly, we haven’t had any issues. So, like, I think, yeah, just focus there. That’s our most unstable API and our most, like,
348 00:39:22.310 ⇒ 00:39:30.890 Michael Thorson: visible, like, DAG, I guess. So, yeah, just go for it, let it rip, and then when you hit any, like, business questions.
349 00:39:31.090 ⇒ 00:39:39.410 Michael Thorson: Or if you find yourself guessing at all of, like, oh, what’s the right unique key? Just, like, shoot me a Slack, and I can, like, easily pull it, take, like, 10 seconds or whatever.
350 00:39:39.410 ⇒ 00:39:44.559 Demilade Agboola: Okay, alright, sounds good. Also, have you been able to look at the Spain’s data right now?
351 00:39:44.970 ⇒ 00:39:57.450 Michael Thorson: I haven’t taken a look at it, I’m, like, it’s pretty, pretty, pretty wild over here, but yeah, I can, like, I don’t know, we have a couple minutes. Like, I can take a look at it.
352 00:39:58.790 ⇒ 00:40:13.250 Michael Thorson: The thing is, I looked at the base data, like, at the, raw data that Ashwini uploaded, and it all… that all looked good, so I was like… and I looked at your PR, and I was like, okay, like, it’s not… it’s nothing crazy… nothing crazy, so, like…
353 00:40:13.320 ⇒ 00:40:19.179 Michael Thorson: Unless DBT failed, I was like, I think it’s probably gonna be okay, but…
354 00:40:20.000 ⇒ 00:40:23.609 Michael Thorson: Yeah, yeah, because I was like, this looked good. Cool.
355 00:40:24.670 ⇒ 00:40:30.239 Demilade Agboola: Alright then, like, if that’s fine, at least it lets us know what…
356 00:40:30.620 ⇒ 00:40:42.120 Demilade Agboola: what exists. I… another thing I was thinking about is how we want to, like, integrate that Spins data, because it’s still siloed, it’s still kind of in its own spin space. How do we want.
357 00:40:42.120 ⇒ 00:40:42.510 Michael Thorson: Jill.
358 00:40:42.510 ⇒ 00:40:46.730 Demilade Agboola: Is it across multiple, like, end tables.
359 00:40:47.080 ⇒ 00:40:55.490 Demilade Agboola: Do we want, like, are there certain tables we want to join into? How do we want to join them? Like, what granularity do we want to look at to that? That sort of stuff.
360 00:40:56.340 ⇒ 00:41:05.100 Michael Thorson: Let me… I’m gonna double-check really quick. Oh, I must be… I might be in, like, an old version of…
361 00:41:05.550 ⇒ 00:41:10.119 Michael Thorson: I think I’m not… I might not be synced locally. Whoops.
362 00:41:12.280 ⇒ 00:41:18.420 Michael Thorson: Yeah, I need to, like… I need to actually pull your branch, that’s what was happening.
363 00:41:18.690 ⇒ 00:41:21.360 Michael Thorson: But to your point, yeah.
364 00:41:21.360 ⇒ 00:41:25.360 Demilade Agboola: It should be on the… it should be on the main branch. Have you pulled from…
365 00:41:25.560 ⇒ 00:41:29.619 Michael Thorson: No, I’m just coming back for vacation.
366 00:41:29.740 ⇒ 00:41:33.439 Michael Thorson: I didn’t bring my laptop on vacation either, so, like, this is all, like, 3 weeks.
367 00:41:33.440 ⇒ 00:41:40.670 Demilade Agboola: That’s a good idea, because my problem is, if I’m on vacation with my computer, I always find some way to, like, open it up.
368 00:41:41.180 ⇒ 00:41:46.780 Michael Thorson: Oh yeah, this is 3 weeks old. I was like, why am I not seeing the marts in here? Okay, yeah, no.
369 00:41:47.160 ⇒ 00:41:53.140 Michael Thorson: So, I’m catching up, but… to your point, though, the spins data, like.
370 00:41:53.400 ⇒ 00:42:03.029 Michael Thorson: we’re gonna pause on it in terms of doing any sort of joins. JT and I have an open action to go sit down with some of the, like, leadership team.
371 00:42:03.030 ⇒ 00:42:13.939 Michael Thorson: Because, like, I can set up the reporting as is to just report, like, hey, there’s a revenue by region, or by retail, or whatever, and, like, that’s pretty easy to do. I think what’s…
372 00:42:14.510 ⇒ 00:42:25.799 Michael Thorson: what we need to figure out is, like, do people actually want a lot of joins, and do we want to, like, start making, like, an omnichannel sales report, D2C plus retail plus spins, for example? But…
373 00:42:25.800 ⇒ 00:42:26.320 Demilade Agboola: True.
374 00:42:26.720 ⇒ 00:42:38.030 Michael Thorson: there hasn’t been, like, an ask for it. I think people just want the data there and clean for now, which is, like, fine by me, but we have to go on a little bit of a roadshow and be like, hey, like, this is what’s available.
375 00:42:38.030 ⇒ 00:42:54.649 Michael Thorson: this is what we recommend, what questions do you want to, like, ask, and then we’ll come back and do, like, a more comprehensive, like, model. Have you… but, I mean, do you have any, like, inklings for what you would want to start joining onto that, or are you just, like, asking the question? Because that’s, like, the obvious next step?
376 00:42:55.150 ⇒ 00:43:01.390 Demilade Agboola: I think that’s the obvious next step. I mean, right now, we just have it at the base, and I think at this point,
377 00:43:01.960 ⇒ 00:43:06.020 Demilade Agboola: We could start to, like, integrate it with…
378 00:43:06.810 ⇒ 00:43:17.570 Demilade Agboola: potentially, maybe some Shopify data, like, just, like, playing around with it and just trying to see who wants to use it. I think the smart thing is who wants to use it right now, what they currently use.
379 00:43:18.840 ⇒ 00:43:21.349 Demilade Agboola: And, like, what comparisons they want to make.
380 00:43:21.460 ⇒ 00:43:25.830 Demilade Agboola: And once we have an idea of, like, what that is, we can start to integrate
381 00:43:26.190 ⇒ 00:43:34.150 Demilade Agboola: these numbers into what they currently exist in the infrastructure, and say, hey, we can add… we can enrich what you currently have with Spin’s data.
382 00:43:34.580 ⇒ 00:43:36.429 Demilade Agboola: By this level of granularity.
383 00:43:37.340 ⇒ 00:43:53.390 Michael Thorson: Yeah, that… I, like, what it’ll probably end up looking like, just speaking out loud, is, like, because Spins is, like, top-level revenue for Magic Spoon, it’ll be, like… we’ll probably need to take the Shopify sales data and almost… because the Spins is coming in batches, you know, of, like… Yeah.
384 00:43:53.390 ⇒ 00:44:07.869 Michael Thorson: we have the trended, and then we have, like, last 52 weeks, so we might do some sort of, like, take Shopify data, group into periods, like, aggregate into, like, 52 weeks, 24 weeks, etc, and then we’ll do, like, a all-up Magic Spoon revenue.
385 00:44:07.870 ⇒ 00:44:23.070 Michael Thorson: in, like, byproducts in different periods. So, well, we might have that, but, like, I’ve been poking people, I’m like, do you want an omni-channel sales report? And people are like, maybe.
386 00:44:23.160 ⇒ 00:44:24.460 Michael Thorson: There we go?
387 00:44:26.610 ⇒ 00:44:27.450 Demilade Agboola: Bigger fish to fro.
388 00:44:27.450 ⇒ 00:44:28.240 Michael Thorson: Right.
389 00:44:28.240 ⇒ 00:44:31.229 Demilade Agboola: Yeah, yeah, I think it’s one of those things where…
390 00:44:31.540 ⇒ 00:44:37.460 Demilade Agboola: The utility needs to come, and then people are like, oh, yeah, this has been really helpful.
391 00:44:39.090 ⇒ 00:44:45.709 Demilade Agboola: But I’m curious, who will be the primary stakeholder in using the spin center? Will that be Heather or someone else?
392 00:44:46.310 ⇒ 00:44:48.850 Michael Thorson: Heather, that’s the thing, Heather just wants it…
393 00:44:48.930 ⇒ 00:45:06.369 Michael Thorson: pre-cleaned, and she’s gonna download it and, like, import it to… she has, like, a super customized, like, Excel file, so she’ll literally just, like, download it from the warehouse. I don’t think she’s as confident or comfortable in, like, BI tools, so she’ll do it offline still.
394 00:45:06.590 ⇒ 00:45:07.460 Demilade Agboola: I mean…
395 00:45:08.030 ⇒ 00:45:16.220 Demilade Agboola: I get that, but the goal is to always ensure that you don’t have that process. Like, if we can knock off, what, 20 minutes of your time every day?
396 00:45:16.360 ⇒ 00:45:19.079 Demilade Agboola: That makes a difference, like, that adds up real quick.
397 00:45:20.660 ⇒ 00:45:30.320 Michael Thorson: Yeah, no, definitely. I mean, it’ll knock off… even just getting that data packaged for it, it’ll knock off, like, 4 days of her manual download, so it’s like, okay, that’s something.
398 00:45:30.320 ⇒ 00:45:49.430 Demilade Agboola: So if she could just literally come to the dashboard and see what the numbers were, or, like, are in the format that she wants… I mean, again, these are stuff we’ve done for other clients, you know, the clients who are like, oh, I have my forecasting model, it needs to be this way, but, like, if you’re able to, like, truly understand how they want to see the data, what they need in that data, we can always.
399 00:45:49.430 ⇒ 00:45:49.789 Michael Thorson: It’s do it.
400 00:45:49.790 ⇒ 00:45:52.619 Demilade Agboola: And ensure that they don’t have to, you know.
401 00:45:52.810 ⇒ 00:45:59.550 Demilade Agboola: download raw data, ingest it into the Excel file… Excel sheet, and then work on it every day.
402 00:45:59.970 ⇒ 00:46:03.430 Michael Thorson: Yeah, good call-out. I can,
403 00:46:03.730 ⇒ 00:46:14.799 Michael Thorson: like, I have an open action, because she has her… I basically need to, like, review all her visuals, and then just, like, start to potentially rebuild those, or even just, like, do the data prep that she needs, but
404 00:46:15.040 ⇒ 00:46:21.729 Michael Thorson: Yeah, I can probably, like… let me check with her, see kind of where the end state is, and then if we do want to build out the analytics.
405 00:46:21.940 ⇒ 00:46:28.219 Michael Thorson: like, once we’re done with tests, I’ll tap you and be like, hey, we’re gonna redo this in BI, which’ll just be, like, a lot of legwork, but…
406 00:46:28.330 ⇒ 00:46:33.389 Michael Thorson: Nothing… nothing crazy. There’s nothing insane about her visuals, which is good.
407 00:46:33.910 ⇒ 00:46:37.719 Demilade Agboola: Okay. Alright, sorry, before we hop off, just one final thing I wanted to show you.
408 00:46:38.080 ⇒ 00:46:39.399 Demilade Agboola: Yeah.
409 00:46:40.470 ⇒ 00:46:40.970 Michael Thorson: Yeah, so…
410 00:46:40.970 ⇒ 00:46:45.200 Demilade Agboola: So, like, in the dbt job, so this is the prod run,
411 00:46:46.490 ⇒ 00:46:52.539 Demilade Agboola: This is what I added right now, or not just right now, but I’ve added it. So this tests everything.
412 00:46:53.220 ⇒ 00:46:55.420 Demilade Agboola: So, the run will create tables.
413 00:46:55.690 ⇒ 00:47:02.219 Demilade Agboola: dbt test is saying, hey, now that you’ve created those tables, do those tests that we’ve explicitly asked you to do on the product.
414 00:47:02.790 ⇒ 00:47:10.099 Demilade Agboola: Which is why Target is broad. So, like, just go there. So if we say, hey, there should be no nulls, or no, you know.
415 00:47:10.540 ⇒ 00:47:11.059 Michael Thorson: Oh, they should.
416 00:47:11.060 ⇒ 00:47:14.360 Demilade Agboola: There shouldn’t be any, like, unique… there shouldn’t be any duplicate keys.
417 00:47:15.570 ⇒ 00:47:19.039 Demilade Agboola: After the tables have been built, it will then test those tables
418 00:47:19.800 ⇒ 00:47:24.180 Demilade Agboola: and lets us know the results. So that way, it builds out everything.
419 00:47:24.470 ⇒ 00:47:27.809 Demilade Agboola: And then the test will give us the result of the bill.
420 00:47:29.610 ⇒ 00:47:43.579 Demilade Agboola: It lets us know that, hey, this is the… these are the issues. So that’s how you know if it’s not fresh, for instance, because it’s built it out, and it’s like, hey, the latest data in this table after the build is… was 36… 36 hours ago, the latest roll.
421 00:47:46.260 ⇒ 00:47:50.440 Michael Thorson: Oh, and this is… this is the orchestration, sequence, I guess?
422 00:47:50.440 ⇒ 00:47:51.970 Demilade Agboola: Yes, that’s the orchestral sequence.
423 00:47:52.530 ⇒ 00:47:56.699 Michael Thorson: What’s Snapshot for, then? I can read the documentation, but I don’t know that one.
424 00:47:56.700 ⇒ 00:48:04.839 Demilade Agboola: Okay, so snapshots basically is saying, hey… so snapshots are, like, we… sometimes we have something called slow changing dimensions, SCDs.
425 00:48:05.040 ⇒ 00:48:12.100 Demilade Agboola: And so the idea is, you want to be able to capture that as it occurs. So an example would be, if you have order status.
426 00:48:12.400 ⇒ 00:48:16.640 Demilade Agboola: And sometimes, you know, it might go from… pending to…
427 00:48:16.870 ⇒ 00:48:20.819 Demilade Agboola: You know, in progress to delivered.
428 00:48:22.790 ⇒ 00:48:25.980 Demilade Agboola: If you have only one row for that order.
429 00:48:26.430 ⇒ 00:48:32.650 Demilade Agboola: it’s changing status, but we don’t necessarily know when it’s changing status. So what a snapshot does is, when dbt runs.
430 00:48:33.540 ⇒ 00:48:39.230 Demilade Agboola: We specify the tables we want to take snapshots of, and then it will look at the unique row.
431 00:48:39.690 ⇒ 00:48:40.340 Michael Thorson: Hmm.
432 00:48:41.050 ⇒ 00:48:52.600 Demilade Agboola: take a hold of the value, and when the value changes, it replaces that value, but it lets you know that this was the previous value before. So now you’ll have two rows. So you’ll say, hey, this order, say, order ABC,
433 00:48:52.820 ⇒ 00:48:55.529 Demilade Agboola: Was initially, in progress.
434 00:48:56.100 ⇒ 00:49:08.910 Demilade Agboola: from the 1st of April till the 3rd of April, and on the 3rd of April, it got delivered. So now we have two rows, and we can have a context of how long the order took to be delivered.
435 00:49:09.310 ⇒ 00:49:09.660 Michael Thorson: those evening.
436 00:49:09.660 ⇒ 00:49:16.869 Demilade Agboola: If it was just, if we were not taking snapshots, we would just know that at one point it was in progress, and now it is…
437 00:49:17.010 ⇒ 00:49:21.049 Demilade Agboola: Delivered, but we don’t know when it… when… what happened, and when it happened.
438 00:49:22.420 ⇒ 00:49:31.050 Michael Thorson: Yeah, that makes sense. Oh, interesting. Yeah, I’ve run it… I’ve reverse-engineered that before, but I didn’t know there was, like, a feature for that.
439 00:49:31.490 ⇒ 00:49:43.179 Demilade Agboola: Yeah, so dbt Snapshot just does that, like, you just specify the tables, put the unique keys that you want to do, or you want to look at, and to ensure that, like, it takes… every time it runs, it takes a snapshot of the table.
440 00:49:44.360 ⇒ 00:49:46.700 Michael Thorson: Nice. Super sick.
441 00:49:47.680 ⇒ 00:49:50.000 Demilade Agboola: Dang, it’s just like, you’re… you’re…
442 00:49:50.640 ⇒ 00:50:00.140 Michael Thorson: Yeah, no, you’re sending me… I’m, like, in the documentation, this is pretty, like… it’s, like, very high up in the DVD project documentation. I just need to, like, go re-read these now that I have a lot more context.
443 00:50:01.330 ⇒ 00:50:05.500 Demilade Agboola: Don’t worry, like, that’s why I’m here, like, if you have any questions on dbt or, like, things that you feel like
444 00:50:05.840 ⇒ 00:50:10.230 Demilade Agboola: Is there any way dbt can do this? It probably can. We just need to…
445 00:50:10.230 ⇒ 00:50:10.900 Michael Thorson: Yeah.
446 00:50:10.900 ⇒ 00:50:19.790 Demilade Agboola: We just need to, like, sit down and, like, put it together, but yeah, you can. And so, like, one of the things I do and have done as a product that’s really cool with snapshots is you can start to…
447 00:50:20.520 ⇒ 00:50:23.669 Demilade Agboola: Platin it. So what dbt does is it creates a row.
448 00:50:23.870 ⇒ 00:50:27.580 Demilade Agboola: For each state that the project, like, the… the…
449 00:50:27.910 ⇒ 00:50:32.290 Demilade Agboola: the… what we’re monitoring is in. So you can say, hey, order ABC,
450 00:50:32.700 ⇒ 00:50:40.090 Demilade Agboola: was in this state for this long, then he moved to state B at this point in time, and then state C at this point in time, and so now you can flatten it.
451 00:50:40.700 ⇒ 00:50:46.060 Demilade Agboola: Right? Like, for a client that we’ve had, they were a floral company, so they wanted to see
452 00:50:46.270 ⇒ 00:50:49.380 Demilade Agboola: When certain things were, like, being sold.
453 00:50:49.930 ⇒ 00:50:50.510 Michael Thorson: We’re able to.
454 00:50:50.510 ⇒ 00:50:53.979 Demilade Agboola: Take snapshots of it, and now we were flattening it by the hour.
455 00:50:54.030 ⇒ 00:51:11.709 Demilade Agboola: And so we could kind of see, like, 8 AM, you had 200, roses, for instance. By 9 AM, it was now 180. By 12… 12 PM, like, 12 noon, it was already, you know… So they could start to see what the sale was like throughout the day.
456 00:51:12.680 ⇒ 00:51:20.799 Demilade Agboola: Figure out, like, what sells well, maybe in the mornings, what sells well at night, figure out when they keep running out of stock, and how to.
457 00:51:20.800 ⇒ 00:51:21.279 Michael Thorson: Yeah, good.
458 00:51:21.280 ⇒ 00:51:33.610 Demilade Agboola: of inventory, because sometimes inventory finishes at night, so it’s like, how do we get ahead? Like, things of that, like, things of that nature. So you can start to, like, do a lot of things with that, because now you’re keeping track of when those dimensions are changing.
459 00:51:34.070 ⇒ 00:51:40.909 Michael Thorson: Yeah, and then, are you, like, with the snapshot, are you sending that back to, like, as a CCE to the…
460 00:51:41.060 ⇒ 00:51:47.890 Michael Thorson: To the, like, the row, if you’re looking, like, the SKU that is roses or something, or do you just keep that in the snapshots, like, independent table or something?
461 00:51:47.890 ⇒ 00:51:51.300 Demilade Agboola: independent table, yeah, so it’s just a standalone table.
462 00:51:51.410 ⇒ 00:51:54.220 Demilade Agboola: And so now you have the snapshot,
463 00:51:54.490 ⇒ 00:52:02.330 Demilade Agboola: And then you can then decide how you want to use. So, like, I call it flattening the table, so you flatten it, and use that to,
464 00:52:02.660 ⇒ 00:52:05.970 Demilade Agboola: See, like, the dimensions as it was changing.
465 00:52:06.080 ⇒ 00:52:20.649 Demilade Agboola: So you can do it by day, you can do it by hour, you can do it by week, depending on how, like, it changes. And so now you can see, hey, it takes, like, 2 days, or this… it took 2 days for this to be delivered, it took, you know, 1 day for this to happen, or this process, and now you can now do an average.
466 00:52:21.520 ⇒ 00:52:22.119 Michael Thorson: on the media.
467 00:52:22.250 ⇒ 00:52:31.889 Demilade Agboola: And so now you can start to see orders in this state take this long, orders in this take this… like, orders, like, when we ship an order to California, this is how long it takes.
468 00:52:32.100 ⇒ 00:52:38.049 Demilade Agboola: In… when it’s in this state, and you can start to see, like, maybe certain states take longer than other states in…
469 00:52:38.610 ⇒ 00:52:39.110 Michael Thorson: Into.
470 00:52:39.110 ⇒ 00:52:40.180 Demilade Agboola: research and things.
471 00:52:40.370 ⇒ 00:52:46.370 Demilade Agboola: Right? So you can start to understand what’s happening behind just the regular numbers that you were seeing.
472 00:52:47.300 ⇒ 00:52:50.100 Michael Thorson: Yeah, that’s super interesting.
473 00:52:50.620 ⇒ 00:53:03.310 Michael Thorson: I was, I was, like, the, the first use case I thought of is, like, we have, order tracking for, like, a unique PO number at our, like, our logistics partner, so it’s, like, I was just imagining…
474 00:53:03.480 ⇒ 00:53:16.740 Michael Thorson: Currently, the table’s constructed in a way where it’s, like, PO, and every time, like, the ship date or the ship status changes, so it’s, like, the order’s placed, the order’s shipped, the order’s in transit, the order’s delivered, so it’s, like, the statuses shift.
475 00:53:16.880 ⇒ 00:53:17.460 Demilade Agboola: You know?
476 00:53:17.460 ⇒ 00:53:28.569 Michael Thorson: And I’m keeping all those, so, like, the most recent entry to the… to the table will always be, like, oh, like, ships, but you do have the full lineage, I was gonna say.
477 00:53:28.570 ⇒ 00:53:38.020 Michael Thorson: So I was like, imagine you could do a snapshot of, like, just watch status and the updated time, like, the table updated time, and then…
478 00:53:38.180 ⇒ 00:53:44.920 Michael Thorson: Basically, like, do a lineage of, like, okay, like, what is the… flatten that table to say, like, what is the time between each status?
479 00:53:45.140 ⇒ 00:53:49.519 Demilade Agboola: Yeah, and that’s beautiful, because… For instance, if you had transit status now.
480 00:53:50.090 ⇒ 00:54:02.140 Demilade Agboola: You can now, like, because you have other details of, like, you know, the shipping, like, where it was shipped to and all that, so we can start to ask questions about, hey, what’s the transit, like, what transit takes the longest, for instance, by state?
481 00:54:02.260 ⇒ 00:54:12.579 Demilade Agboola: And so now we can say, hey, maybe we have a bottleneck in this particular state, maybe we need to optimize that. Things like that, like, you can start to go beyond, and that’s kind of where, like.
482 00:54:12.800 ⇒ 00:54:15.249 Demilade Agboola: DBC Snapshots does, like, an amazing job.
483 00:54:15.880 ⇒ 00:54:22.110 Michael Thorson: Yeah, that’s super interesting. That was, like… yeah, I kicked that project down the road a while ago, because I was like, it’s just…
484 00:54:22.290 ⇒ 00:54:29.650 Michael Thorson: doing it was gonna be painful. So, but I think Snapchat is a great example. Yeah.
485 00:54:29.650 ⇒ 00:54:38.500 Demilade Agboola: So, yeah, there are just a bunch of things we can think about. Definitely here to help you, like, work through these things and help you, fully maximize
486 00:54:38.680 ⇒ 00:54:45.449 Demilade Agboola: like, DVT and Omni and, like, Prefect, like, if you’re paying all this for these tools, and they can do so much more.
487 00:54:45.680 ⇒ 00:54:49.230 Demilade Agboola: Definitely want to enable that within Magic Spoon.
488 00:54:50.010 ⇒ 00:55:02.189 Michael Thorson: Yeah, no, super, super helpful. Thanks for the… thanks for the pointers. I think, like, we’re meeting on Friday, would, like, love to talk more about, kind of, like, where you’re at in the test writing process, and
489 00:55:02.190 ⇒ 00:55:12.290 Michael Thorson: In the meantime, I’m honestly gonna go re-read the dbt documentation. I was just like, there’s a couple commands that I was like, I just need a refresher so I can, like, be up to speed, and…
490 00:55:12.320 ⇒ 00:55:16.390 Michael Thorson: use this thing effectively. So, I’ll do a little refresh.
491 00:55:17.800 ⇒ 00:55:18.420 Demilade Agboola: Sounds good.
492 00:55:19.770 ⇒ 00:55:27.319 Michael Thorson: Yeah, and… oh, and also take a look at the spins. Martin, thank you so much for doing that work, and sorry if I’m the holdup.
493 00:55:27.840 ⇒ 00:55:31.399 Demilade Agboola: No, it’s all good, it’s all good. Why don’t you just let me know, like.
494 00:55:31.780 ⇒ 00:55:39.739 Demilade Agboola: You can reach out anytime if you have any questions on, like, dbt, or if you’ve looked into spins and you have any questions or ideas on how you want us to utilize the data.
495 00:55:40.140 ⇒ 00:55:42.070 Demilade Agboola: Cool, just reach out to me.
496 00:55:42.550 ⇒ 00:56:00.370 Michael Thorson: Great, yeah, I mean, my deadline for that piece is the… next Spins data delivery is, like, the one that I want to, like, really sprint against, and I think it’s, like, on the 11th or something, so we have another, like, 10 days. That’s why, like, catching up on some other stuff, the Spin Smarts are in a great place, so thanks for doing that, and then…
497 00:56:00.370 ⇒ 00:56:07.380 Michael Thorson: I’m just gonna get, like, kind of a QA process down before the next release, so I can do, like, a quick pass.
498 00:56:07.740 ⇒ 00:56:11.830 Michael Thorson: When that next data delivery comes out.
499 00:56:12.370 ⇒ 00:56:13.650 Demilade Agboola: Alright, sounds good, Ben.
500 00:56:14.390 ⇒ 00:56:26.510 Michael Thorson: Jake? Yeah, thanks for chatting, thanks for the pointers on how you like to set up tests. I’ll read up on the documentation, and then whenever you push the next PR for tests, I’ll take a look at kind of how you configured things. That’ll be super helpful.
501 00:56:26.510 ⇒ 00:56:27.770 Demilade Agboola: Alright then, sounds great.
502 00:56:28.340 ⇒ 00:56:29.270 Michael Thorson: Sick?
503 00:56:30.250 ⇒ 00:56:31.010 Demilade Agboola: Bye.
504 00:56:31.300 ⇒ 00:56:32.220 Michael Thorson: Bye.