What does an AI-first Substack look like? What if we take a radical redesign of our platform, and have it work like a helpful intern.
Imagine if you had a full time assistant that could help you with all the annoying parts of running your newsletter. At every step of the way, the assistant provides guidance on what our recommendations are, explains them, and lets the user choose.
Why is this better than a UI?
Natural language unlocks barriers to entry for people who aren’t comfortable with technology. It unlocks features that would be otherwise hidden deep inside the dashboard and/or hard to use. Features become more accessible (doable on a mobile phone, or with voice) and easier to discover (just ask).
On the tech side, we can simply build APIs for LLMs to consume, freeing a ton of eng and design bandwidth. Eventually the LLMs will be able to string data from multiple APIs together, enabling features without us actually building them.
What does this looks like?
You land on the Substack home page and get a chat interface.
Substack Gary: Hi, I’m Gary. I’ll be helping you today. To get started, what’s your name?
Jen: i’m jen
Substack Gary: Hi Jen, what can I help you with? Would you like to set up a newsletter?
Jen: yes, i’d like to set up a newsletter
Substack Gary: Great, you’ll find Substack is the best at [marking stuff]. Do you have a name in mind for your newsletter? If not, I can help with some examples.
Jen: i’m thinking about writing about cooking.
Substack Gary: We have several successful food newsletters on our platform. Any specifics you’d like to write about?
Jen: I’m not sure yet
Substack Gary: Ok let’s call his “Jen’s Foods” and your newsletter will be on jensfoods.substack.com. Don’t worry we can always change the title later.Jen: ok
Substack Gary: [Creating Publication….] [OK][NO]
Substack Gary: Ok your publication is ready. Let’s set it up so it looks just like your want.
Technology
Gary has access to a private, documented API and can invoke API calls on behalf of the user. We will provide Gary with a bunch of example transcripts like the above. When Gary is about to do something, we’ll verify with the user. We keep a record of all the user’s interactions with Gary, so Gary will have context on what the user did before and why. He persists across user sessions and page navigations.
Gary can generate UI on demand based on what we return from our API calls. For APIs that require user input or confirmation, the API can return a “prompt” object which tells Gary to prompt the user. For data (eg: your current posts, your drafts, etc), the API returns raw data that Gary can display directly in a table or generate a chart using a 3rd-party charting library. Gary would get access to some limited querying capabilities so he can do things like:
What’s my best performing post
Find subscribers who signed up in the last 10 days
Show me a chart of open rates for my post based on the day of the week that they were sent out.
Gary can also ask the user to upload a file and provide links to file downloads. For example:
Jen: i have a list of subscribers i’d like to add
Substack Gary: Do you have a file with the list? Upload it here:
[Upload box]Substack Gary: Looks like this is a list of 120 emails. We’re going to import them now. (API returns a “[Prompt][Info] Import in progress”
Substack Gary: Done. There was a problem with these 3 emails: xyz@example.com, … (API does a callback to the LLM once import is done, generates a response to send to the user based on the import results)
With these primitives, Gary would be able to do most dashboard actions. It can also do things that we currently can’t do, based on the innate capabilities of the model and any plugins it can use (eg: code writing):
Jen: I’d like to send an email to everyone who subscribed last month from Spain, thanking them in spanish.
Substack Gary:
[Plan] API call to get everyone who subscribed last month. Look at their IP address, check if the IP is geolocated in Spain. Get those email addresses and prompt the user
[Action] API call fetching subs in the last month and their IP address. Write and invoke a script to count the # of IPs geolocated in Spain.
Ok I found 20 users from Spain that signed up last month. I’ve drafted the following email for them:
Dear [user], thanks for subscribingWould you like me to send this email? [Yes] [No]
Since Gary has access to your entire chat history, he can remember your preferences. Next time you create a post, he can:
schedule it for publication to paid Friday
release it to free subs on Monday
make a thread on Twitter about it on your behalf (but verify the wording with you)
make a post on Instagram using media assets with a generated image
Even at the current GPT-4 level of capability we may be able to build something like this. And as the LLMs improve, we get improved capabilities for free. Eventually they’ll be able to string together multiple API calls and write simple scripts to implement workflows like drip campaigns and targeted and personalized emails, without us having to implement these features in the UX or API layers.