ChatGPT Plugin Hackathon: PromptWizard

April 10, 2023

Presenting at the Hackathon

I went to my first hackathon in years this weekend - building plugins for ChatGPT. Launching a plugin over the weekend was super fun and it was great to see how the app store of the future might work.

In 5 years, most of us will have AI assistants that we use more than Google - maybe more than email. Our default behavior will be to ask our AI to research things for us, schedule events, and coordinate with other people.

A good example of the power of having an AI interfacing with APIs was from WhatTheHail, a plugin that was demo’ed which allows ChatGPT to access weather data. Although you might think this data is a little boring, it suddenly enables the AI to do combine the weather intelligently and do smart things that aren’t built-in to any specific app.

For example, tell you which day to go running this week, buy a plane ticket to somwhere sunny this weekend, recommend clothes to wear on Saturday, or book an outdoor restaurant on an upcoming nice day.

See the demo video below

The plugin I built is PromptWizard, a social platform for sharing and voting on the best prompts for ChatGPT. Users can search for useful prompts for their tasks (e.g. business analysis or character impersonations)

I explicitly took advantage of ChatGPT’s natural ability to follow logic and manipulate language to offload some of my development.

I had only implemented a very basic search for plugins, but an hour before demos were supposed to start I wanted to implement semantic search rather than pure keyword search. For example, searching for prompts related to George Lucas should return prompts that would make ChatGPT act like Darth Vader or Jar Jar Binks from Star Wars.

The way I implemented this is by just adding instructions to ChatGPT to brainstorm related keywords before performing a search. I didn’t implement any intelligence into my app. Here is a snippet from the openapi.yaml file that describes my API:

      summary: Search for prompts. You can pass in up to 5 search terms as a comma-separated string. You should always brainstorm 5 related terms to use even if the user does not provide a full five.

It’s possible to give the AI some hints about smarter methods of using an API and it just works!

Now when searching for prompts related to George Lucas, ChatGPT also added Star Wars as a keyword and the correct character prompts appeared. Much easier than setting up a vector or embeddings database so close to the demo deadline.

Missing Features of ChatGPT Plugins

There are two, related, missing features that would make ChatGPT plugins great.

Triggers / Notifications

Currently, ChatGPT only ever performs an action as an explicit response to a user request. Many developers at the hackathon struggled with this. Any plugins that related to sending messages/SMSes/Emails or kicking off async tasks could not notify the user when there was a response. The UI paradigm that most went with was “Ask ChatGPT if anyone replied to my message yet”. That’s super annoying to users and would cause it to be very easy to miss a response.


ChatGPT doesn’t interact with plugins pro-actively. I’d like to tell ChatGPT to pre-load user’s favorite prompts at the beginning of any session in which they have enabled the PromptWizard plugin. This would help the user not need to remember to ask ChatGPT to look up their favorites before they are usable.

This one may actually be fixable with the right instructions to ChatGPT about how to use a plugin. More experimentation needed.

Persistent agents are the next step

These missing features all point to a clear next step for the AI assistant UI paradigm that we are moving to. AI assistants need persistent memory and they need to be able to execute asynchronous tasks on their own. This means they will eventually be agents.

We’ll ask them to organize a dinner party and they will not just check our calendars and email our contacts, but they’ll wait for responses, remember to send follow-ups, etc. This is only possible with a long-lived session.

m [at]