Meeting Title: LMNT <> Polytomic Intros Date: 2025-12-15 Meeting participants: Awaish Kumar, Uttam Kumaran, Ghalib’s Fathom Notetaker, Shivani Amar, Ghalib Suleiman, Andy Weist, Jason Wu, Steve Sizer
WEBVTT
1 00:01:05.269 ⇒ 00:01:06.089 Uttam Kumaran: I don’t sh…
2 00:01:06.990 ⇒ 00:01:07.590 Awaish Kumar: Brilliant.
3 00:01:09.040 ⇒ 00:01:10.270 Uttam Kumaran: How’s the day going?
4 00:01:11.760 ⇒ 00:01:12.809 Awaish Kumar: We’re all good.
5 00:01:13.090 ⇒ 00:01:13.999 Awaish Kumar: How about you?
6 00:01:15.170 ⇒ 00:01:16.490 Uttam Kumaran: Good.
7 00:01:25.070 ⇒ 00:01:26.030 Shivani Amar: Hey guys!
8 00:01:26.690 ⇒ 00:01:27.530 Awaish Kumar: Hello.
9 00:01:27.530 ⇒ 00:01:28.430 Uttam Kumaran: Blue.
10 00:01:28.870 ⇒ 00:01:31.920 Shivani Amar: Hi! Sorry about them, I ended up being in huddles.
11 00:01:32.810 ⇒ 00:01:34.160 Ghalib Suleiman: No, no problem.
12 00:01:37.370 ⇒ 00:01:37.990 Shivani Amar: But…
13 00:01:37.990 ⇒ 00:01:40.529 Ghalib Suleiman: Oliver, Point Song CEO, co-founder, pleasure.
14 00:01:40.840 ⇒ 00:01:42.350 Ghalib Suleiman: Solutions with money.
15 00:01:42.870 ⇒ 00:01:45.010 Shivani Amar: Nice to meet you, I’m Shivani.
16 00:01:45.180 ⇒ 00:01:54.920 Shivani Amar: on the BizOps team here at Element. I know we’re waiting for some folks on the tech side, and while we are… are you free at, like, 3.30 p.m. Eastern?
17 00:01:58.760 ⇒ 00:01:59.620 Uttam Kumaran: Yes?
18 00:02:00.080 ⇒ 00:02:04.119 Shivani Amar: Okay, cool, let’s just… I’m just gonna put that in the calendar now, I’ll just call yourself in.
19 00:02:04.320 ⇒ 00:02:05.190 Shivani Amar: Okay. Cool.
20 00:02:08.259 ⇒ 00:02:09.039 Uttam Kumaran: Handy.
21 00:02:09.680 ⇒ 00:02:10.469 Andy Weist: Hey, folks.
22 00:02:12.760 ⇒ 00:02:13.330 Ghalib Suleiman: Alright.
23 00:02:14.580 ⇒ 00:02:17.030 Ghalib Suleiman: Hi, I’m Dee, I’m Gallup, Auto Atomic CEO.
24 00:02:17.540 ⇒ 00:02:18.970 Andy Weist: Nice to meet you.
25 00:02:19.190 ⇒ 00:02:20.219 Jason Wu: Y’all, how are you?
26 00:02:20.730 ⇒ 00:02:22.120 Ghalib Suleiman: Hi, Jason, good, not too bad.
27 00:02:23.080 ⇒ 00:02:28.860 Ghalib Suleiman: Otam, I’ll let you… Sure. Guide me as to anything I could cover.
28 00:02:29.910 ⇒ 00:02:30.980 Uttam Kumaran: Yeah, I…
29 00:02:31.230 ⇒ 00:02:38.909 Uttam Kumaran: Yeah, so kind of mentioned, so piggybacking off our last conversation team, wanted to introduce you to Golub, CEO of Polytomic.
30 00:02:38.960 ⇒ 00:02:55.629 Uttam Kumaran: You know, Galib and I have been working together for, you know, maybe a little over 2 years now, but we’re big fans, we do a lot of business with them. Really have started, as I mentioned in our last call, to move a lot of our recommendations from Fivetrain, who I would say was the…
31 00:02:56.100 ⇒ 00:03:10.009 Uttam Kumaran: you know, seemed like the biggest, you know, you know, biggest brand in this space. And leveraging Polyatomic a lot heavier, given just how great the product is, cost advantages, and, like, support from the team. And I think in particular.
32 00:03:10.010 ⇒ 00:03:27.040 Uttam Kumaran: Gala, it would be great for you to highlight, you know, some of the, you know, enterprise-sized customers that you work with, but also your emphasis on support and net new integration building. I think that’s some of the most important things for the team. Maybe, Jason, you could also highlight
33 00:03:27.090 ⇒ 00:03:39.689 Uttam Kumaran: you know, any, sort of questions that we would like answered. But I also explained to Gala before the call, Elements posture on selecting new vendors and sort of how you guys, handle the procurement process.
34 00:03:39.690 ⇒ 00:03:48.849 Uttam Kumaran: I think, you know, I feel confident that, you know, Polytomic team could work within that, but maybe if you want to highlight that. So maybe, Galob, I can pass it to you just to give a little…
35 00:03:48.850 ⇒ 00:03:51.700 Uttam Kumaran: Overview about the product.
36 00:03:51.960 ⇒ 00:04:01.799 Uttam Kumaran: your company, sort of customers, and Jason, I can hand it to you just to cover any topics you want to. And Andy and Steve, feel free also to chime in on any piece.
37 00:04:03.980 ⇒ 00:04:08.769 Ghalib Suleiman: Yeah, sounds good. So, I’m coming from my side. Tom Garlepoise, my CEO, co-founder.
38 00:04:09.180 ⇒ 00:04:19.440 Ghalib Suleiman: I’ve been in data for, I don’t know, God, over 15 years now, although a few years ago, we just started this company. And we’re a platform that moves data, and most commonly, people will move data to a data warehouse.
39 00:04:19.740 ⇒ 00:04:28.200 Ghalib Suleiman: your Snowflakes, your Databrickses, your Google BigQueries, and so on. And or they’ll go from these warehouses into other systems.
40 00:04:28.550 ⇒ 00:04:39.979 Ghalib Suleiman: Customers, you know, it ranges from, you know, companies on the tiny side to hyper-growth startups of the world, and then big, massive enterprises like, I don’t know, you may know WebMD.
41 00:04:40.120 ⇒ 00:04:42.069 Ghalib Suleiman: Webmd have a massive…
42 00:04:42.670 ⇒ 00:04:56.079 Ghalib Suleiman: business side arm, that moves a lot of data to and from hospital and medical partners, or companies, you know, I guess the NFL, is that NFL Corporation? The NFL and every team in the NFL uses us to move a lot of data
43 00:04:56.170 ⇒ 00:05:12.739 Ghalib Suleiman: Between… in and out of warehouses there. So, some pretty large-scale Okta, I don’t know if you guys use Okta internally, a public company that do SSO stuff, but generally we use scale, but the real, probably, big one that Tom mentioned is we’ve invested a lot in tooling to build integrations on request.
44 00:05:12.900 ⇒ 00:05:22.540 Ghalib Suleiman: No one ever gets told, you know, oh, wait till the Q3 roadmap, and maybe we’ll consider this. Generally, if something has an API,
45 00:05:22.970 ⇒ 00:05:28.919 Ghalib Suleiman: We can get integration built robustly quite quickly, and we’ve invested a lot in this ability to respond quickly.
46 00:05:29.250 ⇒ 00:05:34.839 Ghalib Suleiman: Besides that, I mean, if there’s anything more you’d like me to cover, Tom?
47 00:05:35.470 ⇒ 00:05:36.390 Ghalib Suleiman: you know.
48 00:05:36.390 ⇒ 00:05:37.209 Uttam Kumaran: I think that’s it.
49 00:05:37.210 ⇒ 00:05:39.500 Ghalib Suleiman: Potential integrations here. There’s nothing.
50 00:05:39.500 ⇒ 00:05:45.090 Uttam Kumaran: Yeah, I wonder, Gala, maybe even, you know, typically, if you want to just start with maybe doing a brief
51 00:05:45.310 ⇒ 00:05:48.040 Uttam Kumaran: we can just walk through the product, I think that would be a good also.
52 00:05:48.040 ⇒ 00:05:49.100 Ghalib Suleiman: Happy to.
53 00:05:49.100 ⇒ 00:06:00.619 Uttam Kumaran: Yeah, maybe let’s start with a demo. I think some people on the call are… have some, you know, experience or familiarity with, like, the landscape, but I don’t know if we… we haven’t yet showed what a tool looks like, so I think it’d be helpful just to show the team.
54 00:06:00.620 ⇒ 00:06:01.100 Ghalib Suleiman: Yeah, let me.
55 00:06:01.100 ⇒ 00:06:02.950 Uttam Kumaran: What it’s like to set up a connector, and then…
56 00:06:03.100 ⇒ 00:06:06.429 Uttam Kumaran: And I think that’ll just set the stage really well. Perfect. And then, yeah, team.
57 00:06:06.800 ⇒ 00:06:09.640 Uttam Kumaran: If you wanna… any other questions, feel free.
58 00:06:12.570 ⇒ 00:06:14.660 Uttam Kumaran: But I think a demo would be a really good show and tell.
59 00:06:14.660 ⇒ 00:06:16.309 Ghalib Suleiman: be used here, with Tom, sorry.
60 00:06:16.310 ⇒ 00:06:21.150 Uttam Kumaran: We haven’t yet decided on a warehouse, so… But any of the.
61 00:06:21.150 ⇒ 00:06:26.280 Shivani Amar: pick, I don’t know. I guess the warehouse, the two that we’re considering are Snowflake and BigQuery.
62 00:06:26.750 ⇒ 00:06:29.330 Ghalib Suleiman: Okay, so I’ll pick Bitcoin and do a demo on that.
63 00:06:29.330 ⇒ 00:06:30.949 Shivani Amar: Yeah, that sounds good.
64 00:06:31.130 ⇒ 00:06:31.909 Shivani Amar: Yeah, it’s fine.
65 00:06:31.910 ⇒ 00:06:34.180 Ghalib Suleiman: The usage is the same that much.
66 00:06:34.520 ⇒ 00:06:49.759 Shivani Amar: Yeah, and otherwise, like, you can think with D2C, like, types of systems that we’re trying to pull data from, obviously, are, like, Shopify and Amazon Seller, and then we have, like, retail data, and just supply chain data that will come eventually from our ERP, so that’s just to give you a sense of, like.
67 00:06:49.800 ⇒ 00:06:59.459 Shivani Amar: the broader ecosystem of things we would want data pulled from, and then eventually data put back into the ERP, or, like, flow into the ERP from other systems, so just to give you a flavor.
68 00:06:59.460 ⇒ 00:07:02.359 Ghalib Suleiman: Hmm. What ERP do you guys use?
69 00:07:03.050 ⇒ 00:07:11.039 Shivani Amar: So we’re in the midst of transitioning to, we’re gonna kick off a transition to NetSuite from QuickBooks.
70 00:07:12.130 ⇒ 00:07:25.090 Ghalib Suleiman: Yeah, that’s a very common one. Yeah, we support both. Okay, I’ll, you know, I’ll use NetSuite as an example into BigQuery, but just bear in mind it’s the same way to move anything into BigQuery or Snowflake. Let me share my screen.
71 00:07:30.600 ⇒ 00:07:32.549 Ghalib Suleiman: Okay, can you see my screen here?
72 00:07:33.310 ⇒ 00:07:33.880 Jason Wu: Yep.
73 00:07:34.180 ⇒ 00:07:47.069 Ghalib Suleiman: Okay, so here we’re on our demo cluster, so, you know, there’s really nothing set up here, it’s a bunch of zero syncs have run statuses, but under connections, we are connected to all sorts of example systems, and we’ve set up these connections beforehand.
74 00:07:47.210 ⇒ 00:07:50.879 Ghalib Suleiman: For you in particular, we have a BigQuery connection here.
75 00:07:51.170 ⇒ 00:08:00.239 Ghalib Suleiman: We also have a… you know, I was gonna use NetSuite as an example, you know, we have a NetSuite connection here with credentials, as one would expect.
76 00:08:00.500 ⇒ 00:08:09.509 Ghalib Suleiman: But, when moving data into warehouses, we’ll stick with our Bulk Syncs tab here. This is a tab in the product dedicated to moving stuff into warehouses.
77 00:08:09.610 ⇒ 00:08:12.490 Ghalib Suleiman: Rather performantly, at scale.
78 00:08:12.840 ⇒ 00:08:24.989 Ghalib Suleiman: 2. So, if I click this button, it’s really quite simple, this will take a minute. Pick your source system, maybe we’ll pick NetSuite here, pick our destination, I’ll pick BigQuery here as an example.
79 00:08:25.200 ⇒ 00:08:33.619 Ghalib Suleiman: And for the data people on the call, we’ll generate a schema output name for you to put tables in, but you can always rename this per whatever you want.
80 00:08:33.830 ⇒ 00:08:52.200 Ghalib Suleiman: And then we’ll list the tables on offer from the source system. You know, NetSuite has, well, many collections on offer, but you can select everything by clicking the top left, or you can restrict things to particular tables. You know, maybe I only want the customer table, for example, we can do that.
81 00:08:52.300 ⇒ 00:09:11.679 Ghalib Suleiman: Within each table, you can exclude any fields you don’t want as well. And so, again, for the data people here, each field results in a column that will manifest in the warehouse, and each collection name results in a corresponding table name, and so we’ll take care of corresponding types, and so on. Does that make sense?
82 00:09:13.680 ⇒ 00:09:14.410 Jason Wu: Yep.
83 00:09:14.410 ⇒ 00:09:17.440 Ghalib Suleiman: Otherwise… You hit continue.
84 00:09:17.600 ⇒ 00:09:24.269 Ghalib Suleiman: Your last step here is to set your schedule. Now, this could be manual, where someone needs to click a button every time you want to update.
85 00:09:24.490 ⇒ 00:09:38.069 Ghalib Suleiman: Continuous, the guarantee with this, guys, will run every 5 minutes, and no later than that. And then you’ve got more structured options, hourly, daily, weekly, or even you can specify a custom schedule if you’re choosing. Run on weekends, or whatever it is. Does that make sense?
86 00:09:39.920 ⇒ 00:09:49.509 Ghalib Suleiman: I’ll set this to run, say, hourly, for example. You hit continue. That’s really it. There’s a summary of your settings, all good and fine. You can hit save in the top right.
87 00:09:49.660 ⇒ 00:10:06.960 Ghalib Suleiman: And then what we’ll do is we’ll create the corresponding scheme on the warehouse, and you have a sync created now. From here, you can run a test, which would sync 5 random records just for testing’s sakes, or just enable the sync. Instead of waiting for the next one to kick off, just click start here.
88 00:10:07.350 ⇒ 00:10:13.110 Ghalib Suleiman: And then we do have a full history, or audit log, if you will, so you can see progress on
89 00:10:13.510 ⇒ 00:10:21.109 Ghalib Suleiman: Your current set of tables for the current run, and then anything that’s completed gets shunted off in this completed table here, with appropriate logs.
90 00:10:21.330 ⇒ 00:10:31.219 Ghalib Suleiman: And then, under error handling, you can toss in any number of email addresses, or Slack channels if you do use Slack, into the subscriber list, and we’ll notify if anything fails.
91 00:10:31.850 ⇒ 00:10:44.110 Ghalib Suleiman: But this really covers it, you know, you really begin with creating a connection. If I were to add a connection to, you know, let’s pick Snowflake, for example. You know, it’s what you’d expect. Enter your credentials, upload your old key pair, and you’re off to the races.
92 00:10:44.230 ⇒ 00:10:50.469 Ghalib Suleiman: And then once you do this, then you’re sticking with this tab to set up syncs into the warehouse. You’re always creating some sync.
93 00:10:50.570 ⇒ 00:10:55.749 Ghalib Suleiman: And you’re picking the collections you want to grab from the source system, and then you’re off.
94 00:10:57.650 ⇒ 00:10:59.400 Ghalib Suleiman: Any questions?
95 00:11:01.780 ⇒ 00:11:08.939 Andy Weist: I guess, what does the interface look like to… if we need to, like, create custom transformations of the data between the two systems?
96 00:11:09.890 ⇒ 00:11:13.919 Ghalib Suleiman: So for pushing, if you’re pushing into a system like NetSuite, for example.
97 00:11:14.020 ⇒ 00:11:16.170 Andy Weist: Sure. For transforming data on Bridge.
98 00:11:16.790 ⇒ 00:11:27.310 Ghalib Suleiman: Yeah, we do support transformations, and I’ll cover this now. This falls under this bit, models and model syncs. Now, when pushing two SaaS applications, let’s say ERPs, for example.
99 00:11:27.610 ⇒ 00:11:32.840 Ghalib Suleiman: We do begin with the concept of a data model. Think of a data model as a view that lives with us.
100 00:11:33.540 ⇒ 00:11:40.949 Ghalib Suleiman: Now, for example, let’s click Add Model, and let’s say, you know, we want to surface some billing data.
101 00:11:41.530 ⇒ 00:11:43.149 Ghalib Suleiman: We…
102 00:11:43.480 ⇒ 00:11:52.790 Ghalib Suleiman: Well, if you have… you may have the models manifest in your warehouse, you may want to do a custom SQL query, I’ll cover both, but we’ll pick this SQL warehouse here, for example. Let’s call this model users.
103 00:11:53.160 ⇒ 00:11:55.260 Ghalib Suleiman: Now, you can…
104 00:11:55.460 ⇒ 00:12:00.479 Ghalib Suleiman: pick data if it’s already set in tables. We’ll go to this table here, the users table.
105 00:12:00.880 ⇒ 00:12:06.559 Ghalib Suleiman: And we’ll present you with all the columns behind it. Every column has a name, an example value from your own data.
106 00:12:06.820 ⇒ 00:12:24.480 Ghalib Suleiman: On the left is your actionable column here for data models. This is a yes-no field, a Boolean field, that decides what fields are surfaced in the model. In other words, you’re authorizing fields for syncing to non-databases and non-warhouses, like ERPs. You’re going, these fields are allowed to be made available.
107 00:12:24.530 ⇒ 00:12:30.029 Ghalib Suleiman: to go to NetSuite, maybe tomorrow it’s Salesforce or something else, but you’re authorizing them to be synced.
108 00:12:30.140 ⇒ 00:12:31.250 Ghalib Suleiman: So that makes sense.
109 00:12:32.120 ⇒ 00:12:35.580 Ghalib Suleiman: And in this case here, I’ll select everything, we’ll hit save.
110 00:12:35.800 ⇒ 00:12:41.780 Ghalib Suleiman: here’s a data model, right? It’s a mini catalog, I haven’t synced anything to an ERP, but it’s a catalog available for doing so.
111 00:12:41.900 ⇒ 00:12:55.889 Ghalib Suleiman: If you want to transform data, you can build these models through custom SQL as well. I can go to this SQL warehouse here, let’s call this, I don’t know, billing info, and here’s where you can switch from table select mode to SQL query mode.
112 00:12:56.060 ⇒ 00:13:01.289 Ghalib Suleiman: And if I were to hit that, we don’t store data, so wherever you write here is running on your warehouse.
113 00:13:01.400 ⇒ 00:13:06.920 Ghalib Suleiman: you know, some of our customers will, you know, have the complete works of Shakespeare in sequel form, but for the sake of time.
114 00:13:07.100 ⇒ 00:13:13.050 Ghalib Suleiman: We’ll just do a dumb select star, but just realize, again, you can write wherever you want, complex joints, aggregations, and so on.
115 00:13:13.340 ⇒ 00:13:23.310 Ghalib Suleiman: Hit continue, custom query produces fields. Choose the ones you want to greenlight for syncing to SAS tools and ERPs. We’ll select everything here, hit save.
116 00:13:23.720 ⇒ 00:13:31.150 Ghalib Suleiman: Here we have a couple of data models. Well, what can you do with these data models? This is where we go into model syncs. Model syncs are for syncing into
117 00:13:31.290 ⇒ 00:13:36.710 Ghalib Suleiman: non-databases, non-warehouses, where we get to map specific fields. For example, we’ll create a sync.
118 00:13:36.990 ⇒ 00:13:39.840 Ghalib Suleiman: pick our destination to be. NetSuite, for example.
119 00:13:40.000 ⇒ 00:13:44.799 Ghalib Suleiman: And pick our target to be, say, again, pick the customer object again.
120 00:13:45.330 ⇒ 00:13:53.339 Ghalib Suleiman: And you do get some… a bit more subtlety here, so you get to pick a sync mode, right? Either we are updating or creating records in NetSuite.
121 00:13:53.540 ⇒ 00:13:57.270 Ghalib Suleiman: Or, we’re only creating ones that don’t exist yet.
122 00:13:57.870 ⇒ 00:14:03.490 Ghalib Suleiman: Or, on every run, we’re only updating matching ones with your source systems. Does that make sense?
123 00:14:06.000 ⇒ 00:14:09.210 Ghalib Suleiman: And so, we’ll do both for the sake of this demo.
124 00:14:10.140 ⇒ 00:14:28.140 Ghalib Suleiman: First thing to set when moving data into any software application is picking an identity mapping. So, on the left-hand side, it’s these models we’ve constructed in the previous step, right? Surface for our warehouse. On the right-hand side, in this case, it’s the NetSuite Customer Object fields, all the ones listed on there.
125 00:14:28.150 ⇒ 00:14:36.280 Ghalib Suleiman: This identity mapping is really some sort of unique field on both sides. Think of it as a common primary key, if you will. Does that make sense?
126 00:14:37.050 ⇒ 00:14:37.520 Andy Weist: Yep.
127 00:14:37.520 ⇒ 00:14:39.640 Ghalib Suleiman: And you can pick whatever you want.
128 00:14:39.760 ⇒ 00:14:42.869 Ghalib Suleiman: But for the sake of this demo, I’ll pick email.
129 00:14:43.100 ⇒ 00:14:59.069 Ghalib Suleiman: our authorized users table, map that to email in NetSuite, and then from here, it’s really a field mapping exercise, you know, I can grab first name, maps to first name in NetSuite, I can grab last name, you know, I could go on, I think you get the point here. But it’s ultimately, it’s coming from these data models we’ve authorized.
130 00:14:59.250 ⇒ 00:15:10.970 Ghalib Suleiman: And then you do get some point-and-click filtering, and so, for example, you know, I don’t know, maybe you only want to sync records where email, say, I don’t know, does not end with
131 00:15:11.230 ⇒ 00:15:13.340 Ghalib Suleiman: For example, gmail.com.
132 00:15:13.660 ⇒ 00:15:20.439 Ghalib Suleiman: Right, whatever it is, you do get a full list of filters for text, aka strings, other ones for numbers, and other ones for dates as well.
133 00:15:21.280 ⇒ 00:15:22.350 Ghalib Suleiman: That makes sense.
134 00:15:24.160 ⇒ 00:15:33.409 Ghalib Suleiman: Cool. Otherwise, you hit continue, and then symmetrically, with these box links into warehouses, you do get the usual schedule options. I’ll have this run again, say, hourly.
135 00:15:33.670 ⇒ 00:15:35.580 Ghalib Suleiman: 30 minutes on the hour.
136 00:15:35.690 ⇒ 00:15:40.390 Ghalib Suleiman: Again, verify your summary of your settings. If all is okay, hit save.
137 00:15:41.290 ⇒ 00:15:54.189 Ghalib Suleiman: And here we have a sync going the other way, with your mappings currently present going into your software ERP, in this case NetSuite. Again, you can run a test sync which would sync 5 random records, or just enable this guy.
138 00:15:54.750 ⇒ 00:15:55.550 Ghalib Suleiman: and…
139 00:15:55.720 ⇒ 00:16:12.270 Ghalib Suleiman: That’s really it, right? Again, similarly, you’ve got a full history view, and you can throw in email addresses or Slack channels for error notifications. But the general concept when going the other way is you construct these data models, and this becomes your catalog of fields to go into
140 00:16:12.620 ⇒ 00:16:17.830 Ghalib Suleiman: software platforms, aka non- databases and non-warhouses. If you’re going into the warehouse.
141 00:16:17.990 ⇒ 00:16:24.750 Ghalib Suleiman: we get to control the schema, right, when going in that direction, then you’d use these bulk syncs, as I mentioned.
142 00:16:25.120 ⇒ 00:16:43.120 Ghalib Suleiman: And just pick what you want, and then we’ll generate all the schemas. These model things just give you rather fine-grained control, where you do get to, and you have to do this since, you know, we certainly don’t want to be generating fields in NetSuite for you, but imagine your NetSuite admin creates fields, and then someone can create mappings to them.
143 00:16:45.040 ⇒ 00:16:46.150 Ghalib Suleiman: That makes sense.
144 00:16:46.920 ⇒ 00:16:57.790 Andy Weist: Yeah, so for, like, one real-life example, we have bundled products in Shopify that really map to, like, 4 dynamic products that we want line item information about.
145 00:16:58.260 ⇒ 00:17:11.989 Andy Weist: I guess, like, what’s the functionality there where we really need to inspect the data rows coming out of Shopify and transforming them into, like, multiplexing them into multiple data rows within our data warehouse?
146 00:17:12.390 ⇒ 00:17:16.609 Andy Weist: Is that simple to do, or is that creating custom models?
147 00:17:16.750 ⇒ 00:17:22.170 Ghalib Suleiman: Yeah, this is where Otam comes in, and I suspect, Otam, you probably would use dbt rather than…
148 00:17:22.250 ⇒ 00:17:23.000 Andy Weist: having…
149 00:17:23.000 ⇒ 00:17:26.090 Ghalib Suleiman: Yeah, so… Custom sequences and polyatomic, right? Yeah.
150 00:17:26.460 ⇒ 00:17:27.349 Uttam Kumaran: But in that situation…
151 00:17:27.359 ⇒ 00:17:28.289 Ghalib Suleiman: where it comes.
152 00:17:28.830 ⇒ 00:17:37.699 Uttam Kumaran: Yeah, we would land the data into the where… so I guess, Andy, it sort of depends if that’s getting used for reporting purposes, or if that’s getting used for…
153 00:17:38.110 ⇒ 00:17:39.440 Uttam Kumaran: like, operational.
154 00:17:39.570 ⇒ 00:17:59.160 Uttam Kumaran: I guess maybe start there. If it’s using for reporting, then we would land into the warehouse, and then that exact thing, like splitting it and, you know, blowing it up into four rows is totally possible, all within SQL. If it’s used for operational purposes, then it sort of depends… my next question is, like, what is the SLA?
155 00:17:59.160 ⇒ 00:18:08.419 Uttam Kumaran: For example, if that needs to happen, and then you need to send it to another system, and you’re okay with, like, a couple hour delay, we can leverage Polyatomic to drop that in.
156 00:18:08.420 ⇒ 00:18:20.859 Uttam Kumaran: And do that. Additionally, if you… if we’re… if we sort of want a shorter SLA, you could actually still use polyatomic, but we would probably end up putting the transformations directly in here, in that, like, sort of SQL
157 00:18:20.890 ⇒ 00:18:22.250 Uttam Kumaran: based environment.
158 00:18:22.300 ⇒ 00:18:27.110 Uttam Kumaran: For example, if you need to send that Shopify information
159 00:18:27.180 ⇒ 00:18:31.460 Uttam Kumaran: blow it up and send it somewhere else, we could end up leveraging some of the model
160 00:18:31.750 ⇒ 00:18:38.600 Uttam Kumaran: query, you know, things there. So it sort of depends. Okay. Does that make sense?
161 00:18:38.600 ⇒ 00:18:46.860 Andy Weist: Because that is a real use case we have custom software for now, and I’m just trying to assess, like, I know that’s not the target use case for this, but just trying to.
162 00:18:46.860 ⇒ 00:18:47.240 Uttam Kumaran: Sure.
163 00:18:47.240 ⇒ 00:18:50.119 Andy Weist: Whether this can replace some of our existing stuff.
164 00:18:51.300 ⇒ 00:18:53.730 Ghalib Suleiman: The big one is a question on latency.
165 00:18:54.820 ⇒ 00:18:59.399 Ghalib Suleiman: Go ahead. Question on latency, Andy, is how soon does this process need to happen?
166 00:19:00.200 ⇒ 00:19:01.090 Andy Weist: Real time.
167 00:19:02.410 ⇒ 00:19:08.649 Ghalib Suleiman: Yeah, if it’s real time, then probably I’d say stick with your custom software, given, you know, the fastest you’ll get with us is
168 00:19:08.890 ⇒ 00:19:10.419 Ghalib Suleiman: 5 to 10 minutes.
169 00:19:10.590 ⇒ 00:19:21.270 Ghalib Suleiman: Because, you know, the transformation itself will take, I don’t know, a few seconds. Sync runs every 5 minutes, let’s say a couple of minutes to write the data, and for NetSuite to process it, NetSuite doesn’t process stuff instantly.
170 00:19:21.650 ⇒ 00:19:25.289 Ghalib Suleiman: So, I’d say, you know, somewhere between 5 and 10 minutes is…
171 00:19:25.290 ⇒ 00:19:26.150 Andy Weist: I mean, that’s a…
172 00:19:26.150 ⇒ 00:19:27.179 Ghalib Suleiman: Could happen with us.
173 00:19:27.180 ⇒ 00:19:32.560 Andy Weist: it’s a longer discussion, but that 5-10 minutes isn’t… you know, real time isn’t real time anyway, right? There’s always latency, so…
174 00:19:32.560 ⇒ 00:19:33.629 Ghalib Suleiman: Oh, I see, yeah.
175 00:19:33.630 ⇒ 00:19:35.409 Andy Weist: Another discussion for the future. Yeah.
176 00:19:35.410 ⇒ 00:19:44.090 Ghalib Suleiman: That’s a high level, the model is consistently as a warehouse, there’s stuff coming in, the warehouse lets you transform it how you want, and then we can move it to wherever you want.
177 00:19:44.980 ⇒ 00:19:55.390 Andy Weist: In your example here, the source data was, you had an example of a Postgres database, and so you were writing your extraction model in SQL,
178 00:19:55.700 ⇒ 00:19:58.470 Andy Weist: Is… is SQL, or…
179 00:19:59.070 ⇒ 00:20:09.209 Andy Weist: Is that specific to the source model, because it was a Postgres database? Or, like, would you be writing extraction SQL to something like an HTTP database? Or, sorry, not.
180 00:20:09.210 ⇒ 00:20:19.639 Ghalib Suleiman: Yeah, the only… so we could build these models and pull fields from anything, you know, this is… we are a flexible system, but, you know, if we go to BigQuery, for example.
181 00:20:19.810 ⇒ 00:20:25.830 Ghalib Suleiman: the idea of having SQL queryability only shows up if the source is a SQL source.
182 00:20:26.170 ⇒ 00:20:31.339 Andy Weist: Okay, that’s what my question was. The build model is dependent on the source model schema.
183 00:20:31.340 ⇒ 00:20:39.629 Ghalib Suleiman: Yes, you can build a model on anything, where we can grab fields from the schema, but if you’re writing a SQL query in the model, the source has to support SQL querying, yes.
184 00:20:39.630 ⇒ 00:20:42.359 Andy Weist: Okay. That being said, we do have some…
185 00:20:42.920 ⇒ 00:20:57.440 Andy Weist: connections will lead to systems that are not common, and not currently, like, legacy supported. What is the… what is Polytomic’s preference between us having you build connectors versus self-serve
186 00:20:57.510 ⇒ 00:21:03.069 Andy Weist: built connectors. I briefly looked through the documentation. It seems like we can build things ourselves, but, like, what’s.
187 00:21:03.070 ⇒ 00:21:03.620 Ghalib Suleiman: Interesting.
188 00:21:03.620 ⇒ 00:21:04.449 Andy Weist: operating procedure.
189 00:21:05.490 ⇒ 00:21:15.470 Ghalib Suleiman: Generally, we… there’s a reason we do prefer… it’s a nicer experience for you if we build them, because we get to build things pretty quickly, you know, matter of days.
190 00:21:15.950 ⇒ 00:21:19.409 Ghalib Suleiman: you get a native connector. It’s very tuned.
191 00:21:19.540 ⇒ 00:21:24.609 Ghalib Suleiman: to the particular API in question. We do have a generic API
192 00:21:25.160 ⇒ 00:21:38.519 Ghalib Suleiman: connector you can use, but you just have to get in there and specify, you know, the pagination method of the API required, and so on and so forth. In a pinch, one can do that. What customers typically do is they’ll use the generic stuff.
193 00:21:38.970 ⇒ 00:21:50.299 Ghalib Suleiman: for situations where we cannot build a connector. For example, think of our large enterprise customer. They have an internal API. The US team serves the European team through some internal API. We…
194 00:21:50.440 ⇒ 00:21:55.510 Ghalib Suleiman: are not going to be building a native connector here, this is an internal server running an internal API server.
195 00:21:55.850 ⇒ 00:22:01.090 Ghalib Suleiman: But anything that’s public, we do strongly encourage people to just So the request’s over.
196 00:22:01.220 ⇒ 00:22:06.410 Ghalib Suleiman: And there’s a reason why under connections, when you’re creating a connection.
197 00:22:06.500 ⇒ 00:22:21.390 Ghalib Suleiman: you’ll see on the bottom right here, you can request… sorry, let me move my zoom windows… you can make a request here, which ultimately just sends a notification to us, and you do… are guaranteed a response within 24 hours on feasibility or any further questions, and so on.
198 00:22:21.570 ⇒ 00:22:36.890 Ghalib Suleiman: We’ve, again, invested a lot in being able to do this, and we strongly do push people to, look, it’s just nicer for you if we just build you a native connector. A generic one is available in a pinch, but what happens in practice, like I said, people use that for internal APIs that we know access to.
199 00:22:38.480 ⇒ 00:22:48.130 Uttam Kumaran: So I think, Andy, to your point, is, like, there is a benefit, you know, to centralizing orchestration in one place. I think that’s probably a little bit of what I think you might be getting at, is, like.
200 00:22:48.160 ⇒ 00:23:00.260 Uttam Kumaran: can we start to use Polyatomic for broader orchestration? I think there’s one piece there where, yes, if we’re able to… we can totally build on top of the Polyatomic APIs, and then use it to orchestrate.
201 00:23:00.260 ⇒ 00:23:08.579 Uttam Kumaran: I think where the SLAs matter is if you’re using it to actually do the handoff, and we do need, like, sub-10 second
202 00:23:08.630 ⇒ 00:23:16.629 Uttam Kumaran: in-memory transformation of rows, that’s something Awesha and I can totally give you a couple other options that may be better. You can still maybe
203 00:23:16.690 ⇒ 00:23:24.889 Uttam Kumaran: we can still consider having the orchestration in Polyatomic, but I think I would just need to understand the use case better. For anything that is batch.
204 00:23:25.060 ⇒ 00:23:32.500 Uttam Kumaran: Between moving systems, we should try to use this tool, for sure. And at least on the reporting side.
205 00:23:32.500 ⇒ 00:23:47.660 Uttam Kumaran: we will centralize everything here. So, similarly, it’s like, I don’t… I don’t want to have 10 systems with crons moving things around. We will try our best to centralize. I think I hear you in that, okay, there are other… there are some use cases that rhyme with this. I think it’s for us to figure out, like, whether
206 00:23:47.950 ⇒ 00:23:54.780 Uttam Kumaran: they’re, like, the operational… the SLAs are possible, you know, and we can do that within the system.
207 00:23:56.810 ⇒ 00:24:08.319 Ghalib Suleiman: Yeah, there are… there’s a veritable zoo of workflow orchestrators, as one calls them, and they’re very valid platforms, and I think all I’m doing is just underlying what Tom said.
208 00:24:08.400 ⇒ 00:24:28.109 Ghalib Suleiman: You know, we are data warehouse focused, which may satisfy all use cases, may satisfy 80% of them. But this sort of, you know, move some piece of data here, then kick off an invoicing process for these 20 customers there, then do this, then do that, the sort of if-this, then that sort of thing, with boxes and arrows and, you know, decision points, is not what we do.
209 00:24:28.240 ⇒ 00:24:33.740 Ghalib Suleiman: We’re in the business of moving data and transforming it, and there is a place for those workflow tools.
210 00:24:36.840 ⇒ 00:24:48.320 Andy Weist: One more question, sorry, I’m hijacking a lot of this, but, what is the platform’s policy on failures and retries? Is it at least once, and…
211 00:24:48.650 ⇒ 00:24:55.590 Andy Weist: Like, how is… how are retries triggered and managed by the end user, i.e. us, in the long term?
212 00:24:56.580 ⇒ 00:25:03.869 Ghalib Suleiman: They are baked… are we talking when moving stuff into the warehouse, or when pushing to an ERP, or both?
213 00:25:03.870 ⇒ 00:25:06.139 Andy Weist: Yeah, let’s focus on moving stuff into the warehouse.
214 00:25:06.820 ⇒ 00:25:07.460 Ghalib Suleiman: Yep.
215 00:25:07.580 ⇒ 00:25:11.420 Ghalib Suleiman: In that case, the retries happened.
216 00:25:12.910 ⇒ 00:25:25.000 Ghalib Suleiman: automatically. Whatever sync schedule you pick, every time we run, we will retry. When moving stuff into warehouses, it is considered a critical error. If something keeps showing up.
217 00:25:25.660 ⇒ 00:25:28.219 Ghalib Suleiman: There’s no situation where,
218 00:25:29.430 ⇒ 00:25:38.510 Ghalib Suleiman: we should be giving up on retries in that situation. There’s just something going wrong here. At the worst case, the vendor maybe has a bug in their API that should be reported and that they should fix.
219 00:25:38.720 ⇒ 00:25:42.670 Ghalib Suleiman: Because when people are moving stuff into the warehouse, it tends to be used for reporting.
220 00:25:43.240 ⇒ 00:25:48.820 Ghalib Suleiman: There’s no one out there who says, yes, I’ll tolerate my… Finance Dashboard being at zero.
221 00:25:48.930 ⇒ 00:25:56.019 Ghalib Suleiman: Because we’ve given up on retries. So we will always execute a retry automatically every time we run.
222 00:25:56.660 ⇒ 00:25:57.830 Andy Weist: Okay, so is detail…
223 00:25:57.830 ⇒ 00:25:59.739 Ghalib Suleiman: We’ll send us an error, and we’ll notify.
224 00:26:00.200 ⇒ 00:26:07.740 Andy Weist: Got it. So is deduplication of data mostly reliant on setting up, like, appropriate primary keys between the two systems, then?
225 00:26:08.720 ⇒ 00:26:11.300 Ghalib Suleiman: Yes, we take care of that for you.
226 00:26:11.470 ⇒ 00:26:28.569 Ghalib Suleiman: where, when pulling stuff into the warehouse, this is why building a native integration is always nicer, because we do this on a per-integration basis. We will… we find the primary keys, and we’ll designate them in our internal system so that we generate them appropriately, and do deduplication appropriately as well. Once in a blue moon.
227 00:26:28.840 ⇒ 00:26:34.000 Ghalib Suleiman: some, you know, again, being in this world, you do run into all sorts of issues. There are systems where
228 00:26:34.680 ⇒ 00:26:38.049 Ghalib Suleiman: there is no primary key in the data. You know, so be it.
229 00:26:38.290 ⇒ 00:26:41.719 Ghalib Suleiman: We mark that, you know, our internals have the ability
230 00:26:42.000 ⇒ 00:26:46.099 Ghalib Suleiman: For that to be marked on a per-integration, and actually per table basis as well.
231 00:26:46.360 ⇒ 00:26:57.830 Ghalib Suleiman: But there is some elements of human curation, human editing that happens that you don’t see, given vendor API documentation and so on. But yes, we do take care of that for you, where you really should not have to worry about it.
232 00:26:58.410 ⇒ 00:27:00.620 Ghalib Suleiman: What the primary care is, does it exist, does it not?
233 00:27:00.990 ⇒ 00:27:18.419 Ghalib Suleiman: And there are situations, you touched on duplicates, so you’ve lived in this world as well, where a vendor says, this is our primary key, and then lo and behold, there’s duplicated data, this primary key is duplicated over and over again. We have automatic deduplication in those situations, and we do verify that
234 00:27:18.650 ⇒ 00:27:28.659 Ghalib Suleiman: there… we have gotten into situations with one or two major vendors where there have been duplicates, but the row has actually been different, despite sharing the same primary key. This is a terrible, terrible bug.
235 00:27:28.780 ⇒ 00:27:29.660 Ghalib Suleiman: Where…
236 00:27:30.180 ⇒ 00:27:39.960 Ghalib Suleiman: the vendor gets a bug report going, hey, this is a critical bug here. By and large, we do get duplicates quite often, surprisingly so, but they tend to be same-row duplicates that our system detects.
237 00:27:39.960 ⇒ 00:27:40.710 Uttam Kumaran: It’s…
238 00:27:40.710 ⇒ 00:27:41.279 Ghalib Suleiman: or so.
239 00:27:42.240 ⇒ 00:27:57.300 Uttam Kumaran: And maybe just to highlight that, like, this is, like, what my job used to be, like, when I started my career, is, like, figuring this out, and, like, dealing with, deduplication, dealing with creating synthetic primary keys, or, like, figuring out
240 00:27:57.300 ⇒ 00:28:09.500 Uttam Kumaran: like, how to handle this data in flight. I don’t have to think about this anymore, you know, because we leverage an ETL tool here. And so, I feel very confident, even in an event of a failure.
241 00:28:09.540 ⇒ 00:28:22.089 Uttam Kumaran: the way that Polyatomic is architected, they roll back, they don’t… they don’t do… they, like, sort of have the right structure in a way where there’s not, like, oh, we retried it, and so now we are dumping the same data 100 times, like…
242 00:28:22.280 ⇒ 00:28:37.169 Uttam Kumaran: It’s, it’s a lot… it’s a lot more sophisticated. So… so when we do set up, like, something that runs every, you know, 3 hours, immediately in Slack, we’ll get an alert if something fails. Typically, it’s,
243 00:28:37.780 ⇒ 00:28:53.960 Uttam Kumaran: I would say if there’s a failure, it’s either because, yeah, there’s a vendor API issue, or maybe there’s something in our schema, or something that we’ve set up incorrectly. But even things like, oh, a new column has come in through the API, and we need to add it, and, like, the safe handling of that process is something that, like.
244 00:28:54.080 ⇒ 00:28:59.050 Uttam Kumaran: I don’t really think about. We can configure, you know, that directly in Polyatomic.
245 00:29:01.610 ⇒ 00:29:06.470 Ghalib Suleiman: Yeah, there are situations where there’s no primary key declared by documentation, but…
246 00:29:06.570 ⇒ 00:29:12.160 Ghalib Suleiman: Through our analysis of the data coming through, you know, sometimes we’ll often work with a customer in this very situation.
247 00:29:12.210 ⇒ 00:29:29.380 Ghalib Suleiman: we’ll just take on the work if the customer’s okay with that. We’ll actually realize, oh, hang on, there’s a compound primary key we can define. It’s clear these two columns, when paired together, are unique, and so let’s just do that. And so, again, our system is so flexible internally on our side, we get to make these annotations, and then things just float through.
248 00:29:30.610 ⇒ 00:29:38.610 Andy Weist: Yeah, I’m thinking of cases where maybe NetSuite API doesn’t respond with a 200 or a 204, and, you know, we don’t want to create duplicate.
249 00:29:38.610 ⇒ 00:29:45.019 Ghalib Suleiman: Oh, yes, NetSuite, yes, NetSuite. I realize we, behind the scenes, we…
250 00:29:45.200 ⇒ 00:29:57.180 Ghalib Suleiman: We have integrations with 3 completely separate NetSuite APIs. Regular NetSuite has a SOAP API and a REST API, we have both, and then you may or may not end up with a NetSuite Suite Analytics add-on.
251 00:29:57.620 ⇒ 00:30:05.290 Ghalib Suleiman: This add-on makes exports from NetSuite way faster, and like, depending on your data volumes, it may be something to chat with NetSuite about.
252 00:30:06.830 ⇒ 00:30:11.350 Ghalib Suleiman: But that’s something I would recommend if your data volumes are on the larger side.
253 00:30:11.590 ⇒ 00:30:12.510 Ghalib Suleiman: But again…
254 00:30:12.510 ⇒ 00:30:13.710 Andy Weist: We should talk more about, too.
255 00:30:13.960 ⇒ 00:30:15.260 Andy Weist: There’s another…
256 00:30:15.700 ⇒ 00:30:21.099 Andy Weist: interface called a Spy Myers Holm that we may end up interfacing with as well. I would.
257 00:30:21.100 ⇒ 00:30:22.299 Ghalib Suleiman: I see, I see.
258 00:30:22.300 ⇒ 00:30:33.260 Andy Weist: done any work with that so far, but we’ll… we’ll address that when we get to the bridge. Yeah, there’s, again, yeah, there’s a million things we’ve seen under the sun here that, yes, NetSuite, certainly, we get these sort of errors once in a while, but the retries.
259 00:30:33.260 ⇒ 00:30:36.689 Ghalib Suleiman: take care of it. We’ve got, like, you know, countless NetSuite deployments at this point.
260 00:30:39.220 ⇒ 00:30:39.810 Andy Weist: Great.
261 00:30:41.710 ⇒ 00:30:43.120 Ghalib Suleiman: Other questions?
262 00:30:47.900 ⇒ 00:30:51.079 Jason Wu: Gala, typically, like, what’s… what’s the onboarding look like?
263 00:30:51.510 ⇒ 00:30:58.480 Jason Wu: For, like, a new customer. How does that normally get set up? We’re in a situation where we’re using, Brainforge as well.
264 00:31:00.410 ⇒ 00:31:07.169 Ghalib Suleiman: I mean, typically, we are available. We do follow… when working with Otel and the Brainforge team, we do follow their lead.
265 00:31:08.570 ⇒ 00:31:16.949 Ghalib Suleiman: this really ranges, and you dictate where on the range things lie, right? So we’ve done things where we have one or more Zoom calls.
266 00:31:17.150 ⇒ 00:31:23.749 Ghalib Suleiman: to actually tell people, hey, look, here are your accounts, I will walk you through setting up your first test sync.
267 00:31:23.910 ⇒ 00:31:25.399 Ghalib Suleiman: Click here, click there.
268 00:31:25.620 ⇒ 00:31:31.479 Ghalib Suleiman: Click Test Sync, let’s take a look, make sure things are successful. Now you can turn it on by clicking here, and so on.
269 00:31:33.700 ⇒ 00:31:45.499 Ghalib Suleiman: you know, the joke is there’s no limits to, you know, abusing this offering as far as support. We’ve had people go, hey, look, we need multiple rounds, or multiple people need separate Zoom calls. Happy to do that as well.
270 00:31:45.770 ⇒ 00:31:49.649 Ghalib Suleiman: I don’t know, do you guys use Slack internally, or not?
271 00:31:50.240 ⇒ 00:31:54.240 Jason Wu: You do? Okay, yeah, so a shared Slack channel is also an offer, and this is not.
272 00:31:54.480 ⇒ 00:31:59.059 Ghalib Suleiman: a shared channel with a whole bunch of other customers. It’s just us, Utom, and you guys.
273 00:31:59.280 ⇒ 00:32:04.419 Ghalib Suleiman: A lot of people do take advantage of that one in particular. This way you get, you know, I don’t know.
274 00:32:04.630 ⇒ 00:32:13.869 Ghalib Suleiman: sub-5 minute response times. We get to throw in people from our team as well. At times, people are in there as well, and it’s just… everyone’s in the same place.
275 00:32:14.440 ⇒ 00:32:21.489 Ghalib Suleiman: So that’s also an offer, which we’re very happy. We do prefer to just push people to say yes to that offer, at least, for peace of mind.
276 00:32:23.370 ⇒ 00:32:42.229 Ghalib Suleiman: So yeah, you do get… every once in a while, right? We do get people who go, hey, look, we’re working with Brainforge, you leave us alone, we’ll work with them, and we’ll go through them if we need you for anything. You know, that’s a fine dynamic as well, but we’ll offer the whole lot. Certainly the Slack channel is something we do push for, just to make your lives easier, and you get to steer things from there, for your demands.
277 00:32:43.140 ⇒ 00:32:52.409 Uttam Kumaran: And then, Galva, can you also talk about, like, okay, what would, like, the first sort of month look like? I mean, for a lot of folks, you know, kind of what we do is we just try to
278 00:32:52.530 ⇒ 00:33:02.370 Uttam Kumaran: get a couple things synced up, the team can sort of see end-to-end, like, what it looks like for Polytomic to drive data. We can also talk about, like, the estimation process for spend on your side.
279 00:33:04.080 ⇒ 00:33:05.589 Ghalib Suleiman: Yeah, on pricing, you mean?
280 00:33:05.930 ⇒ 00:33:06.410 Uttam Kumaran: Yes.
281 00:33:07.510 ⇒ 00:33:13.640 Ghalib Suleiman: Yeah, typically, we do charge per number of rows moved in a month.
282 00:33:13.870 ⇒ 00:33:22.289 Ghalib Suleiman: And that’s your pricing model. One could commit annually, but you don’t have to. You get a discount if you go, hey, I’m committing to 5 million rows sync per month.
283 00:33:22.560 ⇒ 00:33:30.300 Ghalib Suleiman: You get a 20% discount if you do that and pay annually, or you could just simply pay monthly. Maybe you don’t know, you’re not sure yet.
284 00:33:30.560 ⇒ 00:33:35.980 Ghalib Suleiman: Often, most typically, people will start monthly and pick some really critical stuff initially.
285 00:33:36.120 ⇒ 00:33:43.750 Ghalib Suleiman: You know, they’ll have their highest priority connectors, start with those, make sure those are okay before considering the rest, and then start moving on down the list.
286 00:33:44.400 ⇒ 00:33:47.639 Ghalib Suleiman: Typically, that’s what tends to happen. People will pick some subset.
287 00:33:47.890 ⇒ 00:33:56.500 Ghalib Suleiman: Maybe one or two of them end up being requests for us that we don’t support. Yeah, fine, we built those, just like we do all integrations, and you get going with your small, higher-priority subset.
288 00:33:57.060 ⇒ 00:34:00.289 Ghalib Suleiman: Make sure that’s okay. And then we can move on.
289 00:34:00.550 ⇒ 00:34:09.449 Ghalib Suleiman: But it’s any moment, even if one starts monthly, one can go, you know what, this is going to stick around. I can always push you an annual plan, pay up front, and get that discount. That’s fine.
290 00:34:10.730 ⇒ 00:34:15.979 Ghalib Suleiman: But you can, again, do the monthly no-commitment thing, and see how things go, so it’s typically how people start.
291 00:34:20.989 ⇒ 00:34:23.020 Ghalib Suleiman: Any other questions?
292 00:34:34.020 ⇒ 00:34:35.120 Jason Wu: Steve, anything?
293 00:34:35.120 ⇒ 00:34:35.830 Ghalib Suleiman: from here.
294 00:34:37.949 ⇒ 00:34:46.209 Steve Sizer: No, the retries one was the main one. It sounds like that you’ve got special…
295 00:34:47.089 ⇒ 00:34:51.909 Steve Sizer: API rate limits with certain customers, is that… Is that accurate?
296 00:34:52.949 ⇒ 00:34:59.849 Ghalib Suleiman: Yes, they are specific to every integration, because every integration has different limits, yeah.
297 00:35:00.590 ⇒ 00:35:01.639 Steve Sizer: And then…
298 00:35:01.640 ⇒ 00:35:06.100 Uttam Kumaran: Because of the sort of business that you’re in, are you able to, like…
299 00:35:06.430 ⇒ 00:35:13.929 Steve Sizer: Speak to these customers and get, like, greater limits, because of… obviously, because of the amount of data that you’re moving.
300 00:35:15.330 ⇒ 00:35:16.510 Ghalib Suleiman: Sorry, Hachi Minh?
301 00:35:17.150 ⇒ 00:35:25.210 Steve Sizer: So, say, for instance, like, everybody’s got certain rate limits. Shopify’s got a rate limit, and…
302 00:35:25.490 ⇒ 00:35:28.120 Steve Sizer: We are moving large amounts of data like you.
303 00:35:28.490 ⇒ 00:35:33.210 Steve Sizer: So… Have you got special rate limits to certain… with certain.
304 00:35:33.210 ⇒ 00:35:34.090 Ghalib Suleiman: Awesome.
305 00:35:34.870 ⇒ 00:35:35.620 Ghalib Suleiman: Huh.
306 00:35:37.800 ⇒ 00:35:43.550 Ghalib Suleiman: This is the most interesting question, only because I don’t think I’ve asked you this, but…
307 00:35:43.890 ⇒ 00:35:53.289 Ghalib Suleiman: there are situ… this is so very vendor-specific. With Shopify, we have a partner rate limit that every integration partner gets.
308 00:35:53.810 ⇒ 00:35:54.740 Ghalib Suleiman: with…
309 00:35:54.920 ⇒ 00:36:03.270 Ghalib Suleiman: Others, we have, you know, I don’t think you guys don’t use outreach, but in B2B SaaS, that’s a popular one, but outreach has us in a special
310 00:36:03.500 ⇒ 00:36:05.800 Ghalib Suleiman: Buckets, which just happened to be close to that team.
311 00:36:07.200 ⇒ 00:36:13.029 Ghalib Suleiman: This is very specific to the vendor in question. The humans who happen to be working there, this is very personal, relationship-driven.
312 00:36:13.930 ⇒ 00:36:17.530 Steve Sizer: It’s a sensitive topic for the engineering teams who need to ultimately flick the switch.
313 00:36:17.780 ⇒ 00:36:19.069 Ghalib Suleiman: At these vendors.
314 00:36:19.220 ⇒ 00:36:22.910 Ghalib Suleiman: What’s… is… Oof.
315 00:36:23.070 ⇒ 00:36:28.930 Ghalib Suleiman: Tends to be a foolproof method, if the vendor’s being uncooperative with us, which is actually often.
316 00:36:30.480 ⇒ 00:36:40.359 Ghalib Suleiman: Generally, they’re just busy, not because they’re, you know, evil or whatever, it’s just their engineering teams are busy shipping products and so on. What tends to help is if you have a contact at this vendor.
317 00:36:40.850 ⇒ 00:36:45.070 Ghalib Suleiman: And we do have a script, again, we’ve been through this about a billion times now.
318 00:36:45.190 ⇒ 00:37:02.190 Ghalib Suleiman: we can give you a template email that you can send to your representative and CC us, asking for a larger rate limit. We’ve had that work for, you know, we had one major customer that needed a larger… needed us to get a larger one for LinkedIn data, and
319 00:37:02.390 ⇒ 00:37:07.340 Ghalib Suleiman: They were a spender with LinkedIn, and they called her LinkedIn Sales Rep. It was sorted out in about 10 days.
320 00:37:08.500 ⇒ 00:37:13.139 Ghalib Suleiman: That tends to be the part that’s most effective, and again, we do have an email template at this time.
321 00:37:13.750 ⇒ 00:37:18.029 Ghalib Suleiman: Points that we just provide to everyone who wants… needs to get into the situation.
322 00:37:18.940 ⇒ 00:37:25.080 Ghalib Suleiman: Perfect. So yes, unfortunately, it’s a very unstraightforward-like answer, and I hope you can forgive me for that one.
323 00:37:25.330 ⇒ 00:37:26.530 Ghalib Suleiman: Oh, it’s…
324 00:37:26.530 ⇒ 00:37:33.609 Uttam Kumaran: So, like, Gala, let’s talk about the, you know, we had another customer on NetSuite, and they wanted real-time, like, near…
325 00:37:33.960 ⇒ 00:37:35.189 Uttam Kumaran: Real time.
326 00:37:35.510 ⇒ 00:37:41.319 Uttam Kumaran: things, right? And you guys enabled that through ODBC, which I don’t think was, like, a super…
327 00:37:41.620 ⇒ 00:37:46.760 Uttam Kumaran: Yeah, maybe you could talk about, like, what was the back-end part of that, if you end up.
328 00:37:46.760 ⇒ 00:37:47.219 Ghalib Suleiman: Oh, that’s.
329 00:37:47.220 ⇒ 00:37:48.309 Uttam Kumaran: Sweeter, like, yeah.
330 00:37:48.890 ⇒ 00:37:50.530 Ghalib Suleiman: We have called NetSuite, we don’t
331 00:37:50.660 ⇒ 00:38:02.689 Ghalib Suleiman: yes, we have our secret sauce or whatever, but in that situation, it was a suite analytics package, you know, so we, again, because we know these vendors in and out, NetSuite has… there are 3 different APIs, and
332 00:38:03.120 ⇒ 00:38:08.619 Ghalib Suleiman: Well, we got to tell the customer, look, if you upgrade your package, contact your sales rep and mention these words.
333 00:38:08.780 ⇒ 00:38:18.580 Ghalib Suleiman: you will have to pay more, but if you mention these words, they’ll give you something to sign, and then we’ll be able to export faster. So sometimes there’s options. But for a Shopify.
334 00:38:19.410 ⇒ 00:38:20.580 Ghalib Suleiman: I’ve…
335 00:38:20.940 ⇒ 00:38:28.719 Ghalib Suleiman: talk to someone under senior technical leadership, on this topic, it’s if you have a representative there, that’s your best path.
336 00:38:29.560 ⇒ 00:38:36.119 Ghalib Suleiman: Because engineering is… Running a bit of a delicate operation where they cannot increase the rate limits for everyone.
337 00:38:36.460 ⇒ 00:38:38.780 Ghalib Suleiman: And they do it case by case.
338 00:38:39.990 ⇒ 00:38:41.050 Ghalib Suleiman: If that’s.
339 00:38:44.560 ⇒ 00:38:46.830 Ghalib Suleiman: So yeah, again, apologies, don’t have a…
340 00:38:47.130 ⇒ 00:38:50.910 Ghalib Suleiman: Straightforward answer here, but there is precedence for a way.
341 00:38:52.290 ⇒ 00:39:00.450 Ghalib Suleiman: Sometimes the vendors will just tell you, bugger off, by the way. This also happens. They’ll go, well, everyone’s stuck with this rate limit, including our internal teams, and so tough luck to everyone involved.
342 00:39:05.480 ⇒ 00:39:06.290 Ghalib Suleiman: Other questions.
343 00:39:06.290 ⇒ 00:39:08.390 Uttam Kumaran: Any other questions? Yeah.
344 00:39:12.240 ⇒ 00:39:13.050 Uttam Kumaran: So, in terms of.
345 00:39:13.050 ⇒ 00:39:16.259 Andy Weist: Last… yeah, one last question.
346 00:39:16.260 ⇒ 00:39:16.850 Uttam Kumaran: Nice.
347 00:39:16.850 ⇒ 00:39:19.850 Andy Weist: What cloud are you deployed to, or are you multi-cloud for rental?
348 00:39:19.850 ⇒ 00:39:22.819 Ghalib Suleiman: We’re AWS, we do…
349 00:39:22.950 ⇒ 00:39:29.010 Ghalib Suleiman: We’re redundant within AWS, we’re not deployed to any other clouds besides AWS.
350 00:39:29.250 ⇒ 00:39:31.369 Ghalib Suleiman: We do have an…
351 00:39:31.670 ⇒ 00:39:37.249 Ghalib Suleiman: Docker image of people… I don’t know if this would be the case here, but if people do want to deploy to their own cloud.
352 00:39:37.820 ⇒ 00:39:43.689 Ghalib Suleiman: You know, it does come with an enterprise platform fee, but we do have A self-contained deployment.
353 00:39:44.230 ⇒ 00:39:46.820 Ghalib Suleiman: That people can spin up if they want to.
354 00:39:47.120 ⇒ 00:39:47.849 Ghalib Suleiman: Sort of.
355 00:39:48.270 ⇒ 00:39:52.690 Andy Weist: Did you use that just for sandboxing, too? Like, local, I don’t know, sandboxing?
356 00:39:53.500 ⇒ 00:40:00.179 Andy Weist: I don’t know that that would be more convenient than what your platform already offers for testing or anything, but just as a thought.
357 00:40:02.490 ⇒ 00:40:10.330 Ghalib Suleiman: Oh, no, we just do, you know, as far as any customer sandboxing, you know, people who are just testing things, it does happen on our cloud.
358 00:40:10.970 ⇒ 00:40:12.890 Andy Weist: Okay. As well, yeah.
359 00:40:13.530 ⇒ 00:40:18.560 Ghalib Suleiman: We do have the notion of a workspace, and so, you know, some people will generate a sandbox workspace.
360 00:40:19.300 ⇒ 00:40:26.789 Ghalib Suleiman: But… Typically, they’ll just have some sandbox connection, because not many systems offer sandboxes. NetSuite does, Salesforce does.
361 00:40:26.910 ⇒ 00:40:33.779 Ghalib Suleiman: But by and large, very few actually do. So, in NetSuite’s case, they’ll have one NetSuite connection and one NetSuite Sandbox connection.
362 00:40:34.300 ⇒ 00:40:41.019 Ghalib Suleiman: And run tests, you know, one test thing from the sandbox, which probably doesn’t warrant a separate workspace, but we’re happy to provision those if we want them.
363 00:40:42.130 ⇒ 00:40:42.590 Andy Weist: Got it.
364 00:40:43.690 ⇒ 00:40:51.810 Uttam Kumaran: Yeah, part of the reason, Andy, we also initially was interested in polyatomics is we’re… we do these types of invitations very often, and I was looking for a partner.
365 00:40:51.810 ⇒ 00:40:53.410 Andy Weist: That was more programmatic.
366 00:40:53.410 ⇒ 00:40:55.890 Uttam Kumaran: I don’t think we ever took advantage of that, but…
367 00:40:56.220 ⇒ 00:41:02.030 Uttam Kumaran: Much of the platform is customizable, and there… and… but also, we found that, like.
368 00:41:02.300 ⇒ 00:41:08.870 Uttam Kumaran: I was mainly biasing towards in case we had to build stuff, but we haven’t had to use that team has built
369 00:41:08.990 ⇒ 00:41:15.330 Uttam Kumaran: Almost every new connector we’ve requested, you know, within a few weeks, so it’s not been a problem.
370 00:41:17.640 ⇒ 00:41:18.290 Andy Weist: Awesome.
371 00:41:20.020 ⇒ 00:41:21.430 Andy Weist: No more questions for me.
372 00:41:21.430 ⇒ 00:41:22.610 Ghalib Suleiman: Other questions?
373 00:41:23.260 ⇒ 00:41:24.020 Ghalib Suleiman: Jason, anything?
374 00:41:24.020 ⇒ 00:41:24.479 Uttam Kumaran: So I think…
375 00:41:24.480 ⇒ 00:41:25.500 Ghalib Suleiman: Or Shivani?
376 00:41:26.550 ⇒ 00:41:28.490 Jason Wu: No, nothing on our side.
377 00:41:35.430 ⇒ 00:41:36.789 Uttam Kumaran: I’m happy to sort of…
378 00:41:37.360 ⇒ 00:41:46.039 Uttam Kumaran: Yeah, I’m happy to sort of summarize, like, maybe goll up over email or Slack, like, what sort of setting up looks like. I mean, typically.
379 00:41:46.040 ⇒ 00:41:47.650 Ghalib Suleiman: Nope, you provision us.
380 00:41:47.650 ⇒ 00:41:52.190 Uttam Kumaran: an instance, we go in there and connect, like, P0 sources.
381 00:41:52.190 ⇒ 00:41:52.640 Ghalib Suleiman: I mean.
382 00:41:52.640 ⇒ 00:41:54.720 Uttam Kumaran: And then drive towards an estimate.
383 00:41:54.830 ⇒ 00:42:03.809 Uttam Kumaran: Right, we haven’t yet arrived at, like, a decision on Data Warehouse, so, that is, you know, we’re driving towards that this week.
384 00:42:03.860 ⇒ 00:42:16.229 Uttam Kumaran: Of course, that will… but I’m sure we can start to understand what, integration requirements we have for some of those P0 sources. I guess, Shivani and Jason, like, how do you guys feel
385 00:42:16.290 ⇒ 00:42:20.250 Uttam Kumaran: Is it worth driving towards getting, like, a…
386 00:42:20.450 ⇒ 00:42:22.340 Uttam Kumaran: You know, trial instance set up.
387 00:42:22.450 ⇒ 00:42:26.559 Uttam Kumaran: Do you want to take some time, or we can talk about it on Thursday, or what do you think is best?
388 00:42:27.540 ⇒ 00:42:29.140 Jason Wu: Let’s,
389 00:42:30.080 ⇒ 00:42:37.019 Jason Wu: Let’s take that offline, and talk about it. Okay. Yeah, the same goal as let’s make sure we kind of get to a decision to this in the next day or two.
390 00:42:37.670 ⇒ 00:42:38.660 Uttam Kumaran: Okay, great.
391 00:42:39.520 ⇒ 00:42:40.310 Uttam Kumaran: Perfect.
392 00:42:40.970 ⇒ 00:42:46.039 Ghalib Suleiman: Okay, cool. Okay, that’s all I have then. Yeah, we’ll be on standby with time if you guys need anything.
393 00:42:46.890 ⇒ 00:42:48.710 Shivani Amar: Nice feeding you, thank you.
394 00:42:49.160 ⇒ 00:42:51.410 Steve Sizer: Yep, cheers, guys. Thanks.
395 00:42:51.410 ⇒ 00:42:51.850 Uttam Kumaran: Thanks, everybody.
396 00:42:52.470 ⇒ 00:42:53.120 Steve Sizer: Thanks.