014 - Coda Packs with Courtney Milligan
Jonathan: Welcome back to the
Robot Factory, a podcast where
we record ourselves trying
to build software to sell it.
Um, I don't have my co-hosts today.
I have a guest, our good friend
and colleague, Courtney Milligan.
Hi Courtney.
Courtney: Hello Jonathan.
Jonathan: Uh, would you
mind introducing yourself?
Courtney: I'm a full stack
developer at Two Story Robot.
and I do software development
for Two Story Robot, but also
for our company called Little
Robot that does no code work.
and I've been working on some packs
for Coda, which we'll talk about today.
Jonathan: we've talked about a little
bit about Coda on the podcast, but remind
people what is, how would you describe
Coda to someone who doesn't know?
Who doesn't know what it is?
Courtney: Um, it is fun fact, it's A Doc
backwards, um, that's why they called it
Jonathan: Oh, I
didn't know that.
Courtney: Mm-hmm.
. Yeah.
So it's like a.
It's a collaborative doc that supports
more of like Excel functionality than
Google Docs or something like that.
Um, so you can use like
formulas and stuff and buttons.
Um, but it's like a collaborative space
that people can, add things to, um, and
seeing what other people are doing in it.
Jonathan: What are some of the things
that you have built with a doc backwards?
Who told you that, by the way?
Did you, Did, did one of the Coda
people tell you that, or did you
learn that?
Courtney: I found it in a video by Coda.
I don't remember which one.
Yeah.
Jonathan: Huh?
Well, yeah.
What are some of the things
that you've built with Coda?
Courtney: the main one was,
uh, a sawmill tracking tool.
For a client.
Um, so she was tracking everything
in Excel, um, and it was not very
automated, so there was a lot of
like copying and pasting and stuff.
So we moved it into Coda and simplified
a lot of the processes so it could
pull data from wherever it needed
to and reduced a lot of her work.
Um, so things like tracking,
incoming log loads is what they
call it, um, into the saw mill and.
the production process, which is actually
like cutting and shipping the wood.
Jonathan: Sweet.
And she's using it now, uh, with success.
Courtney: Yeah, she really likes it.
she frequently contacts me with feature
requests for it . So she's enjoying it
though.
Jonathan: has it evolved a lot since.
Since the first, The first one,
or is it just sort of small stuff?
Courtney: Um.
, there's medium, small to medium
changes like noth no major overhauls,
although she recently requested a
major overhaul, which she didn't
realize was gonna be a major overhaul.
And then we talked about it more
and decided it wasn't worth it.
But yeah, generally it's been small
things like, um, sending emails
automatically instead of like her
downloading a table and sending it manual.
Jonathan: Yeah.
What I mean, she was using an
Excel spreadsheet for this, or
sorry, a Google sheet, right?
She was using Google
Sheets?
Or was she using Excel.
Was she using Excel?
Oh, okay.
If you couldn't build this with Coda
or Excel or like no code and you
couldn't use, you couldn't do this
with code, so you had to use other
software, do you think you could,
you could, um, make this work for
her or solve this problem for her?
Is there other tools that you
could, you could have bought?
Like is there, There's
no saw mail tracking tool
Courtney: Uh, we didn't
Jonathan: you could cobble
some things together.
Courtney: Um, I don't know.
if you listed like my, all
of the things that I use.
So I don't know how to make
something without those, but, um,
Jonathan: Well, what does it do?
I'm, I like, What, what, Uh, I
guess maybe, maybe I'll flip the
question around a little bit.
What jobs does it help her do?
So it helps her track loads
coming in and sawmill process,
um, but some other high level things.
What does it,
Courtney: um, okay.
Well for.
The loads coming in.
It simplifies her, her process cuz she
was like manually typing out each of
the entries for each load that comes in.
I wanna say there's like 20 different
fields that she fills out, but now
they're most autopopulated, um, based on
like a couple inputs that she puts in.
And then the other big part that,
well the, one of the big parts
that she was spending a lot of time
doing is calculating average wood
densities for each type of wood.
and now it's just automatically calculated
from all of the loads that she inputs.
Um, so that process is like, she
basically doesn't have to do anything
now, and she used to have to.
Copy and paste things into other sheets
and then like manipulate it and stuff.
Jonathan: how, how long did it take you
to make the first version of it roughly?
Courtney: too long.
uh, , oh, I don't know.
I wanna say like three
or four weeks full time.
Jonathan: Yeah,
Courtney: But I was also learning
Coda while doing it, and so I had
to kind of fix some things after I
had already made them a certain way
to make them a better way later.
Um, and now if I were to redo it, I'd be
able to do it faster and better, I think.
Jonathan: yeah.
Courtney: Yeah.
Jonathan: Um, previous to Coda, what.
Did you do?
Like you didn't, you didn't know Coda,
Courtney: Um,
Jonathan: Tell me what your background is.
Courtney: I was working in management
consulting before working here, and
we did a lot of Excel with really
big data sets for, uh, mostly like
manufacturing plants So a lot of.
my knowledge of the formulas and stuff
in Excel translated to Coda, and then I
learnt it so that I could get hired here.
Jonathan: But it was a, So somebody coming
from, uh, like a heavy Excel background,
you, uh, found Coda pretty easy to adopt?
Courtney: Uh, yes.
It was pretty easy.
There's like small differences
in the formulas, but the Excel
background helped a lot, I think.
A lot of people who don't have the
Excel background struggle with it,
and that's why they like to hire
people like us to help them with it.
Jonathan: Right.
I've always, I've always found Coda to
be, in some ways like Excel, but the,
the way the formulas work, they feel, I
feel a little bit more at home as someone
who comes from a coding background.
Like I don't, I don't really love Excel,
partly cuz I don't know it that well.
Um, but I find the way you
write formulas in Coda.
reminds me more of how I think about, um,
how I think about problem solving in code.
Um, and that's, that's
why I like it a lot.
Um, but
you know, I was curious how
Courtney: I guess one example is like
Coda has a formula map, um, formula
that is basically like a for loop.
And Excel doesn't really have the concept
of for loops unless you write a macro.
Jonathan: Yeah.
Courtney: Yeah.
So there's stuff like
that that's more similar.
Jonathan: Yeah, and I just find the
syntax a little bit more expressive to
the way I want to think about things.
Like, I feel like in Excel you've gotta,
you've gotta nest so many things together.
Whereas in Coda, you can
often chain things together,
which I, which I like better.
It
feels just maps to the way I think
about things a little bit more easily.
Courtney: Yeah.
And they, the interface
is just a lot nicer.
You can, like, I forget the word,
but like prettify your formula so you
can, it like indents it and stuff.
Um, whereas in Excel sometimes
you write a formula and it just is
just this giant block of formulas
and it's very hard to follow and
coda like colorize it and stuff.
So yeah, it's a lot nicer.
Jonathan: yeah.
You did this project, and then you've
also built a couple of packs in Coda.
What, first of all, what are packs?
Courtney: Packs are, uh, add-ons
that you can add to your Coda Docs
to provide additional functionality
that's not built into Coda
Jonathan: like what, Uh, without
talking about yours exactly, but like
what's a, what would be a common pack
Courtney: Uhhuh .Um, there's a Gmail pack.
That lets you connect your Gmail
account and then you could send
emails through Coda, like if you
had a, a table or, Well, no, not a
table, A page that you wanted to send.
Jonathan: how did we come to decide
to make the packs that you've made and
what are the packs that you've made?
Courtney: Um, so the first pack is called
export Tables, and it just basically
lets you make a button in your Coda
doc to export your table, which sounds
really simple, but, um, it was not a
built in functionality and coda it was
something that we wanted to do for the
doc that we built for our saw mill client.
Um, and then we looked around a bit
and saw the other people from the Coda
community were asking for this feature.
So we decided to build this pack
that just, yeah, has one formula
that lets you export your table.
Um, but actually before building the
pack, we built a custom website to do
this because packs weren't a thing yet.
And then midway through doing
that, they announced that they
were gonna let people build packs.
So that's kind of funny
how that worked out, but
Jonathan: Oh, that's right.
Yes.
Cuz you.
Because there was a way to
extract the table information
using coda's API that was
Courtney: Yeah.
Mm-hmm.
.Yeah.
And people are still using that,
but I don't know if you still
follow that channel in Slack, but
I still get notifications all the
time that people are using it.
Um,
Jonathan: That's a more
cumbersome solution, right?
Like you've gotta, you've gotta, do a
little bit more work to make that happen.
And you've gotta go to
a whole nother website.
Courtney: Well, yeah, once you, once
you have it set up, then it doesn't
have require any extra effort cuz
you can also put it in a button.
Um, but yeah, the set initial setup, you
have to like manually set, connect it
to your account instead of in Coda you
just like click install pack and then
Jonathan: Right.
Courtney: it can exit for you.
Jonathan: So, so we, we wanted to build
this for our client cuz you, why did,
why did she need to export tables?
What, what was the need
Courtney: Um, I think the main reason
was, um, she generates daily reports for
each of her, log vendors showing a summary
of what they've delivered and they, the
saw mill industry uses like some sounds
like ancient tool that only accepts CSVs.
I don't know, like, it sounds
like a lot of people use this
tool in the saw mill industry.
So anyways, she had to like, download
them as CSV and then import them into
this tool, and her vendors did as well.
Um, so she was manually, copying
and pasting the table out of Coda
into Excel and then sending that in
Jonathan: Uh, I see, I see, So
now, now with this, the tool that
you built on the web, this website
that you made, how did that work?
Rough,
Courtney: The before the pack.
Jonathan: Yeah, the before the
Courtney: Oh, okay.
Before the pack.
Uh, actually, I don't know
if I set that one up for her.
I don't remember.
But, um, you, she would basically have
had to get her API token from her coda
settings and put that into our website
and then put in like the table name.
. Uh, so it knew what to export, and
then it would re generate a unique
URL for her that she would put in
her coded doc in a button and then
click on that to download the table.
Jonathan: But it would download the
table and then she would email it.
Courtney: Yes.
Yeah.
That was the first version.
Mm-hmm.
Jonathan: Okay, so then you made, So
now, now, uh, Coda announced that we
can make packs now, which I think we
always suspected was going to be a thing.
Courtney: I
Jonathan: Did we suspect that?
I
don't
know.
Anyways, they announced
that they were gonna
allow people to make
Courtney: they already had packs,
internal packs, but they, they
didn't like mention anything about
opening that up to the public that I
Jonathan: Yeah, I, I, think if you
were, we have the benefit of hindsight
looking back, but I think if you were
to look at it, uh, with a strategic
hat on, you could probably see the,
the, the path where that's how they
would anyways, doesn't really matter.
They created, they've created the,
the, um, Some pack, some kind of
pack, program, pack opportunity.
How so?
What?
What
happened?
Courtney: Um, okay.
So they announced that they were going
to, um, let makers, like people who use
Coda start building their own packs,
and they announced initially that they
were gonna do a beta trial for it.
So right away we signed up for that
and we got accepted to the beta.
And that's where we made our free
export tables pack that just has
that one button that we talked about.
Jonathan: Mm-hmm.
So the export tables, uh, pack is a
button that you, you can press and
then it, it, you have to connect it
to a table and then it'll export it.
Is that how that works?
It'll
Courtney: basically, um, it doesn't
work quite how I would like it to work.
, you can make, uh, buttons in packs,
but in order to download the table,
we needed the pack to be able to
open a new window so that the browser
could download the, the, um, table.
Um, but you can't open
windows with uh, pack button.
So we had to just return a URL that
the user would set up in a button.
It uses a built in formula
to open a new window.
Um, so it's like slightly
more set up, but yeah.
Jonathan: Yeah.
So we made this free pack.
Courtney: Mm-hmm.
Jonathan: and is that, is
like, was that good enough?
Was that enough
Courtney: um, well a lot
of people started using it.
I think almost right away we
got like 50 users or something.
Um, so we were kind of think.
, maybe there's more we
could do around this.
that's kind of around the time that Coda
announced that I think I, I don't remember
if I'm getting my timelines right, but
they announced the Maker fund, where
if you had a good idea, you could pitch
it to them and um, and then they would
give you some funds to build a pack.
Um, so we had these ideas for the.
Pro versions of the pack that had
additional features, One of them was
sending a table as an email attachment,
which is like, stems from the same, like
initial reason why we wanted to make the
pack, which was for our saw mill client
who wants to send her tables in an email.
Jonathan: Yeah.
And so we applied for that fund
Courtney: So we applied
for the fund and we got.
.
Jonathan: Yeah.
Courtney: Um, so
Jonathan: We, we got, we got all of it.
Like we, what?
We gave them a proposal that
was like, ah, here's the low
end and here's the high end.
And they, they, and we even I
remember when we made the proposal, we.
Sort of cut it in half and we're
like, Ah, this feels like a lot to ask.
So we cut it in half and we
thought maybe they'll, hopefully
they'll give us a low end and on
the off chance they give
us the high end, here's the
high end.
And that was much lower than
what we had originally thought.
And they just gave us the high
end plus a little bit extra
Courtney: Plus I was in USD, which
I wasn't initially thinking it would
be
Jonathan: US dollars.
Yeah.
As a Canadian company
at the time, the the dollar wasn't
doing nearly as good as it is now.
But Yeah.
Courtney: Yeah.
Jonathan: funny.
Courtney: Um, so yeah, we
started building these packs.
Uh, was it initially supposed
to be one pack, but then due
to limitations in packs, we had
to separate it into two packs.
Um, so there was export
to Google Workspace.
Um, which lets you export your tables
into like a Google Drive and then
there's Export Tables Pro, which
lets you send your table as an email
attachment.
Jonathan: Mm-hmm.
Courtney: Um, so we started working
on these and then around that time
they announced that they were gonna
be opening up Pack Marketplace
where you can sell your packs.
So we're like, okay, perfect.
We'll make these more, uh,
Featureful packs, uh, paid pack.
Jonathan: Yeah.
And so now we have, we have three.
There's three packs.
One is free the export tables, and
then there's Export Tables Pro and
Export to Google Work Workplace
Workspace.
Workspace.
Yeah.
Uh, How, what, what does
it cost for these packs?
Courtney: They're $4
each per maker per month.
and most of the workspaces that
are using it only have one maker.
So yeah, they're paying $4 per month,
Jonathan: Right.
And we, uh, How much does,
how much does Coda take?
Courtney: 30%
Jonathan: They take 30%.
So like any, any of those marketplaces,
um, What do you think the benefit
of the benefit is of having,
having this pack inside of the Coda
marketplace?
Courtney: for us.
Jonathan: Yeah,
Courtney: Um,
Jonathan: do it?
Courtney: Well, it's good, advertisement
for us I guess for people to see that we
built it and like look into our company.
Um, it's also like free marketing,
cuz we don't really have to,
We've done some marketing, but
like we don't have to do a lot.
They do most of it.
Jonathan: Coda does most of it.
Courtney: yeah.
And.
Easy.
It's an easy place for somebody
to find the pack that they want.
Jonathan: Yeah.
Right now there's, there's, there's
not actually a lot of packs in the.
Pack ecosystem compared
to other platforms.
Like if you look at the bubble platform,
there's like thousands
of thousands of packs.
There's
lots of garbage in there.
Whereas right now in Coda,
there's, there's not a lot, Uh,
it's still pretty early.
I, I couldn't tell you specific numbers,
but it feels like, it feels like two
orders of magnitude more inside of bubble.
Like
there's.
Hundreds of packs that do the same thing.
or hundreds of
plugins that do the same thing.
Whereas in Coda, there's very few,
and I think that there's, uh, some, some
real opportunity there at the moment.
Um, we're generating revenue
right now with these packs.
It's not a lot, it's not like heaps
of money . Um, but it is, it is it,
it is monthly recurring revenue.
We kind of don't have to do anything
about, like, it just, it just happened.
Um, like you said, we did do
a little bit of marketing.
Courtney: Mm-hmm.
Jonathan: a ton.
I think we could probably
do more actually.
What, what do you think, what do
you think we could do to increase
the number of people that are
using and paying for these packs?
Courtney: I don't know.
It's hard.
I guess on the flip side of Coda, taking
care of all the marketing is that we
don't have a way of contacting our users.
Um, so, but they did, work with us,
separately to contact our users.
So we were able to send out an email,
Coda sent it out, but with a message from.
um, to all of our free users, letting
them know about the paid packs.
So I was hoping that that
would generate more users.
It generated a, a few, I think,
but not as many as I was hoping
for, so I'm not too sure now what
else we could do to our user base.
Jonathan: Yeah, I feel like Coda
feels like there's, it's still pretty
young in even just coda's life.
Like they're.
They're They're still a baby.
They don't have a lot of, uh, I don't
think they have a lot of users yet.
Courtney: Yeah.
Not compared to like Notion or something.
Jonathan: Notion's huge.
It's massive.
Um, but I think Coda could get there
yeah, it's an interesting, it's been
an interesting little, little journey.
Uh, oh, maybe, maybe describe, just,
just briefly, like, working with Coda.
Like they, they gave us some
money, um, and they also, we
also got a like, kind of a free.
free use of Coda, which was,
which is actually really nice.
It's, it's allowed me
to explore some things.
I really like that.
but they also, like you
worked with them pretty
closely.
Yeah.
Courtney: Yeah.
Jonathan: was that?
Courtney: Um, it was pretty good.
basically since I was part of
the beta trial, found a lot of
bugs in the pack environment.
Which was expected
because it's a beta trial.
And so I worked really closely
with, one of the guys who's like
an engineering guy at Coda, to like
explain and discuss these bugs.
they've all been very like, nice to
work with and responsive and stuff.
Um, but I've also found that the
bugs themselves, Take a long time
to get resolved and often the
response I get when I submit a bug
is it's not a priority right now.
Jonathan: yeah,
Courtney: a bit frustrating.
Jonathan: yeah, yeah, yeah.
We've had to find like weird little
work arounds for certain things.
Um, but we have, you know, we've
got those, we've got those three
packs now, two packs generating
a little bit of revenue.
I'm not quite ready to share
how much revenue it is, but it's
maybe enough to buy some coffee
Courtney: Yeah.
Jonathan: It's not enough
to buy anyone a house
Courtney: No.
Jonathan: yet.
Um, but it's, uh, yeah,
it's, it's ticking along.
Courtney: Yeah.
Jonathan: and I've got, I've
got some plans for other packs.
Uh, I know we've talked
about them a little bit.
Um, and so I want to, I wanna explore
some more cuz there's, there's this cool,
uh, forum within Bubble where people are
asking it upvoting for different packs.
And there's a few in there that haven't,
nobody's, nobody's done anything about.
And I think we could do, I think we could
do something interesting on some of those.
Um, so.
I'm keen to explore that some more and
Courtney: yeah,
Jonathan: see where we can grow it.
Courtney: they have that in Coda as well.
I think you've looked.
Um,
Jonathan: sorry, I meant Koda, I meant
Courtney: Okay.
Yeah.
Yes.
Jonathan: Oh, I meant Koda.
Courtney: Okay.
Yeah.
I think that some of those, like top
voted packs would probably generate
a lot more revenue than ours.
It just kind of made sense
to work on ours since they're
extensions to our existing pack.
Um, but yeah, I think there's potential.
Jonathan: Yep.
Um, we're just about at the end of time.
If someone wants to ask you questions,
what's the best way to get ahold of you
or follow you and anything you wanna plug?
Like the packs, , How
do we find the packs?
Courtney: uh, can contact me at
my email, courtney dot milligan
at twostoryrobot dot com.
and our packs are called Export Tables.
Export Tables Pro and Export to
Google Workspace, which you can
find in the Coda Pack Gallery.
Jonathan: Yeah.
And you get a free trial of those, right?
Coda?
Coda has a, a 14 day free trial.
I think you could try them out.
Courtney: Yep.
Exactly.
Jonathan: Yeah.
It's uh, it's super cool.
thanks for joining, Courtney.
This was lovely.
I hope to have you on as a
guest again in the future.
Maybe after we build another, build
another pack, or somehow stumble
upon a magic well of users who
want to use our other packs and
Courtney: Yeah.
If we have any exciting
updates to export tables,
then
Jonathan: Yeah.
Courtney: back on.
Jonathan: Yeah.
Thanks so much.
Um, if you want to just close
off by saying thanks for
listening to the Robot Factory
Courtney: thanks for listening
to the Robot Factory.
I've been your guest, Courtney Milligan
Jonathan: Ah, nice.
And I've been your host, Jonathan Bowers.
We'll hopefully talk to you next week.
Bye.
Okay.