Meeting Title: AI Platform - Linear - Slack Automation Work Session Date: 2026-01-28 Meeting participants: Gabriel Lam, Samuel Roberts
WEBVTT
1 00:00:23.150 ⇒ 00:00:24.600 Samuel Roberts: Ayy.
2 00:00:25.520 ⇒ 00:00:26.500 Gabriel Lam: Hey, how’s it going?
3 00:00:26.820 ⇒ 00:00:30.030 Samuel Roberts: Alright, let a… Context switching today, but…
4 00:00:30.030 ⇒ 00:00:39.309 Gabriel Lam: No worries. Yeah, I feel like I also sort of played into that a little bit with this whole thing.
5 00:00:39.840 ⇒ 00:00:50.680 Samuel Roberts: No, no, you’re good, you’re good. Honestly, this is the point, like, I need to be, like, you know, I was doing some deep work on Lilo for a few days, which was nice, but now it’s like, I gotta bounce around a little bit, and I gotta get better about that. Anyway, so…
6 00:00:50.680 ⇒ 00:01:00.079 Gabriel Lam: Okay, yeah, well, I… hope this isn’t going to drag you around too far. I also know you just.
7 00:01:00.080 ⇒ 00:01:03.410 Samuel Roberts: This is the cool stuff, too, like, don’t worry, this is always…
8 00:01:03.410 ⇒ 00:01:04.310 Gabriel Lam: Okay, okay
9 00:01:05.220 ⇒ 00:01:12.579 Gabriel Lam: Yeah. Basically, wanted to do, like, a bit of a work session slash architect with you a little bit.
10 00:01:12.880 ⇒ 00:01:15.810 Gabriel Lam: I…
11 00:01:16.520 ⇒ 00:01:34.300 Gabriel Lam: don’t know how helpful the looms or the PR was. I think the more I look into it, I’m like, this is actually kind of hard to read, nor do I think there’s, like, a way for, like, a sort of standard, you know, like, process for doing a loom, so I just, like, ask her to make one.
12 00:01:34.520 ⇒ 00:01:35.189 Gabriel Lam: And I, like.
13 00:01:35.190 ⇒ 00:01:35.790 Samuel Roberts: Yeah.
14 00:01:36.670 ⇒ 00:01:37.450 Samuel Roberts: They’re good.
15 00:01:37.910 ⇒ 00:01:43.880 Gabriel Lam: So, yeah, I think based on what we… I’ve done so far.
16 00:01:44.440 ⇒ 00:01:51.050 Gabriel Lam: first of all, happy to scrap it, because this, like, POC isn’t… Really even working at all.
17 00:01:51.310 ⇒ 00:01:51.790 Samuel Roberts: Okay.
18 00:01:52.930 ⇒ 00:02:02.659 Gabriel Lam: But so far, the process has been to… and let me just bring up the PRD again, just because I do… I do think it’s helpful, just maybe not to the…
19 00:02:03.270 ⇒ 00:02:09.569 Gabriel Lam: I think in implementation, it sort of is struggling, so let me.
20 00:02:09.570 ⇒ 00:02:15.140 Samuel Roberts: Yeah, I mean, that’s definitely… I think, yeah, the PRD was not… not bad by any means. I’m just… I think it was a,
21 00:02:15.740 ⇒ 00:02:28.759 Samuel Roberts: we probably need to put a little more stuff about how… like, because I saw there’s, like, a lot of files in, like, one directory and stuff, and I was just like, I might even try my fault with some of this, so I think we can probably improve this in a way that we can maybe pass it back to cursor and let it…
22 00:02:29.510 ⇒ 00:02:30.559 Samuel Roberts: Let it run.
23 00:02:31.070 ⇒ 00:02:32.450 Samuel Roberts: Okay, let’s keep going.
24 00:02:32.650 ⇒ 00:02:36.590 Gabriel Lam: Yeah, yeah, yeah. So… There seems to be…
25 00:02:37.150 ⇒ 00:02:39.910 Gabriel Lam: the way that I think we’ve been approaching it.
26 00:02:40.450 ⇒ 00:02:46.360 Gabriel Lam: I’ve been thinking of approaching it is to take what we already have, in Superbase.
27 00:02:46.870 ⇒ 00:02:51.069 Gabriel Lam: As a way for us to, like, ingest meetings.
28 00:02:52.280 ⇒ 00:02:58.730 Gabriel Lam: The thing that has been difficult, first of all, has been this linear ticket generations.
29 00:02:58.990 ⇒ 00:03:02.819 Gabriel Lam: Where, currently, if, you know, we go into Superbase.
30 00:03:03.760 ⇒ 00:03:08.440 Gabriel Lam: These are sort of what Mustafa had made and been able to achieve.
31 00:03:08.970 ⇒ 00:03:14.050 Gabriel Lam: Where, you know, if we, like, just take a look at the latest.
32 00:03:14.590 ⇒ 00:03:20.359 Samuel Roberts: And this is what gets displayed on that linear ticket. This is what gets displayed on the generate linear tickets, like…
33 00:03:20.560 ⇒ 00:03:24.949 Gabriel Lam: section, that header, right… right here.
34 00:03:26.100 ⇒ 00:03:35.959 Gabriel Lam: So, if it is able to create it, then it gets displayed right here, it goes into Superbase… or sorry, it goes into Superbase and then gets displayed right there. If it’s not able to make it.
35 00:03:36.360 ⇒ 00:03:39.890 Gabriel Lam: So, you know, I tried with some tests yesterday night.
36 00:03:43.080 ⇒ 00:03:58.430 Gabriel Lam: And if there’s ever an error where something happens, like, it just won’t go into Superbase. And so I think the difficulty there, first of all, is with, like, testing, and I don’t know if there’s, like, a better way to do it. Is it better to circumvent
37 00:03:58.630 ⇒ 00:04:03.020 Gabriel Lam: This table, and then to go…
38 00:04:03.430 ⇒ 00:04:06.320 Gabriel Lam: You know, directly from the transcripts themselves.
39 00:04:06.530 ⇒ 00:04:08.310 Gabriel Lam: That’s something that I was thinking of.
40 00:04:09.480 ⇒ 00:04:14.720 Gabriel Lam: So that’s sort of the flow. Currently, I was also thinking of using…
41 00:04:15.790 ⇒ 00:04:21.620 Gabriel Lam: sort of a Slack bot, which currently is… if I share…
42 00:04:23.670 ⇒ 00:04:30.300 Gabriel Lam: that, was just, like, something I call Ticket Reviewer. This is… this can also change, but sort of, like.
43 00:04:31.130 ⇒ 00:04:39.030 Gabriel Lam: Either, you know, You… after a meeting is ingested, and I think what has been really good is…
44 00:04:39.220 ⇒ 00:04:43.189 Gabriel Lam: in this channel, we see, like, hey, Zoom summarizer, like, this meeting is there.
45 00:04:43.400 ⇒ 00:04:47.190 Gabriel Lam: And I think some sort of tickets or some meetings, like.
46 00:04:47.780 ⇒ 00:04:51.800 Gabriel Lam: should have some privacy, and so I was thinking, like, hey, if you have an app.
47 00:04:52.100 ⇒ 00:04:54.440 Gabriel Lam: Then it’ll go to the right person.
48 00:04:54.960 ⇒ 00:04:59.350 Gabriel Lam: There’s always a fallback, which is, like, maybe, you know, the… the…
49 00:04:59.640 ⇒ 00:05:04.670 Gabriel Lam: the highest level person in a meeting, or right now it’s just, like, probably me, or Utam, or you.
50 00:05:04.910 ⇒ 00:05:14.900 Gabriel Lam: I’ve just put myself, just so I’m like, okay, if there’s a reviewer, maybe there’s a ticket coming in, then someone will at least see it. So the goal is, like, okay, it pops out here, and then there’s…
51 00:05:15.470 ⇒ 00:05:17.100 Gabriel Lam: Sort of buttons.
52 00:05:17.830 ⇒ 00:05:19.929 Gabriel Lam: Similar to…
53 00:05:20.610 ⇒ 00:05:30.400 Gabriel Lam: I think if you notice here, with… I think Casey had made the assumed before, but you’d, like, have a yes, no, or, like, reassigned to someone else kind of thing, like, sort of very simple…
54 00:05:30.840 ⇒ 00:05:31.890 Gabriel Lam: UX.
55 00:05:32.190 ⇒ 00:05:35.190 Gabriel Lam: To either appro… approve, or…
56 00:05:35.490 ⇒ 00:05:40.580 Gabriel Lam: Or reject or reassign tickets. So that’s sort of the flow that I was thinking of.
57 00:05:41.900 ⇒ 00:05:48.160 Gabriel Lam: Let me reshare back to… Chrome.
58 00:05:50.110 ⇒ 00:05:51.490 Gabriel Lam: And here.
59 00:05:51.740 ⇒ 00:05:56.340 Gabriel Lam: So, one of the things that I feel like I don’t want to just, sort of.
60 00:05:57.410 ⇒ 00:06:03.879 Gabriel Lam: reinvent the wheel, was like, okay, how can we take what exists here, and then…
61 00:06:05.190 ⇒ 00:06:10.400 Gabriel Lam: Bring it into linear, but take additional context.
62 00:06:10.530 ⇒ 00:06:16.790 Gabriel Lam: And so, my initial thought was, like, okay, are we able to use…
63 00:06:18.180 ⇒ 00:06:26.140 Gabriel Lam: cursor, and, like, directly call it through an MCP, and the good thing about cursor is, like, hey, I could, you know, I could directly call
64 00:06:26.470 ⇒ 00:06:29.989 Gabriel Lam: If I go into, here, I could be like.
65 00:06:31.070 ⇒ 00:06:34.849 Gabriel Lam: the benefit of the MCP is I could… I just need to make sure I turned it on.
66 00:06:35.560 ⇒ 00:06:36.210 Samuel Roberts: Oh, yeah.
67 00:06:36.210 ⇒ 00:06:43.099 Gabriel Lam: is I could say, you know, with… whisper, like, hey.
68 00:06:43.560 ⇒ 00:06:52.260 Gabriel Lam: Based on the last meeting, can you give me all the tickets, and then… check with…
69 00:06:53.340 ⇒ 00:06:57.459 Gabriel Lam: Our client repos to make sure they’re up-to-date, and then attach them to the right tickets.
70 00:06:58.760 ⇒ 00:07:03.140 Gabriel Lam: And… oop, Whisper is not on right now.
71 00:07:04.420 ⇒ 00:07:08.619 Gabriel Lam: But it has been able to do something similar, where if I say, like, hey.
72 00:07:09.600 ⇒ 00:07:15.009 Gabriel Lam: You know, hey, can you list the most recent tickets from the most recent meeting?
73 00:07:16.090 ⇒ 00:07:27.050 Gabriel Lam: through… in the Supabase table, what is it? Linear ticket.
74 00:07:33.930 ⇒ 00:07:35.499 Gabriel Lam: I think that’s what it’s called.
75 00:07:40.080 ⇒ 00:07:42.019 Gabriel Lam: linear ticket generations.
76 00:07:43.320 ⇒ 00:07:46.309 Gabriel Lam: Oh, okay, well, my cursor has been limited.
77 00:07:46.310 ⇒ 00:07:51.630 Samuel Roberts: Yeah, turn off… just go to Auto or something for… instead of Opus, and it should let you go through, I think.
78 00:07:55.010 ⇒ 00:07:56.220 Samuel Roberts: Oh, no.
79 00:07:56.490 ⇒ 00:08:01.920 Gabriel Lam: I ended up with that, and I thought it was just… it was limiting me because I was trying to do Opus more, but maybe not.
80 00:08:02.080 ⇒ 00:08:02.770 Samuel Roberts: Huh.
81 00:08:03.140 ⇒ 00:08:05.780 Gabriel Lam: I will, bring it up to the team.
82 00:08:05.850 ⇒ 00:08:13.600 Samuel Roberts: Yeah, I thought it was just, like, limiting it for, like, expensive models, but… Huh.
83 00:08:18.900 ⇒ 00:08:24.069 Samuel Roberts: Okay, well… I mean, I don’t know if cursor is where we want to be doing this anyway…
84 00:08:24.590 ⇒ 00:08:32.430 Gabriel Lam: Yeah, that’s something that I was like, the benefit is the MCP and, like, context retrieval, but are… is there a better…
85 00:08:33.400 ⇒ 00:08:36.559 Gabriel Lam: way of fetching… context.
86 00:08:37.330 ⇒ 00:08:39.239 Samuel Roberts: Yeah, I mean, well, theoretically we could…
87 00:08:39.520 ⇒ 00:08:45.740 Samuel Roberts: you know, we could do the NCP on an agent, you know, somewhere else, so, like, it doesn’t need to be so manual in…
88 00:08:45.740 ⇒ 00:08:46.680 Gabriel Lam: Right.
89 00:08:46.850 ⇒ 00:08:49.600 Samuel Roberts: cursor, the way…
90 00:08:50.510 ⇒ 00:08:58.250 Samuel Roberts: the way that the current linear ticket generator is working, I think, is directly to the API, not with the MCP, but…
91 00:08:58.250 ⇒ 00:08:58.960 Gabriel Lam: It is.
92 00:08:59.540 ⇒ 00:09:05.120 Samuel Roberts: Yeah, but we could… modify that, I suppose?
93 00:09:05.820 ⇒ 00:09:08.329 Samuel Roberts: I mean, realistically, like, the linear…
94 00:09:09.030 ⇒ 00:09:16.929 Samuel Roberts: wait, the linear ticket generation table, or whatever, yeah. Yeah. It’s, these are just in Supabase, until they get…
95 00:09:17.220 ⇒ 00:09:18.230 Samuel Roberts: pushed, right?
96 00:09:18.230 ⇒ 00:09:22.429 Gabriel Lam: These are just in Supabase. I added a few columns.
97 00:09:22.430 ⇒ 00:09:24.159 Samuel Roberts: Thinking that it would, sort of.
98 00:09:24.160 ⇒ 00:09:29.710 Gabriel Lam: give additional context. Basically, they’re in this, like, pending state?
99 00:09:30.290 ⇒ 00:09:34.149 Gabriel Lam: And once they’re either approved or rejected, I don’t…
100 00:09:34.150 ⇒ 00:09:34.690 Samuel Roberts: Yeah.
101 00:09:34.690 ⇒ 00:09:35.389 Gabriel Lam: I think…
102 00:09:35.390 ⇒ 00:09:38.279 Samuel Roberts: You gotta go up to filter, I think. Oh, sorry, yeah, that works too.
103 00:09:38.280 ⇒ 00:09:40.900 Gabriel Lam: Yeah, either those are improved or declined, and then…
104 00:09:41.730 ⇒ 00:09:47.980 Gabriel Lam: Any, you know, any and every ticket exists here, it’s just whether they’re approved, declined, or pending.
105 00:09:48.160 ⇒ 00:09:50.469 Samuel Roberts: Right, okay. And… so…
106 00:09:50.470 ⇒ 00:09:51.430 Gabriel Lam: Yeah. Okay.
107 00:09:53.930 ⇒ 00:09:56.129 Gabriel Lam: So the goal is, like, are we able to…
108 00:09:57.000 ⇒ 00:10:03.050 Gabriel Lam: have, you know, an action instead of create be, like, update? Are we able to link it to linear?
109 00:10:03.420 ⇒ 00:10:16.110 Gabriel Lam: issue IDs, and then can the context also… include… Like, Slack context, or… or…
110 00:10:16.370 ⇒ 00:10:22.179 Gabriel Lam: Right. That’s where this might not be the best way to map it to, because this is going to have…
111 00:10:22.180 ⇒ 00:10:29.499 Samuel Roberts: its own… like… This is all for fresh tickets, right?
112 00:10:29.650 ⇒ 00:10:30.720 Samuel Roberts: So… Yes.
113 00:10:30.930 ⇒ 00:10:35.040 Samuel Roberts: if we want… I’m just trying to think through it, so if we… if we want to, say.
114 00:10:35.400 ⇒ 00:10:39.009 Samuel Roberts: Create an entry in this table that is just update.
115 00:10:40.950 ⇒ 00:10:43.070 Samuel Roberts: What needs to get populated there?
116 00:10:45.870 ⇒ 00:10:53.400 Samuel Roberts: Because, like, updating a ticket could just be, like, a comment on it, or a change to it.
117 00:10:53.510 ⇒ 00:10:58.119 Samuel Roberts: To the date, to the… Priority to the status.
118 00:10:59.450 ⇒ 00:11:00.580 Samuel Roberts: You know what I mean?
119 00:11:01.220 ⇒ 00:11:01.770 Gabriel Lam: Yeah.
120 00:11:01.770 ⇒ 00:11:08.229 Samuel Roberts: Like, the schema of this table might not match everything we want for, like, update, especially.
121 00:11:11.800 ⇒ 00:11:16.310 Samuel Roberts: So what if the ticket is just, like, adding some comments, you know what I mean?
122 00:11:16.310 ⇒ 00:11:28.520 Gabriel Lam: Yeah, I do think that… If we are updating tickets, it shouldn’t… Totally… rewrite the…
123 00:11:30.880 ⇒ 00:11:37.050 Gabriel Lam: description, or the title, per se. I do think there is a benefit to… having it…
124 00:11:38.560 ⇒ 00:11:44.110 Gabriel Lam: be a set of, like, comments on the activity level, so you can always sort of see
125 00:11:44.530 ⇒ 00:11:46.409 Gabriel Lam: The versioning of a ticket.
126 00:11:46.850 ⇒ 00:11:47.610 Samuel Roberts: Agreed.
127 00:11:47.950 ⇒ 00:11:51.919 Gabriel Lam: I also feel like, you know, if it’s got updated
128 00:11:52.960 ⇒ 00:11:58.940 Gabriel Lam: Like, if there’s an updated, you know, time, that could be the date that we parse in.
129 00:11:59.990 ⇒ 00:12:09.860 Samuel Roberts: Well, I’m wondering, do we want to think in, like, a different table format, maybe? Like, if we’re creating new tickets, and they need to be approved, then this is good.
130 00:12:10.070 ⇒ 00:12:15.560 Samuel Roberts: But if we’re gonna be pushing updates to Linear that are different than just pure ticket creation.
131 00:12:16.540 ⇒ 00:12:20.790 Samuel Roberts: does a different… Schema makes sense.
132 00:12:22.310 ⇒ 00:12:24.599 Samuel Roberts: Maybe not. Maybe there’s everything here we need.
133 00:12:30.810 ⇒ 00:12:33.389 Samuel Roberts: Like, I… hmm, alright, I’m just trying to think…
134 00:12:37.250 ⇒ 00:12:40.399 Samuel Roberts: if… Alright, let’s take a step back.
135 00:12:40.980 ⇒ 00:12:41.670 Samuel Roberts: Not a day.
136 00:12:42.120 ⇒ 00:12:45.639 Samuel Roberts: I think a bigger, a bigger… view of this.
137 00:12:46.660 ⇒ 00:12:50.830 Samuel Roberts: So, the, the goal… I’m gonna hold on, make my little notebook out of it, sorry.
138 00:12:51.070 ⇒ 00:12:53.069 Samuel Roberts: Visualizing some stuff, too. Okay.
139 00:12:54.100 ⇒ 00:12:55.899 Samuel Roberts: I should probably do this.
140 00:12:56.000 ⇒ 00:13:06.950 Samuel Roberts: up here somewhere on some sort of whiteboard, but I never like that as much, so I’m just gonna talk it through, and then if I need to share, I’ll take a picture or something, but… Yeah. Okay, so the top level here is that…
141 00:13:08.120 ⇒ 00:13:13.919 Samuel Roberts: After a meeting, We have a transcript, right?
142 00:13:15.290 ⇒ 00:13:16.890 Samuel Roberts: The meeting goes to transcript.
143 00:13:17.780 ⇒ 00:13:23.409 Samuel Roberts: Right now, here, actually, hold on. The way it currently works… I’m sorry, I just need to really, really talk it through.
144 00:13:23.410 ⇒ 00:13:23.730 Gabriel Lam: Yup.
145 00:13:23.730 ⇒ 00:13:29.450 Samuel Roberts: Meeting to transcript, to linear ticket, linear… Ticket.
146 00:13:29.610 ⇒ 00:13:32.130 Samuel Roberts: Gen 2 approval, right?
147 00:13:33.130 ⇒ 00:13:33.680 Gabriel Lam: Yep.
148 00:13:35.060 ⇒ 00:13:36.300 Samuel Roberts: But we won’t it between…
149 00:13:36.300 ⇒ 00:13:42.900 Gabriel Lam: In Gen 2 approval, there’s the, like, But… Either the ticket
150 00:13:44.410 ⇒ 00:13:51.480 Gabriel Lam: I think there’s the ticket from the transcript, And then there’s also… Slack context.
151 00:13:51.910 ⇒ 00:13:54.570 Gabriel Lam: And I’m trying to figure out, like, maybe not Slack content.
152 00:13:54.570 ⇒ 00:13:57.749 Samuel Roberts: I think other things feed into this besides the transcript, right?
153 00:13:57.750 ⇒ 00:14:04.109 Gabriel Lam: The goal… I think the goal is that, yeah, other things besides just the transcript feed into the ticket.
154 00:14:05.040 ⇒ 00:14:05.690 Samuel Roberts: Okay.
155 00:14:06.790 ⇒ 00:14:12.150 Samuel Roberts: So, what we want to do is, in addition to just Slack coming in, too.
156 00:14:13.420 ⇒ 00:14:19.059 Samuel Roberts: is also passing the current linear statuses, or state, I guess we’ll call it.
157 00:14:19.600 ⇒ 00:14:20.250 Gabriel Lam: Yeah.
158 00:14:21.760 ⇒ 00:14:28.670 Samuel Roberts: And that needs to go into the ticket generator, which is now generator slash updater. Okay, so then if we’re gonna say…
159 00:14:32.930 ⇒ 00:14:39.649 Samuel Roberts: So then, the output of this linear ticket generator right now is just fresh nerds, right?
160 00:14:39.880 ⇒ 00:14:41.999 Gabriel Lam: Yes. And those have a…
161 00:14:45.130 ⇒ 00:14:51.990 Samuel Roberts: title… Description… what else is in this table? Team ID, of course.
162 00:14:53.340 ⇒ 00:15:00.040 Samuel Roberts: Team name… Assignee.
163 00:15:05.200 ⇒ 00:15:11.190 Samuel Roberts: And then this is all stuff that goes into linear. Status here is not a linear status, right?
164 00:15:11.190 ⇒ 00:15:11.810 Gabriel Lam: No.
165 00:15:11.870 ⇒ 00:15:17.989 Samuel Roberts: Okay. That’s fine. Okay, so then what… if… if we’re gonna have… so that’s like a fresh…
166 00:15:18.340 ⇒ 00:15:22.930 Samuel Roberts: ticket. If we’re gonna have an updated ticket entry.
167 00:15:23.040 ⇒ 00:15:25.750 Samuel Roberts: what else do we need? We need, like, what…
168 00:15:27.240 ⇒ 00:15:31.889 Samuel Roberts: This is where I feel like just trying to map it onto what we currently have is maybe the wrong path.
169 00:15:34.440 ⇒ 00:15:40.939 Samuel Roberts: like… What we probably want to do is break open that linear ticket generator a little bit more.
170 00:15:41.770 ⇒ 00:15:46.419 Samuel Roberts: So rather than just relying on the output of it here.
171 00:15:48.670 ⇒ 00:15:51.880 Samuel Roberts: We actually want to go in… And say, like.
172 00:15:52.060 ⇒ 00:15:54.860 Samuel Roberts: Only create new tickets here if we haven’t
173 00:15:55.100 ⇒ 00:15:57.659 Samuel Roberts: don’t have a matching ticket bet. Like.
174 00:15:59.220 ⇒ 00:16:05.599 Samuel Roberts: And maybe this is how it was working, and I… and maybe this is how it was working, and I maybe didn’t follow, but, like…
175 00:16:06.700 ⇒ 00:16:08.399 Samuel Roberts: Create the ticket.
176 00:16:08.620 ⇒ 00:16:10.239 Samuel Roberts: It can do this path.
177 00:16:10.560 ⇒ 00:16:14.540 Samuel Roberts: When it wants to update, we need to have recurrent ticket, right?
178 00:16:16.420 ⇒ 00:16:18.699 Samuel Roberts: It’s gonna have a ton of context in there.
179 00:16:21.400 ⇒ 00:16:23.240 Samuel Roberts: It’s gonna have other comments.
180 00:16:26.030 ⇒ 00:16:28.919 Samuel Roberts: Alright, do me a quick favor, flip over to cursor.
181 00:16:28.920 ⇒ 00:16:29.450 Gabriel Lam: Yep.
182 00:16:39.840 ⇒ 00:16:44.730 Samuel Roberts: And then, no, you’re good here. Just click on… oh, go back to the MCP. That’s exactly what I wanted to see, sorry.
183 00:16:44.850 ⇒ 00:16:46.809 Samuel Roberts: And then click on the 25 tools.
184 00:16:47.000 ⇒ 00:16:50.319 Samuel Roberts: Alright, so we have… Create comment.
185 00:16:50.450 ⇒ 00:16:52.680 Samuel Roberts: List cycles, get documents, get… okay.
186 00:16:53.070 ⇒ 00:16:59.219 Samuel Roberts: So the comments are good there. So maybe that’s… maybe this is what… maybe we don’t need entries here if we’re just commenting on tickets.
187 00:17:04.890 ⇒ 00:17:05.790 Samuel Roberts: Does that…
188 00:17:14.220 ⇒ 00:17:25.530 Gabriel Lam: I guess the way I was thinking was, like, if… Would it be… Better if the split between
189 00:17:25.770 ⇒ 00:17:29.020 Gabriel Lam: Update and create ticket.
190 00:17:31.190 ⇒ 00:17:37.000 Gabriel Lam: I guess, like, the split between, like, create comment versus create… Issue?
191 00:17:37.150 ⇒ 00:17:42.540 Gabriel Lam: Or, I’m not sure, actually, if it’s document, or… I think it is issue.
192 00:17:42.850 ⇒ 00:17:43.890 Samuel Roberts: It’s probably an issue, yeah.
193 00:17:43.890 ⇒ 00:17:49.430 Gabriel Lam: Yeah, like, the split between create, comment, or create issue, happens…
194 00:17:50.180 ⇒ 00:17:54.820 Gabriel Lam: Before the generated, quote-unquote, tickets, or…
195 00:17:55.150 ⇒ 00:17:58.139 Gabriel Lam: After they get ticketed and then sorted.
196 00:17:58.500 ⇒ 00:18:01.469 Samuel Roberts: Yeah, I think we… I think we probably want to do it earlier.
197 00:18:02.110 ⇒ 00:18:02.980 Gabriel Lam: Okay.
198 00:18:03.290 ⇒ 00:18:07.519 Samuel Roberts: Because… What it… what this can do, then, like…
199 00:18:07.940 ⇒ 00:18:13.710 Samuel Roberts: If the idea is, okay, we have a transcript, we have a bunch of Slack messages over the last however many, 24 hours.
200 00:18:13.940 ⇒ 00:18:14.460 Gabriel Lam: Yep.
201 00:18:14.460 ⇒ 00:18:18.239 Samuel Roberts: We then also pull in the linear tickets for… and we assume that we know
202 00:18:18.820 ⇒ 00:18:26.000 Samuel Roberts: what part of the transcript relates to the project, and all this other stuff, like what client, and all that jazz. So, we have inputs of Slack messages.
203 00:18:26.490 ⇒ 00:18:29.909 Samuel Roberts: Meeting transcripts, and current linear tickets.
204 00:18:30.190 ⇒ 00:18:30.740 Gabriel Lam: Yep.
205 00:18:31.280 ⇒ 00:18:32.979 Samuel Roberts: So then the output of that
206 00:18:33.930 ⇒ 00:18:37.349 Samuel Roberts: Should be potentially new linear tickets?
207 00:18:38.670 ⇒ 00:18:44.169 Samuel Roberts: and then a series of updates to the old linear tickets. And those are kind of, like, two distinct things in my mind.
208 00:18:44.820 ⇒ 00:18:45.570 Gabriel Lam: Okay.
209 00:18:45.570 ⇒ 00:18:48.010 Samuel Roberts: Like, click, hover over Create Comment real quick.
210 00:18:49.700 ⇒ 00:18:57.069 Samuel Roberts: So, the parameters here, we got the issue ID, the parent, and then the body. Is there anything else? Is that just cut off because it’s the full thing?
211 00:18:57.070 ⇒ 00:18:58.820 Gabriel Lam: That’s it. It’s just those three.
212 00:18:58.820 ⇒ 00:19:03.769 Samuel Roberts: That makes sense, that’s good. And then if we go to create issue… There’s so much more.
213 00:19:03.770 ⇒ 00:19:04.260 Gabriel Lam: Yeah.
214 00:19:04.260 ⇒ 00:19:05.710 Samuel Roberts: So, that’s where I think, like.
215 00:19:05.940 ⇒ 00:19:08.469 Samuel Roberts: Trying to map them to the same table is a bad idea.
216 00:19:08.470 ⇒ 00:19:09.280 Gabriel Lam: I see.
217 00:19:09.610 ⇒ 00:19:13.330 Gabriel Lam: I guess my question there would be, like…
218 00:19:13.510 ⇒ 00:19:18.820 Gabriel Lam: How do you make sure that the two outputs don’t overlap or duplicate?
219 00:19:19.010 ⇒ 00:19:23.559 Samuel Roberts: Well, that’s why I think there’s… we gotta think about, like, some piece of this,
220 00:19:24.710 ⇒ 00:19:28.179 Samuel Roberts: What did you call it before the engine? The,
221 00:19:29.900 ⇒ 00:19:35.680 Samuel Roberts: I’m blanking on words here, because my brain is starting to, like, bleed together all these other things. The, like.
222 00:19:35.830 ⇒ 00:19:37.529 Samuel Roberts: Comparative Engine or whatever.
223 00:19:37.530 ⇒ 00:19:38.970 Gabriel Lam: Or, like, cross-referencing.
224 00:19:38.970 ⇒ 00:19:46.479 Samuel Roberts: Yeah, yeah, I think what we want to say is, okay, they discussed this issue. Is there a linear ticket covering that issue?
225 00:19:47.410 ⇒ 00:19:59.109 Samuel Roberts: If there is, I want to go down this other branch, which is updating the status, or adding a comment, or reassigning, or anything like that. That could be update issue, right?
226 00:19:59.110 ⇒ 00:19:59.700 Gabriel Lam: Yep.
227 00:20:00.660 ⇒ 00:20:03.140 Samuel Roberts: If there’s nothing covering it.
228 00:20:03.570 ⇒ 00:20:10.309 Samuel Roberts: then I want to potentially run create issue, which is really, in our case, adding an entry to that table.
229 00:20:10.310 ⇒ 00:20:11.050 Gabriel Lam: For now. Yeah.
230 00:20:11.860 ⇒ 00:20:16.110 Samuel Roberts: But the, like, the… the…
231 00:20:18.060 ⇒ 00:20:22.619 Samuel Roberts: Yeah, so, okay. I think… and if we’re drawing, like, a flow diagram, right?
232 00:20:24.220 ⇒ 00:20:33.189 Samuel Roberts: And I’m gonna do this in words instead of actually doing it out, because… you know what, let’s do it, let’s do it out, whatever. How… what is your… what time are we at? We’re kind of almost at time. Do you have more time?
233 00:20:33.190 ⇒ 00:20:40.899 Gabriel Lam: I have time till… 3, and then I’m… from 3 to 3.30, and then I’m free after 3.
234 00:20:40.900 ⇒ 00:20:41.750 Samuel Roberts: Okay.
235 00:20:41.920 ⇒ 00:20:48.880 Samuel Roberts: Okay, so I’ll have 20 minutes, and then… Okay. I’m just thinking, like, I think the way to think about it, maybe, now that we’ve seen…
236 00:20:49.140 ⇒ 00:20:58.449 Samuel Roberts: How this might work, or not work, or whatever issues we’re having, is gonna be… Passing into the agent.
237 00:21:00.430 ⇒ 00:21:01.130 Samuel Roberts: Hmm.
238 00:21:01.360 ⇒ 00:21:02.780 Samuel Roberts: all the context.
239 00:21:03.870 ⇒ 00:21:10.460 Samuel Roberts: And then what it needs to do is identify which tickets are relevant and which tickets are not, or which…
240 00:21:11.400 ⇒ 00:21:12.600 Samuel Roberts: How do I think about this?
241 00:21:13.320 ⇒ 00:21:15.939 Samuel Roberts: Alright, so we have tickets, which they’re calling issues, right?
242 00:21:15.940 ⇒ 00:21:16.530 Gabriel Lam: Yep.
243 00:21:16.890 ⇒ 00:21:20.390 Samuel Roberts: So, we’ll call… we’ll call them ticket. Oh, I don’t know.
244 00:21:21.140 ⇒ 00:21:21.459 Gabriel Lam: We can call.
245 00:21:21.460 ⇒ 00:21:26.169 Samuel Roberts: There are gonna be things discussed in the meeting that are just, like, more abstract, right?
246 00:21:26.170 ⇒ 00:21:26.770 Gabriel Lam: Yup.
247 00:21:27.490 ⇒ 00:21:30.679 Samuel Roberts: That needs to get distilled into a list of, like.
248 00:21:32.580 ⇒ 00:21:34.520 Samuel Roberts: I don’t want to say issues, but like…
249 00:21:35.190 ⇒ 00:21:36.790 Samuel Roberts: Tasks that have to happen or something?
250 00:21:36.790 ⇒ 00:21:37.440 Gabriel Lam: Yup.
251 00:21:38.050 ⇒ 00:21:42.049 Samuel Roberts: That’s, like, distinct from the current list of Lanier tickets, and…
252 00:21:43.430 ⇒ 00:21:45.899 Samuel Roberts: Overlaps with it in certain ways.
253 00:21:45.900 ⇒ 00:21:50.820 Gabriel Lam: Right, so it’s like… I think it does start from the transcript, where…
254 00:21:50.820 ⇒ 00:21:51.460 Samuel Roberts: Yeah.
255 00:21:52.180 ⇒ 00:21:58.440 Gabriel Lam: You sort of parse the transcript, And then extract, like, Action items…
256 00:21:59.020 ⇒ 00:22:00.790 Samuel Roberts: Yeah, yeah, exactly, okay.
257 00:22:00.790 ⇒ 00:22:03.430 Gabriel Lam: And then action items have…
258 00:22:04.230 ⇒ 00:22:07.500 Gabriel Lam: Like, a sort of similarity score?
259 00:22:07.710 ⇒ 00:22:08.530 Gabriel Lam: to…
260 00:22:09.430 ⇒ 00:22:10.670 Gabriel Lam: Existing tickets?
261 00:22:12.000 ⇒ 00:22:17.319 Samuel Roberts: Yes, and if something… if no ticket matches well enough.
262 00:22:18.440 ⇒ 00:22:19.240 Gabriel Lam: Then it’s created.
263 00:22:19.240 ⇒ 00:22:35.709 Samuel Roberts: creating a new… yes. Otherwise, it goes down the path of saying, okay, what is different from here? What was discussed? Do I make a comment? Do I make a change of assignment? Do I make a change of status? Do I make a change of date? And that might be where we just give it kind of the MCP and say, like.
264 00:22:38.370 ⇒ 00:22:42.270 Samuel Roberts: do it, rather than, like, make a fresh API call every time, you know?
265 00:22:44.650 ⇒ 00:22:49.240 Samuel Roberts: But if it doesn’t match, then maybe it just does the… well, here are my suggested tickets to create.
266 00:22:52.380 ⇒ 00:22:53.130 Gabriel Lam: Right.
267 00:22:54.480 ⇒ 00:23:00.680 Samuel Roberts: But I think the flow of, like, okay, I have a linear ticket, I have all this context of the actual, you know.
268 00:23:01.670 ⇒ 00:23:06.909 Samuel Roberts: Issue, or action item, What is different here?
269 00:23:07.280 ⇒ 00:23:09.840 Samuel Roberts: Is a different flow than that table gives us.
270 00:23:10.430 ⇒ 00:23:11.100 Gabriel Lam: Right.
271 00:23:16.460 ⇒ 00:23:23.050 Samuel Roberts: So really, I think what we want to do is just kind of tap into that Linear ticket generator?
272 00:23:23.270 ⇒ 00:23:29.890 Samuel Roberts: And… and have some kind of, like, statement, or… or logic, or suggestion. I’m not exactly sure where the…
273 00:23:30.300 ⇒ 00:23:32.540 Samuel Roberts: Code is and all that,
274 00:23:33.280 ⇒ 00:23:36.000 Samuel Roberts: But basically, like, the output of…
275 00:23:37.130 ⇒ 00:23:43.300 Samuel Roberts: Part of that should redirect to something that’s gonna do the change updates, rather than the create tickets.
276 00:23:43.780 ⇒ 00:23:44.450 Gabriel Lam: Right.
277 00:23:45.590 ⇒ 00:23:50.130 Samuel Roberts: which may or may not need approvals, you know, whatever, however we want to do all that UI-wise, but…
278 00:23:51.770 ⇒ 00:23:53.640 Samuel Roberts: I think those are, like, two different…
279 00:23:53.780 ⇒ 00:23:55.840 Samuel Roberts: Paths that it needs to go down.
280 00:23:55.940 ⇒ 00:23:59.880 Samuel Roberts: One of which is, like, kind of already done, which is this, like, fresh tickets.
281 00:24:00.240 ⇒ 00:24:00.600 Gabriel Lam: Yep.
282 00:24:01.160 ⇒ 00:24:07.440 Samuel Roberts: The other side is what you’re trying to do, and I’m not sure where exactly that needs to tap into the code. So maybe I’ll dig into the code real quick.
283 00:24:09.340 ⇒ 00:24:14.060 Samuel Roberts: This is happening… do you know which files I should look at specifically offhand in the…
284 00:24:15.500 ⇒ 00:24:18.250 Samuel Roberts: Actually, I might have to date here. I think…
285 00:24:18.610 ⇒ 00:24:20.150 Gabriel Lam: there’s this.
286 00:24:20.480 ⇒ 00:24:27.450 Gabriel Lam: linear ticket generation, there’s the linear…
287 00:24:27.720 ⇒ 00:24:31.529 Gabriel Lam: Let me… I think the PR is probably a lot better of a place to…
288 00:24:31.890 ⇒ 00:24:34.679 Samuel Roberts: Oh, that’s probably true too, you’re right, you’re right, it has all that in there.
289 00:24:40.540 ⇒ 00:24:41.910 Samuel Roberts: I am behind…
290 00:24:57.830 ⇒ 00:24:58.560 Samuel Roberts: Okay.
291 00:24:58.690 ⇒ 00:24:59.880 Samuel Roberts: Sorry, one sec.
292 00:25:00.920 ⇒ 00:25:01.790 Samuel Roberts: Yeah, so this…
293 00:25:01.790 ⇒ 00:25:03.230 Gabriel Lam: So this is for Slack.
294 00:25:03.660 ⇒ 00:25:09.330 Gabriel Lam: webhook. I think this is for creating the cross-referencing.
295 00:25:09.570 ⇒ 00:25:11.700 Samuel Roberts: Yes, okay, so let’s look at this then.
296 00:25:12.030 ⇒ 00:25:13.880 Samuel Roberts: So this is looking at saved tickets.
297 00:25:14.500 ⇒ 00:25:17.409 Samuel Roberts: Get the team ID, build action items for Crawford, right?
298 00:25:21.400 ⇒ 00:25:26.080 Samuel Roberts: Alright, but this is still pulling from the database. I think we need to rethink about how we want to do that. Yeah. You know?
299 00:25:26.190 ⇒ 00:25:28.650 Gabriel Lam: Yeah. I think Go… what is this…
300 00:25:29.670 ⇒ 00:25:34.730 Samuel Roberts: I gotta figure out where… the… okay, so, which… in… sorry.
301 00:25:35.210 ⇒ 00:25:37.710 Samuel Roberts: in… Come on.
302 00:25:39.410 ⇒ 00:25:40.230 Samuel Roberts: What the heck?
303 00:25:41.650 ⇒ 00:25:42.310 Samuel Roberts: There you go.
304 00:25:42.580 ⇒ 00:25:47.490 Samuel Roberts: In source… what’s the one that we think is actually doing the ticket generation?
305 00:25:48.200 ⇒ 00:25:50.170 Gabriel Lam: It’s… Source.
306 00:25:50.170 ⇒ 00:25:50.980 Samuel Roberts: rib.
307 00:25:50.980 ⇒ 00:25:56.159 Gabriel Lam: lib… linear ticket generator. Like, linear ticket generation.
308 00:25:56.760 ⇒ 00:26:01.169 Samuel Roberts: Got it, okay. So in here, let me just read through this real quick. I got it open, too, so I can…
309 00:26:01.900 ⇒ 00:26:03.390 Gabriel Lam: Compress the transcript…
310 00:26:03.390 ⇒ 00:26:09.130 Samuel Roberts: Parse the participants, that’s great, okay. Match participants to linear users, where is that being called?
311 00:26:09.810 ⇒ 00:26:12.100 Samuel Roberts: Oh, no, hold on, where is that being called?
312 00:26:19.470 ⇒ 00:26:23.780 Samuel Roberts: Wait, we’re exporting that function, but we’re not using it anymore? No, we are using it, there it is, okay.
313 00:26:24.700 ⇒ 00:26:27.700 Samuel Roberts: Tickets generate meeting created.
314 00:26:31.960 ⇒ 00:26:33.669 Samuel Roberts: Generate tickets async.
315 00:26:38.090 ⇒ 00:26:44.939 Samuel Roberts: Okay, so I am in… Source, app, API, webhook, Superbase, meeting created.
316 00:26:47.290 ⇒ 00:26:47.700 Gabriel Lam: Yes.
317 00:26:47.700 ⇒ 00:26:53.609 Samuel Roberts: Okay. So that is where I see it says it fetches the linear users, it matches them.
318 00:26:53.950 ⇒ 00:27:02.240 Samuel Roberts: It calculates the common teams, that’s where you’re getting that error, I guess, where if it…
319 00:27:02.770 ⇒ 00:27:04.219 Samuel Roberts: Yeah, let me share my screen, maybe.
320 00:27:04.220 ⇒ 00:27:04.850 Gabriel Lam: Sure.
321 00:27:07.620 ⇒ 00:27:09.960 Samuel Roberts: What are I wearing here? Oh, yeah, okay.
322 00:27:13.160 ⇒ 00:27:17.000 Samuel Roberts: Okay, so in… In this webhook.
323 00:27:20.160 ⇒ 00:27:26.759 Samuel Roberts: So, this function… It seems to actually be what’s doing the ticket generation.
324 00:27:27.990 ⇒ 00:27:31.699 Samuel Roberts: So it… I don’t know if you looked at this already or not, but it fetches the linear users.
325 00:27:32.190 ⇒ 00:27:33.840 Samuel Roberts: It matches them.
326 00:27:34.490 ⇒ 00:27:38.950 Samuel Roberts: Calculates the common teams. This is where it’s probably doing that thing where it’s…
327 00:27:39.280 ⇒ 00:27:39.940 Gabriel Lam: Yep.
328 00:27:39.940 ⇒ 00:27:41.480 Samuel Roberts: No comment teams found.
329 00:27:41.730 ⇒ 00:27:45.789 Samuel Roberts: If it does, it parses action items from summary…
330 00:27:46.790 ⇒ 00:27:49.589 Samuel Roberts: And then we use the ticket generator agent.
331 00:27:51.370 ⇒ 00:27:52.890 Samuel Roberts: And then…
332 00:27:54.370 ⇒ 00:27:59.569 Samuel Roberts: That’s the latest instructions from LangFuse. Okay, so this is probably where we want to tap into here and say.
333 00:28:00.060 ⇒ 00:28:00.900 Samuel Roberts: you know.
334 00:28:03.330 ⇒ 00:28:08.479 Samuel Roberts: all this is… this is not looking at linear at all. Nothing here touches linear, except to look up…
335 00:28:08.770 ⇒ 00:28:10.060 Samuel Roberts: users.
336 00:28:10.060 ⇒ 00:28:10.690 Gabriel Lam: Yup.
337 00:28:11.030 ⇒ 00:28:18.020 Samuel Roberts: But what we want to do, potentially, is… Common teams…
338 00:28:18.470 ⇒ 00:28:23.400 Samuel Roberts: possible teams that it can be assigned. We probably need to restructure this whole agent here.
339 00:28:31.070 ⇒ 00:28:37.000 Samuel Roberts: And it grooms it, yeah. Okay, so what we probably want here is… Oh, God.
340 00:28:38.310 ⇒ 00:28:40.199 Samuel Roberts: So this is taking a meeting ID,
341 00:28:41.400 ⇒ 00:28:47.340 Samuel Roberts: This is taking participants, the compressed… Transcript was just passed in.
342 00:28:48.490 ⇒ 00:28:56.580 Samuel Roberts: And what we probably want to do, then, is this prompt is getting passed into the linear ticket generator agent, which is the master get ticket generator agent.
343 00:28:57.310 ⇒ 00:29:03.660 Samuel Roberts: Which we will look for in… Here, okay.
344 00:29:06.040 ⇒ 00:29:13.600 Samuel Roberts: So maybe this is where we want to be a little more, like… Tap into this.
345 00:29:13.760 ⇒ 00:29:14.320 Gabriel Lam: Yep.
346 00:29:17.110 ⇒ 00:29:22.240 Samuel Roberts: So, maybe what we want to do here is, instead of using the linear ticket agent.
347 00:29:24.320 ⇒ 00:29:26.260 Samuel Roberts: Well, there’s two ways to go about this.
348 00:29:26.390 ⇒ 00:29:28.640 Samuel Roberts: Not two. There’s two ways I can think of right now.
349 00:29:28.810 ⇒ 00:29:29.790 Samuel Roberts: One.
350 00:29:29.950 ⇒ 00:29:46.430 Samuel Roberts: we run all this, and before we write things to the database, we say, okay, that’s what you just think the new ticket should be, but here’s the tickets we actually have, then do the cross-reference, only create the ones that don’t match. Otherwise, go to another agent that figures out how to update them.
351 00:29:48.600 ⇒ 00:29:49.550 Samuel Roberts: Right.
352 00:29:49.550 ⇒ 00:29:50.150 Gabriel Lam: Yep.
353 00:29:50.630 ⇒ 00:30:00.699 Samuel Roberts: Or, we say, okay, before we get to the ticket generator, we… Have another step that takes in…
354 00:30:01.600 ⇒ 00:30:03.780 Samuel Roberts: The linear tickets for a given team.
355 00:30:04.700 ⇒ 00:30:07.330 Samuel Roberts: Or… whatever we call them back here.
356 00:30:08.180 ⇒ 00:30:10.790 Samuel Roberts: Common teams, yeah.
357 00:30:11.190 ⇒ 00:30:15.639 Samuel Roberts: And then says, okay, Go through these.
358 00:30:16.010 ⇒ 00:30:18.470 Samuel Roberts: Linear tickets and everything you have.
359 00:30:18.830 ⇒ 00:30:25.649 Samuel Roberts: figure out… What is not covered, make new tickets for that, send that to another place, another agent maybe.
360 00:30:25.820 ⇒ 00:30:29.690 Samuel Roberts: And then for the new ones, reroute to the… Update.
361 00:30:30.930 ⇒ 00:30:33.859 Samuel Roberts: I don’t know if either of those is better than the other one, but…
362 00:30:41.430 ⇒ 00:30:42.960 Gabriel Lam: I’m also thinking, like, where does.
363 00:30:42.960 ⇒ 00:30:43.580 Samuel Roberts: No, go ahead, yeah.
364 00:30:43.580 ⇒ 00:30:48.449 Gabriel Lam: Additional con- where is it easiest for additional context to slot in?
365 00:30:48.890 ⇒ 00:30:50.380 Samuel Roberts: Right, part of me is like.
366 00:30:51.500 ⇒ 00:30:54.580 Samuel Roberts: I don’t… I think we might even have to restructure this whole thing a little bit.
367 00:30:54.580 ⇒ 00:30:55.430 Gabriel Lam: Hmm.
368 00:30:55.430 ⇒ 00:30:58.610 Samuel Roberts: Cause this is, like… Here’s the meeting ID.
369 00:31:00.110 ⇒ 00:31:03.830 Samuel Roberts: It then is gonna generate an array of tickets.
370 00:31:04.450 ⇒ 00:31:10.150 Samuel Roberts: using these team IDs and the titles and descriptions and assignees. So maybe we say.
371 00:31:11.870 ⇒ 00:31:15.130 Samuel Roberts: Okay, the low effort is…
372 00:31:15.790 ⇒ 00:31:20.540 Samuel Roberts: Here are the current linear tickets. Do not create them if they need to be updated.
373 00:31:20.690 ⇒ 00:31:23.679 Samuel Roberts: do something else, just in this prompt here.
374 00:31:27.800 ⇒ 00:31:33.500 Samuel Roberts: That’s a little, you know… so much of this stuff is, like, balancing the determinism of this stuff, where, like.
375 00:31:33.500 ⇒ 00:31:34.200 Gabriel Lam: Yeah.
376 00:31:34.510 ⇒ 00:31:39.479 Samuel Roberts: We need to make sure it does the right thing, but it also needs the freedom to figure things out.
377 00:31:39.610 ⇒ 00:31:40.610 Samuel Roberts: So… Yep.
378 00:31:42.280 ⇒ 00:31:50.530 Samuel Roberts: My thought is… we restructure this agent, maybe? The other side of this is…
379 00:31:54.040 ⇒ 00:31:58.339 Samuel Roberts: I mentioned we could just do a router, so it could have different agents that it needs to call?
380 00:31:59.600 ⇒ 00:32:07.020 Samuel Roberts: So, the idea is, like, Something takes in the transcript, the Slack…
381 00:32:08.630 ⇒ 00:32:10.339 Samuel Roberts: And a bunch of linear tickets.
382 00:32:11.050 ⇒ 00:32:15.510 Samuel Roberts: And then the output of that is something that’s like, okay.
383 00:32:15.820 ⇒ 00:32:20.910 Samuel Roberts: You know, just like a new ticket, new ticket, new ticket, update ticket, update ticket, new ticket, update ticket.
384 00:32:21.070 ⇒ 00:32:22.709 Samuel Roberts: kind of… router.
385 00:32:24.110 ⇒ 00:32:24.560 Gabriel Lam: Yep.
386 00:32:24.560 ⇒ 00:32:27.779 Samuel Roberts: And then for the new ones, it’ll just literally run this.
387 00:32:28.370 ⇒ 00:32:30.640 Samuel Roberts: And for the update ones, we have a new agent.
388 00:32:31.850 ⇒ 00:32:32.440 Gabriel Lam: Yep.
389 00:32:33.150 ⇒ 00:32:36.449 Samuel Roberts: That might be the… the best structure here.
390 00:32:37.070 ⇒ 00:32:40.970 Samuel Roberts: I don’t really know until we’ve started testing it out.
391 00:32:45.770 ⇒ 00:32:48.179 Samuel Roberts: enrich the tickets. So these tickets get…
392 00:32:49.780 ⇒ 00:32:53.459 Samuel Roberts: Called here, so we generate the tickets.
393 00:32:56.100 ⇒ 00:32:59.869 Samuel Roberts: But that is not enriched yet? We then enrich it?
394 00:32:59.870 ⇒ 00:33:02.829 Gabriel Lam: I don’t think we have, really, a groomer.
395 00:33:03.380 ⇒ 00:33:05.239 Samuel Roberts: No, I know, but this is just enriching them, so…
396 00:33:05.240 ⇒ 00:33:05.570 Gabriel Lam: Oh, yeah.
397 00:33:05.570 ⇒ 00:33:09.120 Samuel Roberts: That’s adding other… context? Like, what…
398 00:33:11.170 ⇒ 00:33:14.449 Samuel Roberts: I’m just trying to understand the steps here. The groomer is down here, which is, like…
399 00:33:15.460 ⇒ 00:33:16.630 Samuel Roberts: I don’t even know.
400 00:33:18.250 ⇒ 00:33:19.730 Samuel Roberts: Take it to my agent.
401 00:33:22.400 ⇒ 00:33:27.059 Samuel Roberts: So that is sort of being groomed, but I don’t know what it’s being groomed against. It’s all in length views, which is…
402 00:33:28.370 ⇒ 00:33:33.060 Samuel Roberts: annoying, because now I can’t see the prompt that it’s even using, but.
403 00:33:33.400 ⇒ 00:33:35.390 Gabriel Lam: I also feel like there might be…
404 00:33:35.740 ⇒ 00:33:38.690 Gabriel Lam: It might be worth taking it off live music.
405 00:33:38.690 ⇒ 00:33:43.100 Samuel Roberts: I would… yeah, if you support that, I support that.
406 00:33:43.240 ⇒ 00:33:50.759 Samuel Roberts: I… I think there’s benefit to having it in a place where people can change it, but if we’re all gonna be in Cloud Code and Cursor and everything, like…
407 00:33:51.280 ⇒ 00:33:55.220 Samuel Roberts: It’s just adding… especially for something like this, which is very technical already.
408 00:33:55.610 ⇒ 00:33:58.040 Samuel Roberts: Tweaking that’s not worth it, but…
409 00:33:58.500 ⇒ 00:34:01.510 Samuel Roberts: I fully support you pulling them into code, then.
410 00:34:01.760 ⇒ 00:34:07.320 Samuel Roberts: Even if they’re just, like, markdown files that we can more easily point to. Yeah. That would be fine.
411 00:34:09.389 ⇒ 00:34:12.979 Samuel Roberts: Okay, here’s… here’s an idea.
412 00:34:13.360 ⇒ 00:34:21.350 Samuel Roberts: Now that we’ve looked at some of this code, so we’ve got meeting created API webhook, maybe…
413 00:34:21.560 ⇒ 00:34:23.350 Samuel Roberts: Point cursor to this.
414 00:34:24.590 ⇒ 00:34:29.299 Samuel Roberts: maybe with the PRD, maybe with just a description of, like, what we’re looking for.
415 00:34:29.770 ⇒ 00:34:32.109 Samuel Roberts: And ask it how it might re-architect
416 00:34:32.600 ⇒ 00:34:35.870 Samuel Roberts: This ticket grooming agent, this ticket generator agent.
417 00:34:35.980 ⇒ 00:34:42.170 Samuel Roberts: we probably want a ticket updater agent. You know, I think that’s really what it comes down to, is we just need another agent here.
418 00:34:42.560 ⇒ 00:34:49.169 Samuel Roberts: And instead of it being… Straight through this, there’s some branch where it says…
419 00:34:52.550 ⇒ 00:34:54.300 Samuel Roberts: Update the ticket instead.
420 00:34:54.300 ⇒ 00:34:54.940 Gabriel Lam: Yeah.
421 00:34:56.090 ⇒ 00:34:56.679 Samuel Roberts: But…
422 00:34:57.640 ⇒ 00:35:04.590 Samuel Roberts: I don’t necessarily, without really digging in right now, know where that needs to go. My thought, initially, just…
423 00:35:11.360 ⇒ 00:35:14.890 Samuel Roberts: Generate ticket. So this is where it’s actually getting called here, right? Yeah.
424 00:35:20.190 ⇒ 00:35:27.419 Samuel Roberts: Yeah, I think the best plan of attack is to re… not redo this, but restructure this, so don’t lean on the superbase.
425 00:35:27.640 ⇒ 00:35:28.220 Gabriel Lam: Yeah.
426 00:35:28.740 ⇒ 00:35:34.740 Samuel Roberts: But… actually get into here, which I’m happy to help with more, like, this is a little… you know.
427 00:35:35.200 ⇒ 00:35:40.660 Samuel Roberts: in the weeds, more than just going right to Superbase. You know, we’re breaking open the black box kind of thing.
428 00:35:40.660 ⇒ 00:35:41.110 Gabriel Lam: Right.
429 00:35:41.750 ⇒ 00:35:44.410 Samuel Roberts: Which is fine, it’s just…
430 00:35:44.700 ⇒ 00:35:49.279 Samuel Roberts: we gotta figure out the best way to make that all work, which I think, yeah, if you point a cursor to this.
431 00:35:49.630 ⇒ 00:35:55.160 Samuel Roberts: maybe even highlight the generator agent, the enriching agent?
432 00:35:56.040 ⇒ 00:35:57.280 Samuel Roberts: And the groomer?
433 00:35:57.750 ⇒ 00:36:03.779 Samuel Roberts: There’s a ticket agent, A groomer agent? Where was the enriching one, though?
434 00:36:05.310 ⇒ 00:36:09.990 Samuel Roberts: Enrich. Groomer prompt. Oh, grooming is enrich? Oh, okay, never mind, then I misread that, thank you.
435 00:36:10.130 ⇒ 00:36:10.810 Samuel Roberts: My bad.
436 00:36:11.190 ⇒ 00:36:14.170 Samuel Roberts: I was looking at the word enrich, I didn’t even look at what the variable was.
437 00:36:18.280 ⇒ 00:36:21.489 Samuel Roberts: Okay, yeah, I think we want to take a step back from what’s here.
438 00:36:21.670 ⇒ 00:36:23.850 Samuel Roberts: I would say, yeah, point cursor to it.
439 00:36:24.340 ⇒ 00:36:28.300 Samuel Roberts: And just be like, we want to do this instead, where should we branch?
440 00:36:28.530 ⇒ 00:36:32.100 Samuel Roberts: See what it comes back with, maybe we can discuss that later.
441 00:36:32.390 ⇒ 00:36:35.799 Samuel Roberts: And then… We can run from there.
442 00:36:36.990 ⇒ 00:36:37.640 Gabriel Lam: Yeah.
443 00:36:39.350 ⇒ 00:36:44.749 Samuel Roberts: Yeah, sorry, this is a little more involved than I was thinking when I first was like, yeah, we can use the outputs of that.
444 00:36:47.010 ⇒ 00:36:51.870 Samuel Roberts: And we still… we still could, but I feel like it’s a little…
445 00:36:54.090 ⇒ 00:36:58.960 Samuel Roberts: I don’t know, duplicative to do, like, here’s all the tickets that were potentially discussed.
446 00:36:59.200 ⇒ 00:37:03.660 Samuel Roberts: But then it doesn’t have the context of the ones going in, so, like, we want to add that context earlier in the
447 00:37:03.810 ⇒ 00:37:05.700 Samuel Roberts: Earlier in the process, I think.
448 00:37:07.660 ⇒ 00:37:10.629 Samuel Roberts: Which probably, yeah, could even just be here, like…
449 00:37:13.170 ⇒ 00:37:17.880 Samuel Roberts: Maybe we change this from a ticket generator agent to a ticket sorting agent?
450 00:37:18.400 ⇒ 00:37:20.680 Samuel Roberts: Or an action item sorting agent.
451 00:37:24.170 ⇒ 00:37:30.679 Samuel Roberts: And then… Pass the new ones into here, and pass the old ones to another one.
452 00:37:31.180 ⇒ 00:37:31.550 Gabriel Lam: Yeah.
453 00:37:31.550 ⇒ 00:37:33.059 Samuel Roberts: You know, that’s probably the best bet.
454 00:37:34.240 ⇒ 00:37:34.830 Gabriel Lam: Okay.
455 00:37:35.630 ⇒ 00:37:38.319 Samuel Roberts: Hope this was helpful, I’m so sorry. If this was just a Morbi, like…
456 00:37:38.320 ⇒ 00:37:38.960 Gabriel Lam: Yeah.
457 00:37:38.960 ⇒ 00:37:40.050 Samuel Roberts: Understand what’s going on.
458 00:37:40.060 ⇒ 00:37:42.640 Gabriel Lam: No, for sure. I think another thing is, like.
459 00:37:43.570 ⇒ 00:37:51.040 Gabriel Lam: to what extent is what is already there? I don’t want to add on too much tech debt, And…
460 00:37:51.420 ⇒ 00:37:53.750 Gabriel Lam: I’m just like, if it’s worth…
461 00:37:53.940 ⇒ 00:37:59.319 Gabriel Lam: I don’t want to fully restart, but maybe as, like, is it worth restarting, and just…
462 00:38:00.350 ⇒ 00:38:02.799 Gabriel Lam: Building another branch and going from there.
463 00:38:03.860 ⇒ 00:38:06.959 Samuel Roberts: Could be. I mean, I bet you could reuse a lot of this stuff.
464 00:38:07.110 ⇒ 00:38:11.550 Samuel Roberts: But you might even want to just make, like, a new… Route.
465 00:38:14.920 ⇒ 00:38:18.409 Samuel Roberts: No, you probably could use the same route and just redo this linear.
466 00:38:18.410 ⇒ 00:38:19.080 Gabriel Lam: out.
467 00:38:19.080 ⇒ 00:38:27.879 Samuel Roberts: generate the… make a new function here, basically. Yeah. And then, wherever this gets called, we can probably replace that with, like, generate or update, you know? Yep.
468 00:38:28.590 ⇒ 00:38:34.560 Samuel Roberts: And then we can reuse some of the logic, we could get that all working, but it won’t break whatever else is still there for now.
469 00:38:34.870 ⇒ 00:38:36.179 Gabriel Lam: Yep. And then…
470 00:38:37.650 ⇒ 00:38:42.729 Samuel Roberts: Yeah, I mean, tech debt in the age of AI is gonna be… A whole other thing.
471 00:38:42.910 ⇒ 00:38:45.160 Samuel Roberts: That we’re not ready for, so I wouldn’t spend…
472 00:38:45.160 ⇒ 00:38:51.440 Gabriel Lam: I mean, I was just like, even in this PR, it’s like hundreds of lines, and I’m like, well, that’s just the beginning, so…
473 00:38:51.440 ⇒ 00:39:02.560 Samuel Roberts: I saw some people talking about that, where they’re like, you know, the big skill is reviewing code now, and even the AI’s good at reviewing code, but, like, we need the AI to review all of the AI written code, because it’s just so much more…
474 00:39:02.560 ⇒ 00:39:04.240 Gabriel Lam: Lines of code, then…
475 00:39:04.500 ⇒ 00:39:11.170 Samuel Roberts: you know, more code has probably been generated in the last, like, 2 years than, like, has ever been written. Like, it’s crazy to think about.
476 00:39:11.280 ⇒ 00:39:16.930 Samuel Roberts: But yeah, I would say this… this might be your entry point, is, like, say…
477 00:39:17.170 ⇒ 00:39:21.930 Samuel Roberts: Like, in this one, meeting created route, create a new function that’s generator update.
478 00:39:23.640 ⇒ 00:39:27.119 Samuel Roberts: work with cursor, what the hell? Oh, I just passed something to my cursor. Okay.
479 00:39:27.560 ⇒ 00:39:28.330 Samuel Roberts: Let’s stop.
480 00:39:29.170 ⇒ 00:39:30.900 Samuel Roberts: Okay.
481 00:39:31.120 ⇒ 00:39:36.819 Samuel Roberts: Yeah, I mean, I’m happy to hop on and talk some more, I’m happy to even think about it a little bit more if you want me to, like, try to actually, like.
482 00:39:37.170 ⇒ 00:39:38.680 Samuel Roberts: Dig in a little bit.
483 00:39:39.100 ⇒ 00:39:43.320 Samuel Roberts: Maybe we can come up with a few different paths, that might be the best way to do it, but…
484 00:39:44.220 ⇒ 00:39:44.780 Samuel Roberts: Yeah.
485 00:39:45.350 ⇒ 00:39:51.410 Gabriel Lam: I mean, maybe at, like, 3.30, like, in a half hour, 45 minutes, just to…
486 00:39:51.580 ⇒ 00:39:57.930 Gabriel Lam: I think… I mean, only if you have availability or capacity and don’t have other things going on, it’s more just…
487 00:39:57.930 ⇒ 00:40:00.680 Samuel Roberts: I’m sure nothing is blown up in Slack or anything.
488 00:40:00.680 ⇒ 00:40:01.320 Gabriel Lam: Yeah.
489 00:40:02.120 ⇒ 00:40:08.390 Gabriel Lam: Hoping that… We’re actually able to get some kind of direction.
490 00:40:09.690 ⇒ 00:40:12.680 Samuel Roberts: Yeah, maybe I’ll even fool around for 30 minutes.
491 00:40:12.680 ⇒ 00:40:14.389 Gabriel Lam: Sure, that’d be wonderful.
492 00:40:14.390 ⇒ 00:40:16.279 Samuel Roberts: see what I can do, just to, like…
493 00:40:16.690 ⇒ 00:40:24.820 Samuel Roberts: I’ll… I’ll push cursor a little bit, and be like, hey, this is what we’re trying to do, pretend that there’s no PRD kind of thing, and just see what it suggests, and make sure we’re on the right track.
494 00:40:24.820 ⇒ 00:40:25.320 Gabriel Lam: Yeah.
495 00:40:25.320 ⇒ 00:40:26.829 Samuel Roberts: I think this is a good way.
496 00:40:27.020 ⇒ 00:40:30.960 Samuel Roberts: But, you know, you never know until you really get into it, so…
497 00:40:30.960 ⇒ 00:40:32.220 Gabriel Lam: Awesome. I appreciate that.
498 00:40:32.220 ⇒ 00:40:34.950 Samuel Roberts: Okay. Alright, yeah, ping me at, like, 3.30, we’ll see where I’m at.
499 00:40:35.120 ⇒ 00:40:38.249 Samuel Roberts: If I have to jump to something else, that might change, but I’ll try to…
500 00:40:38.250 ⇒ 00:40:39.139 Gabriel Lam: No problem.
501 00:40:39.460 ⇒ 00:40:40.010 Samuel Roberts: Okay.
502 00:40:41.620 ⇒ 00:40:45.609 Samuel Roberts: Awesome. I’ll catch you later. Thanks again. Thanks, Seth. Yep, bye.
503 00:40:45.610 ⇒ 00:40:46.140 Gabriel Lam: Bye.