What is VantageOS?
Now buildingMade in Canada

One system for the whole job

ProjectForBuilders · government · emergency response

A bridge, a hospital or a tower is built by an , a , dozens of , hundreds of workers and the watching over them, often for years.

Today each of them keeps their own records in their own tools. VantageOS is the one system they all work in: the plan, the people, safety, money and the record of what happened.

Six parts of a project shown either disconnected or linked through VantageOS VANTAGEOS

The problem

Take a guess

Out of every big project, the bridges, hospitals, transit lines and towers, how many finish on time, on budget and deliver what they promised?

Behind that number are real people.

On a public project, every dollar over budget is a taxpayer's dollar: money that could have kept a clinic open or put food on a family's table. Every week a crew spends chasing which version of a drawing is current, re-entering the same numbers in another tool, or arguing over who said what, is a week not spent building the things people are waiting for.

It happens in the gaps. The plan, safety, contracts, payments and site records each live in a different tool or on paper, so nobody has the whole picture. Three gaps every project knows:

Every one of those gaps comes back to the same problem: the record lives in too many places.

Want to see the solution?

Show me ↓
The solution

: one system of systems

VantageOS takes the pain points of a project, for every participant, shareholder and stakeholder at every step of the way, and solves them on one intelligent platform. The owner, the builder, every trade, every worker and every regulator work from the same record, so the plan, the people, safety, the money and the history of what happened never drift apart.

Who it's for

Anyone building things where the record matters

How a company comes on

  1. Found your company. Sign up, and onboarding sets the company up: who you are, what you build, where.
  2. Bring your people. Invite your team. Each person gets a role and sees the parts their job needs, nothing more.
  3. Start the job. Open the project and build its team. From the first day the plan, safety, money and the record all work on the same projects, people and history.

Questions people ask

The project, start to finish

Every module shares the same projects, people and records, so nothing is typed twice. Open any module for a guided tour of the real, running app on Operation Fraser Crossing, a demo project. Each screen comes with a short explanation, and numbered callouts walk you round it one part at a time.

1Numbered callouts explain each part of a screen→Arrow keys step through the tour
Coming soon

What's being built next

Everything above is running today. These are the interfaces still on the way, starting with the one that puts the platform in every worker's pocket.

Being built · the crew's day runs today

The mobile companion

A phone app that isn't a shrunken copy of the desktop. It knows who you are, where you are on site and what's happening right now, and shows only what matters to you in that moment.

It's also a working part of the platform, not only a window onto it. Every phone on site sends in check-ins, photos, voice notes and sign-offs as they happen. That fills gaps the platform has today: the emergency roll currently has no sign-in or location source, and the app becomes that source.

The crew's day already runs on the phone: attend the safety meeting, follow the slides live, sign, work each task against the schedule, raise a ticket, close out, go home.

Pick a role
Emergency declared
For this role

    What it feeds back into the platform
    Context-aware, everywhere
    • Place: walk into a site zone and its hazards, permits and the task you're on come to the top.
    • Moment: when an emergency is declared, everything else steps aside for the muster check-in. Try the switch.
    • Person: tickets, language and equipment authorisations shape what you're offered and in what language.
    • No signal: captures are kept on the phone and sync to the project record when you're back in range.
    −8 m
    Clay · how the parts talkCore sample CL-08 · pick an event

    Something happens once, everyone who needs it knows

      −14 m
      Glacial till · trustCore sample GT-14 · break the chain

      A record that can't be quietly changed

      When a project ends up in a dispute, both sides argue over whose records are right. VantageOS writes contract and dispute histories to a hash chain: each entry is sealed with a fingerprint that also covers the entry before it. Change anything after the fact and every seal after it stops matching, so the platform can say exactly which entry was altered.

      Try it. Change a word in any entry.

      Driller's note: that's real SHA-256, computed in your browser. We didn't fake the fake.
      Checking…

      services/immutable_audit.py · services/contract_ledger.py

      Rule the platform holds itself toWhat it means in practice
      No made-up numbersWhere there's no evidence for a figure, the platform says so instead of showing a plausible placeholder. A checker scans the code for hard-coded values passed off as measured.
      Fail closedSecurity and safety controls refuse when unsure. The privacy engine won't start without its language model, and production won't start if its database account could get past the walls between companies.
      Nothing is deletedRetired code moves to an archive instead of disappearing, so its history stays readable.
      −22 m
      Sand and gravel · the AI layerCore sample SG-22 · flip the view

      AI that keeps your names private

      Every AI request goes through one router. It tries models on your own machines first, and moves to a cloud model only if none can answer, and only to providers the deployment has switched on. A request asks for a kind of work, never a particular model, so what runs behind it can change. The goal is models of our own.

      Your own machinesalways first
      →
      Cloud providerif switched on
      →
      Next providerif switched on

      Before a prompt leaves the building, names become tokens

      Canadian ones outlined; they check real checksums, not just the shape of a number. The answer comes back with the real values put back in. If the privacy engine can't load, it refuses to run rather than letting text through.

      JobWhat does itWhere it runs
      Speech to textA speech modelOn your own machines. Sending audio to a cloud service stays off unless an admin turns it on.
      Hard-hat and vest detectionA vision modelOn your own machines. It refuses a model that wasn't trained on safety gear, so a general one can't pass as a hard-hat detector.
      ForecastingStatistical time-series modelsOn the platform's server
      OptimisationMixed-integer and linear programmingOn the platform's server
      Schedule confidenceMonte Carlo simulationOn the platform's server
      Reading and writing documentsLanguage models, through the routerYour own machines first, then cloud
      −28 m
      Silt · Canadian rules, built inCore sample SI-28 · pick a province

      When someone gets hurt, who has to be told, and by when

      Pick a province and what happened. These are the platform's own rules, run for real when this page was built: which regulator, who is responsible, and the deadline counted from the moment it happened. Where a rule needs a fact nobody has given yet, it names the fact instead of guessing.

      Getting paid on time

      Prompt payment laws set how many days a payer has after a proper invoice. Deadlines cascade from the owner to the general contractor to each trade.

      −35 m
      Weathered rock · walls between companiesCore sample WR-35 · open a list

      Competitors share the platform, never the data

      Many companies share one VantageOS, often rivals on the same project. None can see another's records, and that isn't left to each screen to remember. A request has to get through four walls.

      Inside a project, people belong to companies and report to someone. A record is visible to the person who made it and the chain above them. Nobody can report to themselves or create a loop.

      Driller's note: the fourth wall is the fun one. The server checks its own keys at startup and refuses to run if they could open a door.
      1. 1 · Every row carries its owner

        Company tables carry an organisation that can't be empty, stamped on every insert from the signed-in person.

      2. 2 · Every query is filtered

        The database layer adds "only this organisation" to every read. A read with no organisation set raises an error instead of returning everything.

      3. 3 · The database enforces it too

        Row-level security in the database itself hides every other company's rows, even from a query that forgot the filter.

      4. 4 · It won't start without the walls

        In production, the server checks its own database account at startup and refuses to run if that account could get past row-level security.

      Every table, sorted by who it belongs to

      Measured from the code. Most tables carry their company. Some hang off a parent that does. Some belong to a project, where members come from several companies. A few belong to nobody on purpose, each with its reason written down.

      −50 m
      Bedrock · where it standsCore sample BR-50 · talk or dig

      Measured, not claimed

      Most software describes itself from its plans. VantageOS generates its own map from the code on every pass: which routes the running app serves, which screens reach them, which tables are walled off, which parts are on the event spine. Every claim cites a file and line, and a validator checks the citations still hold. Every number on this page comes from that map.

      What the recent work was about

      Tested by living a real project

      Operation Fraser Crossing is a simulated major project in Port Coquitlam, BC. Its dataset runs to thousands of workers, and none of it is bulk-loaded: every company, person and incident is entered through the screens, as the people who lived them, on their own dates.

      • Incident reports couldn't be saved at all, because of a stale table.
      • Once they could, each took 33 seconds, from a self-deadlock in the security audit.
      • Five regulator notices the dataset records were refused by the platform's own rules. Each became a decision, not a hidden bug.
      That's the pitch · early access is open

      Want in? Be one of the first to use it

      VantageOS is still being built, and it's being built with the people who'll use it. Sign up and you'll be among the first let in as each part is ready.

      • An invitation as soon as a module you care about opens to testers.
      • A direct line to the team: what breaks for you gets fixed first.
      • No cost to early testers, and nothing to install.

      We use this only to contact you about early access. It isn't shared or sold.

      Or just talk to us

      Investor, public agency, builder or trade? Not ready to test yet? Tell us who you are and what you need, and we'll get back to you.

      Call 250-815-0170

      "Email the team" opens your own email with this filled in, to frank@vantageos.ca.

      Or keep digging

      Below here is for engineers: the path of one request, the whole event spine drawn, the guards that keep the code honest, and every change to the database. There's something at the bottom for anyone who makes it.

      Keep digging ↓

      scripts/readiness/run_all.py · scripts/platform_map.py · apps/api/src/platform_api/replay

      −65 m
      Granite · the path of one request · Core sample GR-65 · send one

      What happens when you press a button

      Every tap becomes a request to the server. Before it touches any data, it passes through layers, outermost first, each with one job. This list is read from the running application, in the order it runs.

      Driller's note: nobody gets to the data without going through every layer. We checked.
      −80 m
      Gneiss · the event spine, drawnCore sample GN-80 · trace a wire

      Who announces what, and who is listening

      Left, the parts of the platform that announce events. Middle, every kind of event, read from the code. Right, the handlers that act on them. Tap anything to trace its wires; tap empty space to reset.

      Driller's note: lots of talking, not much listening yet. Most events are heard only by the screens that refresh on them. Wiring up the listeners is the next job.

      One wire, end to end

      ScreenServer callServer fileAnnouncementWho hears it Safety FleetSafety CommandPOST /safety/incidentsreport an incidentPOST …/{id}/classifyclassify itPOST …/{id}/completefile a regulator reportincidents.pysafety serversafety.incident.created…obligations.computedreports now owed…obligation.completeda report was filedSafety FleetSafety CommandSite OperationsField OperationsDeadline timersautomatic jobWithdraw timersautomatic job
      One real chain, from the code: a safety manager reports an incident; the server records it and announces it; Safety Command and Field Operations refresh, and the platform starts (or withdraws) the regulator-report deadline timers on its own. Follow every module's signal in the Signal Atlas below.
      The Signal AtlasEvery module, every wire, drawn from the code as it stands today.Open it full screen →
      −95 m
      Schist · the ratchetCore sample SC-95 · search the guards

      Checks that only let things get better

      Each time the code changes, a set of guards reads the whole codebase. Most carry a list of known problems. The rule is one-way: a new problem fails the build, and a fixed one must be crossed off, so each list can only shrink. The orange line is its history.

      Every backend module, graded

      Ready means served, reached from a screen, walled off by company, on the event spine and free of silent fallbacks. The rest work and are being brought up to that bar, one guard at a time.

      Driller's note: a ratchet clicks one way. Ask anyone who's tried to back one out.

        −125 m
        Peridotite · how the ground was laidCore sample PE-125 · drag the timeline

        Every change to the database, in order

        The database's shape is built by a chain of migrations: numbered steps, each building on the last, from an empty database to today's. The bars show how many landed each day. Drag through them.

        −160 m

        You hit the core. Hello, nerd.

        0
        Surface tourist

        Almost nobody reads this far.