Yogin Sidhu Edmonton, Alberta yoginsidhu@proton.me github/arcticseizure95

I build the software and the ground it runs on.

Thirteen builds, and a channel that doesn't exist yet. A cross-border trucking company runs its dispatch, its invoicing and its general ledger on one of them, today.

I own the pipe on all of them: the servers, the data, the ledger, the gate that decides whether the code ships. Nothing here rents its foundation from anyone.

Working on something where being wrong is expensive?
yoginsidhu@proton.me

Black is running.

Seven of them. Relay runs a cross-border carrier's dispatch, invoicing and ledger today. Asymmetry is live, with iOS submitted. Code Forge, the vault, the research rig and this page are in use. Vera is live, and her voice is broken.

Only these seven get the small green blocks moving along the pipe.

  • 1Relayrunning a company today
  • 2Asymmetrylive, iOS submitted
  • 3Code Forgein daily use
  • 4Veralive, voice broken
  • 5second-brainprivate, running
  • 6asymmetry-researchin use
  • 7This siteshipped

Blue works, and hasn't shipped.

Three. Alive works in a browser and has never run on a phone. Vera Live Voice works end to end at five to nine seconds a turn, too slow to use. The Trenches is in progress.

The upper floors are drawn in outline because they aren't built.

  • 8Aliveworks, never run on a phone
  • 9Vera Live Voiceworks, too slow
  • 10The Trenchesin progress

Grey is paper, rubble, or an empty lot.

Four. Relay Navigation is designed, not built, so it casts no shadow. The routing engine under it has no name yet. Alive native is two archived attempts, left standing. The channel is a staked, empty lot with 0 videos.

  • 11Relay Navigationdesigned, not built
  • 12Routing engineunnamed
  • 13Alive nativearchived
  • 14Yogin Sidhu, the channelnot started, 0 videos

The states are accurate. That is the whole point.

Admitting what is archived, too slow or not started is what makes running a company today believable. Every other portfolio claims everything shipped.

Most software would rather lie than say nothing.

It fills the gap. A missing reading becomes a zero. An unknown becomes a confident average. Nobody notices until the number is on an invoice.

I write the other kind. When my trucking software can't derive deadhead miles from the data it has, the screen says unavailable. It does not estimate. When my crypto platform has no history for a coin there is no score, and no neutral fifty papering over it. When a figure is about to hit a general ledger, deterministic code computes it and a person confirms it. A language model never gets to be the source of a number that touches money.

That costs something. Blank cells demo worse than confident ones. It is also the only reason software this young gets near a general ledger at all.

The other half is owning the pipe. A node I run myself. A notes vault that never syncs to a cloud drive. A health app with no account and no server, where the data physically cannot leave your phone. Infrastructure I can audit, on a bill of $0. Renting your foundation means someone else's outage, someone else's terms change, someone else's read of your data. So I build the boring layer myself and know exactly what it does.

Three that are load-bearing.

Relay

Running a company today

A transport management system replacing fifteen-year-old desktop software. Order entry, dispatch, invoicing, a real double-entry general ledger, fuel tax, driver and owner-operator pay, and a reconciler that matches bank deposits to open invoices on its own.

Relay is my product. Its first customer is a cross-border carrier my family runs. I say that plainly, because a related customer is a weaker reference than an arm's-length one, and you would find out anyway. Where it is not weaker: it runs a working company's dispatch and its ledger every day, and it cannot be switched off for a bad week. Every formula recovered from the old system is reimplemented to match it exactly. Parity first.

Open: the reconciler still runs on imported statements. The live bank feed is waiting only on credentials.

statusin daily production use
held-out test files175
tests passed / failed1,404 / 0
tests skipped3
migrations115
stackPostgres, Node
Relay's executive overview screen for a company called Sample Carrier Ltd.: revenue per loaded mile, cash position, open orders, receivables, and a panel headed Not tracked yet that lists deadhead percent, operating ratio and margin per load, each with the data it still needs.
Sample data. Relay's executive overview, from the public demo on the Relay landing page. Sample Carrier Ltd. is the demo's placeholder company, and every figure on the screen is sample data. None of it comes from the carrier's books. Look at the panel headed "Not tracked yet": deadhead, operating ratio and margin per load each say which data they need (ELD miles, all expenses, fuel costs) and show no number until they have it.

Asymmetry

Live · iOS submitted

Crypto research for people who want to know where they are in the cycle. It does not pick coins. One composite timing score per asset, on-chain and macro context underneath it, and a separate profile of what a token's contract can actually do to you (mint, freeze, upgrade), reported as plain facts with no letter grade.

Three dashboards that deliberately never merge: one for the long horizon, one for execution, one that is a game. They cross-reference. Combining them would average away the thing each is good at.

The model's misses are published beside its hits. Coins without enough history stay unscored, with no placeholder.

researchasymmetry.ca
corefree
iOSsubmitted
stackReact, Cloudflare
infra cost$0
A one-year chart from app.asymmetry.ca, titled BTC price and risk level, on a dark background: the Bitcoin price as a purple line on a log scale from about 60 to 100 thousand dollars, and the model's risk level from 0 to 100 as a second line that changes colour with the score.
Screen captured 2026-09-29. One chart from the network screen at app.asymmetry.ca: the purple line is Bitcoin's price, the line that changes colour is the model's risk level from 0 to 100. It is a reading of where the cycle is, with no buy or sell call on it. It has moved since that day. On a phone, the crop shows the last three months, with the dollar scale moved in beside them (the dashed line marks the cut).

Alive

Works · never run on a phone

An everything-app for daily life, free, no account and no server. One timer engine driving workouts and focus blocks. A set log that opens pre-filled with what you lifted last time. Food by barcode showing the five nutrients people are actually short of; the eighty-four that don't apply stay off the screen. Vitamin D worked out from where you are and what the sky is doing: the one number a food log cannot answer.

No streaks that punish you, no red for a missed day, no variable-reward hooks. The count only goes up. Every figure states where it came from and how wrong it might be.

A web preview is deployed, but this has never run on a physical phone, only in a browser and against automated checks. Two earlier native attempts are archived. There is no app-store build.

assertions551
browser suites17
data that leavesnone
tested on a devicenever

And the other eleven, honestly.

Building in public only counts if the ledger includes what stalled.

Three above and eleven here make fourteen: thirteen builds and the channel, the same fourteen standing on the plot at the top.

Code Forge
The pipeline below. Six isolated roles, and scripts enforce the gates.
In daily use
Vera
An assistant over Telegram, built as my opposite. Her job is to take a pile of ideas and hand back one decision. Reads my vault, pulls live numbers, sends a morning digest.
Live · voice broken
second-brain
The notes vault Vera reads. Never leaves the machine, never syncs to a cloud drive.
Private, running
asymmetry-research
Backtests and placebo tests. Where an indicator has to survive before it goes near a published score, and where several didn't.
In use
Vera Live Voice
Talking to Vera out loud. The whole round trip works and takes five to nine seconds, which is too slow to actually use.
Works, too slow
The Trenches
The loud one. An arcade surface, walled off from the research brand on purpose.
In progress
Relay Navigation
Routing that knows a truck isn't a car, plus which facilities really hold a driver and which crossings really move.
Designed, not built
The routing engine
The reusable core under it. The hard constraint is data density: no budget buys you a probe fleet. It has no name yet.
Unnamed
Alive, native
Two earlier attempts, real and substantial, both superseded. Listed because deleting dead ends is how a portfolio starts lying.
Archived
yoginsidhu.com
This page, including the plot at the top of it. Hand-written, no framework, no build step, $0 to host.
Shipped
Yogin Sidhu, the channel
Distribution I own. Announced here before a single video exists, which is the point.
Not started
The plot from the top of the page. The row you are reading keeps its build; the rest fade back.

Nothing ships because I think it works.

Anything touching money goes through six roles that are not allowed to see each other's work. The order carries the argument, so it is numbered.

  1. SpecOne page of plain-English acceptance criteria. Writes no code.
  2. Test authorWrites the acceptance tests from the spec alone. Never reads the implementation.
  3. ImplementerWrites the code. Denied sight of the tests, and write access to them.
  4. RefereeRuns the gate. Refuses a verdict at all if the tests moved.
  5. AdversaryFresh context. Reads the diff, never the author's reasoning.
  6. TasteRuns only after the adversary passes. Asks whether the work is good enough to ship, a separate question from whether it is correct.

Two and three are the point: fitting your code to a test you can read is the exact failure this prevents. One agent here once reported a 96.30% mutation score that was really 94.44%, which is why nothing is believed unless the referee says it.

Ads rent attention. The plan is a channel I own.

Every product on this page owns its own foundation: the servers, the data, the gate. Distribution should work the same way.

Paid acquisition stops the day you stop paying for it. A back catalogue does not: it keeps returning traffic for years against a cost you already paid, at an ad spend of $0.

The honest asterisk: YouTube is rented pipe too. Google owns that audience and sets the terms. So the channel is reach, and the asset is what it converts into: a list I hold, on infrastructure I already run, for $0.

What it won't be is another "build an AI agent in ten minutes" channel; that lane is taken and saturated. It covers the work that is mine to publish: Asymmetry, and the rest of the board above, built in the open with the misses left in. Client work stays off camera.

channelYogin Sidhu
videos published0
statenot started
on the board aboveyes
ad budget$0

It is on the board with everything else, and it says not started, because a page that only lists what worked is not worth reading, and because announcing it here is the cheapest way to make it expensive to abandon.

I'm 23. I learned this on a company that couldn't stop.

I taught myself by rebuilding the software my family's trucking business depended on, while it was still running the business. There was no safe environment to practise in, which turned out to be the fastest possible way to learn what "correct" has to mean.

If you're working on something where being wrong is expensive (money, logistics, anything with a ledger under it), tell me about it.

yoginsidhu@proton.me

No photographs yet. There will be three: the yard, Relay on a screen in real use, and one unposed. They will be photographs, not renders.