# I asked Claude to design a PCB. Here's exactly where it stopped working.

> Source: <https://dev.to/dibyaprakash_pradhan/i-asked-claude-to-design-a-pcb-heres-exactly-where-it-stopped-working-1eik>
> Published: 2026-09-02 08:49:37+00:00

I have been building an AI-native PCB editor for a few months. Before I wrote a line of it, I did the obvious thing: I opened Claude and asked it to design a board.

The result taught me more about where AI belongs in hardware than any amount of planning would have.

I asked for a 5V to 3.3V regulator circuit for an ESP32 sensor node.

Claude gave me a sensible answer. It picked an AMS1117-3.3, explained why an LDO was fine here rather than a buck converter given the current draw, and told me to put a 10µF on the input and 22µF on the output. When I asked why the output capacitor was larger, it explained the LDO's stability requirement properly.

Then I asked for the netlist. It gave me one, in text, and it was structurally reasonable:

``` php
VIN  -> U1.3, C1.1
GND  -> U1.1, C1.2, C2.2, U2.GND
3V3  -> U1.2, C2.1, U2.VDD
```

If you are learning electronics, this is genuinely useful. It is a competent engineer talking you through a decision.

This is where it stopped, and the way it stopped is the interesting part.

I asked Claude to place the components on a 20x20mm board and route the traces. It produced coordinates. They looked plausible. They were not.

Two components overlapped. A trace ran through a pad it had nothing to do with. The board outline did not enclose everything. And there was no way for it to know any of that, because **it was generating text that described a board, not operating on a board.**

That distinction is the whole thing.

My first instinct was that a better model would do better. That is wrong, and understanding why saved me from building the wrong product.

Routing a PCB is a search problem over physical space with hard constraints. You need to know that this trace is 0.2mm from that pad, that the clearance rule says 0.15mm, and therefore this route is illegal. That is a geometry query against a spatial index. A language model has no spatial index. It has never measured anything.

The same applies to design rule checking. DRC is not an opinion about whether a board looks right. It is a set of measurements against a set of thresholds. A board either has 0.15mm clearance everywhere or it does not, and the answer must be computed, not recalled.

And fabrication output makes it concrete. Gerber and Excellon are exact formats. A fab does not accept a plausible drill file.

So the limit is not "Claude is not smart enough yet." The limit is that these are the wrong kind of problem for a text generator, in the same way that a calculator is the wrong tool for writing a poem.

The split I landed on in [PCBEditor](https://pcbeditor.com):

**AI decides. Algorithms verify.**

The test I hold it to: **if I swap the model tomorrow, the boards must still be correct.** That is only true if correctness lives in code, not in the model.

Constraining the AI made it more useful, not less.

When I let the model place components freely, I got plausible nonsense. When I gave it a set of pre-validated candidate placements and asked it to choose, I got good boards. Same model. The difference was that the second version could only produce valid answers.

I think this generalises. The interesting question for most AI products is not "how do we get the model to do more" but "what is the smallest set of decisions we can hand it, where being wrong is recoverable."

No, and I would be lying if I said so. I still use it as a design partner. It is excellent for talking through a topology, sanity-checking a power budget, or explaining why my decoupling is in the wrong place.

It just cannot hand you a board. Nothing that generates text can, and that is fine, because that was never the hard part.

If you want to see the split running on a real board, the editor is free and needs no install: [pcbeditor.com](https://pcbeditor.com).

**Where would you draw the line?** If you have built something with a similar probabilistic/deterministic split, I would like to know where you put the boundary, and whether you got it right the first time. I did not.
