Inspiration

We wanted to see how much you could do without leaving iMessage. Group chats are where ideas start, making plans, debating something, shopping for the party, playing a game, but acting on those ideas usually means switching apps. What if the conversation itself could become the interface? That became Whim, a playground for interactive widgets backed by an agent that can complete tasks for you. A conversation can become a poll, a custom trivia game or a fully booked event, end to end.

What it does

After you enter your phone number on the landing page, Whim reaches out via iMessage, asks questions to get to know you, and builds your profile. Once you’re set up, you can message Whim directly or add it to a group chat.

When prompted by a member in the group chat, Whim can help plan a group hangout autonomously. It'll research venues, find food options, coordinate preferences and help organize what’s needed to get the event set up. It can also shop for you, suggest products and build carts for the group. Once a plan is made it'll be suggested for the members of the chat to approve, or give feedback on. When everyone agrees, Whim can work through the bookings and purchases needed for the event. It shares interactive cards so everyone in the chat can see the itinerary and participate.

It can also generate games for the group, because sometimes the hangout starts in the chat.

How we built it

We built Whim on Cloudflare Workers, with a Durable Object for each chat to maintain its conversation history, preferences, and plan state. Linq connects Whim to iMessage and supports interactive Experiences. Browserbase with browse.sh skills powers web research, interaction, and booking workflows. OpenAI powers the agent’s reasoning and tool use.

Whim uses Shopify UCP to search store catalogs, suggest products and create or update shopping carts. A separate browser checkout flow supports purchasing on the user's behalf with an agent card. We also used Sentry and built an observability dashboard so we could monitor our agent's traces, inspect errors and see which steps were bottlenecks. We used Jev from Typesafe through Vercel AI Gateway to evaluate web search relevance before fetching pages, and to route generated game requests. Our website built with React and Vite handles signup, account access and event information. A native SwiftUI iMessage extension brings interactive plans and games into Messages through custom widgets. Challenges we ran into

A group chat can be a very messy interface where people send messages in bursts, change their minds, and talk about several things at once. We had to help Whim understand the conversation while deciding when to respond. We addressed this by having it respond to explicit @mentions, while keeping the surrounding conversation as context. Connecting model output to real actions was another challenge. Browsing could be slow at times and a suggested booking isn’t a confirmed reservation. We built structured tools, validation, persistent workflows, and telemetry to make those steps easier to manage and debug.

Accomplishments that we're proud of

We connected conversational planning, live research, voting, and interactive iMessage cards into one experience. People can coordinate in the same place they already talk, and go beyond getting suggestions to actually getting things done.

We’re also proud of the interactive widget games, especially the one controlled by CV directly within the iMessage interface. For generated games, the model creates a structured game definition, and our runtime validates and runs it. That gives users of Whim something they can actually mess around with while hanging out or while waiting to go to their hangout. What we learned

Building an AI agent is as much about managing state and designing interactions as it is about prompting. Knowing when to wait, when to ask a question, and how to communicate a failed action matters just as much as generating a good response.

We also learned how valuable observability is with complicated multi step agents. Seeing an agent’s tool calls, search params, latency, and error payloads made it a lot easier to understand where things went wrong and how to fix them.

What's next for Whim

The next step for Whim would be turning it into a fully fledged iMessage widget marketplace with hundreds of connectors. We want to turn the native iMessage interface into a platform people can develop on, with reusable tools for building widgets that can actually do things. The goal of this overall is less time spent switching apps and planning, and more time doing things together.

Built With

  • browse.sh
  • browserbase
  • cloudflare-d1
  • cloudflare-durable-objects
  • cloudflare-vectorize
  • cloudflare-workers
  • cloudflare-workers-ai
  • cloudflare-workflows
  • gpt-5
  • imessage
  • linq
  • open-meteo
  • openai
  • puppeteer
  • react
  • sentry
  • shopify
  • sqlite
  • swiftui
  • typesafe-jev
  • typescript
  • vercel-ai-gateway
  • vite
  • websockets
  • zod
Share this project:

Updates

Submission history