Earning the right to finish.
The following are March 2025 reflections as I build a thing. Dev log °4.
Dear Reader, the thing I’ve been building the last few months is finally done. I earned the right to finish.
Introducing: Coffee Engineering ☕️
I’ll keep it short because I know your time is valuable. It’s called Coffee Engineering and it lives on: coffee.engineering. The tagline is “caffeine for AI” (fun right?). And the SEO optimized description is “coffee engineering is a tool to create, share, and manage your AI prompts and agents in a simple, easy-to-use no-code way”.
Few nights ago I was having a conversation with my brother. He mentioned sometimes you just have an itch you need to scratch. A landscape in your mind that needs to put onto canvas. A conversation between two friends that needs to be turned into a short story. A little product idea that needs to not die on the cutting room floor. Coffee Engineering is an itch I just had to scratch, and I’m glad I did.
📀 If you’re a visual learner and not a reader, I have a neat demo on YouTube.
Observation: prompts are repetitive
I often go to ChatGPT or Claude and say:
You’re a senior React software engineer using Tanstack Router and Material UI v6, give me code that does X.
Give me a list of 5 movies similar to movie Y, include director and year in the response.
Research X and give me a table that includes name, app, cost.
Prompts tend to be repetitive.
Observation: people want to share their prompts
I know there are entire Discord, Reddit, and Facebook communities for people trying to squeeze the most out of large language models. A member (who might not be too tech savvy) will ask “what is the best way to analyze this CSV” and some other member will reply with a Pastebin or Github gist link saying “this is the prompt I use.”
There are also technical communities like the Cursor Directory where people are sharing prompt files you’re expected to copy-and-paste into your code editor.
In all these communities the expectation is that people float around these text files like loose pieces of paper and copy-and-paste them into AI services. Seems a bit inefficient no?
Observation: more copying-and-pasting
I know Claude is good at code. I know ChatGPT is good at more high level thinking. Sometimes I’ll ask ChatGPT something and then copy and paste that response into Claude and ask it for more details. Hmm… if only there was a more cleaver way to switch in and out of different models while preserving the context.
Observation: Projects and Custom GPTs
Some of what I’ve built can be achieved with Claude Projects or Custom GPTs. When I started working on Coffee Engineering these products didn’t exist. I do think I’ve pushed them further in some ways and made them much more accessible.
Observation: why is there only one prompt?
Every “Custom GPT” style product lets you add some context (from files or in the system prompt) and then the user interacts with it in the same manner: using a single text box.
I wanted to rethink this. Why can’t I have 3 inputs? One is the usual prompt, another is a toggle that chooses whether the AI response should include Emoji’s, and another to choose which language the response should be in. This is what I’m calling caffeinated prompts.
Beans
Beans are little self contained things (I refuse to call them “agents”) that have context built in. (This is where the visual demo might help).
You build a Bean by giving a short description of what they do. Example: “A Bean that returns a list of 5 movies similar to the one provided”
We take the user description and turn it into a system prompt using best practices and providing better output shape when appropriate
You save it as a public bean called “Movie Recommender” and it becomes accessible on “coffee.engineering/@shahzeb/movies”
Open the Bean, type in Interstellar hit go and boom everything works.
Share the Bean’s link with your mom and now you’re both watching the Martian
I have a Bean to give me Svelete 5 code (which is a frontend framework Coffee is built using). I first ask it for a high level project overview using GPT-4 and then in the same thread I switch to Claude and keep the conversation going. If I don’t like the output a model gave me, with one click I can regenerate the output either using a different model or different temperature (how creative or accurate).
I can search public Beans. My dad made a fun public Bean and I can just search and use it. Search results are ranked by popularity. Naturally, the most subscribed to Beans bubble to the top. This means that Beans marketplace (aka search) self select for better Beans.
I’m learning Spanish right now (shout out to an almost 350 day Duolingo streak). I have a Spanish translation bean. I can right click on a different Bean’s response and select “Send Response” and select the Spanish Bean. So one Bean just sends its output to another. So easy. No copy-and-pasting.
You can also invoke multiple different Beans from your dashboard at the same time. I’ve not seen anyone else do this. That’s why the Coffee Engineering homepage doesn’t look like the other AI company’s.
I’ve poured a lot of love into the experience of Coffee Engineering. Right click on a movie name from the above Movies Bean and you can search Letterboxd or Wikipedia straight from the right-click menu. The product was not vibe coded. That’s why it has been in the works for a while. I’m confident I’m doing things that even the big boys with trillion-dollar evaluations are not.
It is currently free. Sign up and I’ll add you to the beta user list:
It feels really good to earn the right to finish. Not many creative side projects make it this far. The foundation is set and I know there’s a ton I can build on top of this. But now I want to earn the right to build those things.
My next goal is to get 100 users.
Congrats, Shahzeb. Great work. I look forward to using it.