Simitecno

Software Development & Technical Assistance · Jun 2026 → today

The software I built at Simitecno

12 systems for 3D digital microscopes, metrology and cobots. Open a module to see the numbers, images and a map of how it works. The company’s customers stay anonymous.

Probe-tip AI inspection

Catches defective microscopic probe tips offline, after learning from good tips only.

  • Python
  • PyTorch
  • DINOv2
  • OpenCV
  • PyQt5
  • openpyxl
  • 23 / 24real defects caught on the customer's batches
  • 11 / 14defects caught blind, with the model frozen
  • −37%good tips rejected, at equal detection (8.5% → 5.4%)

A probe-card manufacturer checked thousands of microscopic probe tips by eye, with almost no defective samples to learn from. I built a rule-based tip finder and a frozen DINOv2 memory of good tips only, which scores every tip and shows where it differs, and shipped it as an offline desktop app with heatmaps and Excel reports. On the customer's batches it stopped 11 of 14 defects blind with the model frozen, then 23 of 24 once that batch was added, while rejecting 37% fewer good tips at equal detection.

Every tip against a memory of good ones

An offline app that finds each probe tip in a microscope photo, compares it with a frozen memory of good tips and shows where it differs.

Tap a block to see what it does.

  • Input
  • People
  • Logic
  • AI
  • Output

Input

Microscope images

Full 2040×1530 photos with several tips at different angles, or the customer's crops with one tip each.

  • HIROX

Hands to Tip finder, Good-tip memory

PCB cross-section metrology

Measures PCB cross-sections in about a second per image, with every reading traceable to pixels.

  • Python
  • OpenCV
  • NumPy
  • ReportLab
  • Gradio
  • pytest
  • 13 / 13scale bars read automatically
  • ~1 sper image, on a laptop
  • 1.0–3.8%from the customer's manual measurements

An aerospace & defence group measured PCB cross-sections by hand, clicking every copper layer, plated wall and via on every image, and would not accept a black-box model. I built classical, explainable vision that calibrates each image from its own scale bar, segments the layers and measures copper, dielectric, plating, via fill, cap and wrap, and answers ‘not calibrated’ instead of guessing. On the customer's 13 images it read every scale bar at about a second per image, within 1.0–3.8% of their manual values, and I'm extending the same method to the insulation layers around cable conductors.

From a printed scale bar to micrometres

Classical, explainable vision that calibrates every image from its own scale bar and measures each copper and dielectric layer, or says it can't.

Tap a block to see what it does.

  • Input
  • Logic
  • Output

Input

Microscope image

A file, a live shot from the microscope or the last capture. Coloured request lines and arrows drawn on it are removed first.

  • HIROX

Hands to Scale reader, Layer segmentation, Cable layers

Microscope control platform

Lets robots and PCs drive a 3D digital microscope safely, with recipe-based measurements on top.

  • Python
  • ctypes
  • Win32
  • Gradio
  • Flask
  • OpenCV
  • SQLite
  • PowerShell
  • 536test functions
  • 25+one-click releases shipped to the company PCs
  • 6faults fixed installing the vendor software on a laptop

The HIROX 3D digital microscopes we distribute could only be driven by hand from the vendor's Windows software, so they couldn't sit inside automatic inspection cells. I rebuilt the vendor interface from its headers and samples, wrapped it in a safe control core (closed command list, one command at a time, tamper-evident log, lock after a fault) and added an operator portal, a token-protected REST API and a recipe-driven vision layer. Core functions are validated on the real microscope, and the platform ships as one-click releases to the lab PCs, with the measurement and species-ID tools running as tabs inside it.

One safe core between the network and the microscope

Tap a block to see what it does.

  • Logic
  • AI
  • Infrastructure
  • Input
  • People

The heart of the system

Control core

Every request from people, cells and PCs reaches the HIROX microscope through this core: closed command catalogue, one FIFO worker, a Windows mutex against a second instance, hash-chained audit log, lock after a timeout.

Connected to DLL bridge, Vision recipes, Command planner, REST API

COMAU cobot external control

A safe four-layer control service for a cobot that offered only a raw SDK.

  • Python
  • FastAPI
  • SSE
  • React
  • TypeScript
  • Tailwind
  • pytest
  • 1,449 / 1,451commands logged as successes on a dead socket, before the fix
  • 9,736watchdog disconnections traced to one root cause
  • 376test functions, many against a fake controller

The COMAU MyCo cobot we use in two cells offered no ROS, Modbus or REST: only a proprietary text protocol over TCP, through a one-file Python SDK. I built a four-layer service (SDK bridge, safety middleware, task manager, FastAPI with live telemetry), a React operator dashboard and a fake controller that speaks the real protocol, so field failures can be replayed in tests. It reproduced the robot ‘dropping off’ — 1,449 of 1,451 commands logged as successes on a dead socket — and the fixes, including a stop that really halts the arm, were verified on the robot.

Four layers between a click and the arm

A four-layer service that turns a raw vendor SDK into a safe REST API, with a fake controller that replays field failures in tests.

Tap a block to see what it does.

  • People
  • Input
  • Infrastructure
  • Logic

People

Operator dashboard

React: Cartesian jog and drag pad, block sequences, taught points, force panel, E-stop and re-arm banner.

  • React
  • TypeScript
  • Tailwind

Hands to FastAPI layer

The dashboard in simulation (MOCK mode): no real robot moves

Cobot cell for microfluidic chips

Camera-guided cobot cell that registers microfluidic chips and punches their ports, sold as a turnkey product.

  • Python
  • FastAPI
  • React
  • TypeScript
  • OpenCV
  • NumPy
  • build123d
  • 0 / 217false accepts in automatic part recognition, synthetic bench
  • 628tests passing, 0 failing
  • 10governance documents: IP, privacy, key-person risk, patents, sales

A public research institute punched the inlet and outlet ports of microfluidic PDMS chips by hand, and Simitecno sold it a turnkey cell: cobot, smart camera, punch, PC and licensed software. On top of the shared robot engine I built the chip application: camera markers registered to the robot with a least-squares fit whose residual gates every job, a punch planner, part recognition driven by the plate's CSV layout, and a licence check that never stops a move in progress. The customer signed after a live click-on-marker demo and the 4 mm punch works on hardware; automatic recognition reaches 0 false accepts on 217 synthetic parts and still has to be proven on the real bench.

A cell that sees the chip before it punches

Tap a block to see what it does.

  • Input
  • Logic
  • Infrastructure
  • Output
  • People

The heart of the system

Cobot cell for microfluidic chips

A turnkey cell where a smart camera registers each chip to the robot and a cobot punches its inlet and outlet ports.

Connected to Plate layout CSV, Part recognition, Registration gate, Punch planner, Robot engine, Cobot and punch, Operator, Smart camera

Cutting-tool defect inspection

Finds scratches and nicks on precision cutting tools after learning from good parts only.

  • Python
  • PyTorch
  • DINOv2
  • timm
  • Streamlit
  • FastAPI
  • React
  • 16 / 16defects caught on the main mill view, 22 of 22 good parts passed
  • 0 / 20knife defects missed
  • 27% → 5%false positives on held-out knives

A cutting-tool maker wanted cutting edges checked automatically under a HIROX microscope, but defective parts were few and all different: at the start there were two physical parts and about 200 photos of one mill. I tried classical vision, planned a PatchCore track and built a vision-language demo, then settled on a training-free DINOv2 memory of good photos per view, with heatmaps, defect area in mm² and a threshold set from good parts only. On the customer's samples it caught 16 of 16 defects on the main mill view and missed none of 20 knife defects, an initial validation on few samples, and the approach was reused in three later inspection projects.

Learning a cutting edge from good parts only

A frozen DINOv2 memory of good photos per view that scores every new cutting edge, draws a heatmap and measures the defect in mm².

Tap a block to see what it does.

  • Input
  • Logic
  • AI
  • Data
  • Output

Input

Microscope photos

HIROX shots in folders per side and position, good and defective; new positions are taken in automatically.

  • HIROX

Hands to View recognition

River-quality species ID

Identifies river invertebrates from one photo without training, and says when it isn't sure.

  • Python
  • PyTorch
  • DINOv2
  • Gradio
  • SAM
  • Playwright
  • 76.2%identified to species on an 80-photo blind test
  • +11.3 ptsfrom more real data, the lever that paid most
  • 0.52 sper photo on a CPU

Environmental agencies rate river quality by counting aquatic invertebrates that biologists identify under the microscope, and Simitecno wanted to show an environmental agency what a microscope with AI can do, without any of its samples. I built a training-free DINOv2 identifier on 320 licence-tracked public photos that stops at the taxonomic order when two species are too close, plus an integrity check and a Gradio app with PDF and CSV reports. On 80 photos it had never seen, it named 76.2% to species and stopped safely at the order for another 20%, at about half a second per photo on a CPU; it is a demonstrator built on internet photos, not a validated product.

From one specimen photo to a cautious name

A training-free identifier that names a river invertebrate from one photo and stops at the order when two species are too close.

Tap a block to see what it does.

  • Input
  • Data
  • AI
  • Logic
  • Output

Input

Public photos

320 GBIF photos, CC0 or CC-BY only, each with licence, author and record ID in a manifest: 40 per taxon, 8 taxa.

  • GBIF API

Hands to Memory banks, Blind test set

Microscope focus checker

Rejects blurred microscope photos of probe pins, with no blurred photo passed as sharp.

  • Python
  • PyTorch
  • MobileNetV2
  • OpenCV
  • PyQt5
  • openpyxl
  • 22% → 0blurred photos passed as sharp on a frozen validation set (0 of 41)
  • 43 / 43false ‘sharp’ calls stopped by the sharpness veto
  • 0 / 89decisions changed by the TDD refactor

The same probe-card manufacturer needed out-of-focus microscope photos of pins discarded, with one hard rule: no blurred photo may pass as sharp, while an earlier model let about one in five through. I chose the CNN on blurred photos passed rather than on accuracy, added a sharpness veto independent of the network and an operator review, and moved the decision into a pure, tested function. On a frozen validation set, blurred photos passed as sharp fell from 22% to 0 of 41 at about the same accuracy, and the per-family analysis showed the next step: inspect each tip at full resolution.

Two independent judges before any ‘sharp’

A CNN and an independent sharpness veto must both agree before a pin photo passes as sharp; anything doubtful goes to an operator.

Tap a block to see what it does.

  • Input
  • AI
  • Logic
  • Output
  • People

Input

Pin photo

A 2040 × 1530 microscope photo with 6 to 9 pins, from different product families.

Hands to Focus CNN, Sharpness veto

Public-tender radar

Finds the few public tenders worth answering each night and proposes actions a person approves.

  • Python
  • FastAPI
  • SQLite
  • APScheduler
  • React
  • Codex CLI
  • 157 → 14real tenders in the first 90-day backfill, then shortlisted
  • 8 → 0shortlisted false positives after an exclusion-list bug fix
  • 674tests passing at the last recorded run

Simitecno's sales team searched public tenders by hand, and the right ones are few: the purchase codes for microscopes also catch surgical microscopes, electron microscopes and sequencers. I specified a nightly pipeline that pulls official EU and Italian tender data, scores each notice with a domain ontology and verbatim evidence, calls an LLM only behind a privacy gate and proposes at most five actions each morning for a person to approve. The first 90-day backfill found 157 real tenders and shortlisted 14, and fixing an exclusion list that was never imported took the false positives in the shortlist from 8 to 0.

A night shift that ends in five proposals

Tap a block to see what it does.

  • Input
  • Data
  • Logic
  • AI
  • People
every night at 05:30

The heart of the system

Public-tender radar

Every night it pulls official EU and Italian tenders, scores them with a domain ontology and wakes the sales team with at most five actions to approve.

Company second brain

Parallel AI readers turned a 52,800-file archive into searchable, source-cited knowledge.

  • Python
  • Claude Code
  • Obsidian
  • graphify
  • PyMuPDF
  • python-docx
  • pywin32
  • 52,839files scanned, read-only
  • 10,281facts, each with its source
  • 1,574 / 3,102queued documents proven read to the end, counted on disk

Simitecno's know-how sat in a production archive of about 52,800 files nobody could search, with personal data and prices mixed in. I designed a read-only pipeline that extracts text from every format, classifies privacy before any AI read and hands reading batches to parallel AI agents under a strict contract, with gates that prove each document was read to the end instead of trusting the agents. It produced 10,281 source-cited facts and a 4,236-page Obsidian vault with zero broken links, with full reading proven for 1,574 of 3,102 queued documents, and I then packaged the pipeline as a reusable kit with a single config file.

A brain wired to its archive

Tap a block to see what it does.

  • Input
  • Logic
  • AI
  • Data
  • Output

The heart of the system

Company second brain

Every fact the company knows, with the file it came from. Agents read in parallel, gates check their work, and the brain only keeps what is proven.

Connected to Company archive, Extraction & privacy, Reading batches, Reader agents, Verification gates, Fact cards, Obsidian vault, Coverage status

Trade-fair video engine

A data-driven engine that rendered 33 product videos for the booth screens of a trade fair.

  • HyperFrames
  • JavaScript
  • HTML
  • Python
  • NumPy
  • SciPy
  • ffmpeg
  • 331080p videos: 8 business areas and 25 market sectors, each with music, silent and a cover
  • 240 → 30 fpsrendered high, blended down for real motion blur
  • −14 LUFSaudio loudness on every master

For the BIMU machine-tool fair in Milan, the booth screens had to show Simitecno's business areas and markets without an operator, in the brand's colours, and be regenerated whenever copy or figures changed. I built an engine where each video is a JSON file rendered through HTML templates on a fixed 120 BPM score, with eight visual styles, original music synthesised in Python on the same timeline, 240 fps rendering blended down for real motion blur and loudness at −14 LUFS. It delivered 33 videos of about 50 seconds, each with a music master, a silent master and a cover, joined without re-encoding into a 27-minute loop for the booth.

One timeline for picture and sound

Each video is a JSON file rendered through HTML templates on a fixed 120 BPM score, with original music synthesised on the same timeline.

Tap a block to see what it does.

  • Input
  • Data
  • Logic
  • Infrastructure
  • Output
Content
Timeline & look
Picture & sound
Masters
Booth

Input

Video data

One JSON file per video: hook, three problem cards, the turn, real software media, real numbers, call to action, style and variant.

  • JSON

Hands to Score builder

Real figures from the video's data file, on screen

Fuel-cell pilot line: SOFC module

Specified the SOFC cell of a fuel-cell pilot-line tender: ten stations, costed options and a feedback loop.

  • Python
  • python-docx
  • openpyxl
  • Matplotlib
  • Claude Code
  • 10stations specified, from slurry preparation to traceability
  • 30commercial options compared and costed, three per station
  • 11figures generated from code

A group of three companies was bidding for a research body's fuel-cell pilot line, and the annex for the SOFC module was mine, due within days. The draft treated SOFC like the linear PEM line and duplicated furnaces owned by the shared thermal module. I redrew the boundaries and specified ten stations around a multi-pass carrier, plus a loop where a vision station measures each part's real shrinkage after firing and the next printing pass is compensated. I delivered a 23-chapter annex, a costing workbook with three commercial options per station and 11 figures.

Fire, measure, compensate, print again

Tap a block to see what it does.

  • Input
  • Logic
  • Infrastructure
  • Data
  • Output
one turn = one printing pass

The heart of the system

SOFC module of the pilot line

Ten stations around a multi-pass carrier: after each firing a vision station measures the part's real shrinkage and the next printing pass is compensated.