CaseElectronics and prototyping workshop

Workshop: an inventory app with AI agents, search by meaning and an MCP server

Our own app for an electronics and prototyping workshop: stock levels, internal codes, documents and photos for every part, search by meaning, an agent chat inside the app and an MCP server for external agents. The project isn’t public, so we show it through screenshots.

Client
Our own non-public project
Timeline
38 days to the current version
Workshop inventory app on a laptop screen: the parts table with search by meaning, next to a photo of a board
  • 30MCP server tools
  • 538vectors for search by meaning
  • 86changes by agents in 7 days
  • 877automated tests
Before

More and more parts, and only one memory

The workshop builds prototypes: boards, sensors, motors, batteries, 3D printing, soldering. To start a new build you need to know what is already on the shelf, how much of it there is, where the datasheet lives and whether the equipment can handle the job. All of this used to be kept in our heads and on the shelves: to find out whether we had the right board, someone had to go and look.

The first system was planned too big: 17 models and 18 tables, and it never got as far as an inventory interface, because nobody used it. So we started again with a different method: the smallest working version, a trial in real work, conclusions, then growth.

Entering things by hand takes too long. If every board has to be described in a form, the records fall behind the shelf and the inventory stops being true.

A name doesn’t tell you the job. You look for “what can drive servos”, and the table says PCA9685. Keyword search won’t find that.

Knowledge is scattered. The datasheet, the board photo, the equipment’s limits and the process video belong with the record, not in browser bookmarks.

Agents need boundaries. They have to read and change the inventory, but with no excess permissions and no making things up about what nobody has checked.

Solution

What we did

A Laravel and React app with its own MCP server: people, the chat and external agents all work with the same data and tools.

An inventory where every part has a code, documents and photos

Every part gets an internal code such as PRT-000141, and both people and agents find it by that code. Quantity is kept with units, the status follows it, and the type, domains and tags come from vocabularies that prevent duplicates: LEDs and LED are one term, while ESP32-S2 and ESP32-S3 are different ones.

Photos, datasheets, links and notes attach to the part. Equipment records describe what the workshop can do and where its limits lie. A project brings together parts, equipment, videos and 3D models you can rotate right on the page. Videos of up to 5 GB live on Google Drive and play inside the app without a public link.

Parts list: photo, internal code, type, terms, quantity and status

Search by meaning, not by name

Describe the task in your own words and the app finds what you need. The query “protect a lithium battery” brings up BMS protection boards, followed by cells and charging modules. The Match column shows how close a result is to the query. A description can be in one language and the query in another.

Under the hood: text-embedding-3-large at 1536 dimensions and pgvector inside PostgreSQL. The vector covers the name, part number, type, domains, tags and description, along with documents and AI descriptions of photos, so a hit in a datasheet lifts the part it belongs to. The code, status and quantity deliberately stay out of the vector: a stock change recalculates nothing. Every 10 minutes the app compares the SHA-256 of each text and updates only what has changed.

Search by meaning: a query about protecting a lithium battery and the Match column

A voice note becomes a part in stock

Forms alone will never fill an inventory, so everything goes to the inbox: voice, a photo, a file, a link, a note or a video. Speech becomes text with hints from the workshop’s vocabulary, AI describes every photo, and an agent takes the item, locks it for 30 minutes and creates the records.

A real example. On 28 October at 15:57, a 26-second voice note about a PWM board, asking to find the datasheet. By 16:07 the item was closed: part PRT-000141 existed, the agent had worked out the quantity from the photo, the official 52-page NXP datasheet was attached and the specs were in the description. In a separate paragraph the agent honestly wrote what it had not checked: the boards were never powered on, and an unbranded chip on the board might be a clone.

Inbox item with a voice note and the agent’s report on the new part

A chat inside the app and an MCP server for external agents

In the chat you can ask: “I want to drive 16 servos from one ESP32, what do we have in stock?” The agent runs several searches by itself, opens the cards and answers with a table of codes: what to take, what is missing, what to watch in the power supply. Every tool call is visible in the answer. Before the first message you pick the mode: read only, or read and write. Deleting isn’t possible in the chat.

The same is available from outside: our own MCP server with 30 tools, Streamable HTTP, OAuth 2.1 with PKCE and dynamic client registration. The owner chooses read, write and delete permissions on the consent screen, and an agent doesn’t even see tools outside those permissions. Tested with Claude Code and the claude.ai connector.

Chat with the agent: the question, tool calls and a table of part codes
Stack

What it is built with

Laravel and React with no page builders. Vectors live in the same database as the data, and the chat and the MCP server share the same tool classes.

  • Laravel
  • PHP
  • Inertia.js
  • React
  • TypeScript
  • PostgreSQL
  • pgvector
  • OpenAI API
  • MCP
  • Google Drive
Result

What came out of it

Numbers from the app’s dashboard as of 2 November 2026. The project is ours, we use it ourselves, and it keeps growing.

  • 141 parts and 7 pieces of equipment

    The inventory is filled in: every part has a code and a status, and 140 are in stock right now. All the equipment works, and you can see what the workshop is capable of.

  • 42 inbox items processed

    Voice notes, photos and files became inventory records. There are no active items right now: nothing is waiting in the queue.

  • 235 photos described by AI

    All 235 out of 235. The descriptions go into the vectors, so photos work for search too.

  • 86 changes by agents in 7 days

    Agents really do work with the data. Background jobs had zero failures over the same period.

  • 877 automated tests and PHPStan level 7

    22,864 lines of PHP in the app and 16,484 lines of tests. From the first commit to the current version: 38 days and 126 commits.

More of our work

A few more studio projects — from landing pages to online stores.

World Luxury Chamber of Commerce

World Luxury Chamber of Commerce

Anna ELT

Anna ELT

Passenger transportation

Passenger transportation

Attorney Diadechko’s Office

Attorney Diadechko’s Office

WORLD FUTURE AWARDS

WORLD FUTURE AWARDS

World Luxury Day

World Luxury Day

Energy Development

Energy Development

ATIS

ATIS

Rakovar

Rakovar

GETFIX

GETFIX

АвтоВикуп-1212

АвтоВикуп-1212

PPC Monsters

PPC Monsters

DZHAGAROVA Beauty School

DZHAGAROVA Beauty School

Викуп Квартир

Викуп Квартир

Tehosmotr

Tehosmotr

Авто Викуп

Авто Викуп

Ukreina

Ukreina

Amzfunnels

Amzfunnels

Каскад монтаж сервіс

Каскад монтаж сервіс

Aura Digital PR

Aura Digital PR

Need a system like this for your business?

A spare-parts warehouse, a service centre, a production line or a knowledge base with documents: tell us how your work is organised and we’ll suggest which part to start with. No pressure, no commitment.

Contact us

We’ll be happy to take your call

DISCUSS THE PROJECT

We are in touch. Write - we will definitely answer!

    YOUR APPLICATION HAS BEEN ACCEPTED

    We will contact you shortly

    TECHNICAL PROBLEMS

    Please contact us by phone: