Back/Personal/ChatGPT/Zapier
AdvancedPersonal

Build a Custom Bedside Keyboard for Idea Capture with Raspberry Pi and ChatGPT

Build a bedside keyboard that captures an idea with one keypress and routes the text to the right destination.

Build a Custom Bedside Keyboard for Idea Capture with Raspberry Pi and ChatGPT

31:31 to 35:25: Jason combines a compact keyboard and Raspberry Pi so a bedtime idea can trigger a capture script and route the text through ChatGPT.

Before you start

What you need

  • A compact keyboard and Raspberry Pi
  • A local capture script and webhook endpoint
  • Routing categories and destination services

What you’ll make

A reliable low-friction capture device that records, timestamps, and routes ideas without opening a phone.

Tools used

Step by step

The workflow

Follow the sequence once, then adapt the prompts, checks, and handoffs to your own setup.

5 steps

Step01

Assemble Hardware

Connect a simple, inexpensive mini-keyboard to a Raspberry Pi. This creates the physical, screen-free device for capturing your ideas.

Example prompt
Connect the keyboard to the Raspberry Pi and map the dedicated capture key.
Step02

Code with ChatGPT's Help

Use ChatGPT to guide you through writing a Python script for the Raspberry Pi. The script's function is to act as a keylogger, capturing all text typed on the connected keyboard.

Example prompt
Write a local listener that opens a text capture, timestamps it, and stores it before any network call.
Step03

Set the Trigger

Modify the Python script to listen for the 'Enter' key. Configure it so that when 'Enter' is pressed, the script captures all text typed since the last time 'Enter' was pressed.

Example prompt
Trigger capture on [key combination] and show a clear ready, sent, or failed signal.
Step04

Send Data to a Webhook

Program the script to send the captured text to a Zapier webhook via an API request. This step moves your idea from the local Raspberry Pi to your cloud-based automation workflow.

Example prompt
POST the saved idea and idempotency key to [webhook], retrying safely after network failure.
Step05

Route the Idea Intelligently

Set up a Zapier workflow that starts with the webhook trigger. Add a filter or path step to parse the incoming text for specific keywords, which will determine the note's destination. For example, route text containing 'Lin Eng' to create a new ticket in Linear, or text with 'email' to your inbox.

Example prompt
Classify each idea into [destinations], retain the raw inbox copy, and log the routing reason.

What good looks like

  • The trigger works from a cold idle state
  • Every submission receives a local success or failure signal
  • The original text and timestamp are retained even when routing fails

Build your next product with ChatPRD

Turn an idea into a PRD, user stories, and a plan.

Try ChatPRD free

After the steps

Runbook notes

How to recover when the loop fails and where human judgment helps.

Recover

If it goes sideways

The key fires more than once
Debounce the input and assign an idempotency key to each capture.
The network is unavailable
Save locally and retry without losing the original text.
The classifier sends an idea to the wrong place
Keep the raw inbox and log the routing reason for correction.

Start shipping
better products.

Join 100,000+ product managers who use ChatPRD to write better docs, align teams faster, and build products users love.

Free to start
No credit card
SOC 2 certified
Enterprise ready