Mun here, and we're just going to keep going live every Tuesday
and kind of bring you guys into sort of how we're
training our team and just some of the things we're reviewing,
keeping everybody on the same page.
So we generally, as a team, don't
do a whole lot of meetings.
We don't do an all-hands meeting or anything like that.
So this is kind of what we do to work,
to talk through a new process, to share
some of the knowledge between the team members.
Last two weeks, we had Janata jump in here and give us
some deep dives on Flutter.
We're going to have Luchin come in in the next couple weeks
and talk about some of the things he's working on.
I'm just going to just share from different points of view
in our team.
And generally, we're trying to focus, obviously,
on how we're using ShapeUp, how we're using AI,
how we're building really cool products
and doing them really quickly with really
a team of one person managing a project by themselves.
And so we'll just kind of bring you guys into the loop
of how we're doing that.
And of course, you guys can ask questions or jump
on here and comment.
So this is really for our team, but we
thought we'd stream it just to hopefully help other people
out.
And always, if you're interested in working with us,
you can check out the link.
There's always a link to apply and potentially
work with the team.
So today, I wanted to do a deep dive into just throw you guys
right into the messy middle of one of our products.
So we have a product here called Tribe Social, something
that we built. I'm going to show you this website.
This is kind of our marketing site here.
And so it's a way to have a mobile app,
host your community.
It's something we built internally and bootstrapped
in 2020, and we've just been chipping away at it.
And so what we have right now is we're
kind of overhauling a lot of different things.
And so typically, when we do a single project,
if you guys have been following along, you know how we do it.
We typically build out a little framing doc
like this, where we talk about the problem,
talk about the outcome.
We talk about the things that we're not doing,
and then we really dive into the appetite.
And then from there, we'll kind of map out currently
how the flow is working and then what we think the new flow
should look like.
And we use diagrams like this to talk about the database.
So this is something that we were working with Ryan Singer
as a team on, and there's just so many different things
we wanted to change all at once.
There's some big architectural changes.
Right now, we currently have JavaScript backend CMS
that's driving a lot of the content.
And then through our years of experimentation,
we dove into Flutter Flow, which had us pull into Firebase.
So there's a bunch of MySQL database stuff going on
where it syncs to Firebase, and it's just a nightmare
to kind of work on and build new features in that.
So one of our big initiatives was
to really get rid of Firebase and then
ultimately get rid of Flutter.
And so what we were going to do is,
over the course of the next few months,
start to work those Firebase out of the system.
And so to do that, there's a number of different projects.
So we have this little sketch here,
which we use this as well for our customers
when we have a big project and we're
trying to think through timelines,
because there's just that many weeks we can do inside of a month.
And so we don't really plan that on this one day,
we're going to start this particular project
and we have six days to do it.
And then this happens.
I like to think of it in the months as far as,
in September, we're going to get this done.
We try to put things generally on a calendar,
but we're not micromanaging specific days have to be done.
We're just looking at, hey, in the month of September,
we kind of need to get this done,
and then October and November.
And this has become the right level of abstraction for us.
It was the right level of summarization, I guess.
Because quickly, anyone can, you guys can look at this,
and in September, we rebuilt our Go Live feature.
So Janata, who you heard from last week,
came in and we actually integrated the 100 MS SDK
into the app, which before we're using a lot of embedding hacks
that was just done really badly in the past.
Now we're using the SDK.
And so we also had a quota project
that allowed certain users to upload
certain amounts of content or types of content.
And then in October, we've been working
through basically taking our entire community feed.
So if you looked at the app, and I'm
going to just kind of bring you guys into it here.
Let's just jump to a page like Pioneers here.
We have a feed that's scrolling here.
And what we have is a way for people
to just post and make a post and just post something in there.
So all of this is going straight to Firebase.
It does not show up anywhere inside of our back end.
So we have a little dashboard here with content and things
all listed out.
And none of that content appears anywhere in that database.
So it works.
It's functional.
But it's not a great solution long term.
And because now we're wanting to like, OK,
how do we list all those posts somewhere in here
and let people moderate things?
It's just kind of a mess.
So that was one of the things that Lucian's been working on
is basically moving all of our community posts
and stuff to be using the new or the kind of core JavaScript
API here and getting out of Firebase
and basically moving totally out of Firebase for this feature.
It's one of the most complicated parts of the app.
And so we said two weeks.
It's probably going to be more like three, maybe four.
Who knows?
We're doing some UI updates we pushed last week.
So we made a couple of changes to the mobile version
of the app.
And then we have some multi-user account management stuff
coming in November.
And then we're working on these group integration.
OK, I think I lost everybody.
Is everybody back?
Did I leave or freeze?
Yes, we're good.
Yeah, thank you, Macy.
Great, I didn't see you guys.
I just can't hear you.
OK, I think that's probably my internet.
I would say we basically have like this very messy Figma
board, FrigJam board.
And so as we're coming up with a little piece of this,
we're kind of throwing out a quick little framing,
like really quick shaping, crossing stuff out.
You can kind of see our work as you work our way down.
And a lot of the time, we had ideas for things that were
like, hey, we should definitely have a way for people
to have a new home page, for example, where you can add
and remove your content.
And so we had an app that we're looking at.
I'll bring it over here.
That's like this, where we maybe wanted
to have a different kind of a layout than just a feed.
And so we mocked that up in a design over here.
And we started to think through, what
would this layout look like?
And because of that, we said, hey, let's
make a new home page builder where customers
can drag and drop rows in here and put different content
together and kind of make it their own,
almost like a little web page builder.
So we went down this whole avenue of,
what would this home page builder look like?
And where would we manage it?
We came up with a whole version one, crossed it out,
came up with a version two, which is a lot cleaner.
And you can kind of just see there's a lot less squares
over here than maybe over here.
So generally, this ended up being a little bit more
elegant.
And we like this idea of being able to edit it
in the front-end app itself and then make some changes.
But then as we got into it, we realized
we're actually going to create this new thing called
group integrations, where we can just
do it a totally custom tab.
And all of our groups are built like this,
where you have a tab for community, tab for courses,
tab for replays.
And then we kept adding tabs.
If you go in here to a group and you
click into a group like this, you
could just turn these different tabs on and off.
And so with that, we started to think,
well, what if we made a way to make custom tabs?
And we came up with this thing called group integrations.
And we said, hey, again, we framed it
as a specific project.
Right now, we can't build custom features for clients
very easily.
We have to think through one core feature that
can apply to all customers.
And so then we thought through, OK, ideally, we'd
love to leverage, already have third-party features.
If we wanted to integrate ad event,
instead of having a events, we had an events tab here.
And you could put the ad event URL in there.
And that was the only thing.
Anyone could turn it on or off.
What we thought we would do is something
a little bit more dynamic, almost like an app integration
library.
You've seen a lot of these.
We could have technically hundreds of apps.
So ad event would have its own little app
or a little integration.
You could enable it.
And then it could have a specific set of URLs
or parameters that you could add to it.
And so that was the frame of this was like, hey, leverage.
We don't have to keep rebuilding this.
We can find ways to integrate more deeply on specific tabs.
And then one of the outcomes we said
is we'd create a set of AI instruction
so that when we want to create a new integration,
we can just fire this instruction up.
And I'll put it in the right directory
and map things out in the code the way it should be.
And we do this currently for reports.
So if you are, I need to get into a real account here.
But if you jump into an admin account,
we have this Reports tab.
And so Reports is something where, as clients are like,
oh, cool, I really want to see x data on this type of table
or whatever, we just had a way where we could basically
create these in about 15 minutes.
And so we can say, hey, I want a new thing,
make a bunch of API calls, set it up in a URL.
I want a filter that filters by group, for example.
I'm going to filter by group.
Then I want to look at the course.
And then I want to see everybody's progress
for that course.
And I want to be able to export to a CSV.
So all the reports have kind of the similar look and layout.
But we can spin them up in 15, 20 minutes.
It's just kind of a more laid-back process.
I think we're back.
Yes, fun.
I'm actually going to just move over to my hotspot on my phone.
I don't know what's going on with the internet.
We're in the country.
It's not that far of a country.
So anyway, just repetitive.
We're going to take the same type of report.
And we're going to spit it out a bunch of different ways.
We created a little AI project requirements.
And so we can quickly spin up new ones.
So this would be great.
You could essentially say, hey, we
could use Cloud or whatever LLM.
And you could basically pass these instructions
to whatever your preferred LLM is.
I'm using Cloud Code.
And I can say, hey, make me a new integration
and use these instructions to set it up in the right way.
And so it just helps get us a head start.
Basically, I wanted to be able to create a new group
app in an afternoon.
And that way, we can spin these up super quick.
So went down this path, very simple.
We just have these tabs you can turn off.
And in the future, we'll have a way to enable.
We call them group app or group integration in here.
So you kind of see how it's working.
And then we start to map up the database.
So we have a groups table.
And generally, we take shortcuts.
So I don't need to map.
There's probably like 50 or 20, 30 fields in here.
I'll just notate it with a little dot, dot, dot.
And then we said, hey, there's a new group integrations table.
And we have this all kind of mapped out.
And then the integrations are going to link.
And here's how this ID connects to that.
And this ID is going to connect to group ID.
And then we kind of put specific things.
Like we may have an integration called Surprise Me, which
is like a spin the wheel type integration, which
has a description.
Maybe there's an API key field or some other things.
And then we thought we had like a little JSON config.
So we kind of already, this is very in progress.
This is maybe 20%, 30% shaped.
But I just wanted to show you our progress, or process
rather, and how we do this.
And we've kind of talked about breadboarding.
But we notate things with like orange
is like a component or a place.
You know, white is just a thing.
You can use it for anything.
It could be a column in a table.
It could be just a note here.
It could be a button on a page.
Logic is always defined there.
Purple, so you'll see things like this,
where like, hey, if group categories, then do this.
If not group categories, do this other thing.
Quickly see that.
And then we use the dark gray for like data structure.
So that's kind of the process we use.
And you can see, we're just putting it all here.
It's not pretty.
And we're taking the time.
These two pages, I think, were probably
the result of a two-hour session, roughly.
And honestly, we're probably not doing any of it.
But we took the time to map it out and really think closely.
And once we made that little progress,
it's very, very much like we're kind of over here.
And we're like, oh, we definitely need to go over here.
And we draw a little circle.
And then once we're over there, we actually
realize, no, the real thing is right here.
But we couldn't have gotten to this spot
unless we had sort of taken these different baby steps.
And so this is still a really good idea.
It is a decent project.
We could go and do it.
But we think there's maybe a better way.
So we're kind of on version two or three of the process
without having to jump in and code together.
So you can kind of see, these are the results of paying
dearly for technical debt over the years for Tribe.
We're being very intentional with how
we threw the product itself before we just go into the code.
And so that's kind of affected.
how we do all apps moving forward,
how we build our team structure, and our process.
So I think that we may end it there.
If anyone has anything, you guys wave at me
if you want to add anything to this monster map.
And so we call this a monster project.
We will then take each of these projects.
Each one of these will become its own Notion project.
So this actually may link down into its own Notion project.
And it may have its own FigJam board as well
when we get specific about specific things.
But little diagrams like this are very helpful.
As a team, we're just trying to get on this page.
I love Notion.
I love all the tasks in here.
But what helps is to get kind of zoom out a little bit.
And we've had to learn how to speak to client
and simplify things.
And yes, it's helpful for clients.
But it's also helpful for a human
that is working on a project.
Because if it's simple, we can all look at it and be like,
cool, this makes sense.
We've got this going on here.
This is happening here.
And we can have big conversations where, hey,
if this is not as important, maybe it goes over here
and put this thing over here.
It's very quick to restructure things
and come into agreement of where the expectations are.
And too much of these big overall projects
are just one massive checklist of things.
And you just never feel like you're done.
And we could spend four months working on it.
We don't really know where we are in the process.
So these are each shippable pieces.
When we're done in October, we're
putting these updates live.
Our goal would be to push this live so people can
start using it in this format.
And then we kind of go to the next thing
and ship that and go to the next thing and ship.
And so by the time we look over the course of four months,
we've made a tremendous amount of progress.
But that helps give us sort of by taking it off
in small pieces.
So I was jumping here to like, so this account management
piece would have its own very long things.
We had kind of like the current thing mapped out.
Then we went to like, I don't know, V1.
There's option A. Then B. I think there's a C somewhere.
There was like a D somewhere.
And then we finally landed on E as the final option.
And you can see kind of the thought process
of how deeply we thought this.
And we have not started coding this yet.
In fact, we have not even confirmed the project fully
with the client.
This one, this one's a sponsored feature.
But we had to get into it deep enough
to figure out where everything was going to go.
Now when we say, I think there's a two-week project
or a three-week project, we're very confident on that
because there's not a lot of unknowns.
We've kind of thought we made a lot of decisions ahead of time.
Even down to like, very loosely, we're
just going to have like, reuse these screens
for certain pieces.
Or we're going to, I think we had something here.
We're just going to like, add a button.
So you can see it's very, very ugly as far as how
we dropped things in here.
And just kind of hacked screenshots together
because it was helpful just to show, generally,
get on the same page about that.
So that's our little process.
I just wanted to show that.
We'll probably take some time to chat as it ends.
Sorry for the internet glitches.
We'll have to figure out what's going on with that.
But that's our process, and we'll