The sentence that started this

Ten days ago I typed this to a friend, with no plan to build anything:

I can read most code — it's like French to me, I understand it when I see it. But I could never start a real project. What stopped me was setting up environments, using git, typing terminal commands. Then vibe coding came along and suddenly I manage everything myself: GitHub, Vercel, Supabase, running SQL. The AI walked me across every platform, one step at a time.

So it made me wonder — could you vibe-code embedded systems?

Vibe coding changed what I could put on a screen. I wanted to change what I could put on my desk.

I've been a product manager for thirteen years. I can barely write code, and I have never studied electronics for a single day. In that same message I wrote something that turned out to be the whole thesis:

My biggest advantage is that I know nothing about embedded systems.

Someone who knows would skip the "obvious" steps. I can't skip them, because I trip over every single one. So I wrote each one down, and those notes became the product.

What it does

You describe what you want in plain English. It finds the parts, writes the firmware, compiles it, and flashes a real board.

My actual first request was: "I want something that watches my dog's water bowl and loudly nags me when the water runs low." What came back was a shopping list — six parts, seventeen dollars, each with what it does, why that one, and a link I could click — plus a warning I would never have known to ask for: this sensor runs at 5V, your board's pins don't, so don't wire them straight together.

Then the parts arrived and I couldn't name a single object in the box. So I took a photo and asked. It named them, and told me which one was actually the controller.

Then came the real barrier. Every guide says connect VCC. My display has no pin called VCC. It read the silkscreen off my photo and answered: the label VDD is the same thing. Two naming conventions, decades old, both still alive. An expert's eye corrects that without noticing. I lost ten minutes.

That ten minutes is the entire product. Not the C language. Not circuit theory. The gap between a word in a tutorial and a word printed on a board.

How I built it

The agent loop runs in the browser, because its two most important tools already live there: a virtual board that runs your code before any hardware arrives, and ask_human — a tool that pauses the whole loop and renders an instruction card. ask_human is the agent's hand, except the hand is you. Wire this pin to that hole. Press this button. Is it blinking?

Behind it are six knowledge bases shipped as plain JSON: 146 parts, 30 project recipes, 67 troubleshooting entries, 127 glossary terms, 35 code snippets, 6 board profiles. The bet is that the AI's competence should live in the data, not in the model. Models are rented and get replaced; this data stays correct for years. Retrieval is keyword scoring in the browser — no vector store, no service, so a fully static deployment works.

The hard rule: the agent may never state a pin number from memory. Every one has to come from the board's own profile. There is even a file in the repo listing every time this AI has been confidently wrong about hardware, and it has to re-read that file before answering me.

Nebius and NVIDIA Nemotron

Nemotron is the agent. Every step of the loop is one call on Nebius Token Factory.

What Model Why
Main loop — 30 tools, writing firmware, wiring guidance Nemotron 3 Super Correct tool on the first call, ~1 second per step
Deep diagnosis when something is flashed but doesn't work Nemotron 3 Ultra Has to weigh power, wiring, logic levels, timing and code together
Photos of real parts a vision model on the same platform see below

Token Factory made adoption a one-adapter change. The platform already had a provider abstraction, so adding Nebius meant writing a single /chat/completions translator — not a rewrite. The same key drives local development and the deployed demo, so "works on my machine" and "works for a judge" are literally the same code path. And because Nano / Super / Ultra all sit behind one endpoint, changing reasoning tier is an environment variable, not a migration.

Challenges

Nemotron cannot see. Halfway through I discovered that uploading a photo in chat was completely broken on Nebius — This model does not support image input. Photo recognition is the feature I care most about. But the vision models I tested don't do reliable tool calling, and Nemotron does it flawlessly across 30 tools. The capability wasn't in one model, so I made two models relay: a vision model on Nebius turns the photo into text, and Nemotron reasons over that text with its tools. Descriptions are cached, because the conversation replays every message on every turn.

The platform made the model lie. My demo asks judges to try it with no sign-up. Testing that, I found read_board was returning my board profile to every visitor — so a judge with no hardware would be told "you have a Freenove ESP32-WROVER on /dev/cu.usbserial-210." That violates the one rule this whole project exists to enforce. It only shows up when someone else uses it; for me it was always correct. Now an unregistered visitor is told honestly that no board is recorded, and the agent is instructed to ask, or to work on the virtual board and say plainly that real flashing needs real hardware.

I generated part illustrations and then deleted most of them. I used an image model to draw the catalog, then screened every result by asking a vision model to identify it. Only 16 of 42 were recognizable. A membrane keypad came out as a mains-powered wall switch; a servo came out as a box of toggle levers. I removed them rather than ship them, because a wrong reference picture is worse than no picture for someone trying to identify a part in their hand.

What I learned

That the barrier is not inside the knowledge — it's in front of it. And that it's invisible to anyone who has crossed it. The only way to map it was to walk into it myself, repeatedly, and write down where it hurt.

I also learned that honesty is a feature. The log of the AI's mistakes, the removed illustrations, the refusal to hard-block a photo the model disputes — every one of those makes the product look less polished and makes it more usable, because a beginner's only real asset is a tool that admits when it isn't sure.

Built during the submission period

The platform existed before the hackathon as a Chinese-language learning project. New in this window: the Nebius Token Factory + Nemotron integration, the parts entity library (146 parts, every mention becomes a tappable link), photo recognition and verification, deep diagnosis on Ultra, the vision relay, and a full English content layer with USD pricing and Amazon sourcing.

What's next

My design doc set the test three months ago, and it still hasn't happened: find one real beginner, hand them only the platform, and see if they finish the first module without asking me anything. Right now this product has exactly one user. The next thing it needs isn't a feature — it's a second person.

Built With

Share this project:

Updates

Submission history