Project · AWS Hackathon Runner-up

Hivemind — turning a whole event into one collective thought

Hivemind was built for an in-person AWS hackathon. Every attendee could send in a single word from their phone. We funneled those words into a central “brain” that periodically generated a single sentence describing what the whole crowd was thinking.

A Lambda function writes each word into Couchbase. Another Lambda periodically grabs a random subset of those words, feeds them to Amazon Bedrock, and renders the resulting “hive thought” on the main event screen so the room can literally see its collective mood.

AWS LambdaCouchbaseAmazon BedrockAmazon PollyLive event experience

Live event brain

Everyone sends one word. The screen shows one mind.

Inputs from hundreds of attendees are sampled, remixed via Bedrock, and surfaced as a single animated thought on the main display.

Sample hive output

“We're a room full of builders, running on caffeine, hoping the demo gods are kind.”

Built in under 24 hours.AWS Hackathon · Runner-up

How it works

  1. 1. One-word input — each attendee submits a single word from a simple web form.
  2. 2. Lambda → Couchbase — an AWS Lambda function writes the word, user/session metadata, and timestamp into Couchbase.
  3. 3. Sampling the hive — a scheduled Lambda grabs a random subset of recent words to avoid the same few people dominating the feed.
  4. 4. Prompting Bedrock — the words are turned into a compact prompt and sent to Amazon Bedrock, which generates a short “hive thought.”
  5. 5. Main-screen render — the thought is pushed to the event display as a glowing banner that updates periodically as more people submit.
lambda/hivePrompt.tssample
export async function handler(event) {
  const word = event.body.word.trim();

  // 1) write to Couchbase
  await bucket.collection("words").insert(uuid(), {
    word,
    ts: Date.now(),
  });

  return { statusCode: 200, body: JSON.stringify({ ok: true }) };
}

// separate scheduled lambda:
async function generateHiveThought() {
  const sample = await sampleRecentWords(bucket, 40);

  const prompt = "You are the voice of a live audience. In ONE " +
    "short sentence, describe the crowd's mood using these words: " +
    sample.join(", ") + ".";

  const completion = await bedrock.invoke(prompt);

  await pushToMainScreen(completion.text);
}
Hivemind architecture diagram

Designing for crowds

The interesting part wasn’t the UI — it was making sure hundreds of tiny inputs still felt like one coherent output instead of chaos.

Stateless by default

Keeping the logic in Lambda + Couchbase made the system trivially scalable for any event size with almost no ops overhead.

Prompting as glue

Most of the magic came from how we shaped the prompt from raw words into something Bedrock could reliably turn into a single, readable thought.