
OPORA · Build Control is a demo of an alternative ERP admin panel for a wholesale and retail building materials supplier. A warehouse with reorder points, orders, an AI sales agent for Telegram, tasks for live managers, and a dialogue retrospective all live in one window. The OPORA company is fictional and the data is for demonstration: 70 catalogue items, seven orders, four dialogues, and five employees, one of whom is the AI agent. The logic, however, is real, and you can click through it yourself.
The challenge
A building materials supplier sells heavy, bulky goods: cement by the bag, aerated blocks by the cubic metre, metal roofing by the square metre. Customers rarely arrive with an item code. They arrive with an area: "a ten by twelve house, how many blocks do I need?". A manager does the maths on a calculator, checks stock in 1C, and answers an hour later, by which time the customer has already bought next door.
1C is good at accounting, but as a sales workplace it is awkward: the interface is built for accountants, every change goes through a 1C developer, messengers and AI live elsewhere, and a shortage surfaces only once the cement has run out. Leaving 1C overnight is scary. So we show a transitional setup: 1C stays the source of items, prices, and stock, while sales and warehouse work run in a contour of your own.
This case is not about a specific client. We built the demo to show what such a migration looks like from the inside and to let people try it before the first meeting.
What is inside
- Dashboard: eight metrics (items, stock value, items below the norm, orders, revenue, average order, open tasks, agent dialogues), a seven-day sales and dialogue chart, and stock value by category;
- Products and stock: 70 items in 12 categories, tiles or table, sorting by stock value, urgency, price, and quantity, and a shortage-only mode;
- Reorder points: each item has its own norm, statuses "enough", "watch", "low", and "out", and a reorder shortlist;
- Orders: a builder with stock search, a discount capped at 7%, and a live total, plus one-click status changes: new, reserved, paid, shipping, done;
- Tasks: a three-column board, queued, in progress, done;
- Sessions and chat: agent dialogues with customers and a manager reply straight from the panel;
- Prompts and retrospective: the agent instruction blocks and findings from reviewed dialogues;
- Team and motivation: roles, deals, and points, the AI agent included;
- Ctrl+K command palette: search across products, orders, tasks, people, and sections.
Under the hood: a Node.js server with no external dependencies, Chart.js for charts, and 21 in-house SVG product images weighing about 8 KB in total.
Warehouse and reorder points
A stock number alone says little: 300 bags of cement mean one thing in July and another in November. So every item has a reorder point. Below the norm it is "low", up to 135% of the norm it is "watch", above that it is "enough". The reorder shortlist pushes problem items to the top, and the truck button creates a logistics task with the shortfall to one and a half norms already calculated.

Orders without a free-text field
Instead of free text, an order is assembled from warehouse items: search, quantity, discount, and total are calculated on the fly. The discount is capped at 7%, exactly as in the agent instructions, so humans and AI play by the same rules. The order then moves from "new" to "done", one click per step.

The AI sales agent and how it hands work to people
The agent instructions consist of six blocks: sales and advice, quantity calculation, order placement, manager tasks, stock replenishment, and restrictions. Together they form the AGENTS.md file. The agent takes availability and prices only from the catalogue, and if an item is not in the database it says so instead of inventing stock.
The agent calculates quantities using norms from the prompt: 51 bricks per square metre of half-brick masonry, 8.5 kg of gypsum plaster per metre at a 10 mm layer, one plasterboard sheet per 3 m². It states the 5-7% margin to the customer on a separate line, so nobody is surprised by an extra bag.

The agent calls a human in four cases: the customer asks for deferred payment, the order exceeds 150,000 UAH, non-standard transport is needed, or the item is out of stock and must be ordered from a supplier. The manager task names the customer, the order number, the issue, and the deadline. The agent is also forbidden to promise discounts above 7%, to quote delivery dates without logistics, or to advise on load-bearing structures and foundations: that is an engineer's job.
An honest note about the demo: no live Telegram bot is connected to the public version. The dialogues in Sessions and chat are prepared in advance and show the workplace where the agent's conversations land in a production setup.

Retrospective: the agent learns from reviewed dialogues
Reviewed dialogues turn into retrospective findings with an impact rating. The demo has four: customers name an area instead of a product, delivery comes up before price, substitutes are rarely offered, and wholesale buyers want deferred payment. Each finding comes with concrete actions: add a calculator to the prompt, show delivery terms next to the price, discuss deferrals over 150k UAH only through a manager.

Actions become prompt edits. Each instruction block is edited separately and AGENTS.md is rebuilt from all of them, so the agent's behaviour is changed by the head of sales rather than by a developer.

Demo mode: you cannot break it
The server is read-only: any POST or PUT gets a 405 response. Everything a visitor creates or changes (orders, tasks, statuses, prompt texts, chat messages) is stored in their own browser's localStorage. Other visitors do not see those changes, and the Reset demo button restores the initial state. So click away: the worst that can happen is an order for 400 bags of cement that only you will ever see.
Data structure
Nine entities linked by item code, chat id, order number, and manager.
System outline
The path from a customer message to a prompt edit, and where 1C sits during the transition.
Interface layout
How the admin panel is organised: navigation on the left, sections on the right, the demo contour always in view.
Next step
This contour suits any wholesaler with a large catalogue and a messenger in the sales process: plumbing, electrical goods, finishing materials, spare parts. We start with an export of items and stock from your 1C, one sales channel, and the rules for when the agent calls a human. After that the retrospective tells you what to improve next.
Where to see it
The demo is open to everyone: frontend-erp.ingello.com. The company and data are for demonstration, and anything you change is saved only in your browser.
A similar solution: platFORMA - an advanced system for your company's departments.