LoadingSoftware that carries weight.ONYXERA TECHLoading route
Every engagement is scoped in writing, priced in ranges, and staffed by the same engineers from discovery through the third year of maintenance. The person who designs your schema is the person you page when a migration goes sideways.
One typed contract, from the database to the button.
Server components where they earn their keep, client components where they don't — decided per route, not per fashion cycle. The design system ships as a versioned package with its own changelog, so a token change is a pull request instead of a Slack thread. Commerce runs headless because merchandising should never be able to block a deploy.
Stack Next.js · React · TypeScript · Tailwind CSS · tRPC · Drizzle · PostgreSQL · Vercel
LCP 4.1s to 1.2s, checkout completion up 34%, inside one quarter and without a redesign.
| Order | Customer | Status | Total |
|---|---|---|---|
| NB-48213 | Halden Roastery | Paid | $1,240.00 |
| NB-48212 | Fieldnote Supply | Fulfilled | $318.40 |
| NB-48211 | Aster & Co. | Refunded | $96.00 |
| NB-48210 | Northbank Direct | Paid | $2,905.00 |
| NB-48209 | Verity Labs | Fulfilled | $744.20 |
Rendered on the server per request. The table is one indexed query; filters are URL state, so every view is a link somebody can send.
Shared where it pays. Native where it has to be.
React Native on the new architecture handles the ninety percent that is lists, forms and navigation. Swift and Kotlin handle the camera, the Bluetooth stack and anything that touches the background scheduler, because bridging those is a false economy. The app assumes the network is lying to it, so it still works in a lift, a basement, or a warehouse on two bars.
Stack React Native · Expo · Swift · Kotlin · TypeScript · WatermelonDB · Fastlane · Sentry
1.9s cold start on a five-year-old Android mid-ranger. 99.4% crash-free sessions.
Route 42 · Tue
18 stops · 6 done
Meridian Driver — offline mode
Writes land in a local WatermelonDB queue first. Reconnect replays them in order, and conflicts resolve last-writer-wins per field, not per record.
Evals first. A good demo is not evidence.
Retrieval is a search problem with a language model bolted on the end, and we build it in that order. Every prompt, model and chunking change runs against a 600-case golden set before it merges, and the scores are in the pull request where an engineer has to look at them. Cost per session and p95 latency are acceptance criteria, not something you discover on the invoice.
Stack Python · TypeScript · LangGraph · pgvector · Qdrant · Braintrust · Modal · Temporal
Accuracy 71% to 94% across 600 graded cases, at $0.04 median cost per session.
import { defineSuite, gte, lte } from "@onyx/evals"import { hybridSearch, rerank, generate } from "@/rag" export const supportQa = defineSuite({ dataset: golden("support-qa", { cases: 600, seed: 7 }), async run({ question, tenantId }) { const hits = await hybridSearch(question, { tenantId, bm25: 0.4, vector: 0.6, k: 24, }) const top = await rerank(question, hits, { k: 4 }) return generate(question, top, { model: env.ANSWER_MODEL, maxTokens: 700, cite: true, }) }, scorers: [factuality, citationRecall, refusal, costPerCase],}) // Runs on every pull request. Any regression fails the check.export default supportQa.gate({ factuality: gte(0.92), citationRecall: gte(0.9), p95LatencyMs: lte(1800),})| Eval | Cases | Pass | vs main |
|---|---|---|---|
| Factuality | 600 | 94.2% | +2.1 |
| Citation recall | 600 | 91.8% | +0.4 |
| Refusal · adversarial | 120 | 98.3% | 0.0 |
| Tool selection | 240 | 96.7% | +1.2 |
| Cost per case | — | $0.041 | −12% |
Scores are posted back to the pull request. A drop on any threshold fails the check, so a prompt tweak cannot quietly cost you two points of accuracy.
If you can't rebuild it from an empty account, you don't have it.
Everything is Terraform. No console clicks, no environment that only one person understands, no resource whose origin is a mystery to the team that owns it. Deploys go out on merge behind a 5% canary, and the rollback is one command that has been rehearsed on a Tuesday. We instrument before launch so the dashboard tells you what broke before a customer has to.
Stack AWS · Google Cloud · Terraform · Kubernetes · Docker · GitHub Actions · OpenTelemetry · Grafana
Every box above is a Terraform resource with an owner tag. There is no console click that would survive a rebuild from an empty account.
Deploy lead time 6 days to 40 minutes, with monthly spend down 38% and no capacity lost.
We don't do discovery theatre.
Fourteen days turns a pile of opinions into a scope with numbers on it, including the parts we think you should cut. Prototypes go in front of eight real users before production code exists, because a stakeholder preference is not a finding. The system ships as tokens and coded components — what is in Figma is what is in the build, or the build wins and Figma gets corrected.
Stack Figma · Figma Variables · Storybook · Style Dictionary · Maze · Axe DevTools · Rive
Onboarding drop-off down 46% and support tickets down 31% in the first month after launch.
| variant | "primary" | "outline" | "ghost" | "primary" |
| size | "sm" | "md" | "lg" | "md" |
| loading | boolean | false |
Published from Figma variables on merge. The same tokens compile to CSS, Swift and Compose, so a colour change is one pull request across three platforms.
We stay on the pager after launch.
Every product we ship can move onto an agreement with a named lead engineer, a fifteen-minute P1 response and a monthly review that has real numbers in it. Dependencies get patched on a schedule instead of when a scanner starts shouting. Retainer hours go into a shared backlog, so the product keeps compounding rather than quietly rotting for two years.
Stack PagerDuty · Datadog · Sentry · Snyk · Dependabot · Statuspage · Linear · Terraform
99.98% uptime across 40 managed services. Median P1 acknowledgement: 11 minutes.
One P1 in the last thirty days. Acknowledged in 11 seconds, rolled back in three minutes, and written up the same week with the fix linked.
Five phases, fixed rituals, a written artefact at every gate. You get a scoped estimate before anyone opens an editor and a preview URL on every pull request from the first build sprint.
Interviews with the people who will actually use it, a technical audit of whatever already exists, and a scope written in ranges rather than one hopeful number. You leave with a plan specific enough to hand to another agency — which is the point.
The data model, the service boundaries and the interfaces on top of them, argued out in one room and then written down as decision records. Prototypes go in front of users while those records get signed, so the expensive disagreements happen now and not in month four.
Two-week sprints against a board you can read at any hour, each ending in a deploy rather than a status update. Every pull request runs typecheck, unit, integration and end-to-end suites, then publishes a preview URL you can click before anyone approves it. If a sprint slips we tell you on the day it slips, with the reason and the new date.
Load tests to 3x projected peak, a penetration test, accessibility remediation and a rollback we have already rehearsed against production data. Launch day is a checklist read out loud by one person, not an event the team has to survive.
An SLA-backed agreement with a named engineer, monthly patch cycles, and a reliability review with real numbers in it. Retainer hours go straight into the roadmap, so year two makes the product better instead of merely keeping it alive.
We choose boring, proven technology and pin the version in writing. Anything new has to earn its place in the bundle, the build time and the on-call rotation before it ships.
Roughly 90% of what we ship runs on the six columns below. The other 10% gets a decision record explaining why the default was not good enough.
Send the messy version. You get back a scope, a range, and the two risks nobody has mentioned yet — usually within three working days.
Or email hello@onyxeratech.com