Alright. Well, I have about 01:03 central time, so I think we're gonna get started. First, thank you all for joining today's, webinar from Snowflake Data to Sigma AI apps, building a sales pipeline analyzer. Before we get started, just some quick housekeeping for you all. This webinar is being recorded, and the replay will be emailed to everyone within one or two business days. I do have a chat session and a q and a session, open, and I will try to monitor that in real time and answer questions on the fly if at all possible. I am allotting about five or ten minutes at the end of this for a q and a. So if there's any, you know, bigger questions that might involve longer answers, or anything that you don't think of until closer to the end of the the webinar, feel free to put them in the, the the q and a, and I'll try to answer them, as best I can. So this lab that we're gonna do, I was, I was sent to a Snowflake conference about three months ago and was able to do some hands on labs. And, unfortunately, there were some technical difficulties in the lab, so it turned into more of a video presentation. And when I got back home, I was, you know, really excited about what they showed and wanted to, you know, go through the exercise myself and build it. So I went ahead and did that. Go to the next slide. First of all, just a little bit about myself. My name is Sean Rousey. I have been at InterWorks since January of this year. I'm a data engineer working primarily with Snowflake and a little bit with SQL Server these days. Going back to the start of my career, I did quite a bit of QA and testing on data for the credit bureaus and then at some point have moved into development and kinda had a choice to do more front end development or, you know, back end slash data, and I was just so intrigued by all the insights even back then that you could get out of data, I chose the data path, and that's pretty much what I've been doing, you know, since then. Right before InterWorks, I worked for a consulting company called Elder Research for about a year. And then prior to that, I worked for seven years at LexisNexis, big data company that had two or three petabytes of data. So it was, the scale was huge. It was a great experience, and that has kind of led me to where I am today. Alright. So the premise of this lab that Snowflake created was, typically, there are a lot of interactions in companies with customers. Sometimes those can be in the form of phone calls. Sometimes those can be in the form of meetings, and sometimes they can be in the form of email. And a lot of the time, there is some information either overt or hidden contained in the content of those of those interactions. But, typically, after the interaction is done, not a lot gets done with that information. And so this lab was intended to show a way to grab all your customer interactions, whether it be emails, phone calls, or meetings, use some of the AI capabilities within Snowflake to extract out key pieces of information and also help classify a particular communication as low risk, high risk, medium risk, that type of thing, and then take action on it. So that's pretty much what we did. Now the data that was used for this was synthetically created. There's about a 100 transcripts, and you'll get to see what some of those look like. I suspect that if this was done in a true production environment, a bigger part of the time involved is going to be analyzing and getting your models to accurately read and assess the verbiage in your transcripts. Go to the next slide. So, you know, like like the slide shows, every customer conversation creates data. Almost none of it gets used. And we're gonna try to find where the the deal risk or the risk of the deal actually is hidden. So, you know, every single deal, every single communication that you have with a customer, as part of a deal has has a trail of data in it, has some information in it that typically hasn't been used very much. There are email threads that talk about objections to pricing, questioning security, shifting timelines. You know, those may get answered in the email thread, but, typically, you know, unless somebody remembers to act on that, nothing... You know, no action is taken. Sales calls, you may find out that the product champion has changed. Competitors are now in the mix. Budgets have changed or been frozen. You know, things that will definitely impact the the state of the deal. And then notes for meetings. You know, typically, you might have next steps that are identified, decision makers that are either currently in place or decision makers are changing. You know, again, a lot of times they're captured in meeting notes, but most of it is never opened again. So there's a there's a cost of not acting on a lot of this stuff. You know, as the slide shows, budgets are frozen for restructuring. The deal quietly stalls, but no no decision makers or nobody with the authority to act on it may ever be notified. Champion left the company. Sales wasn't told. If sales isn't told, they don't have any information to act on that. Competitors become part of the mix. That's a big one. If somebody's trying to undercut you in in price or is promising, you know, some additional functionality or ability to do something, that information may never make it to the people that that can make a decision based on that. And then things like the close date. I mean, you... There may have been a a close date set two weeks ago, and we're already past it. And, you you know, people may not even be aware. And so those are the kind of things that this hands on lab is gonna try to show that can be, you know, automated, extracted, and actually acted on without human intervention. So the, you know, pretty much the the big overarching question that, you know, this lab was trying to, you know, answer or see if we could answer is, what if every conversation could be read, understood, and acted on out automatically? That sounds like something that would be, you know, pretty good. So that's what we're gonna build today, or at least that's... I'm gonna show you what I built that has the ability to do that. One final slide before we get into the, the technical side of this. Basically, this is going to transition things from buried text to business action. You know, before a solution like this, your text may sit in a, you know, CRM application, never gets read. Risk is discovered only when it's too late, and escalation depends on someone remembering to look. And we are gonna move to the right side of this slide where AI is gonna classify the risks based on the transcripts and extract the pieces of information that help support that. An agent is gonna decide what needs attention, and then a record is actually gonna get written back to Snowflake from the Sigma dashboard, send an email, and update the dashboard on the fly. So that's what you're gonna see in this demo. Alright. So I am going to move from PowerPoint to Snowflake. This is the Snowflake interface. And just so you guys can see what the end result is gonna look like, this is ultimately what our Sigma dashboard looks like. Okay? We've got, you know, title stuff up here, but the the things I really want you to to to pay attention to, this is a chatbot object that's part of Sigma that has been configured to go out and use a Snowflake agent to answer questions that are posed in a English type way. We have these tiles along the top. They basically give the summary of everything in the pipeline, the number of deals at critical risk, deals at risk, and healthy deals. Now later on in the demo, I'm gonna want you to pay attention because we're gonna ask a question to the to the chatbot. And on the fly, some of these tiles are going to change based on filtering that happens, based on the question that you answer or that you ask. These tiles down here are static. This is just... We've got 12 deals as part of this sample data. Six of them are in negotiation stage, four proposal, two discovery, and then we also have a bar chart summarizing them by this level. So that's what our dashboard looks like. This would be sitting in a group that maybe interacts with customers that would like to know if there's risks out there and that type of thing, and so that's kind of the premise of this whole demo. Alright. So this is the end result. Let's kinda start from the start and and and start seeing how we build this thing out. Most of you... Just from the registration, it seems like that we have a pretty pretty technical group, as as part of this, so I'm gonna kinda speak, you know, based on that assumption. And, you know, one one of the things you'll probably notice just by the by the database names is that we have a bronze database. There is also a silver one and a gold. So there is a medallion type structure to this. We have a bronze layer where the data comes in raw. From there, we do some ETL. We cleanse the data. We reshape it, you know, maybe add some metadata to it to create a silver layer. And then from there, we will be able to create, semantic views and call some of the AI functionality to interact with our chatbot in the Sigma app. So as you can see right here, I've got a a bronze layer. Here's my schema, and then this is basically all of our data. We have, we had a CSV with the deals. We have another CSV that has these transcripts, and then this answer key is good. If this is something that you guys end up try... You know, trying to do on your own, I highly recommend creating an answer key. And what the purpose of that is is to... You know, basically, all the transcripts that I created, there were about a 100 of them. I went through and did my own assessment and said, hey. This one should be classified as at risk. This one should be classified as healthy, that type of thing. It's just a way to double check that my prompting that I'm doing further in the demo is correctly classifying the transcripts. So that's why we have those three CSV files, and then they were brought into the database. Anybody familiar with Snowflake should recognize a lot of this. This is just some SQL to create things from the ground up and get things loaded. We we create our database. We create our schema. We create our tables along with the columns and data types that are part of the tables. We went ahead and created a file format. These are all CSVs. And then we basically do a copy into to load the data. So this is basically loading the data from the CSVs into the tables that I created further up. Just to get a little sanity check and see what these look like, let's run this real quick. And here you go. So we've got... For every row, we've got a transcript ID. That's gonna be unique for each transcript. We've got a deal ID. That will be unique for a deal, not for a transcript. We have the source. As you can see, we have some phone calls. We have some emails, and we have some meetings. We have the date. And then the important part is here's the text of the transcript. So let me double click on this so you can kinda see it. This simulates a phone call transcript. This one looks more like an email. And then finally, here are some meeting notes from a meeting. So all this is, you know, all this is captured however it is is captured, you know, put in the CSV and was brought into these these tables. So we've got our raw transcripts. I don't think looking at the deals is all that interesting right now. And then our our answer key, which was just for my my benefit. So that's pretty much it as far as the bronze layer. We just got, you know, basically, two tables with data that were created, one for the transcripts, one for the deals. And from there, we're going to be able to build this out. So in moving from bronze to silver, this is where some ETL is gonna happen, cleansing of data, possibly restructuring some things. It... A lot of it just depends on how, you know, how good your data is coming in. So I'm gonna try to go through some of this for you. We create our schemas. We create our tables. This transcript signals table, it's gonna effectively hold the results of a call to Coco and Snowflake to get information extracted out of the transcript, and this this will mean a lot more when you actually see what this table looks like. But we go ahead and create this table, and then we do an insert. We have a CTE here, and this is a a big part of the... You know, what you have to do to get this, you know, working as as you want it. So we've got a big select statement here that we're gonna use to insert into this transcript signals table. And a lot of it is just straight, you know, pulling the columns, our transcript ID, deal ID, that type of thing. These two calls right here are what I really want you to pay attention to. These are relatively new in Snowflake, and I'm gonna try to try to show, you know, how how to use these. The AI classify function basically takes some text, and in this case, it's our transcript text, and it is going to attempt to classify that text in a way that you describe. So these three lines right here are from me describing to the AI model, hey. Here's some instructions for how to classify these transcripts. So we created three classifications. We've got healthy, we've got at risk, and we've got critical, and that's the label. And then you give it a description. And, again, this is this is straight English. This is not... You know, I could have probably put in a lot of different sentences and gotten the same result, but it is an LLM. And so correctly giving it instructions and prompting it correctly are gonna be important. So these were my descriptions to to classify this. Deal is progressing well. You know, at risk, deal shows warning signs such as delays, new stakeholders, that type of thing, and critical, severe risk, budget freezes, that no clear path forward. And then there's also another instruction in here, and it's basically telling, you know, what's the overall description of the task? And and this is where we tell it, you know, we want you to classify the overall risk level of the sales deal based on call note, email, or meeting summary provided. And all that gets pulled out and basically returned as a risk level. The next call to the Snowflake AI functionality is extract. What it is good at doing is pulling out specific pieces of information based on instructions that you give it here. And there's really... The only limit is is how many instructions you wanna give it. I could have only given one. I could have given it a 100. In this case, we gave it, you know, we gave it four. We wanna know the specific risk reason. We wanna know what the next step is. We wanna know if there were competitors mentioned. If so, who? And if there was a stakeholder change. And then here are some instructions for... To help, you know, figure out what it is supposed to be pulling. And the response from that, we're gonna put in a column called signals. Let's see. Risk status is something that we're gonna need for our semantic view that we're gonna build in a little bit, which is needed by the chatbot to be able to write SQL on the fly. And so this deal risk status table is going to hold that information. Let's do a quick little sanity check. K. Got a 100 rows. That makes sense. And let's just look at our transcript signals table at this point. Okay. So as you can see from a raw transcript text in our bronze layer, we were able to pass it in to a couple of these AI functions, and we have a lot of good information here. Not only good information, it's in a structured format. Everything's in its own column. So we've got our transcript ID, our deal ID, you know, all this stuff. And then here is the return from the calls to the Snowflake AI. These are classified as healthy, risk reason, next step, was their competitor mentioned, so on and so forth. So that is the output of the call to AI classify and AI extract, and the response that you get from those. Alright. I've got one more set of SQL that I'm gonna show you guys, and that has to do with... So at this point, we've got our bronze layer set up and fully populated. We now have our silver layer created. And so now we have to build our agents that are going to answer the questions, and part of that is going to be giving it instructions on how it needs to do that. So we've got some SQL here that's just creating warehouses, that type of thing. Here is where a a... An an important piece of this whole thing. Here's where we create what's called a semantic view. And, you know, one way to think of that would be for those that are familiar with, you know, medallion architecture. In effect, it's kind of a gold layer. It's going to have facts. It's gonna have dimensions, and it's gonna have calculated fields that in Snowflake are called metrics. So this is basically just a very good way to structure the data. In fact, the primary way that you need to structure your data in a semantic view for a chatbot to be able to properly query it. So... Whoops. So here's where we create our pipeline semantic view. Here's our tables that we're using, fax dimensions, and metrics. The other Cortex service that needs to be created is a search service for the transcript. So we just basically define it here. There's some parameters you can put it well. First of all, it's it's asking what text do you want to search through. So that's what the transcript text is for. You give it your attributes. This target lag is how many days back you wanna go. That is configurable. You can set that to what you want. And, basically, it's gonna query the raw transcripts data from our bronze layer. And then here is an important piece as far as creating our sales pipeline analyzer agent. This is going to be what our chatbot actually is configured to connect to and ask questions to. This is kind of the endpoint for it to to start asking questions of Cortex. So we are creating a sales pipeline or analyzer agent. There's some, you know, information up here. This right here is is pretty important. Most of you are probably familiar with YAML format. That's what this is. And so it's basically just a lot of configuration for this agent. For example, you can tell it which model you wanna use. Here's the instructions for the overall pipeline agent. I'm I'm telling it answer concisely when deal... Discussing a deal's risks, name the deal, the risk level, know, so on and so forth. Give it some information regarding the orchestration and some sample questions that might be asked of this chatbot. Down here, we have a little configuration for the two tools that we built, basically a text to SQL converter, which we're gonna call that the analyst, and then we created a Cortex search agent. We're just gonna refer to that as search. And then, basically, in this tool resources section, we configure for our analyst. This is the semantic view that we wanna use. And for our search, this is the transcript search service that we wanna use. Alright. So that is kind of everything under the covers. That is from the Snowflake side of things. That's everything that needs to be built to be able to support this sales pipeline analyzer that we're gonna show off. So let me pause for a second, make sure there's no questions. I don't see any. Alright. So I will move on to the Sigma side of things. Alright. So, hopefully, now that you've seen everything under the covers, this dashboard, you know, makes a little bit more sense. These prompts are based on some of the information and instructions that we included in the YAML within Snowflake. And, again, these are just charts that I added that are looking at all of the deals together. These will remain static. Further in the demo, we'll do some we'll do some tweaks and see these tiles change on the fly. So now I'm gonna pretend that I am an end user of this, and I'm, you know, I'm in my day to day stuff, and I I haven't looked at the critical risk deals in a while, let's say. So I want to say, let's look at all the deals that are critical risk status, and let's see what we get. The first time that you interact with the Cortex agent, what I'm finding, it takes about forty five to fifty seconds. So we'll we'll see how how accurate that is. Subsequent questions to the agent after the initial one do take a lot less time. So we'll give this a few seconds to respond and see what it see what it tells us. While this is working, this was the part when I was doing the hands on lab at, at the Snowflake conference. They were getting an error message that all their their token currency was was gone, which was, I I think, a little surprising to them. But, so we didn't get past this, past this stage. So... Alright. Here we go. We got a response. It's, sixty seconds. It's pretty pretty close. So, you know, as you can see, it gives a pretty good summary. You know, deals at critical risk status tells us five deals totaling 649,000, which matches up with what we would expect based on this graph over here, are currently flag critical, and there's a common thread across them. And then it gives... You know, it lists all five of the deals, gives some information about them, the name, you know, the stage of the negotiation, what the value is. That's an important one. And then the the key risk driver. You know, this one budget free... Budget freeze tends to be a a pretty common one for these that are critical. And then gives a little summary. You know, it says all five deals are stalled for budget, you know, budget freezes, tied to restructuring, so on and so forth. And then, you know, it offers some next steps, and then it asks the question, would you like me to, you know, escalate any of these deals or or spotlight a specific account for a closer look? Let's just say that we discover, hey. This... You know, let's let's escalate the one that's worth the most money. That that seems to be one that maybe somebody needs to take a look at. So I am going to put in a prompt here and say what's the name of that? Brookfield Realty. Alright. So we're gonna say let's escalate the Brookfield Realty deal for further review. Now when I built this dashboard, I can... I configured this action to do a couple of things. One, it is obviously going to interact with Snowflake to, you know, query the data, you know, do what it needs to do to to gather the information. But once it escalates the deal, it is actually going to write a record back to Snowflake. And at the same time, it is going to automatically send an email to actually myself, but it could go to anybody to put it in front of them. This deal is is being escalated for whatever reason. So let's see what happens here. Now when you set these up, you can set them up to be fully automatic, meaning no human in... Intervention is needed, or you can say, hey. I I think I want somebody to have to click a button first. For the sake of this demo, I set it up the second way. That's what it's basically doing right here. It's saying, you know, hey. This is... I'm trying to escalate this this deal. Should I do it, skip it, or approve it? I am going to approve it. Alright. And gives us a little summary of what I just did. It says the deal has been complete... Escalation has been completed. The record was logged into the escalation log, which is a hidden table that you all can't see. A notification email was sent to Brookfield Realty. Let me open up my email and see if I got it. Alright. I see a sales pipeline analyzer deal escalation alert. Here we go. This just came at one minute ago. So this is, you know, from what we just sent. Basically, deal escalation gives the name of the deal, deal ID, gives the reasons, and recommended actions. So, you know, again, other than clicking a button, which I configured it to do, this whole escalation from querying the database to send in, an email was totally hands off, from a from a human perspective. Alright. And so, you know, now that's... This has been escalated, you know, maybe the user wants to, you know, get rid of a lot of the other noise that's on the screen and only see what's related to Brookfield Realty. So we're going to give it another prompt and say, let's spotlight. I could have just as easily put focus on the Brookfield Realty Realty Deal. Now when I click the button for this to run, I want you to pay attention to the titles at the top. They are going to change dynamically at some point based on the fact that now the dashboard is only showing what's tied to Brookfield as opposed to everything. Okay. It was quick. Don't know if you guys caught that, but the tiles at the top dynamically changed. And as you can see up here, there was always a a drop down up here that you could manually choose. And just based on, you know, typing in English commands to this chatbot, it knew to, you know, go up to here, select Brookfield Realty, which then filters all these tiles to only include Brookfield. So now we only see it's it's a $219,000 deal. It is a single deal at critical risk and... Which means that there's zero that are at risk and healthy within the scope of Brookfield. Again, these ones were not configured to change, so those stayed the same. You know, from here, you know, you can really carry it as far as you wanna go. You know, we could prompt it further for, specifics of, you know, a deeper dive into what what specific is we wanna look at. We could try to compare it against another, you know, at risk deal and try to draw, you know, insights as far as, you know, do the reasons match up? Is is... You know, are the the the value of the deals, you know, close enough to where they're they're they're kind of the same priority as one a lot higher to where we ought to focus on the the higher one. You know, it's... You know, really, the the limit is just in your ability to think of things and give instructions to the agents that you want answers for. So, I mean, I think at some point, I'd like to maybe add 10 classifications in here and a lot of different piece of information to extract just to see how it handle... Handles it. You know, for my purposes, I was really just trying to recreate a hands on lab that, you know, I wasn't able to do at the Snowflake conference. And I felt like this was a pretty good exercise to show that there's some, you know, good capabilities here, and it was not too hard to implement. I think it took me, you know, maybe a a a week a week to a week and a half. Now I will say that getting your prompts right on production data is probably going to take the majority of your time if you try to implement this in your own production environment. I was dealing with synthetic data, relatively clean, you know, didn't have to do a whole lot of tweaking on prompts. I suspect if I was dealing with, you know, hundreds of thousands of customer interactions from lots of different systems that, I would have to be a little bit better with my prompting. Okay. Got a couple questions. Cesar, he's asked a couple asking if Sigma works with other data lake platforms, specifically Microsoft Azure Fabric. I will confirm this. I... My intel tells me, yes. I believe anything that you can set up a a communication with, this this will work, but I will confirm that and and let you know if I have, yeah, told you incorrectly. And then he sent another question. Is the sale line... Pipeline analyzer app built on Sigma? So it is built on and using Sigma. Now full disclosure, and this this may be good news for those trying to do this, I had never touched Sigma before going down this path. I'd... I had done quite a bit with Snowflake, so I felt very comfortable with that. But I had literally not touched Sigma at all and was able to, you know, kinda figure it out. Some of these AI tools, you know, Claude, you know, Gemini, I encourage you to use them if your company lets you because they can certainly reduce the amount of time it takes to, you know, get some of this stuff figured out. But in a short answer, Cesar, yes. It was built on Sigma. Let's see. I think as far as the demo, that's really all I have to show. So I do appreciate everybody, attending. I hope this was something that, you know, you enjoyed and feel like it's something that you can take back to to to where you work and and implement something similar. We've got, you know, ten minutes here at the end. I'm happy to answer any additional questions, that anybody has. Cesar, we got another question. Alright. He's... Yeah. He asked, can a can a can a normal, in parentheses, nontechnical user build a dashboard like the SalesPipe by an analyzer, and can they share it firm wide? So I I believe a nontechnical user could build the Sigma side of things fairly fairly easily. I I do think you're gonna need to partner up with somebody on the Snowflake side of things to get your database layers properly architected and set up, that's probably gonna be more of the challenge than the Sigma side for a nontechnical user. You know, the nontechnical user, I think, is the person that is the target user of this because, typically, they're not gonna know, you know, in intermediate to advanced level SQL and and won't be able to query the data. So giving them a tool like this enables them to, in effect, query the data using English. And then Richard Donahue asked, will the link to the replay be sent out? I've got a colleague that's kind of handling those administration, administrative things. I do believe that she will be sending that out in the next couple of days. Ted, if you wanna chime in, feel free. Yep. Just wanted to confirm. You will get the replay. If not tonight, then sometime tomorrow. Anybody else? So Joshua Meyer asks, is the AI classify and the extract functions using AI built into Snowflake, or does it connect to an external tool like Cloud or ChatGBT? It is within Snowflake. It is part of Coco. That was a big announcement at the conference. I think it was back in early June. Coco was quite quite the topic of the conversation for that entire week, and so it is built into Snowflake. Those are Snowflake functions and functionality and is not, now what's going on under the covers? That would be a question for Snowflake, but but in in my experience, those are true Snowflake functions that you're calling. Any other questions? Alright. I don't see anything coming across. So if there's nothing else, again, thanks everybody for joining. I really appreciate it. I hope this was helpful. And, you know, once the the replay has been sent out, if there's questions that people don't think of until later, I'm I'm sure we'll have a way to, you know, get get those sent to me, and I'll be happy to try to answer them at some point in the future.