Progress on TimelineGPT, Emergent Mind missteps, finding balance

Photo by Lucas Favre

Hey all πŸ‘‹! It’s been a minute since my last post (for reasons I’ll get into below) so here’s periodic update on what I’ve been up to:

TimelineGPT

About two months ago I launched an in-app tool for Preceden that provides GPT-powered event suggestions to users to help them build out their timelines faster. The tool has been fairly successful in terms of adoption: about 15% of new users try it and add content to their timelines using the tool. It might not sound like a lot, but getting 15% of new users to use a secondary feature is pretty difficult in my experience.

For the next phase of it, I’ve been working on a stand-alone tool that anyone can use even without an account:

Imaging landing on Preceden’s homepage and being presented with a search field (along with lots of examples) that you can use to generate a timeline about any topic, ranging from World War II to a startup marketing plan, to an upcoming trip to Iceland, to a hypothetical zombie apocalypse next month. You’ll be able to download or share that timeline and optionally create an account on Preceden to edit it (which would also require upgrading to a paid plan).

Here, for a fun example, is what you get if you searched for “Billing Joel’s We Didn’t Start the Fire”:

This project is about 80% done functionality wise, but only 10% done design-wise. Probably will launch it in 2-3 weeks. TBD on its impact on the business, but I’m optimistic (as always) about its potential.

Emergent Mind

Two weeks back I announced a new design and new direction for Emergent Mind: instead of a site focused on sharing ChatGPT examples (which is how it started as LearnGPT), it would be an AI news and discussion site:

In retrospect, trying to create a competitor to HackerNews or Reddit, even one niched down to focus on AI, is not realistic. At least not for me. There are many problems with it:

  • While I like browsing HackerNews and Reddit, I hardly ever comment. Trying to kickstart an AI discussion site is much harder if you as its founder are not active in those discussions.
  • And even if I was open to being active in the discussions, it’s very difficult actually getting anybody to participate in a new online community. The whole chicken and egg problem.
  • I don’t have a big audience online, which makes it even more difficult.
  • And I don’t aspire to be some Twitter AI influencer and build a big audience.

Taken together, the whole AI news and discussion direction for Emergent Mind was ill-conceived.

It took launching it to really internalize that for me, so I’m glad I did, but I quickly felt silly for even trying to go that route.

That said, I do very much like the AI news and education direction that I’ve shifted towards since that launch.

Here’s the idea:

  • In case you haven’t been paying attention, there’s an overwhelming amount of things happening in the world of AI right now
  • With Emergent Mind, I’m going to try to surface the most important news each day, and help educate people about that news.
  • And it will be 99% automated, thanks to a deep integration with GPT.

Executed well, I think it has the potential to be 10x better than most other AI news sources. It’s gonna take some time to get there, but I’m pretty excited to take it on.

Balance

Part of the reason I haven’t blogged much lately is because I’ve been heads down coding for the last few weeks and didn’t want to lose an hour of progress by taking that time to write. Needless to say, that kind of mentality is not a healthy, long-term approach and unsurprisingly has left me neglecting other areas of my life and feeling burnt out.

I took some time off last week to rest and reflect and have decided to be a lot more deliberate about moving at a slower, more relaxed pace. Not just jumping into VSCode and coding all day, every day, like I have been recently. Giving myself space to relax and learn and tinker and not feel rushed all the time. Easier said than done for me, especially with the pace of things in the AI world right now, but essential if I’m going to do this long term.

Hopefully it won’t be months again before my next post :)

Friday Updates: Smart Icons, Automatic Suggestions, Dealing with Spammers, Better Icon Colors

Preceden

Lots of updates to Preceden this week:

Improving the UX for the AI Suggestions

When we rolled out the AI Suggestions feature last week, the typical experience for the user would go something like this:

  1. Maybe notice the new “AI Suggestions” button above your timeline
  2. Click it, hit Generate
  3. Watch spinner for a minute and eventually see the suggestions

Lots of UX issues there though:

  • No real incentive to click on the AI Suggestions button besides curiosity
  • Waiting a minute for suggestions sucks and I’m guessing a lot of users bailed before then (I didn’t set up tracking for it yet so can’t say for sure)

To remedy this, I updated Preceden to automatically kick off a suggestion request when the user loads their timeline and display the suggestion count directly in the AI Suggestions button:

That way when they click the AI Suggestions button, the suggestions are visible immediately and they hopefully get that “aha!” moment and see the value in it.

Also, one reason the suggestions took so long to generate is that it was also figuring out what icons to use for each suggestion before displaying them to the user. And at 1.2 seconds per event to figure out the icon, that winds up adding a lot of extra time. My short-term solution to this was to not figure out the icons before displaying the suggestions to the user, and instead figure out the icons behind the scenes while the user is browsing the suggestions. If the user eventually decides to add the events to their timeline, Preceden will see if it has figured out an icon for it by that point and if so, use it, otherwise just use a default circle. Still plenty of room for improvement there, but not a bad solution for now.

Smart Icons

The logic that enabled the automatic icons for the AI suggestions also made it possible to automatically suggest icons for events that users manually add to their timeline:

Some of the automatic icon suggestions are questionable though, so I’m likely going to start tracking what icon is suggested and what icon the user winds up using, and possibly using that to adjust the suggested icons in the future. For example, if Preceden suggests an astronaut for an event, but a lot of users in the past changed the astronaut icon to a spaceship, then maybe Preceden can suggest a spaceship to future users instead of an astronaut.

OpenAI costs

I did worry before all this that the API costs would be excessive, but thankfully they haven’t been:

Spammers

While watching user sessions on FullStory (to see how users are interacting with the AI Suggestions tool), I saw a number of spammers sign up and create link-filled events. Here’s an example:

I wound up building an admin tool to help me identify and ban those users:

And later built a script to automatically block them.

All in all, I banned 715 spam accounts yesterday. Banning here means making their timelines private and locking them out of their accounts unless they contact support. Didn’t want to automatically delete anything (timelines or accounts) because this script could misidentify real users as spammers and wanted to make it easy to let them regain access to their accounts if that happens.

Thankfully, these spammers were easy to identify. They almost always created 1 timeline with 1 event and in the event description they added a bunch of backlinks and Vietnamese descriptions (which I used the DetectLanguage Ruby gem to figure out).

Suggestions Dashboard

I also took some time this week to set up an internal dashboard (in Hex via dbt and Stitch) so monitor usage of the AI Suggestions tool. Here, for example, are the # of suggestions it came up with by day:

The increase is due to the automatic suggestions rolling out.

Icon colors

We’ve made a lot of updates over the last few months to the timeline colors, and some of them wound up conflicting resulting in less-than-ideal icon colors:

Notice how the icons for the darker events are barely noticeable.

Wasn’t too hard to fix though:

EmergentMind

No major updates this week.

Milan (Preceden’s front-end engineer and designer) is busy finalizing the redesign. Should ship next week, and then I’ve got a bunch of updates planned for the next phase of its journey.

Thanks as always for reading πŸ‘‹

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! πŸ™‡β€β™‚οΈ