AI is a tool we use — not the product we sell. We design and deploy complete operational systems for small and mid-sized companies, using the same ontology-first method that makes large-scale enterprise deployments actually work. What you get is a system your team runs the business on. Not a demo. Not a shell.
Whatever your operation actually needs. AI goes in where it earns its place — and nowhere else.
ERP, MES, work orders, routing, outsourcing loops, piece-rate payroll, shop-floor visibility that matches what is physically happening.
Order-to-cash, procurement, receivables and payables, ageing, reconciliation that actually closes instead of quietly drifting.
Sales pipelines, customer self-service ordering, quotation and after-sales flows, connected to the same model as the back office.
Dashboards and exception alerts built on your real numbers — so managers argue about decisions, not about whose spreadsheet is right.
Document extraction, classification, drafting, assistants, image search. Used where it removes real work — never as the reason for the project.
Legacy databases, hosted platforms you want to leave, and years of messy spreadsheets — brought into one coherent model.
Most enterprise software fails because someone starts building screens before anyone has modelled the business. We invert that order — and it is the whole reason our systems survive contact with reality.
We define your real objects and the relationships between them: what a job, a batch, an outsourced order, a piece-rate record actually mean in your operation, and the rules that bind them together. This is where we find the contradictions your current process is hiding.
You sign this off before we write codeA layered architecture with explicit rules for what belongs where, so modules stay portable between projects, extendable by other engineers, and resistant to the rot that turns year-two systems into rewrites.
Each module is built against the ontology, reviewed and repaired in separate passes, then accepted and frozen so later work cannot silently break what already works.
Your historical data migrated and reconciled, your people trained, a sandbox proven before production, and continued iteration once it is live. This is the step most projects skip, and it is the step that decides whether a system is used.
This is the same principle behind Palantir's ontology layer: software only becomes useful when it speaks the business's own language rather than forcing the business to speak the software's. We apply that discipline at a scale mid-sized companies can actually afford — with our own ontology method and architecture standard behind it.
The most expensive thing in enterprise software is a system nobody ends up using.
We engineer against the empty shell. Guards against hollow modules and incoherent navigation are built into our delivery pipeline as explicit checks — because "looks finished but isn't" is the default failure mode of software built quickly, and it has to be designed out rather than promised away.
Their entire operation ran on Excel — production, piece-rate payroll, quality, materials, shipping. This is how we took it apart and rebuilt it. Client anonymised; the numbers are from the real engagement.
We didn't start from a requirements document — those describe what people believe happens. We asked for the real working files instead, and received 73 documents. 22 held real data; 21 were blank templates. That split was itself the first finding: a blank template tells you how a factory intends to manage something; the filled ones tell you how it actually does. The two rarely agree.
Then we built a glossary of their own vocabulary — every word used on the floor, mapped to what we understood it to mean, handed to each department head to tick or correct. We put 65 open questions to them, and got 65 answers.
We did not simply believe the answers. Each was re-checked against their own records. One stated payroll formula was verified across 4,598 piece-rate records — it held up, and in passing exposed six tiers of guaranteed hourly wage that everyone used in practice but that existed in no master data anywhere.
Two departments also gave us opposite answers to the same question — is a 13.7% defect rate normal? Production said yes, quality said no, and neither knew the other disagreed. Meanwhile the order master, goods in and out, outsourcing notes, statements and receivables existed only as empty templates: the order chain had a beginning and an end, with nothing joining them.
The ontology came first: 29 tables with effective dating, historical snapshots, and employment identity split into two dimensions. One decision shows why this step exists — job type belongs to the work, not to the worker. A person is not "a flat-machine operator"; a task is flat-machine work, and the same person may do three kinds of it in a day. Model that the wrong way round and payroll becomes unfixable two years later, long after anyone remembers why.
The client signed the ontology off before we wrote a line of application code — all 65 questions closed, version dated and confirmed. Correcting a misunderstanding at that point costs one line of a document.
Architecture followed from it: layered, with a single payroll service that is the only place in the system where money is ever calculated. Daily output and order progress are derived, never re-keyed — which is precisely what kills the triple entry rather than merely speeding it up.
Each module is built against the ontology and must pass 31 automated gates before it counts as done — covering validation, permissions, money masking, concurrency and workflow state.
One gate tests the other gates. It re-injects the original defect each gate was written to catch and fails if that gate stays green — because a gate turns green when the product is fixed, and it also turns green when it has quietly gone blind. One of ours silently stopped checking 60 fields and kept printing green; only a manual recount caught it. A ruler nobody re-checks is not a ruler.
On top of that we run multi-role QA: reviewers playing production controller, storeman, inspector and accountant, walking the real product through a browser the way those roles actually would.
This is what "not a shell" means in practice. Bugs we caught this way include an export that stripped the on-screen wage masking, an inspection sheet that could pass a batch of 100 while claiming 5,000 sampled, and a stock posting that added three times if you clicked three times.
Sandbox first, proven with their real history loaded — 8,721 piece-rate records migrated, so the system opened with their past already in it rather than with empty tables. The interface ships in English, Simplified and Traditional Chinese, because the floor, the office and the customer don't read the same one.
Production reporting moved to scan-and-report at the workstation. One scan now produces what three spreadsheets used to: the daily report, progress against the order, and the payroll line. The re-keying isn't streamlined — it stops existing.
The spreadsheets aren't kept running alongside the system as a comfort blanket. They're replaced — because anything still maintained by hand becomes the version people trust, and the system quietly dies.
Real deployments inside real operations. Client names withheld — details available under NDA.
Full stock and production system for a precision tooling manufacturer, running a sandbox-to-production release pipeline.
Reverse-engineered a legacy system and found an outsourcing and inventory loop that had been broken for years, with tens of millions in value unaccounted for.
Procurement through delivery and settlement, replacing a spreadsheet-and-memory process.
Moved a company off a rented cloud platform onto a system they own, and merged production management into it.
A running consumer sports platform with membership, events, training plans and messaging.
You describe the problem. We do the modelling — and we tell you early if we are not the right fit.
We sit with the people doing the work, not just with the spec document.
We build the ontology and you sign it off. The cheapest place to be wrong.
Module by module, each verified, accepted, then frozen.
Installed inside your business, data migrated, people trained, then improved.
Whether you know exactly what you need, or only that something is broken and expensive — the first conversation is free, and we will tell you honestly if we are not the right people for it.
你的營運真正需要什麼,我們就做什麼。AI 只用在它真正能省下工作的地方,其餘一概不硬塞。
ERP、MES、工單、途程、委外循環、計件薪資,以及與現場實況一致的生產可視化。
從接單到收款、採購、應收應付、帳齡分析,做得出真正能結清的對帳,而不是年年帶著誤差往下滾。
業務管線、客戶自助下單、報價與售後流程,與後台共用同一套資料模型。
建立在真實數字上的儀表板與異常告警,讓主管爭論的是決策本身,而不是誰的 Excel 才對。
單據辨識擷取、分類、草稿生成、智慧助理、以圖搜圖。用在真能省下人力的地方,絕不當作專案的理由。
舊系統資料庫、想脫離的租用平台、累積多年的雜亂試算表,全部收斂進同一套模型。
大多數企業系統之所以失敗,是因為還沒有人把業務模型想清楚,就已經有人開始畫畫面。我們把這個順序倒過來——這也是我們的系統經得起真實營運考驗的根本原因。
我們定義出你真實世界裡的物件與彼此的關係:在你的營運中,一張工單、一個批次、一筆委外訂單、一筆計件紀錄到底代表什麼,以及它們之間受哪些規則約束。矛盾往往就是在這一步被挖出來的。
這份模型你確認之後,我們才開始寫程式分層架構並明確規定「什麼東西該放在哪一層」,讓模組可以跨專案移植、可以交給別的工程師接手擴充,也不會在第二年腐化到只能整套重寫。
每個模組都對照本體來實作,自審與修復分開兩回合進行,驗收通過後即凍結,避免後續開發默默弄壞已經能用的功能。
歷史資料移轉並與舊系統勾稽、人員教育訓練、沙盒驗證通過才上生產,上線後持續迭代。這一步是多數專案略過的,卻正是決定系統會不會被用起來的關鍵。
這與 Palantir 的本體層(ontology layer)是同一個原理:軟體唯有講得出企業自己的語言,才會真正變得有用,而不是逼著企業去遷就軟體。我們把這套紀律,用中小企業負擔得起的規模做出來——背後是我們自己的本體方法與架構標準。
企業軟體最貴的一件事,是做出一套最後沒人用的系統。
我們是用工程手段去防「空殼」的。防止模組中空、動線混亂的檢查,已經寫死在我們的交付流程裡成為明確關卡——因為「看起來做完了、其實沒有」是快速開發最典型的失敗模式,這件事只能靠設計去杜絕,不是靠嘴巴保證。
他們整個工廠都靠 Excel 在運作——生產、計件薪資、品檢、物料、出貨。以下是我們如何把它拆開再重建。客戶不具名,數字都來自真實專案。
我們沒有從需求文件開始——需求文件寫的是「大家以為發生的事」。我們要的是他們實際在用的檔案,收到了 73 份文件。其中 22 份有真實資料,21 份是空白模板。這個比例本身就是第一個發現:空白模板告訴你這家工廠打算怎麼管,有填的才告訴你他們實際上怎麼管,而兩者往往對不上。
接著我們整理出一份他們自己的詞彙對照表——現場講的每一個詞,對上我們理解的意思,交給各部門主管逐條打勾或糾正。我們提出 65 個問題,也拿到 65 個回答。
但我們沒有直接採信這些回答。每一條都拿他們自己的紀錄回頭驗算。其中一條薪資公式,我們用 4,598 筆計件紀錄逐條比對——結論成立,而且順帶測出六檔保底時薪:大家實務上都在用,卻不存在於任何一份主檔裡。
還有兩個部門對同一個問題給出相反的答案——13.7% 的不良率正常嗎?生產說正常,品檢說不正常,而且雙方都不知道對方跟自己想的不一樣。同時,訂單總表、出入庫、外發單、對帳單與應收應付全部只是空模板:整條訂單鏈首尾都有,中間是斷的。
本體先行:29 張資料表,含生效日期、歷史快照,並把用工身分拆成兩個維度。其中一個決策最能說明這一步為什麼存在——工種屬於「活」,不屬於「人」。一個師傅不是「平車工」;是那份工作屬於平車,而同一個人一天可能做三種。這件事模型建反了,兩年後薪資就再也算不清,而那時已經沒有人記得為什麼。
客戶確認這份本體之後,我們才開始寫應用程式——65 題全部收斂,版本定稿並註明日期。在這個階段發現理解錯了,代價只是改文件上的一行字。
架構由此長出來:分層,並且只有唯一一支薪資服務,是全系統唯一會算錢的地方。當日產量與訂單進度一律用算的、不再人工登錄——這才是真正讓「重複登錄三遍」消失,而不是只把它變快一點。
每個模組都對照本體實作,並且要通過 31 道自動化閘門才算完成——涵蓋欄位校驗、權限、金額遮罩、並行競態與單據狀態流轉。
其中有一道閘門,是用來測其他閘門的。它把每一支閘門當初抓到的那個真實缺陷重新注入回去,如果那支閘門依然是綠的,就判它失敗——因為閘門會在產品修好時變綠,也會在它自己悄悄瞎掉時變綠。我們就有一支閘門無聲地少檢查了 60 個欄位,卻照樣印綠,是靠人工重數才發現的。一把從來沒人回頭校準的尺,不是尺。
在這之上我們還跑多角色 QA:由審查者分別扮演生管、倉管、品檢與財務,用真的瀏覽器,照那些角色真實的做事方式把產品走一遍。
這就是「不是空殼」在實務上的意思。這樣抓到的缺陷包括:報表畫面遮了金額但匯出沒遮、整批 100 件卻填抽驗 5,000 件仍判允收、以及「過帳」連點三下庫存就加三遍。
先上沙盒,並且是灌進真實歷史資料驗證過的——8,721 筆計件紀錄完成移轉,所以系統一打開,裡面就是他們自己的過去,而不是一張張空表。介面同時提供英文、簡體、繁體三種語言,因為現場、辦公室與客戶讀的並不是同一種。
生產回報改成在工位上掃碼報工。現在掃一次,就同時產生過去要三張表才有的東西:當日日報、訂單進度、以及那筆計件工資。重複登錄不是被簡化——是不再存在。
我們不會讓 Excel 跟系統並行「以防萬一」。是直接汰換——因為只要還有一份靠手工維護的表,那份表就會變成大家真正相信的版本,系統也就默默死掉了。
都是真實營運中的部署。客戶名稱不公開,可在保密協議下提供細節。
為精密刀具製造商建置完整的進銷存與生產系統,並以沙盒到生產的發布流程運作。
逆向分析舊系統後,發現委外與庫存的閉環已斷裂多年,數千萬價值的料件長期掛在帳外。
從採購、出貨到結算全流程上線,取代原本靠試算表與人腦記憶的做法。
協助企業從租用的雲平台搬到自己擁有的系統,並把生產管理一併併入。
正在運行的運動社群平台,含會員、賽事、訓練計畫與訊息功能。
你描述問題,建模的工作交給我們——而且如果我們不適合做,我們會很早就告訴你。
我們會坐到實際做事的人旁邊,而不是只看需求文件。
我們做出本體,由你確認。這是「錯了最便宜」的階段。
一次一個模組,逐一驗證、驗收,然後凍結。
裝進你的企業裡,移轉資料、訓練人員,再持續優化。