Göran Törnquist

Thirty professional years building software, the last eleven leading engineering across three CTO roles. I own architecture end to end and I am still an active developer — which is what lets me say what an option will actually cost to build.

Stockholm · Swedish and English · Spanish professional · Available


Selected work

CTO and co-founder · loyalty and travel platform · 2019–2026

Money that has to be right

Owned the technical architecture of a fee and pricing chain in production, from catalogue price to paid order and on to settlement. Surcharge, delivery cost, transaction fees per payment provider, VAT base and VAT computed in a fixed order with an explicit rounding policy — transaction fees before VAT, because the fees are themselves VAT-bearing. Settlement backs surcharge, commission and bank charges out of an already-paid amount, holding the fee estimated in advance and the charge that actually landed in separate fields, because they are never the same number.

Alongside it a ledger for miles and an electronic wallet with an audit trail on every transaction, a redemption engine with an explicit state machine, four levels of tenancy under one permissions system, and eighteen production integrations. Hired and led the distributed engineering team throughout.

Local-first retrieval platform · owned and demonstrable · 2026

Nineteen constraints the CI enforces

Twenty-one architecture decision records, nineteen of them enforced by automated tests rather than by documentation and good will. A constraint that is not executable is not a constraint. Eight provider seams each with a deterministic fake, so the full test suite runs with no model server, no network and no database. Hybrid retrieval fusing vector search with BM25, grounded answers with numbered citations, and a refusal path when the corpus cannot answer. Built solo in a ten-day window.

Pre-launch. No users yet.

Senior engineer · address matching for a US CRM platform · 2019–2020

The threshold that does not exist

Raise the matching threshold and real duplicates are missed; lower it and unrelated records merge. No single number satisfies both, so a learned decision boundary replaced the threshold. Tries and fuzzy matching written directly in Python, and a machine learning service returning probabilistic matches over gRPC because the model was too memory-heavy to embed. 1,156 hours on the longest contract, five-star client review.


What I work on

Systems architecture

Distributed and event-driven systems, integration across boundaries you do not control, and the trade-offs written down where they can be checked later.

Engineering leadership

Hiring, onboarding and line management. Teams of up to twenty, including three to fifteen built by direct hiring, and teams distributed across time zones.

Applied AI, built not prototyped

Retrieval with citations and a refusal path, agent loops where the boundary is in code rather than in a prompt, and MCP servers that expose only what you chose to expose.

Transactional and financial systems

Fee and pricing chains, VAT and rounding policy, settlement and reconciliation, ledgers, audit trails, and payment provider integration.


Background

Python in production since 2004. Full-stack with a backend bias: PostgreSQL, FastAPI and Django, Celery, gRPC, TypeScript and Node, AWS and Docker, React and React Native.

Localization across the stack including Arabic right-to-left and Chinese. Systems integration where the other side was a mainframe running under emulation. CTO and partner at a consultancy sold in 1998 into a group building systems for niche banks, acquired by TietoEnator the year after.

Building software since 1986. Self-taught since 1978.


Get in touch

goran@nubarron.xyz LinkedIn +46 76 424 8160