For developers
Five subsystems, five languages, one methodology. We are assembling a compact MVP team — 5–6 people, growing to 10–11 at peak phases.
What there is to build
This is not another CRUD app over a database. The platform connects three worlds: the cloud (portal, analytics, AI services), the physical site (a gateway that must survive a three-day internet outage without losing a single event) and the regulatory base (hundreds of documents that have to become verifiable code with references to the source).
That produces problems a typical SaaS never sees: parsing BIM models (IFC), field protocol drivers — from open ONVIF and BACnet to proprietary panels, an event core handling tens of thousands of sensors, a RAG pipeline that is forbidden to hallucinate, and cryptography that can be swapped out without rewriting the system.
The product requirements are written and estimated up front: every phase has a backlog, every backlog has priorities. You will not have to invent the product on the fly; you will have to build it well.
Stack by subsystem — and why exactly this one
portal/ · Ruby on Rails 8
runningThe portal, authentication, dashboards, core business logic. Rails 8 with no node: propshaft, importmap, SQLite, Kamal deploys. A CRUD core with auth iterates fastest here — the skeleton is already in production.
ai/ · Python (FastAPI)
phase 1The rule engine: rules as code with references to code clauses, RAG over the regulatory base, an assistant whose every answer passes citation validation. Hybrid models: cloud LLMs for generative tasks, in-house models for circuits data cannot leave.
edge/ · Rust + C
phase 2The on-site gateway must live without the cloud for 72 hours, buffer events and not leak memory for months. Rust where “must not crash” is checked by the compiler; C where field protocol drivers (ONVIF, Modbus, BACnet, OSDP) need the low level.
events/ · Elixir (OTP/Phoenix)
phase 2An event stream from thousands of sensors is a problem seemingly invented for the actor model: millions of lightweight processes, supervision trees, one failed handler never taking down the core. Plus Phoenix for live dashboards.
integrations/ · Node.js (TypeScript)
phase 2+Connectors to clients' external systems, PDF report generation, frontend infrastructure. The npm ecosystem works for us here, not against us.
Engineering principles — with the reasoning
Human in the loop
AI prepares drafts and findings; any action with consequences — a client report, a configuration change, a work order — is confirmed by a human, and the confirmation is recorded. Not bureaucracy: the condition for selling a product in a high-responsibility domain.
Data ≠ instructions
Everything a client uploads is untrusted input. Site content never reaches system prompts, and AI agents hold the rights of “an erudite intern of unknown loyalty”: reading and suggesting — yes, acting — no.
Critical things live locally
72 hours of edge autonomy is an architectural invariant, not a nice-to-have. The cloud aggregates and analyses, but its unavailability neither blinds the site nor loses events.
Zero Trust and crypto agility
mTLS between all components; the cipher is a replaceable parameter. A migration to post-quantum schemes lies ahead, and rewriting the system for it is not an option — so agility is built in from the first commit.
Secrets in ENV only
No credentials files and no keys in the repository — environment variables and masked/protected CI variables only.
How the work is organised
- A monorepo: portal/, ai/, edge/, events/, integrations/. Branch feature/* off develop; merge requests come with a “what / why / how it was verified” description.
- CI on every MR: linter, SAST, tests — all green or it does not ship. develop deploys to staging automatically; main goes to production manually after review.
- Tests are mandatory for new models and controllers; new dependencies only after discussion. The Definition of Done lives in the repository, not in somebody's head.
Who we are looking for, by phase
How to join
Write a few words in the chat about yourself and which subsystem interests you → a short call → access to the repository and the development dashboard on this portal → your first ticket from the MVP backlog. No multi-stage interviews and no throwaway test assignments.
Write in the chatContact
Project news lives in the Telegram channel; questions and discussion — in the chat. We answer personally: investors, pilot clients and team candidates alike.