<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dibyaprakash Pradhan</title>
    <description>The latest articles on DEV Community by Dibyaprakash Pradhan (@dibyaprakash_pradhan).</description>
    <link>https://dev.to/dibyaprakash_pradhan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4084942%2F390513b9-e04f-42c8-9bc4-8dbf513fa5b1.jpg</url>
      <title>DEV Community: Dibyaprakash Pradhan</title>
      <link>https://dev.to/dibyaprakash_pradhan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dibyaprakash_pradhan"/>
    <language>en</language>
    <item>
      <title>KiCad and AI in 2026: MCP Servers, Scripts, and What Actually Works</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Wed, 30 Sep 2026 10:58:29 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/kicad-and-ai-in-2026-mcp-servers-scripts-and-what-actually-works-3p1a</link>
      <guid>https://dev.to/dibyaprakash_pradhan/kicad-and-ai-in-2026-mcp-servers-scripts-and-what-actually-works-3p1a</guid>
      <description>&lt;p&gt;KiCad has no built-in AI. What it has instead is an ecosystem that grew up around it very quickly, and if you go looking you will find open-source MCP servers, plugins, forum threads, and a lot of confident claims that do not agree with each other.&lt;/p&gt;

&lt;p&gt;I have spent a while in this space. Here is an honest map of the four approaches, what each is genuinely good for, and the one distinction that determines whether any of them will help you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The distinction that matters
&lt;/h2&gt;

&lt;p&gt;Before comparing anything: when an AI triggers KiCad's autorouter, &lt;strong&gt;KiCad routes the board.&lt;/strong&gt; The model supplied the intent and the sequence of actions. It did not lay the copper.&lt;/p&gt;

&lt;p&gt;That sounds pedantic. It is not, and it decides everything downstream. If your bottleneck is routing quality, no amount of model capability changes it — you are still getting KiCad's router either way. If your bottleneck is the hours spent on repetitive edits, checks, and exports, then an AI driving those operations is genuinely valuable. Work out which one you have before choosing a tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. MCP servers: let an agent drive KiCad
&lt;/h2&gt;

&lt;p&gt;This is the most capable option available today. The Model Context Protocol lets an assistant call tools directly, and several open-source KiCad MCP servers now expose schematic, board, ERC/DRC, BOM, and export operations as callable tools. With one installed, Claude, Cursor, Copilot, or any MCP client can operate KiCad programmatically instead of through the GUI.&lt;/p&gt;

&lt;p&gt;One implementation is a native KiCad 10 plugin written in Rust as a single binary, built on KiCad's official IPC API rather than the older SWIG bindings — which matters, because the IPC API is the path KiCad itself is investing in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it wins:&lt;/strong&gt; batch edits, running checks across a project, generating BOMs, driving exports, auditing a design against rules. Anything repetitive and well-specified.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to know:&lt;/strong&gt; it is a developer setup. You install a server, wire it into your assistant, and keep it working across KiCad versions. And the agent is calling KiCad's engines, so routing quality is KiCad's.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Python scripting with an assistant
&lt;/h2&gt;

&lt;p&gt;The most underrated option, by a distance.&lt;/p&gt;

&lt;p&gt;KiCad has had a Python API for years, and assistants are very good at writing against it. Bulk-renaming nets, generating footprints from a table, extracting data from a board file, automating the edit you would otherwise do a hundred times by hand — this is squarely in the model's strength.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it wins:&lt;/strong&gt; lowest friction of anything here. No new infrastructure, no protocol, no server. And once the script exists it is completely deterministic — it does the same thing every run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to know:&lt;/strong&gt; read and test what the assistant writes, and run it on a copy first. A script that silently mangles a board file is worse than no script.&lt;/p&gt;

&lt;p&gt;If you have never tried this, start here. Most people reaching for an MCP server would get more value from twenty lines of Python this week.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Computer use: a model clicking the GUI
&lt;/h2&gt;

&lt;p&gt;Newer models can operate a desktop application directly — open KiCad, place parts, press Auto-Route, export. It works, and it demos extremely well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it wins:&lt;/strong&gt; nothing to install, no API to learn. Fine for exploring what an agent can do, or a one-off task where writing a script is not worth it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to know, and this is the part the demos skip:&lt;/strong&gt; it is the slowest possible path. Every action costs a screenshot, a decision, and a click, to drive an application that already has a scripting interface doing the same work in milliseconds. It is also not reproducible — run the same request twice and the model may take a different path and land on a different board. For hardware, that last point is usually disqualifying on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. AI-native tools that are not KiCad
&lt;/h2&gt;

&lt;p&gt;A separate category generates the design itself: you describe a board, a model drafts the parts and netlist, and a deterministic engine places and routes it, then exports fabrication files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it wins:&lt;/strong&gt; it covers the step none of the above do — producing a design from intent, rather than automating edits to one you already have. Nothing to set up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to know:&lt;/strong&gt; it is a different tool, not a KiCad add-on. If your libraries, your team, and your workflow live in KiCad, a script or an MCP server keeps you where you are, and that is often the right call.&lt;/p&gt;

&lt;h2&gt;
  
  
  The line that runs through all four
&lt;/h2&gt;

&lt;p&gt;The same boundary shows up every time. A language model is strong at judgement: which regulator, which topology, what a script should do, which checks to run. It has no way to &lt;em&gt;measure&lt;/em&gt; whether a trace clears a pad by 0.15 mm — so everything downstream of a measurement has to come from a deterministic engine: a router, a rule checker, a geometry library.&lt;/p&gt;

&lt;p&gt;AI that automates the &lt;strong&gt;operating&lt;/strong&gt; of those engines is useful and already works. AI asked to &lt;strong&gt;be&lt;/strong&gt; one is where the claims outrun reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  So which should you use
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A specific repetitive task you can describe precisely → &lt;strong&gt;Python plus an assistant.&lt;/strong&gt; Least setup, most reliable payoff.&lt;/li&gt;
&lt;li&gt;An agent working across a whole project → &lt;strong&gt;an MCP server.&lt;/strong&gt; Real capability, real setup cost.&lt;/li&gt;
&lt;li&gt;Curious what computer use can do → &lt;strong&gt;try it&lt;/strong&gt;, but do not build a workflow on it.&lt;/li&gt;
&lt;li&gt;You want a board generated from a description → that is a &lt;strong&gt;different kind of tool&lt;/strong&gt;, and worth being clear with yourself that it is not a KiCad add-on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I work on &lt;a href="https://pcbeditor.com/kicad-ai" rel="noopener noreferrer"&gt;PCBEditor&lt;/a&gt;, which is the fourth category — so take my read on that one with the appropriate salt. The first two are where most KiCad users will get value this year, and neither of them is us.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A longer version of this map lives at &lt;a href="https://pcbeditor.com/kicad-ai" rel="noopener noreferrer"&gt;pcbeditor.com/kicad-ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>kicad</category>
      <category>ai</category>
      <category>electronics</category>
      <category>mcp</category>
    </item>
    <item>
      <title>What Does 'Free' Actually Mean in PCB Design Software?</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Mon, 28 Sep 2026 08:57:38 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/what-does-free-actually-mean-in-pcb-design-software-4f7k</link>
      <guid>https://dev.to/dibyaprakash_pradhan/what-does-free-actually-mean-in-pcb-design-software-4f7k</guid>
      <description>&lt;p&gt;I've watched people search "free PCB design software," click the first result, and hit one of three walls: a trial that expires, an install with a real learning curve, or a page that asks for an account before it'll show you anything. None of those are lying exactly — they're all "free" in some sense — but they're not the same promise, and finding that out after you've started is the whole reason this search feels untrustworthy.&lt;/p&gt;

&lt;p&gt;I build &lt;a href="https://pcbeditor.com" rel="noopener noreferrer"&gt;PCBEditor&lt;/a&gt;, a free one, so let me be specific about what free means before comparing it to anything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three kinds of free that get called the same thing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Open source&lt;/strong&gt; means the code itself is public — you can read it, change it, and run it yourself. KiCad is the reference case: it costs nothing because nobody owns the distribution, and nobody can ever decide to start charging for it. The cost is a real desktop install and a learning curve that a browser tool doesn't have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A hosted free tool&lt;/strong&gt; — PCBEditor, EasyEDA, CircuitMaker's community tier, Flux's free tier — is closed-source software you use through the vendor's app at no cost. You never install anything, but you're trusting a company to keep it free, and you can't audit what it's doing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A "free trial"&lt;/strong&gt; is neither of those. It's paid software with the meter not running yet. That's a legitimate business model, but it's a different word doing the same job, and it's usually the one that burns people who searched "free" expecting the first two.&lt;/p&gt;

&lt;p&gt;Neither open source nor a hosted free tool is better in the abstract. If you want something nobody can ever discontinue or paywall on you, open source is the only real guarantee. If you want to open a tab and start, a hosted free tool gets there faster — you're just trading that ownership for convenience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the specific tools land
&lt;/h2&gt;

&lt;p&gt;If you want the tool most people will point you to, it's KiCad — free, open source, genuinely excellent, and a desktop install with real depth to learn. If you want parts search tied straight to LCSC's catalogue with a one-click hand-off to JLCPCB for fabrication, EasyEDA's free tier is built for exactly that. If what you actually want is a slice of Altium's routing engine for nothing, CircuitMaker gives you that — in exchange for your designs living publicly on their platform, which is worth knowing before you put something you'd rather keep private into it. Altium itself, worth naming since it's the tool everyone eventually compares against, isn't free at all: pricing is per-seat and starts in the thousands a year.&lt;/p&gt;

&lt;p&gt;Where PCBEditor sits in that: free, browser-based, no install — closer to EasyEDA's or Flux's model than to KiCad's. The honest caveat, the same one I'd want told to me: the free tools (calculators, the Gerber viewer) need nothing at all, and opening the editor itself needs no account either — but actually having it generate a circuit does ask for a free email sign-in, because that's the part that costs compute. Not a credit card. An account. I'd rather say that here than have someone find out after they've started typing.&lt;/p&gt;

&lt;p&gt;There's no paid plan behind any of this today, for what it's worth — no pricing page, no checkout. If that changes later it should be a separate, clearly priced thing, not a quiet lock on something that's free right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Linux and Chromebook case, since it's a real one
&lt;/h2&gt;

&lt;p&gt;If you're on Linux, this whole question gets sharper: most desktop EDA either has no native build or needs a compatibility layer to run something built for Windows or macOS. A browser sidesteps that completely, because it's the one thing every platform already has. It's the same reason a browser tool is the &lt;em&gt;only&lt;/em&gt; real option on a Chromebook, which can't install desktop EDA at all, and it's a decent option on a phone or tablet for a quick edit or a DRC check on the go, even if a bigger screen still wins for a dense board.&lt;/p&gt;

&lt;p&gt;If you're evaluating a "free" PCB tool, the questions I'd actually ask are: is this free-as-in-open-source, free-as-in-hosted-tier, or free-as-in-trial-that-ends? What happens the moment you try to actually use it — does it ask for anything before or after it delivers? And is there a live pricing page anywhere, because that tells you whether "free" is the current state or a funnel.&lt;/p&gt;

&lt;p&gt;If you want to check the answers for PCBEditor specifically: &lt;a href="https://pcbeditor.com/?explore=1" rel="noopener noreferrer"&gt;open the editor&lt;/a&gt; first and look around — that part needs nothing — and sign in only once you're ready to have it generate something.&lt;/p&gt;

</description>
      <category>pcb</category>
      <category>kicad</category>
      <category>electronics</category>
      <category>opensource</category>
    </item>
    <item>
      <title>'AI PCB Design Software' Means Six Different Things — Here's How to Tell Them Apart</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Sun, 27 Sep 2026 12:14:22 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/ai-pcb-design-software-means-six-different-things-heres-how-to-tell-them-apart-45k3</link>
      <guid>https://dev.to/dibyaprakash_pradhan/ai-pcb-design-software-means-six-different-things-heres-how-to-tell-them-apart-45k3</guid>
      <description>&lt;p&gt;Someone asks "what's the best AI PCB design tool" in a forum, and the replies name a chatbot, a KiCad plugin, an editor with a copilot, and a router that finishes a whole board. All six get called "AI PCB design software." They are not doing the same job, and I think that mismatch is why so many "AI designs PCBs now" claims read as either hype or a demo that never becomes a real board.&lt;/p&gt;

&lt;p&gt;I build &lt;a href="https://pcbeditor.com" rel="noopener noreferrer"&gt;PCBEditor&lt;/a&gt;, which is one of the six. Here's the honest map, including where mine stops.&lt;/p&gt;

&lt;h2&gt;
  
  
  Six kinds, one label
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Chat assistants&lt;/strong&gt; — ChatGPT, Claude, Gemini — are good at the judgement part: choosing a regulator, explaining why an LDO beats a buck converter here, drafting a netlist as text. They can't operate on a board, because they never had one. They write a description of a design, not the design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI add-ons for desktop EDA&lt;/strong&gt; — MCP servers, plugins that let a model drive KiCad — let a model click the buttons you'd click. The routing and the checks are still whatever KiCad's router and DRC already do. A better operator isn't a different router.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Editor copilots&lt;/strong&gt;, the way Flux.ai does it, layer an assistant over a traditional schematic and PCB canvas. You're still working in a manual editor with the AI alongside rather than doing the whole thing — a real product decision, not a lesser one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schematic and BoM automation&lt;/strong&gt; — Circuit Mind, ProtoFlow — turns a prompt or a requirement into a schematic, a BoM, sourced parts, sometimes an analysis report. The emphasis is the front end; whether it carries into placement and routing varies a lot between them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autonomous place-and-route&lt;/strong&gt;, like Quilter, starts from a schematic you already have and produces placement and routing from it, usually with real rigor on high-speed work. It starts from a finished schematic. It doesn't write one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt to board&lt;/strong&gt; is what I build. A plain-English description goes through parts, a netlist, placement, routing and a design-rule check, out to fabrication files. Dense fine-pitch parts, BGAs especially, are where it's weakest, and you still review the result before ordering. I'd rather say that than not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question that actually sorts them
&lt;/h2&gt;

&lt;p&gt;None of the six kinds is "the best." They answer different questions. But there's one distinction that tells you something true about any of them: is the physical part of the board &lt;em&gt;measured&lt;/em&gt;, or &lt;em&gt;asserted&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;A language model is good at judgement and has no way to measure whether a trace clears a pad by 0.15 mm. That's not a training problem, it's a category problem — the same way a calculator is the wrong tool for writing a poem. So whichever of the six you're looking at, the useful question isn't "how smart is the AI," it's whether the physical output came from something that can measure, or from something that's estimating.&lt;/p&gt;

&lt;p&gt;Four checks answer that in about ten minutes, on any of the six: ask for real export files (Gerber, drill, pick-and-place, a BOM — a picture isn't something a fab can build); open them in a viewer the vendor didn't write; take the board file into KiCad, or your fab's own checker, and run the rules again somewhere the vendor doesn't control; and run the &lt;em&gt;same&lt;/em&gt; design twice, not a fresh prompt — the same input should give the same board, and it won't if the layout comes from a language model that drifts every time it's updated.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looked like on mine
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flgf8lgsz2ozq01ok7awq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flgf8lgsz2ozq01ok7awq.png" alt="PCBEditor assembled 3D view of a generated 47.51 by 45.00 mm four-layer board beside the chat log showing all 33 nets routed and a clean DRC pass" width="799" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One prompt — "Design a compact 4-layer microcontroller breakout board (approx 45x45mm)…" — produced a 47.51 × 45.00 mm board: 16 parts, all 33 nets routed with 0 unrouted, a design-rule pass reporting 0 errors and 0 warnings. Worth reading critically rather than taking at face value: Quality Gate was off for this run (you can see "QG Off" in the panel), so this is the raw baseline, not the best case. One board is an example, not a proof that every board finishes this cleanly — dense fine-pitch parts are exactly where I'd expect that to break. And the interface has moved on since I took this screenshot on 11 September 2026; the board and the numbers are what matter here, not the UI chrome.&lt;/p&gt;

&lt;h2&gt;
  
  
  So which one do you actually want
&lt;/h2&gt;

&lt;p&gt;Mostly this comes down to where you're starting from, not which is "most AI." If you already have a finished schematic and need serious high-speed constraint work, an autonomous router built for that is the right tool, not a prompt-to-board one that's still drafting your netlist. If you lay out in KiCad and mainly want better schematic capture and part sourcing, an add-on or a schematic-automation tool fits better than replacing your whole flow. If you want to think out loud about a topology or sanity-check a power budget, a chat assistant is genuinely good at that — I still use one for exactly this. And if you want a first board out of a description with nothing installed, that's the case I built PCBEditor for, &lt;a href="https://pcbeditor.com/?explore=1" rel="noopener noreferrer"&gt;free in the browser&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which of the four checks would your current tool fail?&lt;/strong&gt; If you've run any of them and one held up better — or worse — than the label suggested, I'd like to know which, and what you tested.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>pcb</category>
      <category>electronics</category>
      <category>software</category>
    </item>
    <item>
      <title>A migrated VM, a dead NTP daemon, and 67 days of silent clock drift</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Wed, 23 Sep 2026 16:09:45 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/a-migrated-vm-a-dead-ntp-daemon-and-67-days-of-silent-clock-drift-jbd</link>
      <guid>https://dev.to/dibyaprakash_pradhan/a-migrated-vm-a-dead-ntp-daemon-and-67-days-of-silent-clock-drift-jbd</guid>
      <description>&lt;p&gt;Every request we made to an AWS API started failing with a 403.&lt;/p&gt;

&lt;p&gt;Not intermittently. All of them, instantly, with the same error repeating once per second:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(403, 'InvalidSignatureException',
'Signature expired: 20260314T090925Z is now earlier than
20260314T091043Z (20260314T091543Z - 5 min.)')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A 403 on AWS usually sends you straight to IAM. Wrong key, expired key, missing permission, bad role. I very nearly went there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the whole error before you fix the error
&lt;/h2&gt;

&lt;p&gt;The thing that saved me was that AWS had already done the work. That message has three timestamps in it, and they are not decoration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;20260314T090925Z&lt;/code&gt; is when our box signed the request. That is our clock.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;20260314T091543Z&lt;/code&gt; is what AWS's clock said when it arrived.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;20260314T091043Z&lt;/code&gt; is that minus five minutes, the cutoff.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So AWS is telling you, in the error text, exactly how far apart the two clocks are. Ours was &lt;strong&gt;378 seconds behind&lt;/strong&gt;. Six minutes and eighteen seconds.&lt;/p&gt;

&lt;p&gt;SigV4 signatures are valid for five minutes. Our signature was stale the instant it was created. It never had a chance.&lt;/p&gt;

&lt;p&gt;The credentials were perfect. The request was perfect. We just could not agree with AWS about what time it was.&lt;/p&gt;

&lt;p&gt;What made me confident rather than merely suspicious was that the gap never moved. Every log line, the same 378 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;signed 20260314T090925Z  aws 20260314T091543Z  drift 378s
signed 20260314T090926Z  aws 20260314T091544Z  drift 378s
signed 20260314T090929Z  aws 20260314T091547Z  drift 378s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A clock that is slowly drifting gives you a number that creeps. A clock frozen at a fixed offset means nothing is correcting it at all. That is a different problem, and a much more interesting one.&lt;/p&gt;

&lt;p&gt;There was a second witness too. Our logs ship off the box, and each entry carries both the timestamp the application wrote and the timestamp the ingestion service wrote when it arrived. The gap between them was 377.8 seconds. Two independent time authorities telling us the same thing about our own machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cliff
&lt;/h2&gt;

&lt;p&gt;Here is the part worth internalising, because it explains why this felt like a sudden outage rather than a creeping problem.&lt;/p&gt;

&lt;p&gt;There is no degradation curve with SigV4. At 4 minutes 59 seconds of drift, everything works perfectly. At 5 minutes 1 second, &lt;strong&gt;every single request fails&lt;/strong&gt;. It is a cliff, not a slope.&lt;/p&gt;

&lt;p&gt;So the clock had probably been wrong for a long time before anyone noticed. It just had not crossed the line yet. The day it crossed, a whole class of functionality vanished at once, and it looked like something had broken that morning. Nothing had broken that morning. Something had broken months earlier and only became visible that morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Going in
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;timedatectl&lt;/code&gt; was blunt about it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;System clock synchronized: no
              NTP service: inactive
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then the line that reframed the whole thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Active: failed (Result: exit-code) since Tue 2026-01-06 09:30:20 UTC; 2 months 7 days ago
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;chrony had been dead for &lt;strong&gt;67 days&lt;/strong&gt;. It started 18 seconds after a boot in January, exited, and nothing ever brought it back. The clock had been free-running for months.&lt;/p&gt;

&lt;p&gt;Nobody knew. It is a daemon nobody looks at, failing quietly, on a box that was otherwise completely healthy.&lt;/p&gt;

&lt;p&gt;My first theory was that chrony had refused the correction. Probing it by hand seemed to confirm it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;chronyd &lt;span class="nt"&gt;-Q&lt;/span&gt; &lt;span class="s1"&gt;'server 169.254.169.123 iburst'&lt;/span&gt;
System clock wrong by 377.877093 seconds &lt;span class="o"&gt;(&lt;/span&gt;ignored&lt;span class="o"&gt;)&lt;/span&gt;
chronyd exiting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"Ignored." There it was. chrony saw the offset, decided a six minute jump was implausible, and gave up.&lt;/p&gt;

&lt;p&gt;That was real, and it was also not the reason the service was down. I was pattern matching on the first plausible cause and I was wrong. The actual reason only showed up when I stopped probing and tried to start the thing properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual cause
&lt;/h2&gt;

&lt;p&gt;Step the clock manually first, then start the service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;chronyd &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'server 169.254.169.123 iburst'&lt;/span&gt;
&lt;span class="c"&gt;# System clock wrong by 377.880183 seconds (step)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That worked. Clock correct, 378 seconds recovered, AWS calls authenticating again.&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start chrony
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Could not open /dev/ptp_hyperv : No such file or directory
Fatal error : Could not open PHC
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;ptp_hyperv&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Hyper-V.&lt;/p&gt;

&lt;p&gt;We are on EC2.&lt;/p&gt;

&lt;p&gt;Line 5 of &lt;code&gt;/etc/chrony/chrony.conf&lt;/code&gt;, with a comment that removes all doubt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="c"&gt;# Use Azure platform PTP device
&lt;/span&gt;&lt;span class="n"&gt;refclock&lt;/span&gt; &lt;span class="n"&gt;PHC&lt;/span&gt; /&lt;span class="n"&gt;dev&lt;/span&gt;/&lt;span class="n"&gt;ptp_hyperv&lt;/span&gt; &lt;span class="n"&gt;poll&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt; &lt;span class="n"&gt;dpoll&lt;/span&gt; -&lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="n"&gt;offset&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an &lt;strong&gt;Azure&lt;/strong&gt; config. On an EC2 box. Pointing at a Hyper-V paravirtual clock device that does not exist here and never will. chrony treats a missing refclock as fatal, so it exited at startup. Every time. Regardless of what the clock said.&lt;/p&gt;

&lt;p&gt;My "chrony refused the large offset" theory was a real behaviour of the manual probe, but it had nothing to do with why the service was down. The service was down because it could not start at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Azure config ended up on an EC2 box
&lt;/h2&gt;

&lt;p&gt;I had migrated this VM from Azure using &lt;strong&gt;AWS Application Migration Service (MGN)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;MGN does block level replication. It lifts your disk and boots it on EC2, and it is genuinely good at that. Your application comes across intact, your packages come across intact, your config comes across intact.&lt;/p&gt;

&lt;p&gt;Which is the whole point, and also the entire problem.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/chrony/chrony.conf&lt;/code&gt; came across intact. It was a perfectly correct file on Azure, where &lt;code&gt;/dev/ptp_hyperv&lt;/code&gt; is exactly the right thing to sync against. The moment it landed on EC2 it became a file that kills chrony on boot.&lt;/p&gt;

&lt;p&gt;MGN cannot know that. It does not read your config and reason about which lines describe hardware that no longer exists. It moves your disk. Anything in that disk describing the old hypervisor is now a small landmine, armed and waiting for the next restart.&lt;/p&gt;

&lt;p&gt;And notice the delay. The migration did not break anything visibly. chrony kept running on its existing process. It was the &lt;strong&gt;reboot in January&lt;/strong&gt; that killed it, because that is when chrony next tried to start and could not find its device. Then the clock drifted quietly for two months until it crossed five minutes and AWS started saying no.&lt;/p&gt;

&lt;p&gt;Migration, reboot, drift, cliff. Four events spread over months, and only the last one produced an error message.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix
&lt;/h2&gt;

&lt;p&gt;Comment out the Azure device:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'5s|^|#|'&lt;/span&gt; /etc/chrony/chrony.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then a surprise. Grepping for a replacement time source turned up nothing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-nE&lt;/span&gt; &lt;span class="s1"&gt;'^[[:space:]]*(server|pool|makestep)'&lt;/span&gt; /etc/chrony/chrony.conf
30:makestep 1 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No &lt;code&gt;server&lt;/code&gt;. No &lt;code&gt;pool&lt;/code&gt;. The Azure PTP device had been the only time source in the file. Removing it left chrony with a step policy and nothing to step toward.&lt;/p&gt;

&lt;p&gt;This matters more than it sounds. If I had just commented the line out and started the service, I would have got a &lt;strong&gt;running, healthy looking daemon that syncs from nothing at all&lt;/strong&gt;. Green in &lt;code&gt;systemctl status&lt;/code&gt;, quietly drifting back toward the same cliff. That is a worse failure than the crash, because the crash at least left a corpse.&lt;/p&gt;

&lt;p&gt;On EC2 the answer is the link local Amazon Time Sync Service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/chrony/chrony.conf &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;/dev/null &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;'

# EC2: Amazon Time Sync Service (replaces the Azure PTP refclock above)
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
makestep 1.0 -1
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two notes on that.&lt;/p&gt;

&lt;p&gt;I appended to &lt;code&gt;chrony.conf&lt;/code&gt; directly rather than dropping a file into &lt;code&gt;conf.d/&lt;/code&gt;, because this config has no &lt;code&gt;confdir&lt;/code&gt; directive. I had already written the file to &lt;code&gt;conf.d/aws.conf&lt;/code&gt; before checking, and it would have sat there being ignored forever. Worth a &lt;code&gt;grep&lt;/code&gt; before you assume a drop in directory is wired up.&lt;/p&gt;

&lt;p&gt;And &lt;code&gt;makestep 1.0 -1&lt;/code&gt; replaces the existing &lt;code&gt;makestep 1 3&lt;/code&gt;. The default only allows stepping during the first three updates after startup. After that chrony will only slew, and slewing 378 seconds takes effectively forever. &lt;code&gt;-1&lt;/code&gt; means step whenever it is needed, which is what you want on a VM that can be paused, migrated or snapshotted out from under you.&lt;/p&gt;

&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;^* 169.254.169.123    3   4   77    2   +653ns[ -983us] +/- 339us
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;653 nanoseconds. From 378 seconds.&lt;/p&gt;

&lt;p&gt;One last step, because the hardware clock was still 106 seconds out and would have reintroduced skew on the next boot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;hwclock &lt;span class="nt"&gt;--systohc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What I would tell past me
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Read the whole error.&lt;/strong&gt; AWS had handed me the exact drift, in seconds, inside the message itself. I nearly went to IAM because &lt;code&gt;403&lt;/code&gt; looks like a permissions problem and I stopped reading at the status code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A constant offset is a different bug from a drifting one.&lt;/strong&gt; Drift means nobody is correcting. A frozen number means something tried, failed, and stopped. That distinction took me straight to a dead daemon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After a lift and shift migration, audit for the old hypervisor.&lt;/strong&gt; Not just chrony. Grep your configs for &lt;code&gt;hyperv&lt;/code&gt;, &lt;code&gt;xen&lt;/code&gt;, &lt;code&gt;vmware&lt;/code&gt;, &lt;code&gt;virtio&lt;/code&gt;, &lt;code&gt;waagent&lt;/code&gt;, anything naming a device or agent from the platform you left. MGN moved the disk faithfully. Faithfully includes the parts that are now wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reboot the migrated box on purpose, early.&lt;/strong&gt; Our failure was armed at migration and did not fire until a reboot months later. The gap between cause and symptom was long enough that nobody connected them. A deliberate reboot the same week would have surfaced it immediately, next to the change that caused it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alert on clock offset.&lt;/strong&gt; &lt;code&gt;chronyc tracking&lt;/code&gt; gives you the number for free. Alert at 60 seconds, well below the five minute cliff, and you get warned during the slope instead of discovering it at the edge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When you fix a daemon, verify it has something to do.&lt;/strong&gt; Running is not the same as working. A time daemon with no time source is green in every dashboard and wrong in every way that matters.&lt;/p&gt;

&lt;p&gt;The whole thing came down to one line of config that was completely correct in the datacentre it was written for, and quietly fatal in the one it ended up in.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Building collections calling in India? The regulation is the spec.</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Tue, 22 Sep 2026 16:13:52 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/building-collections-calling-in-india-the-regulation-is-the-spec-4l0d</link>
      <guid>https://dev.to/dibyaprakash_pradhan/building-collections-calling-in-india-the-regulation-is-the-spec-4l0d</guid>
      <description>&lt;p&gt;If you are building outbound calling for Indian lending, the interesting&lt;br&gt;
constraints are not technical. They are regulatory, they are changing right&lt;br&gt;
now, and most of them have to be enforced in the architecture rather than in a&lt;br&gt;
prompt.&lt;/p&gt;
&lt;h2&gt;
  
  
  The window
&lt;/h2&gt;

&lt;p&gt;Recovery contact in India is restricted to &lt;strong&gt;8:00 AM - 7:00 PM&lt;/strong&gt;. Not just&lt;br&gt;
calls — SMS, WhatsApp and physical visits too. It applies to NBFCs, fintech&lt;br&gt;
lenders, and any third-party agency acting for them.&lt;/p&gt;

&lt;p&gt;Eleven hours sounds generous until you subtract hours when nobody answers. A&lt;br&gt;
salaried borrower is commuting, in a standup, or on a shop floor for most of&lt;br&gt;
it. Every lender is aiming at the same narrow slice.&lt;/p&gt;

&lt;p&gt;The architectural consequence: a collections system is not throughput-limited&lt;br&gt;
by headcount. It is limited by a legally fixed, partially unusable window that&lt;br&gt;
no amount of hiring widens.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is changing
&lt;/h2&gt;

&lt;p&gt;RBI issued draft Responsible Business Conduct directions in May 2026, then&lt;br&gt;
amendments in August 2026 consolidating recovery conduct into a single&lt;br&gt;
framework across banks, NBFCs and housing finance companies. Reporting puts&lt;br&gt;
commencement at &lt;strong&gt;1 January 2027&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Direction of travel matters more than any single clause. Accountability for&lt;br&gt;
agent conduct moves up to the regulated entity: due diligence before engaging&lt;br&gt;
an agency, verification of individual agents at onboarding and periodically&lt;br&gt;
after, documented code of conduct, borrower disclosure before first contact,&lt;br&gt;
and monitoring that produces &lt;strong&gt;evidence&lt;/strong&gt; rather than assurances.&lt;/p&gt;

&lt;p&gt;RBI fined Bajaj Finance ₹2.5 crore in connection with recovery agent conduct.&lt;br&gt;
Outsourced behaviour lands back on the lender.&lt;/p&gt;

&lt;p&gt;The compliance question you will be asked is not whether your policy prohibits&lt;br&gt;
harassment. It is whether you can demonstrate, call by call, that it did not&lt;br&gt;
occur.&lt;/p&gt;
&lt;h2&gt;
  
  
  The certification angle nobody budgets for
&lt;/h2&gt;

&lt;p&gt;The draft framework contemplates mandatory IIBF certification for recovery&lt;br&gt;
agents. Put that next to attrition on a collections floor: every seat you fill&lt;br&gt;
must be certified, and every seat that turns over must be certified again&lt;br&gt;
before that person can legally call.&lt;/p&gt;

&lt;p&gt;A voice agent is not a person requiring certification. Its conduct is defined&lt;br&gt;
in configuration and identical on call one and call one hundred thousand. The&lt;br&gt;
compliance surface moves from "did this individual behave correctly today" to&lt;br&gt;
"is this script correct" — a question you can answer in advance.&lt;/p&gt;

&lt;p&gt;Certification scales with headcount and attrition. Script review scales with&lt;br&gt;
neither.&lt;/p&gt;
&lt;h2&gt;
  
  
  The refusal set
&lt;/h2&gt;

&lt;p&gt;Most vendor material describes what an agent &lt;em&gt;can&lt;/em&gt; do. For collections, the&lt;br&gt;
useful spec is what it must be &lt;strong&gt;structurally unable&lt;/strong&gt; to do:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refuse to call outside the window.&lt;/strong&gt; Enforced at the dialer, in the&lt;br&gt;
borrower's local time. A prompt instruction is not a control; a scheduler that&lt;br&gt;
cannot emit the call is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refuse to exceed frequency caps.&lt;/strong&gt; Per borrower, per cycle, counted across&lt;br&gt;
voice + SMS + WhatsApp together — because the borrower experiences them&lt;br&gt;
together and a complaint will describe them together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refuse to discuss the debt with a third party.&lt;/strong&gt; If the person answering is&lt;br&gt;
not the borrower, state purpose generically and end. Disclosing a debt to a&lt;br&gt;
family member is the classic harassment finding.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent:  नमस्ते, मैं XYZ Finance से बोल रहा हूँ।
        क्या मेरी बात राजेश कुमार जी से हो सकती है?
Caller: वो घर पे नहीं हैं, मैं उनकी पत्नी हूँ। क्या बात है?
Agent:  कोई बात नहीं। यह एक personal call है,
        मैं बाद में कोशिश कर लूँगा। धन्यवाद।
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No amount. No due date. No mention of a loan. Even to a spouse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refuse to escalate tone.&lt;/strong&gt; Pressure tactics are what the conduct rules exist&lt;br&gt;
to eliminate. An agent that &lt;em&gt;cannot&lt;/em&gt; be provoked into them beats one&lt;br&gt;
instructed to avoid them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hand off rather than improvise.&lt;/strong&gt; Dispute, hardship, bereavement — anything&lt;br&gt;
the script does not cover routes to a human. An agent improvising through a&lt;br&gt;
hardship disclosure is the worst available outcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  DPDP: consent is a state, not a checkbox
&lt;/h2&gt;

&lt;p&gt;India's Digital Personal Data Protection Rules were notified November 2025,&lt;br&gt;
with substantive obligations phasing in through 2027. For collections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice recordings &lt;strong&gt;are&lt;/strong&gt; personal data&lt;/li&gt;
&lt;li&gt;Consent must be &lt;strong&gt;purpose-specific&lt;/strong&gt;, not blanket&lt;/li&gt;
&lt;li&gt;Consent logs must be &lt;strong&gt;timestamped&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Consent is &lt;strong&gt;withdrawable at any time&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Penalties reach &lt;strong&gt;₹250 crore&lt;/strong&gt; for significant data fiduciaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"Purpose-specific" breaks legacy practice. Consent captured at origination for&lt;br&gt;
servicing communication is not self-evidently consent to record a recovery&lt;br&gt;
call for quality assurance. Different stated purposes.&lt;/p&gt;

&lt;p&gt;The architectural bit: &lt;strong&gt;withdrawal has to propagate to the dialer before the&lt;br&gt;
next attempt, not at the next nightly sync.&lt;/strong&gt; If a borrower withdraws at 11:00&lt;br&gt;
AM and your system calls at 3:00 PM because the suppression list refreshes&lt;br&gt;
overnight, the architecture produced the violation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest framing
&lt;/h2&gt;

&lt;p&gt;Voice AI does not remove regulatory exposure. It moves it — from the&lt;br&gt;
unpredictable behaviour of a rotating certified workforce to the reviewable&lt;br&gt;
content of a script and the enforced behaviour of a dialer.&lt;/p&gt;

&lt;p&gt;That is a smaller surface, and critically, one you can audit &lt;em&gt;before&lt;/em&gt; a&lt;br&gt;
complaint rather than after.&lt;/p&gt;

&lt;p&gt;I work on &lt;a href="https://fonix.ai" rel="noopener noreferrer"&gt;Fonix.AI&lt;/a&gt;. Longer version&lt;br&gt;
&lt;a href="https://fonix.ai/use-cases/nbfc" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>voiceai</category>
      <category>fintech</category>
      <category>compliance</category>
      <category>ai</category>
    </item>
    <item>
      <title>"Voice AI in India" describes four different businesses</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Tue, 22 Sep 2026 07:33:24 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/voice-ai-in-india-describes-four-different-businesses-2g14</link>
      <guid>https://dev.to/dibyaprakash_pradhan/voice-ai-in-india-describes-four-different-businesses-2g14</guid>
      <description>&lt;p&gt;Every "top 10 voice AI companies in India" article ranks vendors on one&lt;br&gt;
table. That format assumes the ten companies are substitutes for each other.&lt;/p&gt;

&lt;p&gt;Mostly they are not.&lt;/p&gt;

&lt;p&gt;If two vendors on your shortlist would be integrated by different departments,&lt;br&gt;
they are not competitors. They are answers to different questions, and one of&lt;br&gt;
those questions is the wrong one for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Telephony and infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sells connectivity: numbers, SIP trunks, routing, programmable voice. Voice AI&lt;br&gt;
is a layer on a business that was already about carrying calls.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Buy here when:&lt;/em&gt; the constraint is telephony reach and reliability, and you&lt;br&gt;
have engineers to build the intelligence yourself.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Evaluate on:&lt;/em&gt; carrier reach, uptime, regulatory registrations, call quality&lt;br&gt;
at volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Developer APIs and platforms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sells building blocks: an API to construct agents, tool-calling, provider&lt;br&gt;
choice for speech and language models. Documentation is the product surface.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Buy here when:&lt;/em&gt; you have an engineering team that wants control and will own&lt;br&gt;
the outcome.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Evaluate on:&lt;/em&gt; docs quality, latency, provider flexibility, how per-call&lt;br&gt;
pricing behaves at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Enterprise CX suites&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sells a contact-centre platform where voice AI is one channel alongside chat,&lt;br&gt;
email and agent-assist. Long procurement, deep integration, priced&lt;br&gt;
accordingly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Buy here when:&lt;/em&gt; you are replacing a contact-centre stack, not adding a&lt;br&gt;
capability.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Evaluate on:&lt;/em&gt; integration depth, agent-assist quality, support model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Vertical and outcome products&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sells a job done: collections calling, appointment reminders, lead&lt;br&gt;
qualification. Configured rather than built, deployed in days.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Buy here when:&lt;/em&gt; you want the result and do not want to own the stack.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Evaluate on:&lt;/em&gt; domain fit, compliance posture, time to deploy, language depth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roughly who sits where
&lt;/h2&gt;

&lt;p&gt;Usual caveat — companies move, expand and reposition, and several operate in&lt;br&gt;
more than one column. Verify current positioning directly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure:&lt;/strong&gt; Exotel, Plivo, Twilio (global)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer API:&lt;/strong&gt; Bolna.ai, plus global platforms operating in India&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise CX:&lt;/strong&gt; Yellow.ai, Haptik, Gnani.ai&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vertical product:&lt;/strong&gt; Skit.ai (collections), Subverse (BFSI), Fonix.AI (where
I work)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The category boundaries are more stable than the membership. A developer API&lt;br&gt;
platform that adds vertical templates is still sold, priced and supported like&lt;br&gt;
a developer platform — and that is what determines whether it fits your team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose by constraint, not feature
&lt;/h2&gt;

&lt;p&gt;Feature tables converge; every vendor eventually lists every feature.&lt;br&gt;
Constraints do not converge, and they eliminate faster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Do you have engineers to own this?&lt;/strong&gt; No rules out category 2 regardless of
quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can the data leave your infrastructure?&lt;/strong&gt; No makes on-premise the first
filter, not a later question — and eliminates most cloud-composed stacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Are your calls code-switched?&lt;/strong&gt; If callers mix Hindi and English
mid-sentence, monolingual accuracy claims are not evidence.
(&lt;a href="https://fonix.ai/voice-ai-code-switching-hinglish" rel="noopener noreferrer"&gt;Why this breaks things&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is volume predictable?&lt;/strong&gt; Per-call and flat pricing fail in opposite
directions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the use case regulated?&lt;/strong&gt; Collections, healthcare and insurance carry
conduct rules constraining what the agent may say. That is a product
question, not a config one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How fast do you need it live?&lt;/strong&gt; Weeks vs quarters separates category 4
from category 3 more reliably than any feature comparison.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where we do not fit
&lt;/h2&gt;

&lt;p&gt;I work on Fonix.AI, category 4. Stating the limits is more useful than&lt;br&gt;
claiming the whole map:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Want to compose your own stack and pick model providers per call? A
developer API platform fits better than we do.&lt;/li&gt;
&lt;li&gt;Replacing an entire contact-centre suite across chat, email and voice? An
enterprise CX platform is the right shape; we are not.&lt;/li&gt;
&lt;li&gt;Need carrier-grade telephony as the product rather than an input? Buy
infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We fit when the constraint is Indian language depth on real code-switched&lt;br&gt;
calls, a regulated use case with conduct requirements, and deployment measured&lt;br&gt;
in days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fonix.ai/voice-ai-companies-india" rel="noopener noreferrer"&gt;Full version&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>voiceagents</category>
      <category>startup</category>
      <category>sip</category>
    </item>
    <item>
      <title>Where to get visibility for your startup without doing PR?</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Sun, 20 Sep 2026 10:52:12 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/where-to-get-visibility-for-your-startup-without-doing-pr-5192</link>
      <guid>https://dev.to/dibyaprakash_pradhan/where-to-get-visibility-for-your-startup-without-doing-pr-5192</guid>
      <description>&lt;p&gt;As we dive deeper into market dynamics, think about the content we see. think about the &lt;strong&gt;startups getting funded&lt;/strong&gt; and especially the buzz before they get funded. Students, Professionals, some random guy sitting on a boat catching fish somewhere in the sea around the &lt;strong&gt;Andaman and Nicobar islands&lt;/strong&gt;. everyone suddenly starts putting their perspective on the funding news, as if they were always waiting for this glorious day in their life.&lt;/p&gt;

&lt;p&gt;but wait, this is not just &lt;strong&gt;blind PR&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;if you think about investors, they like to lead rounds. the investors who join later are similarly valuable and contribute to that specific round. and the company getting the investment? they don't mind burning some of their previous round's marketing budget to create the buzz.&lt;/p&gt;

&lt;p&gt;come on, what else would you have done?&lt;/p&gt;

&lt;p&gt;used that money to solve a real problem? to build something actually valuable?&lt;/p&gt;

&lt;p&gt;it's a loop. it's a paradox.&lt;/p&gt;

&lt;p&gt;If you are a founder building something meaningful, there is a good chance you will also come across days like these in your journey. and yes, you might do it too.&lt;/p&gt;

&lt;p&gt;but wait.&lt;/p&gt;

&lt;p&gt;If you are a small, fresh, young startup and you don't have blind catastrophic bundles of money to throw into the air, then what???&lt;/p&gt;

&lt;p&gt;Your competitor is being loved by the fisherman in andaman and you are not even being noticed by the other business that actually needs you.&lt;/p&gt;

&lt;p&gt;it's a clear loss for you, isn't it?&lt;/p&gt;

&lt;p&gt;what do you do now?&lt;/p&gt;

&lt;p&gt;keep hoping for the day they fail badly and some random ray of sunshine somehow finds you inside the cave where you are living, building and dying?&lt;/p&gt;

&lt;p&gt;or leave everything and go hide in a place full of shit just to look like shit, because nobody gives a &lt;strong&gt;gargantua duck&lt;/strong&gt; about that place or its people?&lt;/p&gt;

&lt;p&gt;or stay in your own latveria and start casting runes?&lt;/p&gt;

&lt;p&gt;huhhh.&lt;/p&gt;

&lt;p&gt;okay, enough.&lt;/p&gt;

&lt;p&gt;you go out and find the options you have. and yes, you just unlocked a whole new world of possibilities simply because you don't have shitting shit to shit.&lt;/p&gt;

&lt;p&gt;and it's not bad.&lt;/p&gt;

&lt;p&gt;there are thousands of free platforms where you can gain visibility. make open source contributions. showcase your startup. let people know you're from a place where there are real people, not &lt;strong&gt;joongering eustics&lt;/strong&gt; who just want to read and write for &lt;strong&gt;blind catastrophic bundles&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;yea, you get it.&lt;/p&gt;

&lt;p&gt;go list your startup on places like F6S, Crunchbase, The Org and &lt;a href="https://startupreader.com" rel="noopener noreferrer"&gt;StartupReader&lt;/a&gt; &lt;em&gt;Im builidng&lt;/em&gt;. write articles. get organic views from people who are actually looking for the exact solution you are building because they have the exact problem you're trying to solve.&lt;/p&gt;

&lt;p&gt;and let your competitor keep screaming and asking for more, more, more bundles to build the world on top of the world.&lt;/p&gt;

&lt;p&gt;remember, if you get visibility, or in simple words, if you are visible, investors can find you. customers can find you. people who actually need what you're building can find you.&lt;/p&gt;

&lt;p&gt;visibility doesn't magically make a startup valuable.&lt;/p&gt;

&lt;p&gt;but being valuable while remaining completely invisible doesn't help much either.&lt;/p&gt;

&lt;p&gt;let's talk in the comments. i'm leaving you with a weird time-bending trick just to feel good.&lt;/p&gt;

&lt;p&gt;say:&lt;/p&gt;

&lt;p&gt;i have written an article on dev.to tomorrow.&lt;/p&gt;

&lt;p&gt;might sound completely wrong in english, but somehow it sounds good.&lt;/p&gt;

&lt;p&gt;so...&lt;/p&gt;

&lt;p&gt;what did you do tomorrow????&lt;/p&gt;

</description>
      <category>startup</category>
      <category>investment</category>
      <category>marketing</category>
      <category>seo</category>
    </item>
    <item>
      <title>Text to PCB: How a Prompt Actually Becomes a Manufacturable Board</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Tue, 15 Sep 2026 08:52:00 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/text-to-pcb-how-a-prompt-actually-becomes-a-manufacturable-board-2bkh</link>
      <guid>https://dev.to/dibyaprakash_pradhan/text-to-pcb-how-a-prompt-actually-becomes-a-manufacturable-board-2bkh</guid>
      <description>&lt;p&gt;"Describe a circuit board and get a finished PCB" is the kind of claim that makes engineers close the tab. And they are right to be suspicious — most of the time, "AI designs your PCB" means a language model produced a plausible-looking picture that no fab would accept.&lt;/p&gt;

&lt;p&gt;So let me skip the pitch and explain how a prompt can actually become a manufacturable board, and where the line is between the part that works and the part that does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one insight: designing a board is two different jobs
&lt;/h2&gt;

&lt;p&gt;A PCB design has a judgement half and a measurement half, and they need completely different tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The judgement half&lt;/strong&gt; is choosing parts and deciding how they connect. What regulator suits this input range and load? Which microcontroller? Does this sensor talk I2C or SPI? This is language-shaped reasoning over a huge body of prior art — exactly what large language models are good at.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The measurement half&lt;/strong&gt; is everything physical. Where does each component sit on a board with real dimensions? Does this trace clear that pad by 0.15 mm? Can these nets be routed across four layers without crossing? None of that is a matter of opinion. It is geometry and hard constraints, and it has an objectively correct answer that you can check with a ruler.&lt;/p&gt;

&lt;p&gt;The mistake almost every "AI PCB" demo makes is asking one tool — the language model — to do both halves. It cannot do the second one. It has no way to &lt;em&gt;measure&lt;/em&gt; whether a trace meets clearance, so it estimates, and an estimate is not a board.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the pipeline actually looks like
&lt;/h2&gt;

&lt;p&gt;Split the two halves and the flow becomes honest:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You describe the board.&lt;/strong&gt; Plain English: &lt;em&gt;"an ESP32 sensor board with USB-C power, a LiPo charger, and two Qwiic connectors."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The LLM drafts intent.&lt;/strong&gt; It selects parts and proposes a netlist — the judgement half, where it is strong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A deterministic engine builds the board.&lt;/strong&gt; It places the components and routes the copper. This is a classic geometric search against hard constraints — the same category of software as a traditional autorouter and design-rule checker, not a text generator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It checks and exports.&lt;/strong&gt; A design-rule check runs, unrouted nets are reported &lt;em&gt;by name&lt;/em&gt;, and the result exports to Gerber, drill, pick-and-place, and BOM.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The AI decides; the engine proves. That division is the whole reason the output is buildable rather than merely convincing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the routing has to be deterministic
&lt;/h2&gt;

&lt;p&gt;There is a second, subtler reason to keep routing out of the model's hands: reproducibility.&lt;/p&gt;

&lt;p&gt;If a language model "routes" your board, the result changes with temperature, with phrasing, and with every model update. Run it twice and you get two boards. That is disqualifying for hardware, where you need the same input to produce the same output every time.&lt;/p&gt;

&lt;p&gt;A deterministic router does not have that problem. Same design in, same board out — and it does not drift when the model behind the judgement half is swapped or upgraded. The reproducibility is not a nice-to-have; it is what makes the tool trustworthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest failure mode
&lt;/h2&gt;

&lt;p&gt;No router completes every board, and any tool that claims otherwise is lying to you. The useful question is what happens when it &lt;em&gt;cannot&lt;/em&gt; finish.&lt;/p&gt;

&lt;p&gt;The wrong answer is a completion percentage — "94% routed!" — that hides which nets failed. The right answer is to name the exact nets it could not route, because that tells you what to fix. And most of the time the fix is not a smarter router; it is placement. Two connectors at opposite corners with a dense IC between them cannot be recovered by any routing algorithm. Naming the stuck nets points you straight at the components to move.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this leaves "text to PCB"
&lt;/h2&gt;

&lt;p&gt;It is real, but it is not magic, and the honest version is more useful than the magic version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The LLM turns your description into parts and a netlist — a strong first draft you review.&lt;/li&gt;
&lt;li&gt;A deterministic engine does the placement, routing, and rule-checking — the part with a correct answer.&lt;/li&gt;
&lt;li&gt;You get fabrication files a fab will actually accept, or a precise list of what could not be finished.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to watch a prompt become a placed, routed, checked board, &lt;a href="https://pcbeditor.com/text-to-pcb" rel="noopener noreferrer"&gt;PCBEditor&lt;/a&gt; does exactly this in the browser — describe a board, and it drafts, places, routes, checks, and exports.&lt;/p&gt;

</description>
      <category>pcb</category>
      <category>ai</category>
      <category>chatgpt</category>
      <category>electronics</category>
    </item>
    <item>
      <title>PCB Design on Mobile: Can You Really Design a Board on a Phone, Tablet, or Chromebook?</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Mon, 14 Sep 2026 06:45:42 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/pcb-design-on-mobile-can-you-really-design-a-board-on-a-phone-tablet-or-chromebook-27od</link>
      <guid>https://dev.to/dibyaprakash_pradhan/pcb-design-on-mobile-can-you-really-design-a-board-on-a-phone-tablet-or-chromebook-27od</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F34j2nvtmu7ozbvsyvr2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F34j2nvtmu7ozbvsyvr2g.png" alt="PCB Generation Using AI on Mobile Phones" width="800" height="450"&gt;&lt;/a&gt;If you have ever tried to open KiCad on your phone, you already know how this goes. You search "KiCad on Android," find a viewer app that lets you &lt;em&gt;look&lt;/em&gt; at a board but not touch it, and close the tab a little disappointed.&lt;/p&gt;

&lt;p&gt;So let's start with the honest answer, and then get to what actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you run KiCad on mobile?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No.&lt;/strong&gt; KiCad is a desktop application for Windows, macOS, and Linux. There is no official KiCad app for Android or iPad, and iPadOS/Android cannot run the desktop build.&lt;/p&gt;

&lt;p&gt;That is not a knock on KiCad — it is an excellent, free, professional tool. It simply was never built to run on a phone. The third-party "KiCad viewer" apps you will find on the Play Store and App Store are exactly that: viewers. They let you inspect a &lt;code&gt;.kicad_pcb&lt;/code&gt; file at the workbench while you solder, which is genuinely handy, but you cannot design in them.&lt;/p&gt;

&lt;p&gt;The same is true for most desktop EDA. Altium, Eagle, and friends are desktop-bound. If your only machine right now is a phone, a tablet, or a Chromebook, the desktop-tool answer is a dead end.&lt;/p&gt;

&lt;h2&gt;
  
  
  The device-by-device reality
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Android / phone.&lt;/strong&gt; No native design app for the desktop tools. Viewers only. To actually edit, you need something built for the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;iPad.&lt;/strong&gt; Same story — no native iPad app for desktop EDA, and viewer apps only let you look. What &lt;em&gt;does&lt;/em&gt; work on an iPad is a PCB tool that runs entirely in Safari or Chrome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chromebook.&lt;/strong&gt; This is the biggest gap of all. A Chromebook cannot install KiCad, Altium, or most desktop EDA &lt;em&gt;at all&lt;/em&gt;. For a Chromebook, a browser-based tool is not a compromise — it is the only option, and it works fully.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually works: the browser
&lt;/h2&gt;

&lt;p&gt;The pattern across every one of those devices is the same: the thing they all have is a modern web browser. So the tools that work on mobile are the ones that live entirely in the browser — no install, no app store, no OS compatibility to fight.&lt;/p&gt;

&lt;p&gt;A few browser-based options exist. &lt;strong&gt;EasyEDA&lt;/strong&gt; (backed by JLCPCB) is a long-standing, free, cloud-based editor. &lt;strong&gt;Flux&lt;/strong&gt; is a collaborative browser ECAD with an AI copilot. And there are newer mobile-native editors emerging in this space too.&lt;/p&gt;

&lt;p&gt;The point is not which logo you pick — it is that the &lt;em&gt;browser&lt;/em&gt; is what unlocks mobile PCB design. Everything else follows from that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "describe it in text" matters more on a phone
&lt;/h2&gt;

&lt;p&gt;Here is a nuance that is easy to miss. On a small screen, the hardest part of PCB design is not the physics — it is the &lt;em&gt;fiddliness&lt;/em&gt;. Dragging a 0402 resistor into place with your thumb is miserable.&lt;/p&gt;

&lt;p&gt;This is exactly where an AI-native, browser-based approach earns its keep on mobile. Instead of manual placement on a cramped screen, you describe the board in plain English — "an ESP32 dev board with USB-C, a LiPo charger, and a couple of Qwiic connectors" — and let the tool draft the parts, placement, and routing. You review and adjust rather than building pixel by pixel with your fingertips.&lt;/p&gt;

&lt;p&gt;The important thing, though, is &lt;em&gt;how&lt;/em&gt; that AI is used. A language model is good at judgement — picking parts, proposing a topology. It is not good at measurement — whether a trace clears a pad by 0.15 mm is a calculation, not an opinion. The reliable tools keep those separate: the AI decides intent, and a deterministic engine does the geometry, the routing, and the design-rule check. That is what makes the output something a fab will actually accept.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is designing on a phone genuinely usable?
&lt;/h2&gt;

&lt;p&gt;Honest answer: for a large, dense board, a bigger screen is still easier, and always will be. But that is not the only kind of work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sketching an idea&lt;/strong&gt; the moment you have it, wherever you are.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editing a small board&lt;/strong&gt; — a breakout, a sensor module, a simple power supply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewing a layout&lt;/strong&gt; or running a DRC on the train.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuing a design&lt;/strong&gt; you started on a laptop, on your phone, then a tablet — because browser-based work is not trapped on one machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For those, a phone or tablet is not a toy. It is a real tool — as long as the software was built to run there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;KiCad on mobile:&lt;/strong&gt; no native app; viewers only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iPad / Android / Chromebook:&lt;/strong&gt; the browser is the answer, and for a Chromebook it is the &lt;em&gt;only&lt;/em&gt; answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On a small screen:&lt;/strong&gt; describing a board beats dragging parts, provided a deterministic engine — not a chatbot — does the actual routing and checking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to try designing a board on whatever device you are reading this on, &lt;a href="https://pcbeditor.com/pcb-design-on-mobile" rel="noopener noreferrer"&gt;PCBEditor&lt;/a&gt; runs entirely in the browser — describe a board, let it place and route, run the design-rule check, and export Gerber, drill, pick-and-place, and BOM. No install, on any device.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is also published on &lt;a href="https://pcbeditor.com/pcb-design-on-mobile" rel="noopener noreferrer"&gt;pcbeditor.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>pcb</category>
      <category>claude</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>Can GPT-6 Astra Generate a PCB?</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Sat, 05 Sep 2026 07:37:51 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/can-gpt-6-astra-generate-a-pcb-1flg</link>
      <guid>https://dev.to/dibyaprakash_pradhan/can-gpt-6-astra-generate-a-pcb-1flg</guid>
      <description>&lt;p&gt;OpenAI just dropped a bomb in the AI industry, and as per the demo they have shown, they illustrated a few people talking to GPT to get their tasks done, like creating a 3D model using CAD software, building a game with that 3D model, and accessing the slicer on your desktop to slice it and send it for 3D printing. Sounds fascinating, right?&lt;/p&gt;

&lt;p&gt;Now let's look at the closer view. I have used Antigravity by Google, Claude Code, and Codex with GPT-5.6 and older models. One thing I have noticed is that the more agentic the system is, and the more iterations it does, the more work it gets done for you.&lt;/p&gt;

&lt;p&gt;GPT-5.6 Sol costs $4/1M input and $20/1M output. It works for me for things like FE testing, browser control, and some desktop software control as well. So what do you get with GPT-6 Astra at $10/1M input and $50/1M output? That is a flat 2.5x across input, cached input and output. And on ARC-AGI-3 it scores 99.9%, against 30.2% for Claude Opus 5 and 7.8% for GPT-5.6 Sol.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuhtcrpp0vm81uoxgmaqk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuhtcrpp0vm81uoxgmaqk.png" alt="ARC-AGI-3 benchmark: GPT-6 Astra 99.9%, Claude Opus 5 30.2%, GPT-5.6 Sol 7.8%" width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's be fair about that price: it's a good deal. Going from 7.8% to 99.9% on a reasoning benchmark for 2.5x the token cost is not expensive, if reasoning is your bottleneck.&lt;/p&gt;

&lt;h2&gt;
  
  
  The footnote on that 99.9% is the interesting part
&lt;/h2&gt;

&lt;p&gt;ARC Prize published the conditions, and they are worth reading carefully.&lt;/p&gt;

&lt;p&gt;The 99.9% comes from OpenAI's &lt;strong&gt;Provider Adapter harness&lt;/strong&gt;, which preserves opaque reasoning state between requests so the model can reuse prior work. Cost of that run: &lt;strong&gt;$18,817&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Run the same model through the &lt;strong&gt;Standard harness&lt;/strong&gt;, which is stateless and provider-neutral, and it scores &lt;strong&gt;62.7%&lt;/strong&gt;. That run cost &lt;strong&gt;$26,098&lt;/strong&gt;. More money, a third of the score.&lt;/p&gt;

&lt;p&gt;Same model. Same weights. The difference is entirely in the scaffolding around it.&lt;/p&gt;

&lt;p&gt;That is the most useful fact in the whole launch, and it is not the one on the chart. It says the system you wrap a model in can be worth more than 37 points of benchmark, which is the same reason a purpose-built tool beats a general model clicking through someone else's GUI.&lt;/p&gt;

&lt;p&gt;And on computer use specifically, the numbers are real: &lt;strong&gt;72.6% on OSWorld 2.0&lt;/strong&gt; against 65.7% for Sol, finishing tasks in about 40 minutes where the previous model took 75. Astra genuinely operates desktop software better than anything before it.&lt;/p&gt;

&lt;h2&gt;
  
  
  But operating a router is not being a router
&lt;/h2&gt;

&lt;p&gt;Point that same model at a PCB and reasoning isn't the bottleneck. Geometry is. You are paying 2.5x for a much better &lt;em&gt;operator&lt;/em&gt; of a tool that still has to do the routing itself, and routing is not a reasoning problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  So can it generate an end-to-end PCB?
&lt;/h2&gt;

&lt;p&gt;The answer might be yes or no, because the question is wrong.&lt;/p&gt;

&lt;p&gt;It's a great model that can use your desktop tools, but it doesn't have a natively built PCB generation engine or a CPU-heavy routing engine. It's just good at using tools. Whereas AI-native tools like &lt;a href="https://pcbeditor.com" rel="noopener noreferrer"&gt;PCBEditor&lt;/a&gt; are built to generate PCBs using AI. So yes, maybe you can use GPT-6 Astra to generate PCBs by driving tools like KiCad and PCBEditor.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "CPU-heavy" actually means
&lt;/h2&gt;

&lt;p&gt;Routing a board is a constrained search through physical space. A router has to find a path for every net across a grid of the whole board, on every layer, while respecting clearance to every other piece of copper, and then undo and retry when a later net blocks an earlier one. On a dense multi-layer board with fine-pitch parts, that runs to millions of grid evaluations and takes minutes of real CPU time.&lt;/p&gt;

&lt;p&gt;None of that work is language. A model that reasons better does not reduce the number of cells a router has to evaluate, because the router is not reasoning. It is measuring.&lt;/p&gt;

&lt;p&gt;And here's the thing: a model driving KiCad through a GUI still has to call KiCad's router. That router does the same millions of evaluations whether a model asked for it or you clicked the button yourself. The intelligence and the computation are separate costs, and only one of them is billed per token.&lt;/p&gt;

&lt;h2&gt;
  
  
  About that PCB Generation in Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnfx0s1affnvog9obkdge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnfx0s1affnvog9obkdge.png" alt="KiCad window in OpenAI's demo" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The image published by OpenAI is a screenshot of a KiCad desktop window. It reads as though the model generated a PCB, when what it shows is a model operating a tool, the same way you, I, or any other desktop-controlling AI model would.&lt;/p&gt;

&lt;p&gt;That distinction matters more as these models get better, not less. Astra is genuinely the best desktop operator that has shipped. The engine underneath the tool is a separate problem, and it will not be solved by the next model either, because it was never a model problem.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Where would you put the line?&lt;/strong&gt; If you have built something where a frontier model drives a domain tool, I would like to know where the model stopped being the hard part. For me it was the moment the search space stopped fitting in a context window and started fitting in a CPU.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>electronics</category>
      <category>gpt6astra</category>
    </item>
    <item>
      <title>I asked Claude to design a PCB. Here's exactly where it stopped working.</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Wed, 02 Sep 2026 08:49:37 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/i-asked-claude-to-design-a-pcb-heres-exactly-where-it-stopped-working-1eik</link>
      <guid>https://dev.to/dibyaprakash_pradhan/i-asked-claude-to-design-a-pcb-heres-exactly-where-it-stopped-working-1eik</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The result taught me more about where AI belongs in hardware than any amount of planning would have.&lt;/p&gt;

&lt;h2&gt;
  
  
  What went well, and it genuinely did
&lt;/h2&gt;

&lt;p&gt;I asked for a 5V to 3.3V regulator circuit for an ESP32 sensor node.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Then I asked for the netlist. It gave me one, in text, and it was structurally reasonable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VIN  -&amp;gt; U1.3, C1.1
GND  -&amp;gt; U1.1, C1.2, C2.2, U2.GND
3V3  -&amp;gt; U1.2, C2.1, U2.VDD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are learning electronics, this is genuinely useful. It is a competent engineer talking you through a decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then I asked for the board
&lt;/h2&gt;

&lt;p&gt;This is where it stopped, and the way it stopped is the interesting part.&lt;/p&gt;

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

&lt;p&gt;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 &lt;strong&gt;it was generating text that described a board, not operating on a board.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That distinction is the whole thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it is structural, not a model problem
&lt;/h2&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;And fabrication output makes it concrete. Gerber and Excellon are exact formats. A fab does not accept a plausible drill file.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built instead
&lt;/h2&gt;

&lt;p&gt;The split I landed on in &lt;a href="https://pcbeditor.com" rel="noopener noreferrer"&gt;PCBEditor&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI decides. Algorithms verify.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Part selection&lt;/strong&gt;: AI. Which regulator, which sensor, what topology. Genuine judgement, and a model is good at it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Footprints&lt;/strong&gt;: library first, AI only as fallback. A footprint is a fact defined by IPC-7351, not an opinion. When we do have to generate one, it is badged unverified so nobody mistakes a guess for a datasheet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Placement&lt;/strong&gt;: constrained AI. The thermal and signal-integrity rules are code. The model picks among candidates that already satisfy them. Judgement inside a fence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing&lt;/strong&gt;: zero AI. A router written from scratch in Rust, doing multi-layer A* with rip-up-and-reroute, and producing a graph-based connectivity proof. It proves its output rather than asserting it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DRC&lt;/strong&gt;: zero AI. A rule engine with deterministic self-heal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The test I hold it to: &lt;strong&gt;if I swap the model tomorrow, the boards must still be correct.&lt;/strong&gt; That is only true if correctness lives in code, not in the model.&lt;/p&gt;

&lt;h2&gt;
  
  
  The counter-intuitive part
&lt;/h2&gt;

&lt;p&gt;Constraining the AI made it more useful, not less.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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."&lt;/p&gt;

&lt;h2&gt;
  
  
  So: is Claude useless for PCB design?
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;It just cannot hand you a board. Nothing that generates text can, and that is fine, because that was never the hard part.&lt;/p&gt;

&lt;p&gt;If you want to see the split running on a real board, the editor is free and needs no install: &lt;a href="https://pcbeditor.com" rel="noopener noreferrer"&gt;pcbeditor.com&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Where would you draw the line?&lt;/strong&gt; 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.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>pcb</category>
      <category>claude</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>I built an AI PCB designer. The routing engine has no AI in it, here's why.</title>
      <dc:creator>Dibyaprakash Pradhan</dc:creator>
      <pubDate>Tue, 01 Sep 2026 10:53:48 +0000</pubDate>
      <link>https://dev.to/dibyaprakash_pradhan/i-built-an-ai-pcb-designer-the-routing-engine-has-no-ai-in-it-heres-why-2ac5</link>
      <guid>https://dev.to/dibyaprakash_pradhan/i-built-an-ai-pcb-designer-the-routing-engine-has-no-ai-in-it-heres-why-2ac5</guid>
      <description>&lt;p&gt;I am going to tell a short product development story from my recent personal experience. AI vs No AI, what I have chosen and why.&lt;/p&gt;

&lt;p&gt;When it comes to deterministic systems, you always have to rethink choosing AI for what parts of the system. When I started building &lt;a href="https://pcbeditor.com" rel="noopener noreferrer"&gt;PCBEditor.com&lt;/a&gt; it was a similar challenge for me.&lt;/p&gt;

&lt;p&gt;When you talk about PCB design, there are different stages. First schematics. You need to decide what and which electronics parts you want to use. For that, I had built a product called AI Inventory Management: you can upload the invoices of your purchases and you can use those parts for designing your PCBs.&lt;/p&gt;

&lt;p&gt;Next is electrically valid netlists, footprints (footprint generator using AI), ball-map generation using AI. What I decided to do is a hybrid approach, which means not everything should be generated by AI. Instead, building internal libraries as well, which can be reliably used.&lt;/p&gt;

&lt;p&gt;Then there comes the placement engine. You need to calculate the placements, so what I did is set multiple different rules like thermal warnings, electrical signal fluctuation rules, etc., and let my AI model (&lt;a href="https://fortza.in" rel="noopener noreferrer"&gt;Fortza&lt;/a&gt; decide which is the best placement option to pick for the current design.&lt;/p&gt;

&lt;p&gt;Then comes DRC, hundreds of code files with thousands of lines in them. It ensures the board passes the DRC check, and then you can 3D view it. Once the board is generated you always want to see a 3D view of it so that you know how it will look when it is printed. For that, finding officially licensed 3D STEP files can be done using our AI model.&lt;/p&gt;

&lt;p&gt;Then there are a few important stages like layer selection and quality gate verification. These all happen in an agentic system with more than 200 expert AI agents working together to produce the best possible industry-standard outcome for your designed PCB.&lt;/p&gt;

&lt;p&gt;I would love to hear from people out here. Have you ever tried designing a PCB using AI? What do you think the split should be between probabilistic and deterministic usage in this use case? 50-50? 60-40? 90-10?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>pcb</category>
      <category>schematic</category>
      <category>robotics</category>
    </item>
  </channel>
</rss>
