Custom software development
Software built for one company, and it is yours.
Real-time 3D configurators, interactive vector work, tour platforms and the integration layers between an ERP and everything else. Fixed scope where the work can be described, retained where it cannot.
In short
What does ZYNTEIRO build?
ZYNTEIRO is a software engineering company in Batu Pahat, Johor, Malaysia. We build custom web applications for companies that have outgrown off-the-shelf software: real-time 3D and WebGL product configurators, interactive vector animation, 360° and VR tour platforms, and integrations between ERP systems, marketplaces and payment providers. The client owns the source code from the first commit. We also operate zynAIR, a managed Odoo 18 Community service.
When to call us
Four situations where custom is the cheaper answer.
Custom software is the expensive option until the alternative is counted properly. These are the four cases where the arithmetic reliably flips.
The product cannot be shown
A configurable product with a large option tree that customers currently choose from a swatch card, a spreadsheet or a salesperson’s description.
- Real-time 3D configurators
- AR at true scale
- Specification that feeds the quotation
The process lives between systems
Your ERP knows one half, your website knows the other, and a person re-types the difference every day.
- ERP and marketplace integration
- Payment and logistics providers
- Reporting warehouses
The interface is the product
Something that has to work in front of a customer and be unmistakably yours — not a template with a logo dropped on it.
- Interactive vector without a runtime
- Scroll-scrubbed technical illustration
- Brand motion that survives a Git diff
The off-the-shelf answer nearly fits
You are paying per seat for software you use a fraction of, and paying people to work around the part that does not fit.
- Replace, extend or wrap — we will say which
- Odoo extension rather than a new platform
- Honest build-versus-buy
The work
Every case has a write-up, including the parts that went badly.
Client work is named with permission. Two of these are studio pieces with no client behind them — they are labelled as such, because a portfolio that does not distinguish the two is not a portfolio.
Ledger — a quotation as a web page
Optional lines toggle, quantities move within agreed bands, and every change is re-priced by the ERP rather than by the page.
Muster — a plant telemetry wall
Seven instrumented tags, band-based alarms, and a documented action on every one that has them. Inject a fault and watch it escalate.
Section — scroll-scrubbed exploded assembly
Isometric line art generated from a parts table, driven by one scalar. Scroll it, drag it, or play it.
Signal — a vector state machine with no runtime
Four states, three animated channels, one exponential mixer. Drag the demand slider and watch nothing overshoot.
Powertechnic — live 3D home lift configurator
Four models, up to six landings, sixteen configurable surfaces and sixty-six finishes, rendered live in the browser.
Nextcloud for a design studio
Terabytes of renders and site photography, kept forever, read rarely. The economics of putting it back on your own hardware.
WeFresh — the logo as the loader
The loading screen is the most-repeated moment in a grocery shop. We gave it to their own mark, drawing itself in 75 frames.
Hyunix — 360° and VR tour platform
Temples, memorial parks, showrooms and developments across Johor. Their brand and their camera; our platform underneath.
Facial recognition screening at a school gate
A donated screening terminal, specified and installed by us. What hardware deployment teaches that software does not.
Capability
What we are actually good at.
Written as a list of things rather than a list of logos, because a technology list tells you nothing about whether a supplier has shipped anything with it.
Real-time 3D and WebGL
Product configurators that render on a mid-range phone, because the texture budget was written down before anything was modelled.
- Babylon.js, WebGL 2
- glTF geometry, KTX2 / Basis textures
- Parametric assemblies, not one mesh per variant
- Shareable configuration in the URL
Interactive vector
State-machine motion and technical illustration in hand-written SVG, themed by the same tokens as the page around it.
- No Rive or Lottie runtime where one is not justified
- Generated geometry from a parts table
- Scroll-scrubbed without hijacking the scroll
- Reduced-motion honoured properly
Integration
The layer between systems that each believe they are the system of record.
- Odoo, marketplaces, payment, logistics
- Idempotent, retryable, observable
- Failures that a named person sees the same day
- Contract tests, not hope
Performance work
Pages that are fast for the customer who has the most data, not for the demo account.
- N+1 and query-count analysis
- Asset and texture budgets
- Measured before and after, always
- Tested against real record counts
Platforms behind a brand
Technology delivered under a partner’s name, where the craft belongs to them and the hosting bill does not.
- White-label delivery
- Per-client subdomains
- Attribution enforced by the platform
- Clear ownership boundaries in writing
The thing beside the ERP
Where Odoo genuinely does not fit, a small application beside it beats a large customisation inside it.
- Shop-floor and warehouse tools
- Customer-facing portals
- Field and offline-first applications
- We will tell you which side of the line you are on
How an engagement runs
You see something running in the first month.
No discovery phase that produces only a document, and no invoice for a status report. If we cannot get a slice onto a staging URL early, the scope is wrong.
Scoping call
With the engineer who would do the work. We tell you if this is not for us.
- Written problem statement
- Rough order of magnitude
- No charge
Discovery
Process mapping, technical assessment, and a quote you can hold us to.
- Process map — yours to keep
- Fixed-scope quote
- Named risks
Build
Weekly builds on a staging URL. You review the running thing.
- Staging environment
- Weekly release notes
- Your repository
Launch and after
Cutover, handover, and a retainer only if you want one.
- Runbooks and training
- Monitoring
- Support plan
Fixed scope
A defined deliverable, a fixed price, a date. Correct when the work can be described precisely — which is more often than the industry admits.
- Priced after discovery
- Change requests quoted separately
- You know the number before it starts
Retained
A monthly block of engineering capacity against a moving backlog. Correct when priorities genuinely shift.
- Monthly capacity, prioritised by you
- Unused capacity discussed, not hidden
- Cancellable with notice
Assessment
A paid look at an existing codebase or a stalled project, producing an honest written verdict.
- What it does and what state it is in
- The first three things to fix
- Sometimes: keep your current supplier
Questions
The ones that decide whether to call.
The honest answer is that the range is wide enough to be useless without scope, so we quote after discovery rather than before it. What we can commit to up front is the shape: a paid discovery that produces a process map and a fixed-scope quote, and you own that map whether or not you continue with us. A project that cannot be described precisely enough to quote is a project that should not be started.
You do, from the first commit, in your own repository. We do not hold source as leverage and we do not licence you your own software. Where we reuse something we have built before, it comes to you under a licence stated in the contract before you sign, not discovered at the exit. Ask every supplier this question and get the answer in writing.
Both. Taking over someone else's codebase starts with a paid assessment that produces a written statement of what it does, what state it is in and what the first three things to fix are. We would rather tell you the honest version early than discover it at month four, and occasionally that assessment concludes the right move is to keep the current supplier.
Whatever the problem argues for, with a strong bias toward boring, well-supported choices. Real-time 3D on Babylon.js and WebGL 2 with glTF and KTX2 assets. Interactive vector work in hand-written SVG where a runtime is not justified. Python and PostgreSQL on the server, because that is what Odoo is and most of our work touches it. We do not choose a stack because it is new; we choose it because someone will still be able to maintain it in five years.
Discovery first, and it is paid, because a schedule produced before anyone has looked is a guess. After that the commitment we make is not a date but a shape: a first useful slice reaches a staging URL you can open long before full delivery, and you review the running thing rather than a status report. We give you a schedule once there is a written scope to hang it on — and anything quoted as a duration without a discovery phase behind it is a guess wearing a suit.
Yes — ZYNTEIRO TECHNOLOGY SDN. BHD., in Batu Pahat, Johor. We work across Malaysia and Singapore. For implementation work that touches a factory floor, a warehouse or a shop, being able to stand in the room matters more than most clients expect it to.
Tell us what you are building.
A conversation with an engineer. If it is not something we should build, we will tell you that and suggest who should.