Friday Updates: Shipping AI Suggestions in Preceden, EmergentMind Growth and Brainstorming

Preceden

On Tuesday I shipped the v1 of Preceden’s new AI suggestions feature to 10% of new users:

I had planned on slowly rolling it out to 100% of users over the course of a week or two, but my OpenAI costs were minimal on Tuesday so on Wednesday I said screw it and just made it available for everyone.

OpenAI costs continue to be $0.50-$1 per day, so not bad at all.

I also set to work figuring out how to use OpenAI’s embeddings feature to automatically suggest meaningful icons for the suggested events. It wound up working amazingly well:

It works so well that after I’m done with this blog post I’m going to work on updating Preceden to automatically pick icons for manually-added events as well, though still give users a way to pick an icon if they’d like.

Also, Milan (Preceden’s designer) and I have been making lots of updates to the suggestions tool to improve the UX. It’s coming along well, though still lots of room for improvement, especially around the experience for users on free accounts (which are limited to 10 events per timeline):

Also starting to brainstorm what a stand-alone tool that logged-out users can use would look like and be called:

Funny that 6 people out of 14 voted for “Something else” but no one responded with alternative suggestions. Thanks y’all 🤣.

I think the stand-alone tool has a huge amount of potential, both in terms of building awareness for Preceden (hopefully the launch garners a lot of attention) and driving revenue (I’ll have a big CTA on the stand-alone tool to let people save their timeline to Preceden, hopefully converting a lot of them into customers in the process). Hopefully will launch it in 2-3 weeks.

EmergentMind

No significant progress on EmergentMind this week.

Milan created some fantastic mockups for a new site design in Figma and last week I was able to implement 90% of it, but it still needs some additional work before we can roll it out to everyone. Maybe by the end of next week.

The Emergent Mind Discord is up to 27 people, and we actually had some discussions this week about the future of prompt engineering:

Also quite happy with the growth of people signing up and posting their own ChatGPT examples to EmergentMind. From the homepage right now (notice the various user names of people posting):

Still figuring out what direction to take EmergentMind though.

Candidates include:

  • Focus on prompt engineering: build tools, write tutorials, list educational resources, etc
  • Focus on Large Language Model (LLM) examples (ChatGPT currently, plus eventually others)
  • Focus on building a community of people interested in LLMs or AI more generally

Re-design first, then I’ll make a decision about what direction to take it next. Suggestions welcome!

Thanks for reading 👋

Friday Updates: Prepping TimelineGPT for Launch, Viva la EmergentMind

Preceden

This week consisted of Milan (Preceden’s designer) and I getting TimelineGPT (the AI content generator we’re working on) from 80% ready to ship to 98%. Lots of small, boring tasks like:

  • Figuring out the UX after users click the “Add to Timeline” button in the suggestions dialog. Do we close the dialog? Keep it open? If we keep it open, do we uncheck the suggestions they just added? Hide them completely?
  • Sometimes GPT returns 1 suggestion for a topic, other times 30. When it returns just 1, should Preceden automatically try again to generate more? But then when you combine the results, there can be duplicate suggestions, but not exactly identical, so how do you figure out how to make the final list unique?
  • Adding lots of unit tests to ensure everything works as intended and edge cases are handled.
  • Integrating into OpenAI’s moderation endpoint so users can’t try generating timelines for inappropriate topics.
  • Setting up attribution so I can tell which new customers upgraded after using the suggestions tool (which will be important since using the GPT API will cost money, and I’ll need to carefully monitor the ROI of this tool).
  • Debugging a weird bug that stemmed from using Ruby’s AASM gem with Delayed Job.

Hopefully can launch the v1 early next week, rolling it out to 25% of users and then monitoring costs and usage before ramping it up to 100% within a week or two.

Plus normal support and maintenance like fixing this lovely bug that has probably lost me a bit of money over the years:

LearnGPT EmergentMind

I renamed LearnGPT to EmergentMind for reasons outlined in this post. Feels like the right move long term.

Other things:

  • Last week Andrej Karpathy, one of the leading AI educators in the world, demoed LearnGPT in the first 2 minutes of his recent intro to GPT lecture on YouTube. That explains the traffic spike 📈.
  • Milan and I are working on a big redesign to the site which should ship late next week or early the following week. You’ll get to see the difference between what I can do as a developer who is adequate at design and what a talented designer is capable of 🌈.
  • I started an EmergentMind Discord which is up to 13 people. I definitely feel like an old man though figuring out how to use Discord. At the moment, I’m just sharing product updates in there. TBD what it winds up being long term.
  • Various updates to EmergentMind: adding an account page so users can manage their account, including deleting it if they choose, as well as changing their password and email (for users that signed up via email and password and not Google OAuth). Also added an “About” field there which is displayed on new profile pages for EmergentMind users. Here’s mine. Not a bad v1 profile page, but looking forward to Milan redesigning it in the future.
  • Spent some time exploring the prompt engineering space, which is the tentative direction I’m taking the site. There are already a lot of tools like EveryPrompt and some educational sites like LearnPrompting.org that EmergentMind may or may not wind up competing with. We will see.

Thanks for following along! 🙇‍♂️

LearnGPT is now EmergentMind

Naming things is hard.

Shortly after ChatGPT launched at the end of November, I decided to build a site to share ChatGPT examples and eventually be the home to educational content to help people learn more about GPT.

To my surprise, there were a lot of relevant available .com domain names related to GPT, so I registered a bunch and asked for suggestions on Twitter for which to use for the site:

And so I chose LearnGPT and for the last month and a half that’s been the name of the site.

On its surface, it’s a great name for a site focused on teaching people about GPT.

But, it has some issues:

  • People kept referring to the site as “Learn” in conversation because saying “Learn GPT” is clunky. “How’s ‘learn’ doing?” (looking at you Dave…)
  • In two years will we still be talking about GPT or one of the many other Large Language Models (LLM) coming out? Incorporating content on the site about them would be awkward if the name of the site referenced GPT.
  • And most importantly, the name “Learn GPT” meant that the site would forever be constrained to being an educational site about GPT. That likely meant monetizing it down the road via an info product which wasn’t interesting to me at all, so much so that it almost led me to shut the site down.

The hunt for a new name

I wrote a little Ruby script to search for available .ai domain names, hoping to find one to rename LearnGPT to:

… but unregistered quality .ai domains are few and far between, so that approach didn’t lead to any good candidates for a new site name.

Then it occurred to me… I already own a great domain I can use for the site.

EmergentMind

Around 2014 I got very interested in the concept of emergence and created a site called Emergent Mind to build little projects to explore the space more. In the end I wound up creating 10 interactive visualizations: Boids, Game of Life, Cellular Automata, Tree Growing, Biomorophs, The Evolution of Color, Animorphs, Forming a Planet, The Perceptron, and Neural Network.

You can still play around with them if you’d like courtesy of Archive.org:

EmergentMind archive

It dawned on me recently that the name “Emergent Mind” was a great description for the end result of these Large Language Models like GPT: a mind of sorts that emerges from the machine learning process.

I didn’t own the Twitter handle @EmergentMind but thankfully its owner was kind of enough to give it to me for free which solidified my decision to use it as the new name for LearnGPT.

What’s next for EmergentMind?

In the course of integrating GPT into Preceden recently, I realized just how difficult prompt engineering can be. You might have some task in mind for GPT or another LLM, but what’s the best way to ask the question to get a great answer? It’s as much of an art as a science, and I think there’s an opportunity to build a community around this nascent skill.

So, instead of focusing on GPT, I’ve decided to focus on building a site for people interested in prompt engineering. Imagine educational content, tools, and a Stack Overflow-like community all built from the ground up, infused with AI, to help people learn to communicate with these new AI technologies more effectively.

And the name is flexible enough that if that prompt engineering direction doesn’t make sense long term (will prompt engineering still be a thing in a few years?), it’s easy enough to pivot without another name change.

Here we go 🚀.

How would an evolving website work?

As a web developer who is also interested in A/B testing and evolution, it occurred to me that it would be fascinating to try to build a website that optimizes itself. I’ve been kicking around this idea for a while and wanted to share a few thoughts on it here to get feedback from anyone else that finds the idea promising.

Here’s the idea:

In traditional A/B testing, you specify multiple variations of some aspect of your site, measure which variation performs the best, then make the winner the default, and repeat. The types of things you test can range from simple headline and button color tests to complex tests that affect the user’s entire experience with your site.

In all of these cases though you have to figure out what variations you want to test. If you’re testing the headline, you need to specify which headlines you want to test. If you’re testing button color, you need to specify which colors to test, etc.

In the natural world, we see stunningly complex and optimized life forms that evolved little by little over billions of years. Evolution is similar to A/B testing in a sense, except that in evolution the variations happen by accident through genetic copying errors. Most of those mutations decrease the organism’s odds of reproducing, but occasionally they confer a benefit that causes that organism to have a better chance at surviving and reproducing. When that happens, the mutation gets passed on and may eventually spread to the rest of species over time. That “simple” process is what has led to all of the variety of life on earth.

Optimizing a web page through evolution poses many issues though.

How do you algorithmically mutate something on the page? Could you write a function that generates variations of a headline? Maybe. Would those variations be any good? Would you trust it enough to deploy into production?

I bet by analyzing tens of thousands of webpages, you could algorithmically identify common headline wording structures. Then maybe you could write code that intelligently customizes those headlines to your service.

You might be able to do the same with design. If you tried to categorize hundreds of homepage layouts, I expect you’d probably wind up with 20-30 common layouts that cover 90%+ of websites. Could you then write an algorithm that automatically tweaks your site’s layout to test these different layouts on your visitors? Could you do the same with color schemes? Maybe.

There’s also the problem of statistical significance. Running a simple two variation A/B test can take a long time if you don’t get a lot of traffic. Trying to get significant results for lots of algorithmically generated headlines might take forever. But maybe there are ways around that like the multi-armed bandit algorithm.

To sum it up, I think you’d need the following: a way to intelligently generate mutations on headlines, buttons, layout, etc + a ton of traffic or some novel method for picking the best variations + an organization that is willing to try such an experiment. It would not be easy, but I think it’s possible.

Imagine if it did work. Maybe your homepage converts users into sign ups at 10% now. You flip a switch, and in 6 months it increases your conversion rate 30% without any intervention on your part.

It would be revolutionary… if it worked.