014 - Coda Packs with Courtney Milligan

How we came up with the idea of building our first revenue generating Coda pack 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.

Creators and Guests

Jonathan Bowers (he/him)
Host
Jonathan Bowers (he/him)
Founder of Two Story Robot. Developer turned entrepreneur.
014 - Coda Packs with Courtney Milligan
Broadcast by