Skip to work

PerOmnia LLC  ·  Chicago, Illinois

The parts of a product that run after someone clicks submit.

Contract backend, infrastructure and integration engineering — queues, webhooks, deploys, compliance, and the services that have to still be running at three in the morning. Available now.

What I'm best at

01

SMS & telephony that survives an audit

Twilio end to end — A2P 10DLC brand and campaign registration, delivery failures, quiet-hours rules, STOP and HELP handling, consent logging. A small, painful specialty most teams discover the week their messages stop arriving.

02

Production rescue

A service that won't start, a deploy that broke, a unit crash-looping with an exit code nobody recognises. I find the cause rather than restarting it and hoping — and I check what is genuinely running in production before changing anything.

03

Next.js technical SEO

Canonical URLs, sitemaps, robots, Open Graph images and structured data wired into the App Router — generated from your content rather than pasted beside it and left to drift out of sync.

04

Kubernetes for small teams

Container builds, image delivery, ingress, secrets and rollout mechanics for teams who need it to work reliably without standing up a platform group to babysit it.

Selected work

01

Twilio · Node Postgres · BullMQ

A lead-to-SMS pipeline built to pass a TCPA audit

A form takes a lead and a text goes out — except the moment real money is involved, “send a text” becomes consent law, carrier registration and time zones.

  • Quiet hours enforced 8pm–8am in the recipient's IANA time zone, with a convergence pass so daylight-saving transitions can't drift the send window.
  • Lead row, consent record and queued job commit in a single transaction — no lead is ever stored without its audit trail.
  • Every opt-in logged with the exact consent text shown, timestamp, IP and user agent, so a complaint is answered with a record rather than a shrug.

RESULT   Messages queue in ~30ms and either send inside the legal window or hold to 08:05 local. Retries are idempotent — a lead cannot be texted twice by a redelivered job.

02

Next.js 16 App Router · TypeScript

Technical SEO for a SaaS marketing site

The site ranked for nothing and had no machine-readable description of what it sold. Rebuilt so search engines and AI assistants read the same facts a visitor does.

  • metadataBase with per-route canonical URLs, plus generated robots.ts and sitemap.ts.
  • Open Graph images rendered at request time with next/og, so social cards never go stale.
  • Pricing and FAQ copy extracted to one typed source feeding both the page and the JSON-LD, so a price cannot drift out of sync with its schema.

SHIPPED   12 files, 618 insertions, one commit.  VERIFIED   tsc clean, production build passes, served HTML carries canonical, OG and Twitter tags plus exactly one ld+json graph whose tier prices match the page.

03

systemd · Celery Debian

A scheduler that had been silently dead

Scheduled jobs weren't running. The service reported itself failed and restarted forever, exiting 226/NAMESPACE — an error raised before any application code runs, so the logs were empty.

  • Three separate causes: it ran as a user that didn't exist, pointed at a virtualenv that didn't exist, and declared ReadWritePaths=/tmp against a private tmp namespace.
  • Rewritten around StateDirectory=, with CPU and memory caps because the host is shared with a latency-sensitive service.
  • Before changing anything, checksummed the deployed units against every copy in version control to establish which one production actually ran. Two of them disagreed.

RESULT   Scheduler running clean, resource-capped on a shared host, and the fix committed to the copy production genuinely deploys from.

04

Kubernetes · containerd Cloudflare Tunnel

Eight services on one box, no public ports

A single-node cluster running eight independent services — Telegram bots, a Next.js API with a worker, scheduled content jobs, static sites and a Base L2 subscription layer.

  • All ingress over Cloudflare Tunnel, outbound-connect only. Zero inbound firewall ports.
  • Images side-loaded into containerd directly, because a plain docker build is invisible to this kubelet — a failure mode that silently keeps serving the previous version.
  • Secrets materialised from disk at deploy time, never committed to manifests.

RUNNING NOW   8 services, 8 namespaces, single node.

Stack

Languages
TypeScript · Python · JavaScript · SQL · Solidity
Web
Next.js 16 (App Router) · React · Node · REST APIs and webhooks
Data
PostgreSQL · Redis · BullMQ · SQLite
Infrastructure
Kubernetes · Docker · containerd · systemd · nginx · Cloudflare Tunnel
Services
Twilio (SMS, Lookup, A2P 10DLC) · Telegram Bot API · SignNow · Base L2
Practices
Idempotent job design · transactional writes · audit logging · least-privilege units

How I work

Rescue

Something is broken and revenue is at risk. Hourly, start same day, diagnosis before changes.

Fixed-price build

Defined scope, quoted up front. SEO passes, integrations and pipelines usually land here.

Agency subcontract

I take the backend piece under your name. You keep the client relationship.

I work in your repository, on your branch, with commits you can read. If a job turns out smaller than quoted, I say so and bill the smaller number.

Available now

Send me the problem, not a job description.

If it isn't something I should take, I'll tell you that and point you somewhere better.

Code samples on request — most of what I ship lives in private client repositories.