Hello, hello.
Hello.
All right, we are almost all here.
Again, how's it going. Hey, good morning.
More or less morning everywhere. Yeah.
Yeah, I think except for you, except for me here.
But not too bad I'm pretty I'm the furthest west possible on this side of the ocean you know so it's only 3pm here.
Yeah. Yeah, great.
Are you guys all over the world or where are you. I mean, up and down in the in the Western Hemisphere.
Mostly yeah we got Canada, Brazil, and then California.
Fantastic.
Yeah, cool.
Bruce you want to give me a little bit of a tour of who's who enroll and stuff like that. Sure.
Let me just make sure.
Okay, cool.
Because you guys can see my camera I think I.
There we go. We're just doing it. Yes.
Okay, so yeah we've got. Well first of all, we're super excited to be hanging out and talking we've, I don't think we've prepared for a cycle as much as we have this for me.
Yeah, I mean the side effect of just just just having this session, it's actually all the pre stuff that it forces to happen right, I can see it I mean I looked at the notion doc that you sent and I said you guys are, this is, I mean this is already a
very good start you know just from from the extra prep.
That's good. It's like either it's going to be like, you know, seven or eight out of 10, or he's, he's going to say like it's it's we're at, you know, one or two out of 10 and we're going to be missing it all these years.
So that's a lot to learn. Obviously like everyone here we've read the book read gone through this we've been like using shape up in projects for a few years.
So, obviously we want to refine that figure out like how can we get better at it. This is such a core piece of our business I think we talked about this last time like we're essentially selling weeks of shaped work is our is what we're selling.
So the more concrete we can make this it's not just, you know, yes it's more peaceful for the team more clear for the client but like it literally changes.
You know, profit margins that changes like so much of the business is on like how well we can shape and estimate.
And then, so this is, this is why we're investing the time, bringing you in of course all of us prepping and jumping on. But, yeah, we've got Lucian's our lead developer.
He's been with us the longest.
He's been shaping and he was, I think, I think Lucian you were around when we first read shape up together, and we said okay I think this is the thing.
Maybe that was like right before you came I can't remember.
Maybe a little after, yeah.
But the only other, and then Jonathan is in here in Brazil he's basically he's leading all of our mobile, most of our mobile app development and we have a JavaScript kind of side and then we've got Flutter side of things.
And, and then Macy is my EA and she's also running all of our support and marketing so I just wanted her to be in here as well just to kind of hear how we're shaping things because she's also communicating a lot with clients who are like that intake
of like the first initial call where we kind of figure out what they need and then we'll go and shape after that so I kind of want to see the process of how, how like how the word using it from a product and development team, and then how to best prepare
for that.
The only other person is is Chris Chan who's our chief product officer, and he's kind of running all of our custom dev projects.
He unfortunately is closing on a house today so, which is okay, but he was just couldn't, we couldn't make it work.
He's running you're running your custom dev projects meaning the stuff that's outside of this kind of tribe product.
Uh huh. Right, yeah.
So it's all the same, it's all the same people kind of doing tribe, and this so this is a great sample. And you said Chris is running that you mean like from a technical standpoint or from a more of a PM standpoint or yeah PM, I would say, and kind of understood
like a, like a fractional product person like officer for that client essentially because all of our clients typically tend to be non technical, you know they're running totally different types of businesses and then we're, we're kind of being their entire
tech, tech team.
Got it.
we're calling it a product team, less dev team, but yeah.
And was it Jonata?
Oh, Jonata.
Jonata, sorry, Jonata.
So Jonata, I heard mobile and Flutter,
is there a mix of different things in your tech stack
right now when it comes to mobile?
Is it all Flutter?
It's all Flutter.
Uh-huh, got it, okay.
And is there also mobile web,
or is it just like desktop web and Flutter?
There's a mobile web, yeah.
The, well, no, let me take that back.
There will be.
Right now there is a,
sorry, you can use the mobile web right now.
It is on Flutter.
Everything our customer sees is Flutter right now.
The original backend,
what we're spending more of our time investing in now
is the JavaScript React Node.js side of our tech stack.
That's the thing we've been building for the longest time.
We will continue to use Flutter
maybe for Android and iOS moving forward,
but we haven't quite, so we're kind of spinning,
one of the big projects is basically spinning up
a new version of the web
to sort of replace the web on Flutter.
I see.
Just because it's,
there's literally two domains and all that.
So that was that first project,
which we can skip over for today.
It was more for context.
Yep.
Sort of the bigger vision of the next few months, but.
Uh-huh, got it, okay.
And,
okay, that's, okay, good, very good.
So that's good for context.
I want to try to set a little bit of expectations
around kind of what we're gonna try and do
in this shaping session.
And so,
when Bruce and I talked,
the super distilled TLDR of like kind of
what I think we're trying to work on here
is how to kind of improve the matching
between like we said, this was the appetite
and then this was how much time we actually spent.
And a lot of times that gets kind of painted
as like,
there's something is going wrong on the dev side
or like the engineers aren't moving fast enough
or blah, blah, blah, you know?
And our way of looking at that,
as you probably already know,
it's not that,
it's a fit question between two things.
You know what I mean?
We like, we said this was the size of the box
and then this is what fit into the box
or it broke through and it didn't fit into the box, right?
And both of these things are actually variables, right?
Like the amount of time that we actually negotiate
is the appetite, is a variable,
and there is like a learning curve
to kind of figuring out how do we set that
and when do we negotiate that
and what do we really need?
And then what's actually in the box,
like the solution that we shape,
then there's a whole piece of like,
how much are we actually looking at that
in enough detail in advance
so that it doesn't come as a big surprise
when we're getting to the end of the time
we thought we were gonna spend,
you know, that it turns out to be more complicated
or there were hidden dangers or time bombs
or things blowing up, you know?
So it's kind of like there's both of these aspects
and you can think of the shaping work,
on the one hand, you know,
like we're very focused on,
we wanna, of course,
like the ultimate outcome of the shaping
is we wanna have that really clear picture
of what it is that we're gonna go do
so that solution concept
so that when we start building,
we know we can kind of hit the ground running
and we know what we're doing
and we have good answers for everything.
But a different way of looking at what's happening
in the shaping session
is it's all just about trying to find the right match,
you know?
It's like, it's more like car shopping
than it is like design.
It's like, you know what I mean?
Like we've got all these
and it's more like shopping for an apartment, you know?
Like we've got these like budget,
we've got these requirements
and it's like, ah, maybe we could do this.
That's a little bit, can't quite afford that,
but maybe this,
oh, I don't really wanna make that trade off.
Okay, you know this.
So a little bit more of this kind of horse trading thing.
The, there are, okay,
so that's kind of what I wanna,
what we're gonna get into.
The biggest area
where we often kind of see trouble in the shaping phase
is not enough detail
or way, way, way too much of the wrong surface detail.
And I can see that you guys are already
on a pretty good track in the right direction on this
with the pre-work that you did.
The bad cases that we often see on the extreme ends of the spectrum are like the shaping is way, way, way too fuzzy.
So it's like we need group DMs and here's why we need them.
The project starts tomorrow, right?
And kind of figure it out.
And maybe you guys have been there in the past.
So that's kind of the undershaped version.
And the overshaped version or the version where there's too much of the wrong detail is the super detailed perfect Figma file that doesn't actually answer to the fact that this is built on top of an old template that we inherited and it has architectural issues.
Or there's a use case that there's going to be some really hard tradeoffs around the use case and they might impact our decision about the schema, how we handle that use case.
Those are the kind of things that you don't see in a Figma file, right?
So in order to kind of – and you guys did a pretty good job at what I see in the Notion document is there's already some technical things being sketched out.
There's a sense of how it works today.
There's some idea of how it's going to work in the future.
So what we're going to be doing in order to – the thing that I can't – so here's the sort of starting point, okay?
The thing that I can't immediately see is I can't really see yes, this definitely clicks into a one-week appetite, which is what's written there.
And so what I would like us – I think our kind of goal here is to get to a place where we're looking at the concept of what to go do and we're looking at that time and we're all like clearly that's doable.
You know what I mean?
That's good.
Yeah.
So that's – if you take one thing away from today, like that's what the shaping is about is getting to that point, right?
Because anything that's kind of like yeah, but there is this one unknown, that one thing, man, that's the thing that takes a week by itself, right?
You know what I mean?
And then you're into two weeks, three weeks, four weeks.
And especially for you guys with the kind of length of project that you're talking about, you know, the difference between one and two weeks, I mean, that's a 2X difference.
So you really feel that, right, in these kind of smaller things that you're trying to really nail like that, okay?
So – and the way that we're going to go into this is I'm going to be basically prompting you guys for more detail and more concreteness on the technical side so that we can kind of surface those things.
Macy, one of the takeaways that teams often start to come to when we do these kind of shaping sessions is a reaction of like oh, shaping is way more deeply technical than I kind of expected.
And Bruce and I have talked a little bit about framing versus shaping where framing is more like, you know, what is the definition of like what's going wrong?
Why are we doing this?
What's going to be better?
Why do people care?
All that stuff wrapped around.
And Bruce, when you were describing kind of this – when you were doing the introduction, you know, like Macy, it sounds like that framing piece is actually a little bit like in many ways closer to what you want to know, right, like for marketing.
Like this is – sort of there's a million details, but this is why it matters and this is why you care and this is what we want to highlight when we're explaining it or that kind of a thing.
Does that sound right?
Yeah.
So, okay, so that's just – yeah, so I just wanted to – I wanted to set that out there in the beginning just so that you don't feel that we're on a sidetrack when we basically spend the whole time in the weeds on technical things.
You know what I mean?
This is more what's happening in the shaping room.
We may find ourselves – or we often do, especially on bigger projects, flipping over into the framing side because all of a sudden it's like, well, wait a minute.
Maybe this does deserve more time, but then how do we judge that and what would it mean?
And you know what I mean?
Like would people actually value it?
Would it be worth it?
And then all of a sudden we're having the framing conversation.
So that can happen.
But we're going to – if we do that, I mean I'm going to be labeling that very clearly so that we notice that and we see those as different conversations, okay?
Yeah, that's actually super helpful because we – everything is shaping like right now.
So it's like whether you're doing a mock-up, talking to a client, like we just did a three-hour shaping – we call it a shaping meeting to kick off like this brand new client work project yesterday.
And there was actually no shaping involved, I would say.
It's like framing I think is a better word.
And we've not differentiated between those two steps, so that's actually really helpful because we –
Cause we have the, the client layer, there's this like deep connection of
like kind of understanding the real problem and, oh, yeah, yeah.
Even more so because there's bigger consequences to kind of not being aligned.
Right.
Yeah.
So all that alignment around like, what's the problem?
What's the opportunity?
Why now?
What's it worth?
Like, that's the, that's the framing piece.
And I think it'll, it'll be easier to start to untangle those, the
more technical shaping feels, because then you'll be like, oh, clearly
this is a different conversation versus when shaping is a little bit less
technical and a little bit more about like, what are the outcomes we want
on the product side, you know, they feel very similar.
Yeah.
And, and practical question.
Is this kind of like, like the tactics, do you see this as like, is one
document for the framing and another, or is it version 0.1 is the, the framing
and then it kind of gets big, it grows once we shape it like the same document.
So this is something, um, uh, that we can, um, we can come back to because
there's so many different ways of doing it and it depends a little bit
on, on your structure and, and, and your, your workflow with the client
or with, and, and stuff like that.
But I'll give you a short answer.
So the, the short answer is, um, the, there is a step that shaping
is going to start to feel probably already feels more expensive to
you than it did before doing all this prep, right?
So there's going to be more and more of this feeling of like, we don't want
to actually do all that shaping work unless we're pretty sure that this
is something that matters, right?
So there's, so what you're going to feel is that there's going to be this
kind of natural gate appearing, you know, of like, we ready to kick
this over into the shaping phase.
Right.
And so then what is the thing that you look at when you make that decision?
Right.
That's going to be sort of the, your, the V1 of whatever framing that you did.
Um, I, um, in, in bigger teams or, you know, the framing can become a bigger
thing because if you have to advocate for spending six weeks on something
or 12 weeks on something or whatever, then you might, you might have, you
might have to build up a really big, long, clear case around something.
What I find is that, um, in practice, especially in a smaller org, the framing,
it's more like this running conversation that's happening at the decision-making
level, you know what I mean?
So like you have a few things in your head and you all kind of keep coming
back to like, maybe this, maybe that, Oh, but I'm not sure if that's real yet.
Let's do a little bit more digging into that.
Or we need to have another follow-up conversation with the client about that.
You know, it's kind of like this, it's just like, it's, it's basically
like the sales process, you know, it's this conversation that keeps going
and getting a little bit clearer and clearer until you're like, ding, we got it.
Like, this is something we're willing to, to, to invest into.
So like Bruce, like our conversations before we, um, had this session
today, that was all framing, you know?
And then it was a little bit of shaping at the last minute of like, okay,
here's option a, B and C that was the shaping side, right?
Like it could look like this, it could look like that.
Right.
But the framing piece was like, this is what we're trying to solve.
This is what's going wrong.
This is why now this is the budget range, you know, that kind of a thing.
That's good.
And we have, I'm even just thinking on a practical note, like our
statuses of new things coming in.
Um, it's just like, we have inbox, like, Hey, this thing got brought up in a
meeting, we're just going to stick it on this inbox, it's not backlog.
It's called just, it doesn't mean we're doing it.
It just means we've noted it.
Um, and then what I'm thinking we may, and then we go, right.
The next step is shaping.
So I remember there's like a step, like a framing step where like, Hey,
they mentioned this thing.
It needs to be framed.
Let's do another call.
Let's figure this out.
Let's like work this little thing out.
And then I think, cause I'm almost seeing like us then taking the
framing list to the clients.
I mean, okay.
We think it's these three things, you know, whatever, like now we shape it.
Then we, then we, you know, move to get it.
Exactly.
Building.
So exactly.
Yeah.
The framing piece is like the weighing of like, it's, it's, it's what people
call prioritizing actually, you know, it's the weighing of this versus that,
you know, like, is this real?
Is it more real than the other thing?
Is it more timely than the other thing?
According to what else is going on?
Is this going to feel like a bigger win than the other thing?
You know what I mean?
All those things.
So, yeah, that, that I, and I like your, I like the way that you put that
to that, there's like, there's the raw thing that comes in and then it's like,
okay, if we're going to invest our dear time into this, then there's a framing
step that has to happen to justify the investment.
And if it's somehow just not even the right time, then maybe you can sit
around and we can build that case later, you know, perfect.
That's helpful.
Awesome.
Okay, good.
Um, uh, let's see.
Bruce shared a file in the, yeah, right.
These are the statuses.
Exactly.
Yeah.
So you think of this more like two, two kind of loops.
There's a preliminary framing loop of, are we going to invest in this or not?
And then if yes, then we get to a point of, this is the time box that's coming up and
this is what we're shaping for.
So we're shaping now because group DMs is something that you decided was important,
and it won out over the other things.
We even had that in the email exchange leading up to this.
You sent me the Notion doc with the five things, and I said, OK, if we're actually going to
shape something, what's the thing that's most important, and you identified DMs.
So that was kind of like a little bit of further framing here.
Good.
OK.
And this one has a little bit of front end and a little back end.
The other evergreen one is, we could talk about it a little bit, but it's Zapier and
automations and back end API stuff.
So we still definitely could dig into it, but if there's time.
But yeah, I think this one's a little bit more of a better example of a new feature
that is actually customer facing, that more users are going to use.
Yeah.
But I will say for the evergreen thing, it's fine if we don't cover it, but when you were
talking about we go deep in the technical, I felt like there was a piece of that project
that was a bit of an unknown, that we left the decision as part of the project and not
we spent more time in the shaping for that unknown technical thing.
Yeah, that's good.
So let's start with DM and let's keep in mind, we're going to feel out how quickly we sort
of hit the bottom of it.
And if we kind of hit the bottom of it quickly and we can get to that point of like, yes,
this matches the time, let's move on, then we can switch to evergreen.
Or we can talk about which one you guys want to take, that could be an option.
The other thing is that based on what we do, what I would like is for you to have some
ideas of, okay, if we were to run a session, like let's say for evergreen, like the session
we just had, let's see if we can kind of repeat what we saw in that session, right?
And then try to do that.
That could be kind of a cool, kind of like a homework thing also, but we'll see where
we go once we start digging into DMs.
So what I would like to do is just kind of like, I just want to jump straight into the
middle of the work here, okay?
Any other kind of preliminary questions or are you guys ready for that?
No, I think that's good, yeah.
Just poke at it if you want to share your screen or ask or just walk through it or point
things out.
We did invite you to the Notion thing as well if you need to.
Yeah, so I have that up and I reviewed that.
I have, I'm giving you guys access to a Miro board.
I just sent a link and you should be able to join that without any user accounts or
any kind of fuss.
And because I think we might end up needing to look at not only my screen, but one of
your screens in order to start to answer some of these things.
So I'm just going to get us started here.
I'm going to share my screen and I'm going to pull up the Miro.
And the key thing of a shaping session is, so what I'm trying to do is give you not very
much theory and introduction and just, we're just going to dive in and do the work together.
But the one kind of like sort of theory piece of the shaping session is the documents are
good as an artifact of what happened when we need to like easily be able to remember
it or share it with other people.
But I find that like the actual work of shaping happens best on a whiteboard.
And so this is the closest, this is the, I just reached for a whiteboard here with Miro.
And I've got, I've got the, I've got what you did here open and I actually did read
through it.
So I have like some sense of what's here.
And I think if you refresh it one more time, I did in the five minutes before this meeting,
just through like a couple extra, there you go, I think that's your, yes, there you go.
There's just a little V0 mockup and a few other things in there in the sketch, but yeah,
let's go.
Uh-huh.
Good.
Okay.
V0 mockup.
So is this, ah, this is actually opening something.
Yes, this was, this is kind of how we prototype.
We've been leveraging the, of course, AI to do rapid prototypes in the shaping portion.
Because it's one thing I did is I did this and then I realized there's two or three other
bullets that we didn't talk about, some problems to solve.
But, uh, so this was just as we were like thinking out, basically gave it a screenshot
of what it looks like today, plus the new features.
And so it added, um, this little button to
top right where we can basically kick off a new conversation.
Uh-huh, okay. So what I'm going to do in the quickest way possible is give us a little bit
of a common baseline for the session of what is the today version of this, how does chat work today,
and then we can use that to understand what changes or what are cases that we're not
thinking of or whatever. So I just want to give us a little bit of concreteness around what chat
looks like today. When we're doing shaping, I usually have a little bit of a template here.
We are not going to worry about framing until if we come back to it, but the one thing I'm
just going to call out here is that we had one week as the appetite, right? Yeah, one or two
weeks since we are the client in this case. Uh-huh. Well, I would probably imagine that
from the standpoint of the builders, one and two feel very different. Yeah. So let's,
so does that, Bruce, could I interpret that as like two is a max, like three feels like too
much, but two you feel comfortable with? Something like that, yeah. I mean, we're,
because this is our own project and I'm where it's, this is what the bootstrapped product inside
this, we're always trying to be as lean as possible. So if we can get a version of it out,
that's functional, but if we have more time, we do work pretty fast. So Janata and Lucha and I
shaped all of this on Wednesday. So when we're done with this, Janata is going to be the one
building it. So it'll be very, it's very simple. He's got it. We don't have to do a bunch of
knowledge transfer downstream to like someone else. This is like, this is the team that's,
you know, framing, shaping, and building all at the same time. Got it. Okay. Um, so I want to see
if I just understand this, that, that the, um, you have, you have a screenshot of the current version.
Yeah. Right there on the right. Sorry. On the right here. Yeah. So this is one of what it looks
like today. Okay, good. Let me just, let me just drop this in here. Um, so this is what it looks
like today on desktop. And, um, how do I start a new VM today? So there's, I just put two screenshots
above that one. Um, uh, let's see. Yeah. So that's, yeah, they're this one. So there's, you can either
starting conversation isn't easy, so you can only do it in these two ways. You can either click on
someone's profile and then open a chat with that person. Ah, so from profile. Okay. So I'm, I'm just
going to breadboard this real quick. Yep. Um, from, from profile. So you can open somebody's profile
and then from there, there is a, there's, there's other stuff and then there's a, uh, open chat
button. Okay. And profile, I'm just coloring this. This is just a little breadboarding convention.
This is the place we are in the, in the app. And then this is like the stuff that we see when we're
there. Okay. Um, let me just, uh, okay. So, um, and when I, when we hit open chat, where does that take
us here? That basically takes you to the, this, the second screen, uh, which is, yeah, what you've got
on the left there of your, uh, this, uh, it takes us to this thing. Yes. So I'd now be talking to
that, you know, that person now, does this thing have a name? Uh, we call it the, like, it's more
like a, uh, profile pop-up or something. It's kind of like a quick little modal dialogue that just
pops up. Sorry. Does, I mean, I meant, is this, this place. So when I click open chat, this is
just the DM screen, like your chat, your chat screen. Uh, so this is the, you, you, so you call
it the DM screen. Okay. Yeah. It has an official name. Oh, user. Yeah. User profile doll there.
Janata's got the official. Um, what's the thing? We just call it a DM. I don't think there's a,
yeah, I like, I like, I, I like to err on the side of what you actually call it, you know,
so that way we know what we're, what we're referring to. Um, and then, um, in the DM screen,
um, I'm not, I'm not just on the DM screen, but like, there's some like state, like, like the,
the, the person that I'm talking to is somehow like, am I like navigated to them in the DM screen?
Yeah. So we would start a new chat. Yeah, exactly. Um, if I wanted to talk to Chris, uh, if I tapped
open chat on Chris's profile, um, I would be now in this, this view, right? You see here.
And when I'm on the D when I'm on the chat or the DM screen, I'm always looking at a person. There's
no such thing as looking at the screen and not having a person selected. Correct.
It's kind of like one by default.
It's very similar to iMessage on Mac.
Like when you open iMessage, it's
your last person you talk to is there.
So then we have a kind of a, what do you call this?
Like there's a sort of navigation.
There's like a list of conversations.
Yeah, conversations is good.
Yeah, I think it's called, I think
we call it conversations there, the top 12 conversation.
And this person is like selected or kind of current or?
Yeah, that's who you have open, yeah.
Now, this is worth mentioning because you're
kind of putting different parts.
But of course, on mobile, you just see the left side.
So you just see your list.
So these kind of break into two views, right?
So like I click, I would see a list of just people.
And then I would click Chris.
And then my next screen would be just the chat.
I'm not seeing a sidebar on my phone.
That's good.
So these are actually kind of like different places.
There's the chat.
And there's the conversation list.
Yeah, sure.
And then it happens to be that on desktop,
these are the same actually, right?
So like on desktop, we have like the DM screen,
which has the conversation list.
And then we have the current chat.
OK, and then there was one other way
that we got to a new chat, which was from this
is just from searching inside the conversations list.
Right.
Yeah, it's the top.
I think there's a search box at the top of that screen.
Got it.
Yeah, that's the search box here.
Got it.
OK, good.
OK, fine.
And so that also means from the conversation list,
so I'm just on the conversation list, there is a search field.
And if I actually search for somebody,
this is actually going to kind of like take me here.
And it's going to update.
It's going to filter this, right?
It's going to kind of filter this.
Actually, I'm just going to do this.
I'm just going to say filter.
The reason I'm calling this out is because I don't know
is if this feature is going to behave differently,
if it's going to need to get consideration.
I don't know if it's in the current scope or not.
You know what I mean?
So when we look at group DMs, we want
to be able to look through all of this and say,
are all of these things accounted for or not?
OK, good.
OK, simple enough.
So we come back here to what you have.
So the idea is that you're going to have a new affordance to,
you're going to be able to, you're
going to have a new way to start a conversation.
So where does this appear?
This appears, this is what you meant to show here?
Yeah, and let me grab my pen.
So like right here, if you would tap,
I looked at like for design reference.
So this is something new.
OK, good.
Yeah, so this would be basically I added as a new.
So the search, so I think we kind of try to do two things.
This is sort of like built badly the first time,
and the people who built this aren't here,
so we can call it what it is.
But we kind of use a template initially.
So this search feature was kind of hacked a little bit.
Like search to me is like search what's below.
Like I have these 12 conversations,
I want to search the 12 conversations.
What it turned into, for whatever reason,
is it searches every user in the entire database
to start a new conversation, which is not intuitive at all.
Aha, OK.
So it's kind of, so that's where I thought really
the preferred way would be.
And I looked at, if you look at the Notion doc,
I looked at below, you could see there's
Slack as a design reference, and then also iMessage right there.
So in Slack, you would hit a new message,
and then I would select like two or three people,
and then start chatting with those people.
And then the same thing would happen here on iMessage.
I could choose three people.
So this kind of mirrors that a little bit
by hitting the new, kind of lets you start a new conversation.
And that way, I can start it with one person,
but now I can also, of course, start with multiple people.
I see.
And is it?
But it doesn't replace search.
So is search different because it's for filtering things
that you already have?
Or?
I think the, yeah, I didn't write this down
and this is a good catch, but yes, I
think search should be changed to just filter,
to be a true filter.
Search should be changed to be a true filter.
Good, OK.
So we're already starting to expose some stuff here.
And what I'm doing here is, OK, we're
going to have a little game on and game off here,
like when you're playing in the street as a kid.
OK, so game off.
What I've been doing up until this point,
it might seem boring that I'm documenting
what you already have.
But what happened was, by looking
at the difference between what's already there
and what you think you want to be doing,
we're surfacing additional scope or additional requirements.
And these things normally only come up much later, right?
So that's why I have, we're looking at how it works today
and we're kind of documenting that.
And we just bumped into already something,
which is a piece of what you want the new scope to be,
that we brought that to the surface.
So what I'm doing just to capture that,
I have, there's a million ways to do this.
But what I'm just going to do right now is I'm just
going to have, this is like version A of the new scope
of what we're going to do.
So this is new stuff, OK?
So this is like, if these are alternate Git branches,
this is like main.
And now this is like new DM branch A, OK?
And I'm just going to stick this sticky in here
and I'm going to call it like, I'm just making a,
I'm not even breadboarding or designing anything.
I'm just going to say like, search becomes filter.
I want to capture that.
I don't know what to do with it yet
and I don't want to like sidetrack us with it yet,
but I want to capture that because that's part of this.
And then we can come back and decide if that's
really important or not if it starts to expand
the timeline of things, right?
So search today, does it do more, is it already a filter?
Is it just a question of renaming it?
Is it just a question of putting the word filter on it
instead of search?
Or does it actually behave differently today?
It's actually is searching, doing a proper query
and searching the entire database today,
which it should, it feels confusing, maybe.
What is it doing?
It's searching for users, not for conversations,
which is what's being shown on the list, which
is an important solution.
OK.
That's a good summary, yeah.
Is that fine?
I understand it's kind of a little bit gross,
but like, is it fine?
It's not.
I mean, users didn't complain, I believe.
I don't know.
I think, yeah, it's a good point because we can always
make things more clear and better.
I think, OK, maybe again, thinking
through our process here, some back story
is like so much of our app in the beginning
when we had never built our own app before.
So it was pure function over form.
And so our CMS is literally like a mirror image of what's
happening in the database.
We have content table in the database.
There's a content page.
It's very engineered.
There was no design thoughtfulness
through the process.
So we're just sensitive to things
that feel hacky that we may understand or we could use,
but is not intuitive if my mom is using this app, for example.
So just maybe that would work.
And most, for context, almost all of our end users
are coming from Facebook, for example.
As long as it feels familiar to them, that would be helpful.
And so maybe belaboring the point, that's kind of, yeah,
it definitely doesn't have to stay.
If it's one of those things where we're
trying to hammer the scope down into one week,
then that may be the thing that we just leave.
So this raises a question for me,
which is that if in the current version,
so I'm marking an issue in the current version,
it's querying users and not conversations,
then what I'm fast forwarding in my mind
right now to if DMs are in the conversation list,
if group DMs, sorry, if group DMs go into the conversation
list because they are considered a conversation in the model,
and now I have a group DM somewhere,
but I don't see it because it's below the fold,
and now I start typing, it's not going to show up because.
Cause it's, it's, it's, it's, it's querying something else.
Right.
So, so, so, so, so, so now it starts to feel a little bit more like it might
be an experience issue for group DMS.
Okay.
That, that was a good way to back into that.
Uh, that's smart.
Yeah.
Because yeah, if you search, uh, if you search on your phone and you, you
have like renamed a conversation, like a family group chat or chat or something,
Assuming I'm searching the list that's below.
Right.
And like I said, if we're now querying users, this group, the M doesn't exist
because there's no user with that name.
So that's, yeah.
So this, I would qualify this as our first time bomb that we've caught here.
This is something that would actually manifest as an experience issue
that we would care about.
It sounds like, um, it's not just a refactoring of like, oh, it would be
better if we implemented that in a different way.
Um, so, um, when I go down here to search becomes filter, it's like, okay,
it's, it's not a question of renaming the placeholder label on a field.
Um, it kind of sounds like search in conversation list.
So I'm actually going to do this.
We're to the point where I can just grab something.
So, um, we have this thing called conversation list, which
is going to continue to exist.
Um, but we're in, we're in alternate future A here.
Okay.
And let's say that this, this should query conversations, not users.
And this is actually about filtering the list, right?
So, um, then if that was the case that would be solved, um, we have a tool, um,
that I would usually reach for in this case, and I'm just going to do it.
I don't want to waste your time by teaching you a million tools when we're,
when we're, I'd rather just demo the things.
And if something seems useful to you, you keep it.
Um, but I want to have this in my mind.
Cause I think what happened here was we actually caught a requirement.
Um, so what I'm going to do here is, um, this is a little thing called
fit check that lets us figure out if we're done or not.
Okay.
And what we're going to do is we're going to have alternate versions,
A, B, and C, who knows how many we're going to have.
And we're going to have some requirements that are appearing.
And we can negotiate these requirements.
They don't all have to be things that we are say are in the scope,
but we don't want to forget them.
So what I'm adding a requirement here is, um, uh, um, uh, conversation
list filters, um, shows group DMS when filtering.
Yeah.
And then for any one of these options, A, B, or C that we shape, we
could say yes or no, or, or yes.
And this is, this gives us a way to do a quick little rundown at any
point to see like, are we covering all of our bases?
Yeah.
Jonathan.
I believe that one important question regarding these changes, are we
filtering for like which properties of the conversation model, because
we can filter by user, by message, or even by dates, like, so I believe
this is an important distinction for us to make because this will
impact complexity of the feature.
Great example, great example of a, of a question surfacing about scope.
And so Bruce, do I understand, right?
You're, you're kind of representing the person who understands like the, the
value and the purpose and everything here.
So what would you, what would you say to that?
Yeah.
I mean, I think so, uh, knowing, cause we have a, I think we have a conver-
we, we, so when we dug into this and, um, uh, like we've obviously
uncovered a lot, even on Wednesday of how there's even old, like collections
and all kinds of stuff where this was prototyped, or we've, we finally
figured out what it was, and I think it is, is, are you referring to the
conversations, um, collection, Jonathan?
Is that what you're saying?
Yeah, exactly.
Because, uh, for instance, when you search, are you going to search just
by the users in that conversations?
Or are you going to also search by the content of that conversation?
Because it would be another model, which would be the message, which is a
sub collection from the conversations.
Yes.
That's, that's good.
And so there is a, the way, and I think what it is is we named it conversation
lists in the, on the, uh, there.
And, and I think that's exactly what it is.
It's just a list of conversations, but there are different properties.
Um, there's an array of who are all the users in this conversation.
There's a times date stamp of when was the last message sent?
Like who read what?
Like, I don't know what, I think.
There's what your point is, there's a few different, um, scopes there.
So like, I would say, yes, it is going to filter.
I would love to search for as much as we can, um, either the user.
So if I searched potentially for like, you know, uh, Chris, I would see like,
I'm in a conversation with Christian and Lucian, but also I am having DM with
just me and Chris, like both of those should come up essentially is how I would
see that.
Let me see if I understood that.
Um, I heard kind of like, there's a bunch of stuff in addition to just the
names of the users who are in the conversation that we could be filtering
by or searching.
And, um, Bruce, did I hear you say it basically?
Um, what, what you, what matters here is searching through the names of the
users and that's, that's what, that's, what's important here and not the other
things.
Correct.
Yeah.
And if you go to the, um, notion board there, this will give you a quick, I
think if I go back to the notion, okay.
Yeah.
And then if you go to the problem, I put like just a context, uh, there.
So if you guys go down a bit, um, where's his current structure, you
could look at database schema.
There's a, what he's referring to is this conversations part of the top
that stores metadata.
So there's users messages, you know, is the user typing, is it active?
When was the last message sent?
Got it.
So we're searching users in the conversations.
This is the, this is got it.
So, so what I want to try to do is, um, by the way, if I, if I, if I, if I'm
pushing you too fast, just push back.
I, I just, I just want to respect the, our time limit, you know, um, um, what
that makes me want to do is add, add concreteness, add detail here.
So that's not ambiguous, you know?
So I want to get rid of this question.
I want to say queries, users array in the conversations, uh, table.
Yeah.
It's a collection, but yes, good.
Okay.
Yeah.
I'm moving out collections, but that's how it is that how it, that's how it is now.
So we'll, we'll, we'll, we'll say it like that.
Um, is this unambiguous?
Okay.
Um, uh, Bruce, I heard you say, um, if I rename it as family chat, uh, I would
expect to be able to search for that.
That would imply that conversations have names and I don't see that.
Um, it's in here.
If you hit the plus, sorry, in the little mock-up, um, on the V zero
if you hit that plus that was right there.
Um, so here, let's say I added Bruce and Jennifer Bruce.
Um, then it's, it just says start, but if you add more than one, now you
can actually create a name for it.
Uh, this is kind of a new concept, just a new field.
Um, and this is what's helpful about this prototype is like, I didn't have that idea,
but then once I saw it, uh, you know, then, then I realized the, our, the context
again, to go back to the problem or the frame of this and what the users want
is they have coaching cohorts, um, where coach one is working with, uh, you know,
these seven students, and so they're probably not going to want to call the
chat, you know, Bruce, Christian, not illusion, Macy, Brian, like all in a row.
It's probably going to need to be called like something.
There's probably gonna have a name as I'm assuming associated with it.
Very good.
So what I'm doing is for the first thing I'm doing, uh, so part of what I'm doing
here is I'm, I'm using, I'm using the tool of the, these little sort of shaping
tools in the canvas to externalize the things that are happening in my head.
Um, uh, and, uh, um, so this, this is part of playing the shaping game is,
um, what I've noticed is that like, if we.
There's, there's a lot of gold coming up in this conversation right now.
And, um, if we're, if we're only talking, it kind of disappears and it doesn't all
add up to, to, to, to a clear answer of what we landed on later.
And, um, so I'm playing this game of like, anytime we talk about anything
that, that matters that we don't disregard, it goes somewhere on the
board so that we can make meaning out of it or that we can like work with it.
So it's kind of like, if it doesn't go on the board, it didn't
happen or it doesn't count.
Okay.
And it's not because I'm trying to document everything, but
that is a good side effect.
It's actually that I'm, I want to make sure that, that we can keep
running the session and we can keep coming back to things and pointing
to things and his session is going to feel like it keeps moving really
fast because we always are just quickly just pointing to something
and not like describing what we talked about 15 minutes ago, you know?
So, okay.
So that's, that was another little game off moment.
So game on again, I'm adding a requirement here that I heard.
Which is, um, so I'm on the problem definition side, you know, not the exact
solution.
inside, but we, even though we have a nice solution
in your V0, I'm just noting this.
It's like seven names in a group DM for a coach.
Like, it's like, that's bad, yeah?
Like, it feels like it's not just like a little nice
to have that we rename, it's kind of like,
it seems like it's actually gonna,
like, is it true, Bruce?
That it like, it would kind of suck, right?
Like if I had to like visually filter through all that.
For sure, okay, good.
So, and I'm not even gonna, I'm just,
for me, I'm happy just to capture this.
So I'm not trying to honor any formalities.
If we had better software, then I could just,
it could self-populate.
But so what I wanna do now is I wanna capture that.
So the V0 was a really good, Jonathan.
In this case of adding a group name,
wouldn't be useful to also be able to clarify
this group name in the search?
Exactly, yeah, yeah, exactly.
That's exactly how we got here.
And this is, we're totally in this still, exactly.
So what I'm cap, thanks.
You're totally with where I'm trying to go.
I mean, there is this idea, we are in A, okay?
Not in the current way.
There's this idea for a new message screen
that doesn't exist today.
There's gonna be some kind of a,
you know, we currently have search.
There's some other stuff like archive.
There's the list of names.
There's other stuff in the conversation list, right?
But there's this idea here of new message.
This is like the new button that you added, right?
And when we go to new message, ding, ding, ding.
When we go to new message,
I mean, the version, I think the version, Bruce,
that you sketched actually had multiple states in it, right?
There was first a, I don't know what to call this UI.
So that was actually more of a search,
the way that it, the search used to work.
So you could, and maybe we should just-
Yeah, so there's a component that you sketched,
which was a kind of like a,
I don't know what to call this thing.
It's like an autocomplete that you populate
with like removable things inside of it.
It's like, you know, we used to see it in the old days,
like as a-
Chips, like a chip.
The chips.
Yeah, yeah.
Yeah, so it's like a,
I mean, this is a component, right?
So I don't know if there's a better name for it,
you know, let's have it, but I don't know.
There's an autocomplete with chips
and like on change, this thing,
and then there is a, well, we know how that works, right?
And this is searching through individual users, right?
And I can actually just, I'm just gonna,
so the convention I'm using here is,
these are all things that you see in the UI
and these are things that happen
through interaction on the backend, you know?
And I'm just gonna say that this queries users
just so we understand clearly like what this is, right?
And then how did we get to the point?
There wasn't a group name at first here, right?
Like how did we get to seeing a group name?
Yeah, I was experimenting with this,
but potentially like when you search for one,
like I just type Brian, it would just say start message,
you know, it's kind of simple.
But if I added three people,
there would be like an optional group name
that could be added.
I also don't think it should be required
because I don't, you know, I think people typically start
with like, here's a list of seven names.
Maybe they wanna rename it,
because that's like another flow of like,
how do you rename an existing chat?
We'll get there.
Yeah, so I had it like logic,
like if someone added a second person.
By the way, I'm capturing that.
Yeah, okay.
And I'm putting question mark on it.
Yeah, great.
Okay, sorry.
That's great, yeah.
So just basically the logic would be like,
once you had the first person, if you had a second,
then it would give you the option to enter a name as well
for that conversation.
Okay.
So,
I'm just gonna draw this out
because we're in version A
and we can have as many alternate versions as we want.
I'm going to draw what you built, what you prototyped in VO. If we want to have a new
message with less than three people, I autocomplete with chips, I query up to
two people, and then I have a create action, I think, more or less. Create group.
Selected members, add more members. I'm not going to worry too much about the exact
about spelling all that out because I'm just kind of trying to focus on the key thing here.
This is real, right? So if I actually start from the beginning...
It's just a front end, but yes, it will actually like...
Right, but if I do two, it's the second one when I see it.
Yeah.
Ah, that makes sense. Got it. Okay. So let's say it defaults to new one-to-one DM.
Yep.
If...
When I'm...
Oh, that's interesting. Yeah, okay. So there's a list of added people.
There's a create group option.
There's actually an additional thing happening here. There's a kind of a...
We can call it like an on-change event.
I'm just going to...
Again, I'm not worried about making everything pretty here. I'm just
hacking it together so we can just understand what it does.
There's this kind of like an on-change, it's not even the right event name,
but it's just to get us started, add-to-list, right?
Like, if I actually add somebody here, then I can do that, right?
We don't need to expand this, I think, because it's clear enough from just looking at the prototype.
But what I now can do here is say that there's a...
What I'm doing is I'm actually showing some complexity here, okay?
Which is that like, if there's another on-change somehow happening here under the hood,
which is like, if we have more than one now, right, then we have to like...
We have to like change this state so that we're now in the group DMs, right?
So that we're now in the group DM screen and we're not in the individual DM screen anymore, right?
So now when I'm in the group DM screen, I have named the group as an affordance.
I have...
And then I have the same stuff as what we had before, right?
I'm going to pause, and Bruce, I want to understand what's on your face.
That's great.
This is good.
I just made a comment.
I was like, I thought, you know, I was like, like I said, we don't know if we're at like 70%, 80%.
I was like, the more you talk, it's gone to 50%, 40%, 30% shape.
I was like, seeing it in action.
This is great to see how you like took that, you know, what I spent all of three minutes on with V0.
And now we've like extrapolated that to see really the pieces of all of that, that it makes up.
Yeah.
I mean, obviously you want to be as intentional as possible and kind of understand each of these
different pieces.
So this is great.
Yeah.
So why is it great?
Why isn't it not just me wasting everybody's time by spelling out something that you already
prototyped?
I mean, we already saw it in the prototype.
So what's the value in doing it like this?
I think because these were sort of decisions made, you know, quickly by AI, let's say, with
not much thought, but I think that is, this is one way to do it.
There's probably a hundred ways to do this, you know, similar things.
Is this the best way?
Like, and then not only best way, but is this the most efficient way based on like, like
we're kind of checking things like between John, like I was just like, okay, we have a
conversations array.
So like, I'm kind of thinking through the technical side of this, like, okay, we're
talking about maybe adding one field to have this like name a group feature, which I, you
know, we've kind of listed as a requirement, which I think was necessary.
Like it would make for a better user experience.
Yes.
But I'm also kind of, as we're going through it in this detail, I'm kind of thinking through
tech tech wise, like what, what has to happen to facilitate that?
It's not a whole overhaul of our, you know, database structure to pull this off, which
is right.
So this feels, it feels maybe I'd love to not and Lucien to weigh in as well since this.
They're very close to the tech.
But yeah, that's, I think, so this is sort of like,
what you've done is mapped out what we had sketched out there.
Now we just need to decide, like,
is this the most efficient way?
What could we cut out and simplify if we need to?
I think this is a good moment to come back
to what Jonathan was saying about,
doesn't this suggest that we're searching
for more than just users now?
Are we also searching for group names here, right?
So that would also be, is that right?
That we would need to be, if we want
to be concrete about what's happening here,
there's more happening than just querying users now, yeah?
Yeah, the user array and group names, potentially.
And what I want to do here, this is another little tactic.
I'm totally with you on the potentially asterisk on that.
Because it's kind of like, we're not all
saying this is what we're going to do,
but here it is on the screen in front of us, right?
And here's where I want to flex a little bit
the value of the A, OK?
So there is the B version of all of this.
So by the way, I don't know what happened,
why all my boxes are much too giant.
But we'll take a short just housekeeping moment.
Yeah, and I'd love to hear, Leighton,
what do you guys think of this so far?
Well, so far I'm realizing we almost never do breadboarding.
And I see the value of where are all the places this
could come from, especially when we do database or API work.
Because I always have a doubt of,
do we have a custom tribe front end app,
like we have Brilliant, that would be affected
by changing this API?
There's a bunch of more research potentially to do.
And I like the idea of A, B. So I'm
wondering, does it make sense for you, Ryan,
to use v0 as the version A, version B, what it could be?
Or it makes more sense to do it in a whiteboard,
or it doesn't matter, in your opinion?
Oh, that's an interesting question.
So the way that I understand what the v0 is
and how it fits into all this is v0
is the equivalent of a Figma file.
It's not the equivalent.
It's in the similar category.
It's when you're trying to come up with an idea,
and you kind of can't really see it,
and then you need to prototype or mock something in order
to really get a feel for it to understand
if it's what you want.
So what I would actually call this,
I would actually, in the language
of shaping in real life, we call this a spike.
Now, it's a little funny because we
had to reverse engineer the breadboard in order to get,
and we got some complexity out of it.
What was really here, Bruce, tell me if I have this wrong,
but what I think is Bruce had it in mind of like,
I think we need to have a new message thing,
and we need to have a name group option, right?
Like, if we look into the prompt to v0,
it's something like that, right?
And the prompt to v0 is kind of like the A here.
What v0 made is the spike.
It's the work of prototyping it to kind of get more clear
around what does it actually mean
and what could it look like.
It's like, you know what I mean?
It's like that extra work of doing the mock.
But what we're going to find is that we could mix and match.
There might be something we really like about what
v0 is showing here.
So for example, v0 implemented searching and the list of,
like, it implemented this in a very specific way.
I'm not sure if you would choose exactly.
I'm not sure.
I think Chris is unmuted.
Uh-huh.
I'm not sure if this is the exact way that you would
choose to do this, you know?
Because there's different fine detailed UI ways
of selecting the people, right?
And then, like, choosing to show the group name after you
select the second person, this is also like a choice kind
of that, like, v0 kind of sort of made.
What I'm trying to say is that, like, we could mix.
and match pieces of this into a new A and B.
And this is what breadboarding kind of helps us do
in a really fast way.
So like, let's say, let's say there was a version of B.
Now here, I'm putting on the designer hat for a second
and I'm gonna, this is just for illustration purposes.
I want you guys to run the show here.
There's a version of this where we have a new,
we don't have a separate new one-on-one
and a new group DM screen.
That's what I named these two different states
of what Veo created.
We could have what is simply one new message screen.
We get rid of all this stuff
except for the name the group field.
Name the group field.
We call name this conversation optional
and we allow it for one-on-one conversations.
This is an example of like a very quick sketch
of an option B.
Now you guys might have different opinions about that.
And we could talk about that of like, is that fine?
And it might be that this,
the fact that you're also querying,
so here I would actually, instead of group names,
I would say conversation names.
It could be that there's some other reason
why group names or conversation names leave the scope.
But like here, I'm just talking
my thought process out loud.
When I come back over here
and I think about this requirement,
I find it very hard to remove the naming a conversation
from the scope of this thing.
So Bruce, from the product standpoint,
how are you reacting to that?
Yeah, I think you're right.
And just so I understand this fit check concept,
like we're saying like kind of these A, B, C
are lining up with the A, B, C
we're doing on the side there.
So in A, yes, that would have passed the test
because like, yes, we can name,
but B's version, there's no naming
and there's other downsides for that.
Yeah, and in this case, B is also a yes
even though we reduce the scope, right?
Okay, yeah.
So you see, that's why the fit check is interesting
because here there's more scope here, right?
Here there's less scope,
but if we look at it in terms of fit,
both of us let us do the same things.
You know what I mean?
Makes sense.
And as I understand B, you would,
the flow would be to go,
I searched for one person's name, Chris,
I hit new message.
Now I'm talking to Chris,
then I can add two or three other people
to an existing conversation.
Yeah, so that's something where-
First trying to do it all in one step.
This is something where we could,
so now with a one week time box,
I'm a little bit worried all the time
that I'm going into so much detail with this.
I know you're gonna start to feel like
Ryan's going into way too much detail
for something that's only supposed to take a week.
Do you know what I mean?
So there's a version of this
where we just kind of jump forward
and there's a version of this
where we really kind of spell that out, you know?
And I'm gonna try and fall in the middle of that
with a little fat marker sketch for a second,
because basically what happened, if I'm honest,
is you just said some things
and I can tell that they're meaningful,
but I couldn't track what you were saying
because it was like you were seeing something,
I think, in your head with the flow.
I just don't know what it meant.
I get that a lot from our team.
No, I'm just kidding.
I mean, actually, we all do that to each other constantly
when we're having shaping type conversations, you know?
And so what I'm trying to do when I'm shaping
is I'm insisting on seeing it
because then that's only when we can actually
all look at it together
and be sure that we actually know
what we're saying yes to, you know?
So my instinct here is to draw this and say like,
okay, so, by the way, the more I analyze this,
the more this stresses me out, this UI that Vio created.
At first, it kind of felt like, oh, that's slick, you know?
But the more I look at it, the more I start to,
the UI designer in me starts to freak out.
But can I just, to talk to like the,
this, and we can go as deep as you want.
Like, we totally get that we maybe wouldn't spend
three hours shaping like a one, I totally get that.
But we're baby steps, you know,
right now to learn the mechanics of it.
Um, cause that, you know, we're going to be shaping bigger projects.
So it's good to know when, when we need to go deeper, but it is, it's even funny
because when we showed it and we did the first version, we kind of were okay.
And then when we did the breadboarding, now we're kind of looking at it and
saying, let's do it, let's just for fun, do a version two and up until after
version two, now we're like, that was a pretty terrible first version.
Like, you know, and we all kind of thought it was pretty good the first round.
And now we're like, it's actually not that great, dude.
You know, this is so interesting that you say that because this is exactly
the dynamic that I see with Figma files.
It's the exact same dynamic.
And I actually didn't really, this is my first time, um, seeing this with VO.
Um, so, uh, what I'm realizing is, um, it's the same thing as Figma.
What happens when you look at a Figma is the high fidelity is just seductive
because it all just looks, I mean, like visually it just looks nice, you know?
And it feels good to like click stuff, you know?
So like when you click through a high fidelity prototype, it turns off a
certain part of your brain that is like, wait a minute, is this really a good
experience?
Because it just kind of like, it's so easy to just kind of skip along the
surface of it because the surface is really nice looking, you know?
So it's a, it's a really, really tricky thing.
And that's, that's especially why I like this.
The bread, the breadboarding to me is like the antivirus to the, uh, to the
seduction of the beautiful, of the beautiful surface, you know?
Um, so, because one of the things I'm seeing is that like, I used to see a
group name, but then when I tried it and now it disappeared, you know, um, so, so,
um, yeah, so, so, um, uh, what I, what I, yeah, go ahead.
Talking through like our, our process.
Cause, um, how we would go from here, let's say we like, so you're using a
breadboard tool, how I may go from here would be, okay, now I'm aware of this.
I would write another prompt and have it just spit out something else.
Like, Hey, this is confusing.
Why does the field move?
It doesn't follow good, you know, UX, you know, confusing and then just have it
like spit out a new version real quick.
And then I would look at that, say, but it, you're, it, uh, that's what, it's
basically like moving some things around and fig like that's, it's just a faster
way to do it than spending an hour, you know, figuring all that out.
Um, so, but, but this is, I think more intentional kind of thinking
of like, that's an option.
Is it like, is it the option?
Like, is it, is it the easiest way?
Cause there's, it seems like what you're saying with the shaping is we're trying
to find that sweet spot, which is like, it is extremely simple and
intuitive and it's easy to build.
Like that kind of the, the best of both worlds, like it feels
intuitive and it's simple.
Um, so this is helping to like, look at all the steps that are necessary and
then try to actually think through the right way to do it.
Yeah.
Um, uh, I, I, I think also though your instinct of like, like there are going
to be times when this starts to feel too slow and, and if, if you're like,
look, it's going to be fine, no matter what, there's some version of this
where we always expose the name, the conversation at the right level.
Like there's going to be some version of this that I could prompt VZero to
give me where I would actually feel okay with it, do you know what I mean?
Like, I kind of feel like, I kind of, I kind of feel like you just said that.
And I think it's true also, do you know what I mean?
So that kind of makes me want to pull back and say, let's not worry about the
UI because actually think that there is some version of this that would be more
or less fine, unless, so let's just sort of like feel the room here.
Like, do you sense a risk of any time bombs here?
Or do you kind of feel like, uh, there's a version of this, no matter what we do
when it comes to, you know, auto completing or, or, you know, adding
people and then accumulating the kind of chips, you know, like, like, does
this just kind of feel fine?
And, and it's really just the decision that we need to think
about having conversation names.
That's good.
Yeah.
Jinad as well, love to, cause you're probably the one who's building
most of this after this call.
Yeah, I think it's fine.
I think it's fine.
Um, yeah, pretty autocomplete with chips idea.
I don't think we have a component for that anywhere in the app.
Yeah, probably maybe just, uh, a distinction of, are we showing
like the complete name of everyone?
Just the first and last name, because some people, some users.
I believe don't have display email set.
So they have their emails as like their display names.
So for some clients, I believe like Rainmakers,
a bunch of their users have their emails
are set are their display names.
So in this search, when you are adding a new user,
you would have to search for the email,
but then everyone else would be searching for the display name.
So that would create some conflict
because of how the data is structured on the back end
as right now.
So maybe, yeah, just thinking about like problems
like very big emails, like making tags
may be complicated to implement because they would be
like on a gallery view.
Here is something.
So by the way, those are all really,
that's exactly the kind of thing I was hoping to surface here.
There's like a kind of a bunch of questions here, right?
Like, oh, we don't always have names.
Sometimes it's email addresses.
If this was a six week project, Bruce, I would be saying,
let's just trust the team to figure this out
when they're on the spot.
Do you know what I mean?
The thing though, is that at the appetite
of a week or two weeks,
that kind of prototyping and designing
and playing around and designing,
I kind of feel like it leads to having a conversation
like this anyway.
Do you know what I mean?
It kind of feels like it should be,
if it's really gonna be something that's like two weeks,
it's like we should have a clearer sense
of like how we're gonna handle this upfront, I would think.
So what I'm erring on the side of right now is like,
is there kind of a straightforward answer to this
of what this thing could be using the components
that you guys already have and already know?
Because we also just identified that like this,
if I heard right, this like isn't exactly
like a preexisting component that you have.
I would bring that in the JavaScript app,
we have like a component like that,
we call it the multi-select, like searchable multi-select.
But it's like a different code,
it would need like porting to like Flutter,
but I would offer that as a candidate.
It would need porting to Flutter.
There are like small issues that like,
it would need some work,
like it requires like preloading the whole set of options.
It's not like, you can't like query the first page.
And so there are like little options,
but that could be a good candidate.
How many users are we talking about here?
When you, what is the range of values here
in terms of number of people being searched?
Is it thousands on the?
Thousands.
Yeah, and I think the way,
so we do have a working version of search
that when you click on that search,
remember it's gonna kind of go right back
to the beginning of our conversation.
We thought about-
We have user search already.
Yes, so when you type that in there,
you actually start to type it.
It does run a query.
Yes.
And then from there, it says like,
so if I typed L U,
then it would kind of bring up the 17 test users of Luchan.
Got it.
I essentially could pick one of those
and then that would,
but what it does is it's on click,
it just fires the new DM,
which I think you had that in,
breadboarded in your first version somewhere.
When we looked at the current version.
Yeah, current version, exactly.
So you would,
this search queries the users
there on that conversion list.
Yes, here, yes.
And so that is technically working.
I think what we're talking about is like,
instead of the action going and starting a new DM,
because essentially once I search
and there's sort of another action here,
where I click on a user,
then it just goes straight to the chat for that user.
The action would be to add them to a list.
So I would choose Luchan,
he goes add to the list,
but then I could either search for someone else and add him
or just start chatting right away.
We just, we skipped a step here.
And like, as soon as you click on their name,
it just assumes you want to start a chat
with that one person.
And then you're in.
So I'm going to try and retell what I think I heard,
which is Bruce,
you were saying that in the current,
you currently have something,
you currently have something that exists
in the existing system
for searching in the conversation list that queries users.
And then the part where I lost you,
as you said, like when you click,
when you get the results and you click on a user,
then there's an action to create a conversation
with that person, is that right?
Correct.
Yeah.
I can show it to you if you'd like to see it.
If we do just a little game, uh, not game off moment, but you know, when you
say like, we're pointing to the thing, uh, you know, that screenshot that we
got of the, like the desktop current, like what this one there, so that's
the like search input box there.
Yes.
Like we just grabbed the thing and pull it into like the create message and we
just changed like the on click user, uh, like function so that that would be
like just reusing that, changing one, one small piece.
Got it.
Okay.
Let's, let's try, um, our let's, so let's say we're still working on, on, um, B
here, I'm going to delete this C that I started, let's say we're still working
on B and we're just trying to really like simplify this down to something
with components we understand.
Um, instead of just describing what was in the VO, um, what I heard was, um,
um, um, search same component as conversation list.
Yep.
Um, uh, then there's, there's a, there's an on click.
Okay.
Actually, I'm going to follow my breadboarding rules.
Sorry.
Um, which is that things only point to places.
I'm just going to say, um, um, add on, on, on click, um, add to, um, uh, uh,
what do you call it?
Uh, added people.
We didn't have language for that.
I don't think.
Yeah, there isn't language for that.
Okay.
That's fine.
Anyway, um, add to S so somehow when I click there was, when I, when I click
on a result, I, I'm just gonna, I'm, I'm, I'm gonna, I'm gonna add this to
the added people, which would mean that the list of added people gets populated
with different, with more people than before.
Yeah.
Um, does this start to feel, um, small and known?
Small and known if we reuse this component that you already have.
That seems easier.
Yeah.
We know, we know it, it works for the most part.
Do you have, do you have any reservations?
I don't know, Janata you're, you're, you're much closer than I am to it.
Yeah.
Um, yeah, my only reservation is that, uh, this is part of, uh, this, uh, search
part was viewed, uh, at least from my understanding as part of the Acme template,
which is a template we bought and we, uh, imported into our project.
And as, and I'm looking at the code now and it's, I mean, it's not
implemented exactly as a component.
It's more like, uh, like very part of the code.
So it would have, we would have to like work with this part of kind of
decoupling from the rest of application and making it, uh, making
it into a reusable component.
Got it.
It's sure it's a lot simpler than building from scratch for sure.
It's, it's a lot simpler than building from scratch.
Okay.
Um, so one, one thing I want to do is I want to, I just want
to really capture what this is.
Um, uh, uh, Janata, what is the name of that?
Like, if I wanted to say like search from this gross old thing,
like, what is that called?
It's the search from Acme component, which is inside Acumen, Acme, Acme,
like the, like the, yeah, like Looney Tunes.
Okay.
Great.
So I'm going to say search from Acme.
Now we really know what that means.
Right.
Cause I want, I want, we want to see this in the concept and be like, either,
like, we want to be like really aware of like what that means that like this
version B version B means we're like adding in conversation names as a model
concept and we're reusing this old thing that we maybe don't feel great about
reusing, but we're not willing to invest in building something new from
scratch right now, trade-off wise.
Does that sound, does that sound like a good idea to you?
Trade-off wise.
Does that sound like an accurate reflection of technical guys?
Is that, does that sound like true?
That's good.
Yep.
Okay.
Um, and you said on click add to, I just curious, like your framework,
you're like on click add to people.
And then you went back to the new, new message.
So this, this is, yeah, this is my way of, um, okay.
What I've found is that, um, if I have a rule for how a breadboard should be
made, it helps me to.
move faster because I don't have to debate with myself all the time about how to invent
a notation for the thing I'm trying to describe.
But this is a personal style thing, you know?
So my personal rule that helps me breadboard is that arrows only point to places.
They never point directly to other affordances.
And that forces things to happen.
So for example, it means that I can't be changing a bunch of state here that makes
affordances appear and disappear by making one affordance point to the other.
It's the reason why I expressed this as two different places, even though it's not two
different places.
And the reason why is it helped us to spell out what the affordances are.
It basically is just like a...
It helps us to make sure that we always unfold all of the different states and we can always
kind of see them.
If you're familiar with React, you can think of this as the React model.
All I can do is change props from these things.
You know what I mean?
So everything is going to re-render from here.
And then if it's going to substantially change all of this, then I want to...
Well, yeah.
Maybe it's not a good comparison.
But that's just kind of...
That's just sort of my rule of thumb that I find helps it to be understandable.
If there's a new message thing, there's a version of new message that is after you added
people essentially.
Yeah.
The thing is that if all those different states live under here, they will become hidden to
us on the breadboard.
There will be hidden things happening if sometimes...
If I try to say name group, like, only if more than two selected, I guess that would
be an alternative here.
We could actually do that.
But that's actually not what happened.
Did you notice that v0, I mean, it was like a whole different...
It was like actually a different even screen layout.
Like it moved things up and down depending on...
I don't know.
I'm not going to try and justify it too much.
I think there's always freedom to choose your notation style.
We can talk about AI being dumb, but when you lay it out like this, which is the way
I would have put it, like just name the group is just part of the new DM screen and it's
just like conditional, then it seems like E are basically the same.
Then it seems like what?
It seems like A and B are basically the same thing.
Yeah.
So this kind of helps to see the complexity, right?
It surfaces it.
You said it better than I could.
That's what I'm trying to say.
This rule somehow, I don't know if I've explained it, somehow forces things to come to the surface.
Yeah.
If I can only point to places.
It's some weird just thing learned through trial and error.
It's a good convention though.
It should just point to places.
Makes sense.
Yeah.
Okay.
So I feel like we got, I feel like we understand this piece of what we've been trying to shape.
I feel like we can move on to see if there's other things besides creating a conversation
and filtering a conversation.
We've talked about searching for group DMs.
We've talked about creating group DMs.
I kind of feel like we can move on from here.
Do you guys also feel like we could keep going?
One question maybe just as, and this may be go through the whole process at the end,
but now, because I'm kind of thinking like, at what point do we sort of, do we need to
capture it yet or update like how we've written it out in Notion?
Or is that kind of like a final step once all the pieces are assembled?
How would you like, because you're saying, okay, how do we move on from this?
Do we come back and capture this or how, like, yeah, what's, what would be like best
practices?
Yeah, that's really good.
So okay.
In the, in the Shape Up by the Book world, the written document has a, has a, has a very
important position, you know?
And so there's this notion of like the pitch or whatever.
And like this, I feel like this is like an evolution, an evolution of that, where there's
like this document for what was shaped, you know?
What I found in practice is that the shaping itself, the real shaping, where we do the
uphill work together until we get to the aha, and we really feel like now we've got it,
that is really more like whiteboard work.
It's, it's, it's that kind of work.
So, because what I find is that if we try to get to the shape,
if we, so we're doing uphill work together.
If we try to do that uphill work, like in the document,
it's too easy to miss things.
And then we ask for feedback and you know what I mean?
Like, I mean, you can see how we're surfacing things
differently by doing it on a whiteboard.
What I find is that, like, there's
going to come a point where we feel like we got it.
Let's say there wasn't really much more to solve than this.
We could say, like, this is what we're going to go do.
OK, boom.
Then the document piece is really,
the language we use in shaping in real life for this
is packaging.
We call it packaging what was shaped,
like packaging for delivery.
And the idea is like, here's the cleaned up version
of whatever you need to know from what we solved
so that we don't have to scratch our heads looking
at a million things.
We don't have to look at all of this and be like, what was it?
Do you know what I mean?
What we want to basically do is like,
let's say we got somewhere.
We want to be able to go like, this is the thing, you know?
And these were the reasons.
Let's say these were the reasons.
And then if you felt like if, let's say,
other people were building who aren't on this call,
then it could make sense to do a little notion doc that
kind of has the frame.
And then the solution piece is kind of like,
here's the breadboard and a little bit of explanation
around it.
Here's some requirements that we found.
This is the reason why this stuff is in the breadboard
because we realized that renaming is important.
And you know what I mean?
We looked at this, and we looked at that,
and reusing the search turned out to be the easiest way
or whatever, you know?
So it comes down to the packaging.
I try not to be very prescriptive
because it depends on like, if you're giving this
to totally different people, then
they need something very, very cleaned up
that they can refer to.
If it's going to be the same people,
and you're going to kick off tomorrow,
this scribbly circle might be enough for you
to just come back and be like, yeah,
that's what we solved together.
Gotcha.
Perfect.
I see teams doing like looms.
They'll do like a video walkthrough of the whiteboard.
And then that kind of becomes the source of truth
for the downstream steps.
I think, yeah, that's good.
We leverage video like that a lot.
I think the trick is, yeah, it's doing it at the,
like, here's the final thing.
Like, not all the iteration, like, in between bits.
It's like, if you have five minutes to get caught up on
this, like, watch this one thing,
and you'll kind of be up to speed.
Yeah, totally.
What I would usually, the summary version
that my sort of default is, we didn't
need to get into framing, so these things are empty.
But what I would usually kind of default to
is I would have whatever the final thing that we got to,
which is like the way.
Like, this is the concept, you know?
If we, sometimes we do, if we actually
have a clear spelling out of the current way,
it's usually really helpful for the people building
to be able to refer to that.
It's almost like you're mapping out the stuff
they're going to touch, you know?
And then what I would do is if there is,
if the appetite hasn't changed, you know what I mean?
What I would do is I would pull that over,
and then I would also pull over, by the way,
here's the list of requirements that we solved for that
were important to us.
You know?
And, well, the framing I would actually also pull over,
but that's something that we haven't looked at together.
So this is like, let's say, the poor man's version,
two-second version of a cleaned up, you know?
And then if there might be, it might be that you feel
that you need a high-fidelity mock-up,
or it might be that you want a wireframe or something,
you know, to further clarify how anything looks here,
or it might be that this is enough to run with.
That's always going to be a different judgment
call, depending on the project and who you're working with
and stuff like that.
That's helpful.
And this would be just looking at, like,
the first way is like, the current way at the top
is just how to start a new chat.
Now the new way is this option we have here.
That's like one scope, you know, or however you want to think
of it, of the project.
How would you then just kind of stack multiple sets
of these, essentially, for this one project?
Or is there just one?
Are we ever complicating it?
So are you talking about how the fact
that you're batching multiple projects together into a cycle?
No.
So.
If you, if you look at the, uh, notion board, like we essentially have like,
um, the first thing is like, Hey, there's the, the first thing is that there's
going to be like, I don't know if you call it an affordance or a scope, but
like, there's, there's starting a new conversation, so there's, this is
what we've done so far now, like we kind of started, maybe this is getting
more into tasks and lists of too much in the weeds, and then because of this,
like, we're also noting that like, we're also going to need updates to push
notifications because it used to be like a one-to-one, like we message each other.
Now we've got to notify everybody on the list.
Um, yes.
So, so yeah.
So the way, the way that we usually deal with that is, um, um, uh, okay.
My, my oversimplification to that helps me is, um, is a shape is one thing.
And then when we kick off the shape work and we, and we, and it's time to build,
then we need to have less than the real number is nine or less scopes.
So this is my like dumb caveman simplicity.
Like the shape thing is one thing.
And then when we're building and we've got like order of magnitude,
10 maximum scopes, that's for anything up to a six week project.
So, because the thing is that like, um, the, it's the, you have push
notifications in your head, uh, as like a separate piece of this.
Um, but really we don't know yet how all these pieces touch each other.
And, and maybe there's some database schema thing that is involved in multiple
of these, what feel to be different scopes.
It's kind of hard to know that at the shaping stage and it kind of doesn't matter yet.
Okay.
The, the division into scopes, it's kind of like, we need to get
the animal to stand on four legs.
But then the, the, the, the, the, sorry, this is like the, the, the, the very
unvegetarian friendly example, but like the, the implementation is when the
butchering happens, you know, of, of like, these are the main dotted lines
that we're going to cut this thing into.
Yeah.
Um, so what I would be thinking about is like, um, as a whole, because the
thing is, there's a reason why you're building group DMS right now.
And we haven't gone into framing, um, because for this, that we're just
diving into a shaping session today.
But there is a reason that in the framing of why you want group DMS, and there's a
reason why push notifications like belong in that, because somehow like the whole
thing, like, isn't complete without it.
Right.
So, um, so what I would be thinking about doing here, let's go back now to, let's
just say that B is where we're happy.
I'm just going to throw in here, like, there's gotta be a, there's gotta be a
push notification or what is it?
Is it new message?
Is it like for, for a message that was sent?
Um, yeah, and that was my next question was basically, we're basically just
going to keep linking these, like, so, you know, exactly for all the pieces.
It's not a separate board.
No.
So like below, exactly.
Because the thing is this, this thing is the thing that has to fit inside the
appetite.
So we want to look at the whole animal and say, like, if the appetite is five
kilos and the, and the, and the animal weighs 10 kilos, like, what are we going
to do?
You know?
Yeah.
And so that would be to me when you create the group is how we had thought
about it was like, you click, like I add all these people to a group, then you
would get a notification, like, Hey, Bruce has added you and, you know, Ryan
to do this, this call to this message to kind of like alerts people to pull them
back in.
So let's try that.
Let's let's, so this is perfect.
So let's just say, um, um, um, group created push notification.
Um,
and that is one thing where you tap it and people just, it gets you to that
screen essentially to the chat screen, which we don't have at the moment.
Um,
so there's, there's some, um, uh, message, um, there's, there's some, this
has some like content, right.
You know, like, um, uh, yeah.
And, uh, um, and then, and then basically I'm just going to say tap.
Um, and, uh, and then that's going to actually take us to what we don't have
here, but which is the actual chat itself.
Right.
Yeah.
And what we're also, well, let me let you finish this and I'll see how, but
we're already here when you go, uh, to this guy and we, this also takes me to
the chat, by the way, when I create the group, that's exactly what I was going
to do, like, um, it's going to do two things at once.
And I'm assuming you just do it exactly like you just.
there, it's just.
Yeah, I don't mind doing this as a side effect.
We could do like this.
You know what I mean?
Yeah, that's great.
That doesn't bother me.
So yeah, so this, I mean, for me,
this is like when I start to see it all in one circuit board,
you know, that's where I really kind of feel like,
oh, I'm getting my arms around it, you know?
And then also this is where we start to look at this
contra the appetite that we thought we had.
And we can also start to see,
we might feel that we're well within it,
or we might feel like,
oh, we're gonna have to have a negotiation around like,
is as this gets bigger,
do we still feel it's worth it or not?
Or do we wanna cut things or whatever, you know?
I have, by the way, an answer to
what it looks like at kickoff
to slice these back into scopes again.
But you tell me when you feel like you want that, you know?
That's good.
That's great.
Yeah.
Yeah, I think just seeing the breadboard,
like you've got to hear the whole thing connected,
like make sense.
Yeah.
What are we missing still?
It seems like-
Sending a message.
Like if we wanted to,
because the only thing now is in the chat,
there's some stuff,
and then you would send a message,
which would essentially go back
to send the group notification.
You just point right back to the-
But this is a different notification, right?
It could be.
Because this notification has a different content, right?
Like it's...
So the reason I'm pulling these apart
is because this could be cut from the scope
because it has a different function than this does.
This is telling me that a chat was created,
but there's nothing to read yet,
versus this is telling...
This is like...
Do you know what I mean?
Like this is like a different event.
Yes.
Or no.
Do you want to play it a different way?
There's always a different way to look at it.
Yeah, and I know, Jenna, you put in the chat,
like, are we sending them for group creation?
I think, yeah, I think that makes sense to me.
Two different things.
It is the content that's different.
One is...
And there are two purposes.
Like one is serving as a way...
Well, think of it this way.
One is getting...
They're both kind of bringing you back to the chat,
of course.
That's the whole...
That's the goal of the notification.
But one is more info that just,
more as an FYI, you're added to this chat.
The other one is there's a new message to see,
which maybe is a little bit more urgent.
Yeah, this is also kind of a...
One of those clean...
What do you call it?
It's a hygiene thing that turns into a design advantage.
So if we always pull the things apart at this step,
we'll find later when we have like some idea about,
oh, when the new group is created,
we actually want you to see something else
when you land on it.
Versus when you're like being taken to the latest message,
we want to like scroll you to the latest message.
Like you don't know what future features you're gonna have,
or there's gonna be a notification settings option.
And it's gonna be like,
don't notify me when groups are created,
or I don't know what it is.
Do you know what I mean?
But like all those like,
we're not committing to any more scope,
but we are getting like clearer entry points
or clearer like cut points in the map
of like how stuff is built.
So it's gonna be easier to make changes later.
Okay, so there's a new message, push notification.
For example, by the way,
these also these might aggregate differently than this.
So like if I have 10 messages,
do I get a different,
do I get 10 notifications or does it wait?
And then I get like one notification later.
That's not in scope for right now,
but that's an example of the kind of thing
that is relevant here that might not be relevant here.
Okay.
Yeah, that's good.
Yeah, there's not like a summary of like,
hey, there were seven new messages in the last hour.
But yes, keep it simple, just one-to-one for now,
but that's a good distinction.
And the other thing that happens when a new,
and sorry, so that's actually,
yes, when you send a message,
that would be linked to the new,
there should be, I don't know if there should be a line
from that message.
Exactly.
Well, yeah, the tap is correct.
Yeah, there you go.
Yeah.
And the other thing that happens
is we also create a notification document
in the database that says that we have
like a notification center where they can see,
in addition to the push notification,
they can also see like a list of things that have changed.
I will this is again we're digging into deep because I how I remember it and how it actually is probably different because I think we've
Um, you know, I can confirm but I think we actually did maybe remove dms. Didn't we from the notification center?
i'm gonna check I I don't I literally don't even know I have to check it but
Um, because there would be another the other thing here would be it. Yes. Was that
Uh, I I need to check as i'm opening it here, but I believe we did
We did
We did. Yeah, i'm actually just seeing comments and uh reactions and things there so
you can ignore that but
In this case, there was a case where potentially we were putting
These into their notification center as well
but then we sort of decide like if they're we simplified it to where
there's either
If you're in the app and you're just browsing around like you're just going to see the hey
I do have some unread messages and that will just cause you to click and then you kind of see all of the
It seemed a little redundant to have
like
Janata has messaged you this and then you know in addition to like push notification in addition to like an unread alert
It was a little
Heading into like wolf.com from
the office
Yeah, good, okay, um
uh
so, um
my idea of of where to go next is um
You know, I i'm i'm
i'm thinking about like
Where are the ugly edge case things that we're not talking about? So everything so far has been pretty golden path
um
Uh, there's one we could add here, which is the renaming of an existing message
uh
So instead of sending a message in the chat view
Um
That could be another thing here that they like name group or or adding adding a person to an existing chat
um
Is a question and I actually list this in like some what I thought may be like some rabbit holes
Um in the document. Oh, that's a good one
I wanted to talk about this
yeah, so the the um, the thing I wanted to mention is um, uh
The
the the
the real way
So rabbit holes is something I regret the way I explained it in the book because I don't think I was clear
The um
The reason for identifying a rabbit hole is so that we can actually solve it in the shaping
And not that it's called out so that we figure out what to deal with it inside the cycle
And this is something I didn't make clear enough. So the rabbit hole
Shouldn't exist when the shaping is over. It should it's it's it's more like um
Like a work in progress of things
Yeah, the real the real. Um
The meaning that I intended but it came out wrong
Was like here is something to not fall into
Like kind of because we've already fenced it off
you know like uh, um, so there's a difference between like, um, uh
Don't worry about summarizing multiple push notifications
like
That just doesn't matter. It's kind of like an out of bounds kind of a thing, you know
um, or like this could be tricky and if it starts to get tricky just skip it because it's not worth it, you know
Versus like we actually need to have an answer to this, you know, um
So what we we really we don't want to feel like there are any rabbit holes at all
When we're done shaping we want to really feel like anything we could have possibly identified. We already
Poured concrete into it and and it's solid ground through the whole thing
That's helpful
Yeah, we we kind of treated it doesn't matter how we were doing it that sounds like a good plan moving forward
Yeah, sorry for that one. That's uh, that's a common a common
A common takeaway from from the book. So I think I didn't get something
I mean, we we preach the the book like the gospel so you're just changing it on us. It's not big
I guess that what we believed was totally wrong
Yeah, that's the hard part of writing a book
you know what I mean, and especially if you try to write it with a tone of authority, you know what I mean and then
Um, okay, so that's helpful
Um, by the way, I love what you just did bruce
Like there was a I don't know if you were using zoom to do that, but I saw like a circle of pen appear
Um here when you were talking about renaming the chat
Yeah, okay. Um, uh
that's a very very significant benefit of having
You guys put up with me when I was kind of drawing all this breadboard, you know
And sometimes it feels a little slow to watch somebody drawing that in a session
But then you have these moments where it's like so does renaming happen here?
Or does it happen inside the the conversation list? Like is there a little dot dot dot next to the
the conversation line item.
You know what I mean?
Like, it's like I, for no reason at all,
I assumed that that's where the edit would happen.
And then when you circled it over here,
I was like, oh, that's much better.
You know, so what I like is that like,
it's just a nice example of how like,
we can see our options and like, it's in one circle,
I already knew exactly where we were
and what you were describing.
You know, that's really what we want out of it.
That's a breadboarding win when we get that kind of speed.
So does that literally mean we just add an affordance
to the chat itself, which is renamed?
Potentially, and just on the, you know,
for pausing the thing, like from a process standpoint,
I think it is very helpful that we were all on this,
doing it live.
I think if you had done this and then send it in.
No way, no way.
Like, you know, there's no way I would have been able,
because I would open this and it would take me a while
to try to track your logic.
So I think we have kind of almost switched
to like only doing sort of call shape,
like shaping or framing type calls,
because it's, we can kind of, you know,
it knocks it back and forth a bunch faster
than basically, I think there's a place for that,
obviously to go do the work
and let everybody focus on their stuff.
But the shaping stuff is, it seems very collaborative.
Absolutely, absolutely.
Like we're all kind of building the same castle
in our minds and we're using the map
to move around the castle that we all have in our heads.
But what we're, this is just the pointer
that's moving us to the stuff that's in our heads
in common right now.
The async goes really well
when we have all internalized this.
And this is like, we have the common reference, you know,
but when the actual structure of the thing
is still like under question, you know,
then it's really hard to do that async.
That's great.
This is helpful.
Okay, so we've got rename.
Obviously there's gonna be some kind of a,
like rename this chat.
It's gonna have to go somewhere, right?
For that to happen.
Yeah, it could be a simple pop-up with a field
that you hit save or something.
I wanna go even further into weird cases.
So like, if I get added to an existing,
so how do we add people?
So we saw a new message
defining who is in the group of the conversation.
How do we modify the members of a conversation?
Can't we?
Yeah, can we do that?
And so I wrote these two different options out in the doc,
which I listed as a rabbit hole,
but I was like, we either need to go left or right,
but we could, and to me, the word is adding.
I'm adding, you know, this person
to an existing conversation.
The other thing is like,
should this person see the history
of my private conversation with that person?
And I think to me, it's,
if I'm having a conversation with you, Ryan,
and then I add Lucien,
that feels like now I'm exposing everything we've ever said
to this history to this new person.
However, if there's three of us and we add a fourth person,
to me, that is where it's okay,
because we're already in a group in some cases.
Or there's an option, which in Slack, if you do this,
if you create two or three people
and then you add a new person, it says,
hey, do you want to create a new chat entirely?
Or do you want this person to be able to see,
and you kind of give them a left or right
and let the user decide in that moment, you know,
either one.
But in Apple messages on the texts,
like they don't give you that option.
It's just, you add someone to the conversation,
they don't see the history.
They just start seeing from that point on,
which that to me seems like a much more complicated thing
of like tracking when this user added to this group
and then they can only see messages further than this date.
That seems complicated.
So I'm just imagining that there's a version of this
where, so this is again, just kind of,
I'm externalizing what's going on in my head.
Like I'm imagining future, you know,
we're branching the possibilities here.
So I'm just kind of thinking,
there's a version of this where new members
don't see history.
There's a version of this where new members do see history.
Yeah, from the notion, uh-huh.
So this is the thing we're like, we're kind of this belongs over more over here, you know,
we're kind of in this like requirements land of like what's important and what do we need
to solve for here.
Could it also be just a question of affordance, like if when you're adding a member, it says
like, oh, the person you're adding will see all the messages, so that way the the admin
is warned.
Uh-huh.
So in, uh-huh.
So in the version, if we if we said that new members do see history, what I'm what I'm
hearing is there's a warning.
New members will see the history of the whole chat.
So if that's, so what I'm going to do here is, now this is a little bit like, I'm a little
pedantic here, but if you don't mind, like what I like to do is literally take everything
over because I'm trying to get to, it's just like a git branch, you know, I'm just going
to branch everything, I'm going to fork everything, and because now I want to understand where
does this go.
So we've got the idea that there could be a warning, but we don't have the screen where
this would appear, right, because we didn't yet talk about modifying the members of an
existing chat.
So now we have a new message screen, which we get to from the new message button, which
is on the top of the conversation list.
So where would this go?
I think, like, there's a decision to be taken, like, do we allow adding new members after
we created the group?
Uh-huh.
So there's a whole other fork here, which is like, do I understand right?
It's almost like you can't add new members, like, make a new conversation.
Yeah, something like that, and I think it's probably a terrible idea, but just to...
That's fantastic.
That's...
That sounds like a developer solution.
Just, you know, sorry, conversations are immutable, you know.
I mean, I've seen, I think we even did that at Basecamp for a while with one of the things
that we did.
So it can be, it's one of those things, imagine, I mean, like, imagine you had a customer who
like literally wouldn't close a deal unless you added group DMs, and you had to get this
thing done in a week, and you had to start another thing that you already agreed to do,
like starting the week after, and this thing just, you had to hack your way through it.
Like it could be, it could be valid, right?
In some, there might be some universe where that trade-off makes sense.
So that's cool.
That's cool to have.
Guys, which path do you want to spell out?
Which of these things feels most promising so far?
There's building out the ability to hide the history from new members, accepting that members
will, new members will see the old history, and somehow warning them, or maybe putting
some conditions around when you can add new members, somehow trying to mitigate that,
or avoiding it entirely and saying we're just gonna make the user list immutable, or remove
only.
And this is where we're gonna take into account, it could take like one or two weeks and not
three.
So this is a place where if the appetite is hard, it can help you.
But then this, we're in negotiation space right now.
So what I would, I would think of this as a negotiation headspace.
There's an answer if the time limit is immovable, but then there's also a negotiation where
you can say, Bruce, this is what we see implementation-wise in terms of the complexity of going down what
seems to be the better path.
Do you feel that's worth it?
Do we want to rethink the investment here?
That's always possible to have the conversation, right?
It's a different conversation.
We flip a little bit more into the framing side.
But just, so what I would say is put everything on the table, knowing that we can go either
way.
There's the option that stays inside the limit, and then there's the option that starts to
stretch the limit, and let's just hear it out.
Does it make sense then to like, we actually shape what it will look like to add new members
in the existing conversation?
Like you just make the new branch, like fill it out, and then we get the idea.
Yeah let's let's get into a little concreteness yeah so that we understand what we're looking at
in terms of like what does this mean in terms do I understand right is it kind of like if if we go
into d here where new members do see the old history and start there and just start fleshing
out what what does it mean to modify members because I mean to me like when they don't see
the history that seems the more complex one someone like just say like oh we don't want to
do that or do we shape it to see like oh it's like a bit more complicated but not that much
so it's like realistic so so this is your call this is your collective call um the way that I
like to usually deal with that is to say um where do we want to start so maybe we don't have to make
a final call right now about which one of these is the answer but we could kind of agree this is
the path we want to try to flesh out first and see how we feel about it so I like to think about it
as like just as a group right now which feels the most promising to see if we can make it work first
what do we like best in terms of fitting all of our requirements and our constraints you know like
which one of these do we think is worth spelling out because we don't want to spell something out
if we if we're if we think it's not going to work or it's just going to take more of our time in the
session right now you know but versus if you think no I want to spell that out because I think it's
going to be worth it I think there's a way where we can where we could allow you to not see history
right it's a I hope this doesn't go on too long but let me just give you one other way of thinking
about this there's a version of this where like the product person says I want us to hide history
and and the engineers are saying that's going to take too long and the product person says no it's
not it's going to be fine in that case we have to go back to framing like why is it so important that
they don't see history oh yeah I would play it the other side actually if if the product
person is saying I don't believe you that it's going to take too long and I still want it
then then what what what I often find works well is to say let's go into more concreteness
because it sounds easy if we just say it right so then if we if we actually together try to
if product is saying I want C and engineering is saying I don't feel very good about that
a good way for engineering to to to react to that is to spell out the truth so like let's see the
facts and then if we actually spell it out together just like we kind of when we were
unpacking what VO did the complexity showed itself you know it's like the same technique
like I don't want to argue with the product person about what they want I want it my my my role from
the engineering side is to put the facts on the table in a way that we can all see them and then
we can together make a decision about what's you know what I mean like what we want to do right so
that's a case where we could say let's start with C and let's spell it out to understand how bad it
really is right versus if if if product is saying I don't know it would be nice if we could not see
the history but if we if they have to see the history and we warn them it's probably we could
probably live with that then you might be saying well I already think that that's less scope and
that's more attractive so let's try and spell that out and see if we can align on that
yeah I think we I remember on Wednesday we did talk about this concept and I remember
Junauda just saying potentially we just start like basically if there's two people chatting
and we started at a person we essentially just start a new conversation and leave that other
one behind essentially so creating a duplicate um just getting more into the weeds of like
how to build it less of like what the user but this uh I mean yes this this would be the case
anyway because if two persons are talking then just two of them see the history and if you add
another one then this is a group I believe in this case we shouldn't show the the user the history
and we can create a new conversation which is easy but my question is more about now what from
all the other users like we are we creating a new group for each new user because this is the way
for us to hide the history in case of adding like multiple users so I'm my question is more like not
from two to three but from three yeah yeah yeah so that's really interesting that there's a there's a
the two to three and the three to end cases are different and by the way that's great language
um uh what I want to do is I'm going to capture that language in a requirement because that's
by the way rename existing chat we solved um so um two to three
um we we we don't we don't want to share history
the history will be hidden and we will create a new conversation, but we have to decide what we will do.
But 3DN people, this is where we don't understand what the requirement is, right?
We don't understand what the requirement is here, but what's interesting is we do understand about this requirement.
So, if we wanted to flip back to the solution space, there is already a version of like, does it mean, so let's say, sorry, I'm going to go down here.
Let's say that there is change members of this group DM screen, you know.
There's a version of this where like, you don't even see this.
You can't even get to here if a chat is, so here I'm going to rename this.
I'm going to call this a one-to-one chat.
I'm going to say a one-to-one chat literally doesn't have this affordance, right?
But a one-to-end chat, or I'm sorry, that's a, well, whatever, like, let's call it a group chat.
Yeah, two or more.
We're going to inherit, plus we're going to have change members.
And then from change members, so we don't even have to do like a branch of logic exactly.
I mean, like, there is, but I mean, like, it's kind of baked into the conception that this is a group chat, this is a different animal.
And then this would be the place for the warning, because we're here in new members do see history.
This would be the place for the warning.
I'm sorry.
Yeah.
And of course we have unknown UI for how this actually happens.
And can I just, one thing that it's kind of a self-solving problem, like if we do this option, which we're currently at, like they do see the history and we just warn them, that is smart.
I think if there is the case where like, hey, I actually don't want this person.
Well, in that case, you just create a new chat, a new group.
Like it's, we've given the users a way out to do this.
Okay.
So if they're like, you know, they essentially can solve it themselves.
And I think that's pretty intuitive.
Like I, if I'm, I put it in my text messages, I've created a family chat, you know, with my family members.
And now I just want one with just, you know, the guys in our group, in our family.
I'm not, you know, I'm going to, I'm not going to try to get, you know, frustrated with this.
I just like that to me is a new chat.
Like it's a different set of people, even though it's a subset of existing people.
Yes.
I want them to see.
So it kind of may potentially like the easier, you know, because we can kind of think like in reality, it may be pretty, pretty obvious to people.
And that's where we do want it to feel obvious because it's when we, it's when we miss some of the stuff and just as talking it through in the last two hours, obviously we've gotten a ton of clarity.
You can see how easy it could have been to really confuse people with these little, little changes of assumptions that we're making because people assume it's going to happen one way.
And what's actually happening now is we're going to build it once and then two weeks from now we're going to ship it.
And then everybody's going to come back with a bug fix of like, Hey, when I hit this, they can see my history or Hey, when I hit this, like, hit the button, because they're assuming it is going to show the history where it's not going to show the history.
And if we haven't really thought this through, we can just now we're just like, and I think a lot of our reactive work is, is just patching things that weren't fully developed.
And totally laughing because he's, we know, we already know this, but like that now we can kind of see a little bit more of like, we know what the problem is.
We didn't know what the solution was. I think this is to me is the solution we're seeing here today.
So, yes.
Awesome. I love that. No, I love that. How like, like, like spelling it out, making it clear. It not only gives us the answer about how we're handling a certain case, but it's also giving the user much more clarity around what's going on.
It's like setting clear expectations all around, like the design itself is just clear and it like radiates that clarity in all directions like implementation wise usage wise all of that. I love that.
It builds confidence, I'll just say like with the team as well because in this case, we're all confident we're all on the same page, it's easy but when we've got that third party.
of the client and for the customer, we then can say, look, we, sure, yeah, let's, let's
talk about this other option.
We actually thought about it.
Here's this reasons why, you know, it builds confidence and to sort of defend our viewpoint
more than just, oh, that's a different suggestion.
Let's go B or C.
Yeah, totally.
And so I think we have some clients, I know Chris has, I don't know if he's listening,
we have clients that are, is we've had some real problems with, with this and like, it's
just kind of, oh, okay, Chris.
Yeah.
But just, you know, us doing version one, then it's like dot one, dot two, dot three.
We're just iterating on these tweaks that we never really fully thought about it because
it, you know, anyway, so we're trying to get out of that.
Yeah, exactly.
Yeah, that's, no, that's fantastic.
And so like the general, I mean, I think you already getting this, but the, the, the sort
of the sort of trick is when we when we feel like, oh, it could be this, could be that
we more concreteness helps us to align on which one of these things is actually going
to work out better.
So it's the leaning in.
So like the whole thing we've been doing in the last two hours is just getting more concrete
around what the idea actually is, right?
How do we get to that?
What happens when this happens?
Like, you know what I mean?
How is it all connected?
And then like, when we all see the concreteness, it gets easier to also align on, on not just
be because I like to be better, but like, there's all of these reasons, right?
There's all these like constraints, there's all these like requirements that we, we really
worked through and it becomes much more clear that this is the answer.
In line with that, I wanted to go back to our requirements because I understand them
better now.
What I, what I understood was what Janata kind of, or no, I think it was Lucien, gave
us, let me just, I want to rewrite this.
The real requirements here that the system, like what we agreed is important is like one
to one, actually, we never share history in any case.
So like one-to-one convos always stay one-to-one and
it's funny, like this isn't exactly a requirement that's hard to meet because it's kind of like
relaxing a requirement, but it's just like such an important decision that we came up
with.
This is just like my, this was just kind of what was in my head is that like, this feels
like something just like very important and fundamental that like, one-to-one chats are
a different beast in this product.
You know what I mean?
It's not just like a state, they literally have like a totally different rule, which
is like the history will never be shared.
You can't add other people to them.
It's like, feels like a really meaningful design decision versus like
members of group chats can change, not even, not even can, I mean, we're saying that they
should be able to change.
And members of new members to groups are, let's
see, I'm just trying to say that like on group chats, when, when adding and everybody
knows it more or less, something like that, like I'm just kind of trying to capture, like
this is a solution, you know, and the solution is just like the, how it works.
But like, these are kind of like, these are like the really hard things that we wrestled
over that are kind of like decisions about like the values that, you know, like the,
these are like the more like the value judgment things.
So I just find it helpful.
This is something that we will very likely come back to when we're packaging this or
when a team is working on it or whatever.
So I just wanted to have it spelled out there.
Okay.
Thanks for.
entertaining that
Where are we Lucien
This is really good. I'm on board with all of this is really great
And I also want to like throw a wrench into the whole thing. Okay, just based on the like
Because our current structure is like there's a conversation we have a list of users so far so good
We'll have like one-on-one conversations. Just there's two users. What if we start a group conversation?
There are three users. We remove one. Does it now become like one-on-one conversation? You can't add anyone back
That's gonna be like and then the app just explodes and do you think that's that's exactly the kind of thing
We want to surface right now. Fantastic. So what do you guys think?
And also do they will have access to the history of being removed like that's one question as well
Mm-hmm. Yeah, they did. What if they get removed and added back?
When you remove this user this will become like a one-on-one conversation
Oh, you will no longer be able to add anyone back sounds wordy. But like that could be a workaround. We just like
We just like
I I almost wonder
like if on the data structure we because I love that Ryan you said that these are like really two different things and I
almost see us having like a
Conversation type field is what type of conversation is this a personal DM or is it a group?
So once it's a group
it's always a group and we can add down to two and back to three because Lucien think of it in the case where like
There are three of us. I
Remove one person and then I just want to add them back in that moment of me
Removing that one person then we're trying to get them back. Now. I've just lost the ability. That would be super confusing
I think if someone
In that process, but just like a little like text field, you know, you know
Yeah, just like when you're like in bed like first screen like create new chat
Then it's just like automatically set based on how many members you put
And maybe it's just to the group group type stay the same sorry, sorry good
No, and what happens to the group once I'm removed like I will not be able to see the group anymore
or I'll be able to see all the message that I
Kind of saw when I was in the group like how we handle that. That's another question. I think you're kicked out like
Yeah
First because
The way our conversation is currently set we either are on the conversation or out of the conversation
so if we remove the user remove the won't be able to see any history at least that would be like the
Default implementation or easier implementation considering our current database
Because if we need the user to be able to see the message of being removed then we have to add
This information to the message itself like
these users saw this message and then we need to keep all the groups even if you are removed and show like it's a
Yeah, I think it if we keep the conversation the same like once you create that conversation as a group or it becomes
a group type
Then it's just you either in that group or you're out of the group which make it feels more like a channel like in slack
there's a channel first like if there's three of us in a DM because
to make it more complicated slack has the ability to have a DM with four people and
Then that's very confusing or you can have a channel and two channels like something that stays
Consistent the whole time and people come in and out of it
But I don't think people would be surprised if I got removed from a group
I don't think I would expect to see the history of that chat like after being removed. That seems pretty reasonable
It's a really interesting
You know channel versus chat is also interesting
So we started to lean into this idea of like types and it's it is interesting to think about like is like coaching group
one is it more like a channel or is it more like a
Five people in iMessage that's that's interesting. Okay. I'm gonna resist giving opinions on the
Concept here, but if you give opinions and we can blame you later when it doesn't
But Ryan said
So one thing I heard here
So they're kind of a bunch of stuff all just appeared at the same time which is kind of by the way
Also a good sign of a productive shaving session is that you've suddenly hit this like fountain of like what about this and what?
About that and what about this, you know?
so
I'm just I'm just writing
These are the two questions that just came up, and one thing I heard, I want to figure out if we can actually put it into the design,
is this idea that these are actually different types, and they don't magically become each other according to,
that the behaviors aren't inferred by the number of members, but they're actually different animals.
If that was the case, then I would think that we could say, on the back end, when you create a group,
I'm just going to write like, if more than two people, this is like create a, I don't know what to write here, you'll have better language,
I'm just saying create a group type conversation, and here I'm saying, if one-to-one, create a one-to-one convo,
just to show that on the back end these are different things, which is then also quite fitting, by the way, that they go to different destinations,
so it's also kind of nice that we can see that. Is this, do you want to accept this and keep going, or Lucia and Gennady,
do you want to push back on this typing?
No, I think it works.
Okay, so then that would mean that this, groups can't become one-on-ones,
then this is, you know, this is actually handled, we're over in D now, but I'm just going to mark that's handled.
I'm going to delete this because it's captured over there.
So what about this, when someone is removed, do they no longer see the chat?
I would be thinking of example four, like, is there a reason why you would remove somebody, in your domain,
so not thinking about chats and stuff like that, but like in your domain,
Bruce, you were describing like what the name of the group chat would be kind of based on the domain, you know,
like, is there a reason for adding and removing? Is there like some, like, believable frequent,
like, how does this feel in terms of super edge case versus not according to like the use case,
that why people are actually using these group DMs?
Yeah, so, I mean, the context, and this is maybe some of the framing pieces of this when we came,
so the context is like, we weren't sitting around and we're like, you know what would be great group DMs,
like, that would just really make our lives that much better.
This comes, obviously, from our clients, because we have, our clients have their own tribe apps,
and then they have their own, you know, users, so they each may have a few thousand members that they're each managing.
So this has been kind of a common thread, people are coming, they're using Slack as, you know,
we had a client who was spending, you know, 70, 80 grand a year on their Slack account.
I did try to send them to the, whatever, yeah.
Yeah, the self-hosted campfire, good luck.
The self-hosted, yeah, so I was like, this is, there's better solutions, but they're coming from Slack,
and so everything is relative to, well, in Slack, we used to do this, and in this, we used to do that.
So that's the context of what I, so I'm kind of using Slack as my reference.
Also, we, whether we like it or not, like, we, our teams and our clients use Slack most of the time,
so that's kind of our world.
Why not stay on, how is this your problem?
Just to stay in the frame for a moment here, you know what I mean?
Like, why is this your problem that now you have to build a feature because of this?
That's a great question.
I should have said that to them.
I mean, so the client is asking for it?
So I think the context is, so it's coaching clients that typically came from a Facebook group,
and so in this world of coaching and kind of higher ticket 5, 15, 20K offers,
these are sort of tools that become necessary.
Like Facebook, you kind of outgrow Facebook's community feed, and now they want structured content,
and then part of it is that you end up getting a personal coach at some of these higher levels.
So then I have now, like, a small group of my personal coach.
So the DM solution was great because, like, hey, here's your personal coach.
You can message them any time.
And so our clients, of course, just go and, like, pull.
Remember, they're not super technical,
so they just.
They have a Facebook group over here.
They have a course in Kajabi.
They have, you know, a Slack account over here.
And so when they, when we come in, we're like, Hey, most of this can be covered
by this one single app that's kind of designed exactly for you.
Um, that's where they face the DM.
So you're, uh, look, did I understand right?
Like your value prop is like, get rid of all this, like, like this, this, this,
and this, and like do it all with us.
Yeah.
It's, it's kind of the, the base camp, like solution of, of, you know, it
replaces a bunch of tools in one.
If they, if, if they have to stay in Slack and continue to use you with Slack,
that's, can you describe the way that that is bad for you?
Cause I can feel that it is, but like, can you just spell it out?
So, and I go to go to the, the end user experience is like, um, they're having
like one account for, for, for this thing.
Now they have to also go to do another app to kind of have this
conversation with their, with their coach.
Um, it's not terrible.
One thing that makes it value is there already.
Um, so cost is, is, would be on the client side.
That would be a negative.
Doesn't affect me, but the cost, um, side would be bad for them.
Um, at the core of it, like we are helping like coach, mentor,
disciple people in a very like small, we know that that's very effect.
What's happening like right in this call right now, it's like a small group of
people and go very far, go deep.
Um, this would be hard if there was a hundred people or we're
live streaming it, right?
So, um, we know that this connect like certain types of connections
happen in these smaller groups.
And so, because these groups, some of our tribes and our groups are, you
know, a thousand members in a particular group, they're not getting that, that
high touch, uh, that, you know, connection to coaches.
So this is one way that we can really kind of go back to our mission of like
creating these smaller spaces for people to connect.
Um, the alternative right now would be to create an entirely separate group
for this coaching cohort, which we have a key spire.
One of our clients is doing that.
They have, they have just a bunch of groups.
And so you have some of these groups with 10, 20 people in, um, cause,
cause this isn't really a solution.
So there people have kind of found ways around it.
Um, and this is one of those things like, would we spend six weeks on this?
No, we would not spend six weeks on it.
You know, it's not worth that much to us, but we could kind of
see a way with a week or two.
Like this actually opens up a lot with very minimal effort and time investment.
I see.
So, so it doesn't, the reason it's not six weeks is, is partly because, um, it's
not clearly like a churn risk.
It's not like the more they're in slack, the more they're slipping away.
Um, and it's not like you're missing out on a bunch of new business and you really
expect that you're going to activate a bunch more.
Um, but there's a certain level of like, you, you're, you're inching up the, what
the, the, you're inching up on like the, it's like a incremental, incrementally
more satisfaction and your ability to kind of like, like do the thing
that you're selling already.
Yes.
And, um, the Rainmakers is the one client that was like really pushing
hard and they, they just made the hard cutoff and they just switched to the app.
And so they've been a month or two in this and they're like, Hey,
we kind of missed this feature.
Like this would be nice to have.
They're kind of working around it.
It's not, it's definitely not like closing deals for us, but
are they, are they a big customer for you?
Yeah.
They're, they're one of our enterprise customers.
Yeah.
Ah, I see.
I see.
Okay.
Uh-huh.
So, so, uh, I'm just kind of capturing this.
So one of your enterprise customers just, just, um, went all in into tribe.
Yes.
They, they, um, canceled their Slack.
Yes.
Now they are saying they need group DMS.
Yep.
Got it.
Okay.
Okay, good.
Um, um, maybe one slice of con context here is they are, uh, not to make it too
complicated, but they, we have the option for these enterprise.
If it's an important thing for them, they can sponsor the feature.
And that's kind of a one to two week budget is coming from.
Um, so in true bootstrap form, we're like, great.
You want it?
This is what it's going to cost.
So is that what, is that what they're doing?
They are.
Yeah.
So they were, it's kind of a hybrid because we say, yeah, we got it.
We'll do group them.
We're not involving them in this call.
They're not approving things.
This is not a, uh, they're just putting in like, generally we want this feature.
They don't really get to be in the weeds of telling us exactly how they want it.
We'll just, and we are very careful to only bring in very core features that.
match like our vision. Now we, years ago, we were not, we were Frankensteining, you know,
hacking and all kinds of stuff, but much more deliberate now, like, yes, this makes sense,
lines with our vision. If you want it, we can put it on the roadmap and kind of bump it up,
you know, and put this, this into it. But yeah. I'm going to resist diving more and more into
the frame of this because it's so small, but one, one quick question. What's the wind here for you?
Like, is it, is it, is it the, is it the additional, is it just like nice to get the
additional sort of sponsorship income? It's just like a little bit of additional cash coming in.
No, it's pretty much, you know, break even when they, what they're paying versus what's
going to cost to build it. There's no, there's no broad benefit there. You know, at the end of
the day, we're making the platform that we own more valuable. And I, we're, we're giving people
more ways to do mentorship and coaching. This is another tool in their toolkit to, to help
people grow and learn in a virtual community. So I see the value of that. So to me, it feels like
a good, I would say like, yeah, if we really get down to it, like we, we really, you know,
made a huge mistake. Janata mentioned like a year or so ago, we like had a client who needed DM. So
we like hacked this DM thing in there. And it's, it's, it's not a feature we even have listed on
the website. Let's put it that way. So now I feel like if we did a little polishing, we clean this
up again, Janata got in there and did some magic to it, you know, like in this process, we're doing
a lot of little things here to me, it would like, I would probably put this as like a pretty, not
only do we do DMs now, but like, we also have this group, it feels more fleshed out. It feels more
like a selling feature. So it kind of takes like a side thing we, we put together. And even just,
you know, you know, we've had to go really deep in the last couple of days, just looking into this
and seeing where, you know, it could be refactored and where, you know, probably do some cleanup
while we're in there. But yeah, so that's kind of the deeper. So like DM was already there.
It kind of wasn't really like something that it's, it's like something you had, but you couldn't sell
it. You couldn't really do anything with it. And then here is like a modification we can make.
That's going to be something where it now becomes value additive to the overall package.
Right. Yeah. Yeah. Got it. Okay. I okay. We were talking about use case. We were talking about
why people might be removed or added and removed repeatedly to the chat. And I think what we're
trying to do, we've got 25 minutes left. So what I think we should try to do is, is kind of land
the shaping piece of this now. Let's say that this is the last remaining big question. I think
it actually is based on what was in the notion doc. Are any objectives, are you guys comfortable
with, or what is the answer? What's the working, what's the favorite idea so far in terms of like,
if here we remove somebody and there's a, there's a submit action, right?
So here we are in changing members of this group. So if we remove somebody from this group and we
submit, like what, what happens? What do they see?
Well, I would say it feels right that they no longer see the chat, but we would have to like
send them a notification so that they're not like, wait, what, what happened?
But there's also like, I'm just like firing, like all the things, but Janata put it like a
good point in the chat. Like, should anyone be able to like add or remove people from the chat?
So it feels like the shaping is still has like some holes.
There's still more things. Okay.
But I think that's it. That's, I don't think anyone's disagreeing. Should they
see the chat? I think we can say, yeah, like we should, they should not see the chat.
Okay. Part of the reason why I'm capturing this here is because I don't know when we'll run out
of time. There are ways to spell this out where like, so for example, like conversation list,
this list of conversations is like conversations I'm a member of, and just, we can add some
concreteness there, right? Because now there's a consequence, you know what I mean? So like,
if we can point to what happens as a result of this. So like, if, if I, if somebody,
if somebody removes me and then I go and I look at this.
I go into a screen where the conversation list is shown,
then I wouldn't be seeing that, because I'm not
a member of that, right?
That's correct, yeah.
Makes sense.
Any thoughts on this one?
OK, so this would be something where we could say,
for example, people removed from chat are, yeah,
that's actually interesting.
This is just kind of like a note.
There isn't really a natural place for this,
because the person who's doing it
and the person who sees it are different people, you know?
So we could kind of just point that out.
But we would be able to say, if it's
true that we want to have a push notification,
you were removed, I don't know if that's true or not.
I think the suggestion came up, but that's usually
something that I would expect a little bit of back and forth
around.
Yeah, I can see it.
That's the thing, and decision would be push notification,
or even while we were in Zoom here,
Chris left and came back, so it had an alert there
that, do we tell the other members that this one person
has left as an alert?
Hey, when I'm in my history on the conversation list,
do I see groups I'm no longer a part of?
Or can I see it in the list, but I can't actually
read the messages?
I think we do want to, so maybe a simple solution
is just at least alert them, like, hey, you're removed.
Maybe it's a push notification.
It could also be the notification center,
so it's a little bit more concrete
that they get in a log, because a push notification just
could be removed.
We have some user groups that are in 50, 60-plus age groups,
so we want to make sure this is super obvious,
so they don't, because they will come and submit a support
ticket to our clients saying that, hey,
I can't see this anymore.
It's like, well, you stopped paying this thing,
so this is why, or you left this.
You want to make sure there's some explanation there.
But Lucian's right in that there should
be some alert TBD on which way we put that.
Mm-hmm.
OK.
And so with 20 minutes left, we can
keep going to all the additional unknowns
and spelling this thing out.
But I think what we need to do is land the shaping,
and I want to, I think the real question now
is if we look at this work, is it
evident enough what the moving parts are
in terms of implementation that we can kind of talk
about this fitting naturally into one week
versus feeling like we want to plan for two weeks?
Or are there concerns about whether it
pushes beyond two weeks with what is drawn
and what's on the table here?
So this would be for the technical guys
to give a reaction to.
So the first question I would ask
is, because the appetite was kind of one to two,
I would say, first question, does this look viable in one?
Second question, does it seem clearly viable in two?
And if there's uncertainty, then we
have tools we could use to help us.
OK, my view is that we probably could get a functional version
in one week, but I believe this would probably not
include all the moving parts that we are seeing here.
I believe it's, I feel confident for two weeks
with the, let's say, restraint that we will not
change a lot of what's currently problematic.
Like, we will implement this on top of what we have,
and if we find ugly things that will take long to change,
we will not tackle them.
If we are on.
on the same page regarding kind of avoiding refactoring
the HackmyChat and trying to just build on top
of what you have to have a feature
that our users can use in this two-week process,
in two weeks, and it will already generate valuable,
especially for Rainmakers that's currently needing for this.
Then I believe it's doable with this kind of mention
regarding what's there with the old code
and with the problems, like, for instance,
when we send a message, a lot of the screen goes blank
and then it appears back, and this is a bug.
It would be nice to have to kind of fix this
during this project, but I'm not confident
that it's certain that will be possible to, like.
Is there any other area that you have in mind
of, like, we would have to leave it as it is
or we would have to kind of, you know,
just hack it with what we already have
other than sending a message?
There are two points that I believe
that are still a little bit kind of nebulous for me.
One is about the reading receipts.
Like, at the current point,
we have basically one variable that controls.
Everyone has read the message
or not everyone has read the message,
and that works in one-for-one
because when I send the message, I set this to false,
and when the other person sees, he sets this to true,
and if he sends a message and so on,
it will basically go back and forth with this boolean.
But this is, well, not a very good approach,
and it would also not work for groups,
so it would need some reworking
for us to get this kind of readability to fix it.
And also regarding this kind of management of users
and who will have rights to remove users
and who will not have,
and can we promote users to admin of a group
if we kind of have this concept?
And I believe these are the two, like,
more nebulous part at the current moment for me.
So, Bruce, from the product standpoint,
so this is, again, exactly the things we want to surface.
Are there things that you have answers to
for the current appetite?
Yeah, and I think, so the easy one
is, like, the receipts thing for groups.
I think it makes sense just to not deal with that for groups,
if that makes sense.
Awesome.
You know, because I don't see that in Slack.
You know, I don't see who read which message.
I mean, we have the ability to react,
so the solution in Slack is people react,
so that's how I know someone looked at something.
They put a little emoji or something,
which we have the ability to react to a message currently,
so that should solve itself.
One of the requests from the, so in this industry,
spam and people kind of, you know,
jumping in and, like, you know, sending crypto links,
especially on, like, a free challenge or something happens,
so people are very nervous about private group chats
that the clients can't see,
so that's why they requested the admin,
and I think this would be as simple as, like,
if the person is an admin or a creator,
they can create, you know, group chats.
We could just, you know, that could be, like,
maybe when they're adding that person,
like, in your new message of breadboard somewhere.
Like, that could be, there could be, like, a conditional.
They're, like, depending on the role,
they have the button to add an additional person.
Where did we have the, oh, list of.
So this would, so you wouldn't even see the button
to create a new message unless you were.
So you could message one person.
It's more like you couldn't have,
you couldn't start a group message.
Uh-huh, mm-hmm.
So this is, by the way, this is interesting.
You, with the time we have left, I'll be short,
you have the ability already to search for users, right,
in the existing interface.
Could it be, could it be that this affordance
could be only for creating groups?
But because we changed this above to only look,
so what's above there, the search in one part here,
we changed this to only search the conversations below.
Yes, uh-huh.
Or filter, let's maybe say the word filter.
There would be, like, the only other way they would find it,
which is okay for now.
Like, I'm okay with.
There's a version of this where we do just do what you said, and new message is really
just like new group message.
And just going back, there's a way you would be in a group with someone, and I would see
their name in the feed, and I could tap on their name, and then I could start a new conversation
with that person.
It's not a bad workflow, honestly.
I don't think searching the entire database of users for a non-admin is like, it seems
overly complicated to see thousands of people.
It's more, oh, I saw this person post something, I want to send them a DM.
It seems more personal.
And we do have a members tab that our admins can turn on for the group, so it is just a
search field of all members in that particular group.
So it may just be that that new message button is a new group message, potentially.
Or maybe it's just like, create group.
Maybe it's like something, you know.
Yeah, that's interesting, because we were-
We actually have the concept of groups, sorry, just because we have tribes, and then there's
multiple groups in that tribe, so we would want to say something like a group DM or a
group chat, just because that could be confusing.
It's like, new message, that button we only show to admins, and yeah, that's what you
were saying, basically.
Yeah.
Or in two ways, like, anyone who's seen it, and then like, search from Acme is like, hidden
if you're not admin, and there's one person in the added people.
Yeah, I think the search, that search is really turning into a filter of what-
I would agree with Brian, like, that we should land this, because like, we're like, going
into like, more details, like, we're on a good like, path, like, we have the tools,
I feel, to like, figure out these like, other details.
So the thing that makes my hair stand up a little bit right now is, we're still catching
some kind of tricky things, you know, and maybe at the speed that you guys build, it's
fine.
I'm adding a question here to capture this.
How do we condition that non-admins don't create groups?
You guys can improve that to make it accurate.
So here's the thing, Bruce, there is a framing piece of this.
I think that it's very, very difficult, the way that this has been framed, to understand
like, what the actual upside of this is, or what goes wrong if you don't do it now.
And I kind of feel like this two-week, the feeling that this needs to be done in two
weeks is kind of coming from the fact that there isn't a strong reason other than, well,
like, one of our customers wants it, and it would like, so there's, I'm feeling a little
bit of a tension, like, it just kind of would be nice to have, you know.
And then on the flip side, when I look at the work and the surface area, if I was working
with the teams that I often work with, I would be feeling a little nervous about two weeks,
I would have to admit.
So my instinct would be to reach for the scoping tool to try and get clearer around, is this
actually doable inside the two weeks, and how do we feel about that?
I want to demo that to you in the 10 minutes we have left, so that you guys can make a
determination about if this is really going to feel good or not.
Because I want to come back to the initial thing.
I think there's things that you're seeing that you liked in the session, but kind of
the very, very high level thing we're trying to get to is, can we have a better matching
between the timelines that we set and then the time we actually spend, you know?
It's very natural that the timelines are always going to feel a little bit too short, when
on the framing side, we don't have a really strong reason to be doing this, so it's kind
of hard to give the three weeks, but then we feel a little bit squeezed.
So I want to, there's still concreteness missing here on the implementation side.
The tool for that, so this is something you can do as an exercise.
I have a little app that makes this easy to do, and I embedded it here for you.
So what I want you to think...
is if you've got two weeks and then you,
two weeks is what?
10 business days, right?
So if you take 10 days and if we divide that
by nine possible scopes of implementation work,
like if we just break this into nine chunks
of things that we could vertically slice apart
and demo and finish, you know what I mean?
Like adding people to a group chat works, you know?
Push notifications work, for example, right?
That each one of these things is like,
I mean, it's basically on the order of one day,
I would say, right?
Is my math right?
10 divided by nine, okay.
So there's an exercise you can do here
and this is for you guys, for Lucian and Janata
to see if you could spell this out
in terms of actual implementation work,
just a sketch of the implementation plan.
So you are gonna have your own ideas
about how to slice this.
I would think that there is something like
create a group chat.
There is something like change group chat members.
There's something like handle exit of a group chat
like, or removal, you know, handle removal.
You know what I mean?
There's gonna be, so like, these are just a couple ideas.
There's different ways to slice it.
And then for each one of these things,
you'll see that there's a, you can just add a task.
So you can literally implementation tasks of like,
oh, like, we're gonna have to create the,
like, where does this group convo in the schema live?
You know what I mean?
Like, how do we do that?
There needs to be like something there.
There's this conversation list.
Here's another thing, like conversation list.
Let's say, yeah, let's just call it conversation list.
Like, we need to be able to like see group chats by name
with the one-on-one chats in the list, for example.
Do you know what I mean?
And there's things you're gonna have to do to do that.
So if you imagine kind of just like spelling out,
what are the things you think you have to do
for each of these?
And if you can be a little more concrete than this,
like what piece of code needs to get modified
or what chunk or whatever,
then that will help you get to a point
where you'll be able to look at this.
You'll say, I could do that in a day.
I could do that in a day.
I could do this in a day, right?
And if this whole thing can be done in a day,
then it's kind of a, you get a feeling
for how you can estimate, yeah?
So I would suggest trying that
and seeing if it gives you a better feeling.
How do you react to that suggestion?
Does this feel like a lot of work?
Does it feel like it gives you clarity?
Can you just kind of give me like, what are you?
Is it only me that's feeling a little bit worried
about the two-week number when I look at the breadboard?
Yeah, I feel that it's a little bit like squished.
Like it could be done, but like it's risky.
Like there's some risks involved
of like getting some stuff out
that's kind of propane,
has the tendency to create the things
that Bruce described where we will receive some feedbacks
from reactive work and stuff like that.
But yeah, I feel like that a little bit.
But also I really love the idea of like this chart
and like visually being able to see one big square
like everything and be able to discuss about it
just like we are doing for the shaping.
But like I said, for more than design implementation details
I believe this will be very helpful
because then you can like think more detail like,
hey, this will more like take a one hour, two hours.
Hey, this can work in a eight hour workday or not.
And kind of work from that,
especially because we are talking like 10 days.
It's not like a big, like months of work.
It's just like.
a few days and I believe we can we can estimate that very accurately.
Yeah, that's good.
So yeah, I would give that as a homework task.
From where I sit, I kind of don't feel like we got all the way to,
yes, you know, this fits within two weeks, like this feels like a clear winner.
It kind of feels, if the number was three, I would be feeling pretty relaxed, I think.
I see you nodding, yeah.
Bruce, like I think that's an interesting thing to take away.
I think this is, there's, if you want to think about,
so I'm kind of just trying to line some things up for you guys to chew on for the future now,
you know, I would say one is trying to do the exercise of the nine boxes to see
this is a way to get more concrete about implementation and feel that timing.
I think there's some, I think there's potential to have more back and forth on the framing side
to really kind of get firmer around like where is this feeling that we need to get to the two-week
version coming from and is there justification for more time or is there really not?
If this really needs to be done in two weeks and stretching to three isn't okay,
if, and you don't want to have the technical debt coming out of it,
what I would be wanting to do as a next step is cut stuff from here.
Do you know what I mean?
Like I would be looking for deeper, deeper scope cuts so that you guys could really say like,
yeah, two weeks feels like no problem, you know, but where it stands, it still feels like a bit,
it still feels like a bit, like there's a bit of extra scope here for two weeks.
Okay, that's a bit much of me talking.
I want to wrap with takeaways from you guys.
So, can we just go around with like where did we get to, where did you start if we,
from the notion doc that we had to where are we now, you know, and kind of what are your takeaways?
I'm loving the whole like branching and like breadboarding.
Like we don't do much breadboarding at all.
So definitely something to do.
I have like a question, probably we won't get to like answering it,
but I noticed that like you do your breadboarding with like screens
and like the diagram of like the current way that the system works.
I would have liked to see like more like data structure type details that forms very much like
some of the details, like what could be doable was like less realistic,
but we only see like screens, we don't see like the underlying like data structure.
But overall like really enjoyed a lot like the session.
Yeah, Gennaro, what are your takeaways?
I actually wrote a bunch of things, but first I really like that quote,
like high fidelity prototypes turn off a part of your brain.
Like this is very clever and I think it's so easy to be deceived by interface
and like buttons that click and provide animations.
And then you just kind of forget the criticality of the interface.
You just kind of forget the critical thinking about,
hey, how, what, they are searching exactly like what's being called behind here.
What are the schemas that will be needed for the screen?
So this is one takeaway.
Also this, I had the experience of shaping things before,
but I was usually, even being an engineer,
I was usually more worried about like UX and how things would like fit in the screen
and which elements would need to be shown.
And now I'm seeing, hey, this is much more like integrating both parts
and being able to bring this deep, deep technical details.
And kind of, like you said,
like this description of really being in the end,
kind of a matchmaking between understanding what really is your appetite
and what are our expectations from the dev team
and kind of making a merge between them work.
So this is a very interesting approach.
And also it was a very interesting experience in the sense like,
for instance, if you watch someone fighting jiu-jitsu, for instance,
sometimes you don't understand exactly what's happening,
but once you receive some like grip from a black belt,
then...
kind of, oh, now I understand what they did there. And that's the same experience I had there.
Like, it's watching a professional and a black belt in something do this, do this, and, like,
being able to kind of have this feeling and having this experience is very valuable because you
understand from a point that's beyond, like, just surface rational way, this is logical,
it makes sense, let's implement this. But the nuances, like, how you truly
fuse the room and, like you said, you, I didn't say, like, exactly, hey, I feel like maybe three
weeks would be enough. But you are, like, aware and bringing this up and bringing how you are
feeling about the room and bringing this type of kind of sometimes unconscious truths that
linger among the meeting sometimes was a very beautiful thing to watch. And it was like
watching a professional player of something and you go, like, hey, this is very elegant. And
thank you. Thank you for this session. It was awesome.
Thanks. Bruce, I want to hear from you on, like, the sort of the value side of this.
You know, do you see where did this get you, you know? Does it still depend on, like,
what happens in build and how long it takes or, like, how do you evaluate what happened here?
No, that's great. Chris, were you going to say something?
Yeah, I was going to say real quick, sorry for the whole thing, Ryan, but what I did catch,
there are a lot of gems that came out. I just posted something about UI builder. It's so funny
because I found that out about five days ago. And I said, this has been the answer to all of
these things where you have these polished prototypes and just kind of quickly showing
something as a client says something. But I love the slicer. I don't know what you call it, but the
nine grid slicer. I think it's a very visual way of just saying, hey, you want to do this and this
and this. OK, great. We're out of room. Right. And it just helps you kind of go through and cut
things out and then maybe start another nine grid if there's more. Right. But just keeping track of
how things are connected, hence breadboarding. Right. We started doing that for a troublesome
project we have now. It just really clarified things. I will add one thing. Some people think
in spreadsheets. Right. Because that's just how they work, how they see things. So even just this
morning, I was saying, hey, talking about developer saying, hey, let's not just do words or like a
video they have to digest and think about and respond to because you can't annotate a video. I
mean, you can, but not really. Right. I said, make a spreadsheet, put your assumptions, say so what
they're for and then say blockers and then let them respond in real time. Right. And she's just
just trying to surface information quicker. Right. And I think you've given us a lot of food for
thought. And how do we do that better? And also not just part in our process, but really show our work
right to our clients, let them see how we're thinking. And I think if we had done a lot of
this stuff earlier, we would have saved ourselves a lot of heartache. So thank you so much. There's
so much value that you gave us. I definitely got a lot of things that we want to put in practice
right away. All right. Glad to hear it. I know we're right on time, so I'll be really fast. But
yeah, if it's if it's fine for you, I can go over another 10 here because I want to make sure that
we don't just you know, that we get all the way through, you know. Yeah, we're good. We'll
probably we can take a break, guys, and maybe just chat. I think we spent 15, 20 more minutes
in context. We'd probably not got a ton of work trying to come back on Monday. But yeah,
it's insanely good value. I mean, we're worth, you know, all the expense of us all being on here,
you coming on for sure. We are, you know, it's the same thing to see you come in from like the
30,000 foot view and come down into something that you have no context of, which was perfect
because we forced us to explain and try to think things through. And we make so many assumptions
just as a team, all having the context kind of in the back of our head, but not, you know,
even as we were drawing this, we were having a lot of specific, we were kind of coming to certain
realizations as we went into version B and C and D. So that was, that was very powerful. And then
for yeah, it is just being able to watch you shape it. It's kind of like, yeah, we're kind of
doing some version of this. It's like you're listening to like, if you're just learning
beginner play guitar, it's like, yes, you're technically hitting all the right notes.
Is it music? I don't know if it's music that I'm going to like listen to, right? Where
you're someone play it the right way. You're like, but it's the emphasis on the right pieces
that were very helpful to see where you're emphasizing stuff that we were not emphasizing
enough. The framing, you know, we were kind of, it's like, I feel like we were just like
writing and like our version of like the pitch, which we, which we have
fought hard for with our clients of this, this idea of shaping, and it's a lot of
education, um, Us, you know, we want to, if we're, we're already pushing so hard
on explaining this to our clients, it's like, this is the way to do it.
But now that if we can get even better at it and we can even sharpen, um, you
know, our own skills at this, we can stand by that as even more like this,
this does solve a lot of problems.
Um, so I'm more than ever convinced on it.
I'm, I'm glad that we get to kind of see it at this level.
I don't know if we would have seen it, you know, just reading, reading the,
reading the book and us like doing this for, I mean, we've been doing it for
three or four years, I think as a team.
Um, and, uh, so I, I think it was really, I'm realizing as well that we won the
framing piece of it was different than shaping and I I'm seeing the shaping
really being part of the project in some ways, and I'm kind of even thinking like,
do we, um, put this after, like, do we, do we take the frame and we present that
to the clients and they, they buy that frame of like, we think it's this, this
amount of context, this is the sort of the frame and then the first, you know,
portion of it is actually spending and kind of build this cost into it, right.
As of shaping it.
Cause we got a lot of work done that if we had given, if I had given Janata,
and, and this is the most, like the DM thing was probably one of the
most shaped things we've ever done.
I'm like embarrassed to say, but like, I think if we put this against some other
projects, like this was a pretty good one.
So we're just going to pretend like the other ones don't exist.
We won't show you those, um, at all.
But, uh, this one was like, man, I feel pretty good about it.
Like then we, even last night I added some of the sketches and some, some of the
mock-ups I was like, what more, what more could we possibly put into this?
Like to get this more shaped and then like, you know, I'm feeling like maybe
it was 20 or 30%, you know, before this call.
Um, so that's, it's very helpful.
And I think we, but I think we kind of, we kind of dove into the middle of it.
And I, and I even feel like the context of being in, or the, the, the frame of
being in a notion document is, is wrong.
Like, it's just the wrong tool.
Um, it's kind of like using a physical board versus trying to like, like a white
board versus actually trying to put it into a word document.
You just don't have to, I think that was nice to kind of get us out of our comfort
zone and over to the, and the freedom of having just, just a ton of ideas, just
like spread across, that was very helpful for me, um, to kind of be set free a
little bit, because I feel like we were trying to go from like, we're trying to
do this all in our head, like, here's all the problems that we're trying to like
come up with this beautifully crafted finished document.
And then we just keep editing, editing the document until it was better.
But this was like a way to get all the ideas out first.
And now if we were to go and, you know, I don't even know, like, I kind of want to
like archive this version and go make a new document, you know, from this, I don't
know, I don't know what we need to even keep from the old, um, I feel like we'd
be bringing in a lot of like, uh, tech, uh, like, you know, we'd be much more
clear now and it doesn't really matter what we had to get to this point.
So anyway, it was, it was great to see you tackle it.
Definitely.
Um, you know, crazy valuable to us.
Um, it's just, I'm almost going to the next step of like, how do we like, you
know, we've got to go back and like redo all of our open projects that we
potentially, um, you know, have.
So.
This is a dumb question, Bruce.
Like I hear like, um, uh, that it's, it's, it's valuable that it's that, you
know, that, um, that the, you, that there were more ideas that, um, you had more
freedom that being in the document felt wrong.
But like, what, what's, what's, do you see something going, being different
downstream from this, in this project as a result of this, like what's the
impact or what's the, where does this, how does it make a difference?
I feel like, you know, we, we've kind of had this attitude, like we get as much
as we can in the pitch and then we just dive head first into it and figure it
out along the way, we sort of figured it out as a lot more deeply now.
So I feel like if we hand this off to Nada, like honestly, like we've really
like set Janata for the win, um, and much better, like there's still, obviously
there's going to be some, some challenges potentially as we get into it.
Um, questions will pop up.
We'll answer those, but I feel like, um, yeah, this is, this is a better way to
like work together as a, as a team, um, because we're, we're not expecting one
person to just figure all this stuff out that we just spent, you know, five of us
and three hours trying to resolve, right?
Like there was a lot, and of course we were doing it in baby steps today, but
it took like, this took a lot of different, this took a lot more.
time, whereas we're like, Hey, we're, you know, spend two hours, got the whole
thing shaped, let's dive into a two week project, you know, that's not that at all.
Like we've, you know, we've just put in, you know, whatever, 15 man hours of time
that's gone into the last few hours.
And now when we're still like, yeah, there's still 20, 30%, that's kind of
still unknown and we still need to go flush some stuff out.
Um, so that's it.
Yeah, cool.
Super.
Um, uh, do you guys, are you, do you feel clear on what comes next?
What do you do next on this project?
Yeah, I had notes just to like basically keep, um, determine that appetite,
have some discussion, like let just filling out the nine grid, you know,
and then having some discussion there and see where we can either
cut or push it up to three weeks.
Um, yeah, I'm happy for us to like the, the learning part.
So there's two parts to it.
Like, yes, let's go build group DM.
That's a side benefit.
Like the real, you know, frame of this is like, we, I'm happy to spend a little
more time on it because we're trying to do this a totally different way.
So that would be worth, that's where the third week would come or the
second or third week would come in is like, oh, we needed more calls.
We had this whole call, right.
To, to kind of justify this as even part of this bigger project of like our team
needs to learn our level up, like how we're shaping and executing projects.
And I a hundred percent, like I'm seeing the value.
I know this is going to be like a game changer for every client we're working
with.
And, um, this is sort of, there's, this is definitely, I think when we first
talked, Ryan, you're like, what would it mean if we got better at this?
I was like, well, it's like all these things that would, would
get, would get better.
Right.
Um, uh, and I can see that now, like, yes, this is, this is sort of the key
to how we can scale a lot and even do more work, um, more effectively
because we've, we've not left.
You know, we, we almost took like the hill chart idea as like, just start
the project and on day one of the two weeks and just sort of like go up the
hill, figuring out all this stuff along the way and somewhere in the middle,
it's going to feel a little easier.
And then it is, but I feel like we've kind of, we're kind of starting to
see the top of that, the hill here now.
Yes.
We're kind of like, now it's like when I hand it to Jonathan and it's
like pretty downhill, like he may run into some stuff, but nothing, we can't
solve in a couple of comments and maybe a quick, quick huddle here, there in Slack.
Um, so that's, that's a really key, key observation.
Um, when we teach it, when we teach, teach like shaping in real life, as
opposed to like the book version, um, the, the key update is that there's
really like just one hill and the shaping is the uphill and the building is the
downhill.
So like that, that feeling that you had that, like, we're already
feeling that we're at the top.
Like, that's what we want to feel.
We want to feel like that at kickoff, you know, yes, there's the downhill.
It kind of has these like nine bumps that kind of, there's going to be these
like a little bit up again and a little bit down again, like boom, boom, boom,
boom on your way down.
But, um, but it's not like a climb up, you know what I mean?
Like you're basically going down through the, through the, through the whole build
time.
Perfect.
Yeah.
Awesome.
Cool.
Also, I want to be able to type as fast as you.
Yeah.
Well, let's see how long, maybe we'll get the neural link in the wristband
soon or whatever, you know, like you either using AI to dictate this right
now, or you're just insane with that.
And I was like, Nope, he's funny.
I, I, I didn't realize I was sharing my screen as I was transcribing here.
Yeah.
Well, good thing I wasn't doing anything embarrassing, you know, um, you know,
that just kind of felt like this is the important part.
I got to make sure I capture this.
Um, fantastic.
Okay.
By the way, sorry, I had a little bit of a camera issue.
It looks like along the way, but anyway, we were looking at the screen together.
So, um, fantastic.
Good. Okay guys.
So, um, Bruce, we'll be in touch about what you want to do, um, for June and,
um, uh, uh, thanks everybody, you know, really nice work, really nice team, nice
work, and, uh, really happy with where we got to, thanks Ryan.
This is awesome.
All right, everybody.
Take care.
Have a good one.
Cheers.