Under the hood

Boring engineering. On purpose.

Most small-business SaaS gets built fast and held together with hope. GameStoreOS handles your store credit, your consignment payouts, your daily sales reconciliation, and the record of who your customers are. Those are the parts where a wrong answer costs you money or trust. We built it the way payment processors and accounting software get built, using patterns that have kept money straight for decades.

01

A real ledger for everything financial.

What it means for you

Store credit and consignment balances aren’t a single number we keep updated; they’re the running sum of every entry. Issuing credit, redeeming it, splitting payment across cash and gift card, paying out a consignor: each is a recorded event you can replay a year from now. When a customer disputes a balance, the trail is complete.

Engineering note

Append-only ledger with classification snapshots at the moment of each redemption. Pending-redemption holds prevent over-spend mid-transaction. Reconcilers run on a schedule and a break-glass tool exists for the operator if something needs hand-correction.

02

All-or-nothing operations.

What it means for you

Multi-step financial actions (a consignor payout, a split redemption, a sale being ingested) run inside a single database transaction. Either every step writes or none of them do. You don’t end up paying a consignor twice because the system hiccupped after step two.

Engineering note

Service-layer enforces a transaction-per-operation rule. Audit log writes happen inside the same transaction as the business write, so a recorded action and its audit row are always in agreement.

03

Reconciles with your POS, not against it.

What it means for you

Orders arrive from whichever storefronts you have connected, on a schedule, and you can force a sync yourself at any time. We treat the POS as the canonical record of what was actually tendered: what we say happened is what your POS recorded, not our best guess. Connect more than one storefront and each is drained separately, so a bad day on one can’t corrupt the other. If one does get out of sync, there’s a one-click resync that reloads that storefront from source and leaves the others alone.

Engineering note

Provider-neutral commerce seam: each provider supplies an order mapper, never a projector, and one shared projection turns every canonical order into the same sale rows, so adding a POS can’t change how an existing one is booked. Ingestion is idempotent on the provider’s own order and transaction identifiers. Wipe-and-resync is scoped to a single connection, and a reconciliation canary checks every projected order against the total the customer was charged.

04

Audit log on every state change.

What it means for you

Sign-ins, content edits, ledger writes, staff permission changes: all recorded with who, what, and when. Searchable from inside the admin. The same trail that lets us help you investigate a discrepancy is the trail a compliance auditor would want to see if you ever needed one.

Engineering note

Centralized audit registry with enumerated action types. Emitted only on persistence events, not on draft mutations, so the log reflects what actually happened.

05

Two customers never get merged on a guess.

What it means for you

The same regular reaches you through your website, your Discord, an event signup, and the register. We put all of that on one customer record, but only when something actually proves it: an email the sign-in provider verified, or a link the customer completed themselves with a code we mailed them. A similar name or a partial phone match links nothing. It waits in a queue for a staff member to confirm. A wrong merge shows one customer another one’s purchase history and credit balance, and that isn’t a decision we let an algorithm make.

Engineering note

No fuzzy matching, no confidence scores, no probabilistic identity graph. Linking is gated on verifiable proofs or an audited staff resolution; everything weaker opens a possible-match row instead. Merges and splits are transactional and recorded with the actor, the affected records, and the evidence they acted on.

06

Two-stage releases. Infrastructure as code.

What it means for you

No update reaches your store directly. Every change runs on a separate dev environment first, against real data shape and the same code, and only ships to production when a human operator types the release command. No 3am surprise auto-deploys. The cloud setup itself (servers, permissions, secrets, queues) is described in code and version-controlled, not clicked together by hand.

Engineering note

Dev and prod are separate GCP projects with separate Supabase databases. Both environments are deployed from the same Terraform module, so dev is a real rehearsal for prod. Release is a single explicit step from a known-green dev commit.

07

Boring, dependable tools.

What it means for you

Postgres for the database. Next.js for the apps. Google Cloud and Supabase for the infrastructure. Firebase Auth for sessions. Nothing exotic, nothing that depends on a venture-funded startup staying alive, nothing chosen because it was trending. These are the same components run by companies who can’t afford to be down on a Saturday night either.

Engineering note

Row-level security in the database. TypeScript end-to-end. Capability-based authorization with compile-time exhaustiveness checks. Secrets stored in Google Secret Manager, never in source.

Want the long version?

We keep an internal architecture brief covering the database schema, the deployment pipeline, the audit and authorization model, and the recovery tooling. Happy to share it with anyone doing a technical review before you sign on. Just ask.

Early access

Want a hand with one of these?

We're working with a handful of stores right now to get this right. If there's one part of running your store that always seems to eat your weekend, tell us about it.

Tell us about your storeA 10-minute call. No slides. We just want to listen.