DE
Esc

← All projects

Looking back, written a few days after my last Kobe commit.

Kobe: what I actually built as founding engineer

The Launchpad series tells the three weeks from the inside. This post explains the product: an agent that finds the best path to a person through your own network, and my part in it.

You want to talk to a specific person. Someone in your network knows them, you just don’t know who. Kobe finds exactly that path.

Kobe is a three-person startup in Berlin. Nils is CEO, René is CTO, I’m the founding engineer. The two of them founded it. René and I built the product together as equals, and he did a bit more of the outside planning. The Launchpad series is about how the three weeks in Pennsylvania felt. This post is only about what we built.

Here’s how Kobe works, and the demo on this page runs the same flow with sample data. You enter a mission, for example booking three reference calls for someone. Kobe breaks it down, searches for matching people and then looks into your own network: LinkedIn, email, Slack, notes. From that it ranks warm paths, meaning who is most likely to introduce you and why. For each path Kobe writes two texts: the request to your contact and a message they can forward as is. Nothing gets sent before you approve it. And your raw data stays on your own computer.

Ask Kobe

Your personal Superconnector

Demo with sample data
Fig. Kobe web app, “Start Mission” Rebuilt from the product code · Kobe UI is English · Plays by itself · click to take over

Three pieces make that work. A web app with a backend on Cloudflare Workers, Postgres as the only data store, row-level security. A desktop app for the Mac that reads the sources locally. And a channel in between that lets server and Mac talk to each other.

My part in October, in numbers: 509 of 918 commits in the v3 repository, 157 of 750 in the desktop app. Almost all of them with Claude Code as co-author. I worked with agents in several worktrees in parallel and reviewed and merged what they produced.

A few things in more detail. I worked a lot on the channel between cloud and Mac. A Mac that reconnects takes over its interrupted import instead of starting from scratch. A Mac that announces it’s going to sleep counts as asleep, not lost. Stale connections get fenced off by a generation number. One change was triggered by a customer’s Mac that got 94 HTTP 409 refusals in one hour. Since then the server accepts a repeated final report once and ignores the copies.

Then the agent. I proposed and built a chat agent that has no tools of its own and takes every tool from the MCP server, which René set up and I extended. That way the chat and external clients like Claude see exactly the same tools. 160 unit tests run against a fake model and check that someone always approves before anything is sent, and that a tool only runs once its skill is loaded. Without calling a single real model.

I also built a staff console for our team: health per customer with a plain-language chain of causes, plus actions on the customer’s Mac that need a written reason and end up in a journal. I wrote the spec and the prototype, agents built parts of it in parallel, and I merged them. And the pitch deck, in one day.

What I’m taking away: measure first, then fix. In September, faced with a connection problem, I didn’t guess, I counted, and found a forced reconnect roughly every 314 seconds. Second, an agent that sends messages in your name needs an approval step you can test. Third, working with agents in parallel only works if every file has exactly one owner.

Tools and skills: TypeScript, Hono on Cloudflare Workers with Durable Objects, Postgres with Drizzle and row-level security, Electron with React, WebSockets, MCP, Playwright and Node tests, ADRs, and Claude Code with git worktrees.

Back in March I had already worked for Kobe once, on the road trip: on an agent pipeline in Python that builds a skill report from Slack data. The product was completely different back then. That’s how fast things change in a startup.