AumCreate

APM (SEMIALT) · 2026

SEMIALT — MOSFET Cross-Reference Platform

A custom MOSFET cross-reference platform developed for SEMIALT, a power semiconductor manufacturer. A visitor enters a competitor’s part number and receives the equivalents from SEMIALT’s own range, or an explicit statement that no qualified equivalent exists. Built on Laravel with a Filament back office; the public pages are pre-rendered and served as static files.

APM (SEMIALT) SEMIALT — MOSFET Cross-Reference Platform
11
competitor manufacturers cross-referenced
8,553
pre-rendered pages in the public sitemap, counted 12 October 2026
2,139
parts in the parametric selector
13
sitemap shards, so each section can be recrawled on its own

The brief

The requirement was a cross-reference engine in which equivalence is decided by technical qualification rather than by similarity scoring. A pair is published only once it clears every mandatory condition: identical polarity, an identical standard package name, a voltage rating no lower than the part being replaced, and on-resistance compared only within matching gate-drive conditions — 10 V against 10 V, 4.5 V against 4.5 V — with every condition present on both parts required to pass. Where two parts share no common test condition, the pair is recorded as not comparable and is withheld from publication. Scoring is applied after qualification and only to order results that already qualify; a high score cannot promote a part that failed a mandatory condition. Thresholds and weights are editable in the back office.

Parameter data

Parametric data is loaded from supplier workbooks through an import pipeline built for the shapes specification sheets actually take. Column headings are matched regardless of case, spacing, bracketing or unit symbols. Values are normalised before they are stored: ranges such as 1.5V–18V are split into bounds, mixed units are converted to one scale, P-channel negatives and the two value sets of a dual device are each handled on their own terms, and merged cells are resolved to the rows they cover. Every import writes an audit record — rows read, rows written, rows skipped, rows needing a decision. A zero in a numeric column is treated as a value requiring confirmation rather than as a measurement: a zero on-resistance would otherwise rank as the best possible result and distort every comparison that touches it.

Natural-language part finder

A natural-language finder was built on top of the same engine, on an architecture in which fabrication is structurally impossible rather than discouraged by instruction. The language model’s only job is to turn a sentence into query conditions; part numbers, parameters and scores are read from the database by the application, and the model is never given access to the catalogue. The one sentence the model writes — the explanation of a recommendation — is checked number by number against the stored data, and the whole sentence is discarded if it contains a figure the data does not support. A part number that is not found is reported as not found, with any corrected spelling stated explicitly rather than substituted silently. Every request is logged with the conditions parsed and the part numbers actually returned, so any answer can be audited after the fact. The model provider is a back-office setting — endpoint, model name and key — changed without a code change or a redeployment.

Published as static files

Cross-reference, product, package and manufacturer pages are pre-rendered and written to disk, and nginx serves them directly: on a hit the application does not run at all. The site is rebuilt after a data change, and the sitemap is split into thirteen shards so each section can be recrawled on its own. Visitors reach the same pages search engines index, with no query layer between the request and the response.

Operated by the client

The back office is in Chinese and is run by SEMIALT’s own staff: importing data, uploading package drawings and catalogue PDFs, enabling or hiding a product category, adjusting the matching thresholds, and creating accounts for colleagues. Only categories that actually have published parts are listed: an empty one is left out of the navigation, the downloads and the sitemap, without anyone having to switch it off. Enquiries arrive with the part numbers already attached — a quote link on any row carries the part through to the form, and a visitor with a long list can paste or upload it instead. Uploaded files are stored outside the web root under generated names and are reachable only from the back office, while the same file is attached to the notification so that sales can open it from email. Analytics conversions are recorded for submitted enquiries only, not for page views.

What we delivered

  • Cross-reference engine
  • A parametric selector over the full range — filter, compare side by side, export as CSV
  • Batch cross-check: a whole BOM pasted or uploaded, every line matched and returned as a table
  • A cross-reference index per competitor manufacturer, and a landing page per package
  • Bulk import with unit normalisation and an audit record for every run
  • A natural-language part finder whose results are read from the database, never generated
  • A quote path that carries the part number from any row into the enquiry form
  • A back office the client’s own staff run
  • Pages pre-rendered and served as static files
  • Analytics and ads conversion tracking that counts submitted enquiries only

Built on

  • PHP 8.4
  • Laravel 13
  • Filament 5
  • MySQL 8
  • Redis
  • nginx
  • Cloudflare

Inside the site

  1. Each competitor manufacturer has its own cross-reference index, filterable by channel, package and voltage, with the APM candidate and its parametric score on every row.

    Each competitor manufacturer has its own cross-reference index, filterable by channel, package and voltage, with the APM candidate and its parametric score on every row.

  2. The parametric selector covers the full APM range: filter by type, voltage, current and package, compare a selection side by side, or export the result as CSV.

    The parametric selector covers the full APM range: filter by type, voltage, current and package, compare a selection side by side, or export the result as CSV.

  3. A whole BOM can be crossed at once — part numbers pasted or uploaded as a list, each line matched against the range and returned as a table.

    A whole BOM can be crossed at once — part numbers pasted or uploaded as a list, each line matched against the range and returned as a table.

  4. A corrected part number is stated, never substituted silently: the entered spelling, the part it was read as, and an invitation to send it in if that reading is wrong. Everything the explanation states — figures, package and match grade — appears in the table below it.

    A corrected part number is stated, never substituted silently: the entered spelling, the part it was read as, and an invitation to send it in if that reading is wrong. Everything the explanation states — figures, package and match grade — appears in the table below it.

  5. Requirements written in plain language are resolved against the parametric data. Where nothing in the range matches every condition exactly, the result says so and shows what it did match on.

    Requirements written in plain language are resolved against the parametric data. Where nothing in the range matches every condition exactly, the result says so and shows what it did match on.

Visit the live site ↗

Start a project