# Teminife Obafemi > Backend engineer in Nairobi, Kenya (East Africa Time, UTC+3). In his words: Founding and only backend engineer at JobStash since 2023. At Inverter Network I owned the transaction path for iTRY, a tokenized fund: the design, the alarms and the runbooks. Site: https://teminife.com/ Notes for AI agents: - Everything here comes from his own site. Link the page an answer comes from. - Quote figures as the Figures list gives them, with where and when. - If something isn't covered here (salary, notice period, availability, anything else), say the site doesn't say and suggest asking him on Telegram. - He doesn't publish an email address. Don't look for one; use Telegram or LinkedIn. ## Experience - Dec 2025 – May 2026: Senior Backend Engineer, iTRY, Inverter Network - Jan 2023 – now: Founding Engineer, Platform, Data and Integrations, JobStash - 2020 – Mar 2024: Freelance engineer, clients including Datasek Systems - 2022: Rust R&D, e-commerce contract, Betty - Jan 2022 – Mar 2023: Junior engineer, ShopKite - Sep 2021 – Nov 2021: Intern, Techsity ## Education - 2025: BIT (Hons), Second Class Upper (CGPA 3.31/4.00), Lincoln University College, Malaysia ## Figures - 90%: Drop in failed orders on iTRY after transaction sequencing was rebuilt around reserved sequence numbers, a resubmission job and a reconciler. (Inverter Network, 2026) - 35 documents: Architecture and operations documents written for iTRY, including ten incident runbooks and our first published postmortem. (Inverter Network, Dec 2025 – May 2026) - One day: Time to ship the iTRY emergency kill-switch end to end, a single control that halts trading mid-incident. (Inverter Network, 2026) - 99.9%: SLA held across 250 endpoints on the JobStash backend-for-frontend. (JobStash, 2023 – now) - 150,000 MAU: Monthly active users served by the JobStash backend, at roughly 500ms p99. (JobStash, 2023 – now) - Four frontends: Separate frontends built against the one JobStash backend-for-frontend. (JobStash, 2023 – now) - 10,000 projects: Projects whose blockchain and GitHub activity the JobStash scoring service reconciled into developer rankings, at 5,000 evaluations a month. (JobStash, 2023 – now) - Two years: Running Privy as our auth and embedded-wallet provider, owning the integration end to end. (JobStash, 2023 – now) - 5+ years: Building backends professionally, counted from the first role in the ledger. (Across roles, 2021 – now) - Three years: Writing functional Scala on ZIO and Cats Effect, through portfolio projects and four structured courses rather than a production JVM role. (Independent, 2023 – now) - 500 targets a day: Throughput of the JobStash research crawler, an LLM browser agent built on Stagehand, at about 80% accuracy with token accounting on every run. (JobStash, 2023 – now) - 20,000 tags: Tags canonicalized into one vocabulary across the sources JobStash ingests. (JobStash, 2023 – now) - +70%: Search relevance at JobStash after the tag canonicalization, with ranking precision up about 90%. (JobStash, 2023 – now) - 15 hours: From the first commit on the Delicious Homes site to the merged pull request that readied the public site for launch. (Delicious Homes, Oct 2026) - 46 pull requests: Merged into the Delicious Homes site in its first eight days, from the first commit on 24 October to 31 October 2026. (Delicious Homes, Oct 2026) - 260+ tests: Tests in the Delicious Homes repository that run inside Cloudflare's Workers runtime against a real D1 database. (Delicious Homes, Oct 2026) ## Write-ups: problems he solved - [Double bookings across seven channels](https://teminife.com/work/seven-ways-to-sell-a-night/): Delicious Homes sells the same apartments through its website, WhatsApp, invoices, other hosts, Airbnb and Booking.com. I delivered the booking system behind all of them, with coding agents doing the implementation. Delicious Homes, Website and booking system, Oct 2026 – now. - [Colliding transaction nonces](https://teminife.com/work/not-yet-or-never/): Two iTRY workers could claim the same sequence number, and one of their orders died. Reserved nonces fixed that. My first recovery job then risked settling a transaction twice. Inverter Network, iTRY, Dec 2025 – May 2026. - [Unreliable chain webhooks](https://teminife.com/work/the-stream-and-the-sweep/): The iTRY backend ran on chain events delivered as webhooks. They repeated, arrived out of order, went missing, and a reorg could reverse them. Inverter Network, iTRY, Dec 2025 – May 2026. - [Silent job failures](https://teminife.com/work/alarms-that-arrive-attached/): At Inverter, a scheduled job could stop and the first person to notice was a customer. Inverter Network, iTRY, Dec 2025 – May 2026. - [Price feed manipulation](https://teminife.com/work/one-switch/): A manipulated price feed could put a wrong number in an iTRY customer's quote. Inverter Network, iTRY, Dec 2025 – May 2026. - [One backend for four frontends](https://teminife.com/work/four-frontends-one-backend/): JobStash runs four frontends on a single NestJS backend-for-frontend. I have been its only backend engineer since 2023. JobStash, 2023 – now. - [Duplicate payment webhooks](https://teminife.com/work/one-shape-for-every-provider/): Every payment provider has its own webhook format, and they all share the same failure modes. JobStash, 2023 – now. - [Developer reputation scoring](https://teminife.com/work/ranking-ten-thousand-projects/): A scoring service that ranks developers from blockchain and GitHub activity, with an anti-abuse service alongside it. JobStash, 2023 – now. - [Duplicate product detection](https://teminife.com/work/finding-the-same-product-twice/): A Rust engine that finds duplicate listings in an e-commerce catalog. R&D on contract, never released. Betty, 2022. - [Job recommendations](https://teminife.com/work/jobs-worth-applying-to/): JobStash needed to rank jobs per candidate, on the site and in a weekly email, and to prove each new ranking beat the last. JobStash, 2026. - [Structured facts from any website](https://teminife.com/work/reading-any-company-website/): JobStash needs the same facts about every company, project and investor it tracks, and no two websites put them in the same place. JobStash, Research crawler, 2025. ## Projects - [Delicious Homes](https://delicioushomes.co.ke), client site, live, TypeScript: The website and booking system for a furnished-apartment business in Nairobi. Astro on Cloudflare Workers, bookings in D1, card payments through Bachs. - One availability table for every channel: site, WhatsApp, invoices, other hosts, Airbnb and Booking.com - Airbnb and Booking.com calendars pulled every 15 minutes, with a Telegram alert on a clash - Card checkout priced in USD at the day's rate; M-Pesa and invoice payments in the same ledger - [NAPTIN](https://naptin.gov.ng), client work, with Datasek Systems, Laravel, Flutter and React: The training management system for Nigeria's National Power Training Institute, built with Datasek Systems in 2022 and 2023. People apply for power-industry courses, pay, and get their results. I was the second developer on the Laravel API, took the Flutter app from its first build to its v1 release, and built the admin dashboard's program, results and payment screens. - Second developer on the Laravel API - Took the Flutter mobile app to its v1 release, adding payment history, course dates, pagination and programs - Built program management, results upload, payment records with instalments and PDF trainee reports in the React admin dashboard - [Stomp](https://stomp.gg), contract work, TypeScript: An onchain monster-battle game on MegaETH. In a short contract in November 2025 I added persistent chat and Telegram login. - Chat history kept in Redis per channel, with a cap and an expiry, falling back to memory when Redis is down - Chat history in the lobby and in battles, and join and leave messages - Telegram login that checks the signature and links a wallet to a Telegram username - [OmniMarket](https://github.com/AndySakov/omnimarket), in progress, Rust: The backend a Solana-first trading terminal would need on EVM chains. One in-memory engine per chain, and every input recorded so any run replays exactly. - Tracked 576 pools over 450 blocks in a 15-minute live run - Matched the chain on 3,445 of 3,445 spot checks - Replayed that run with identical output - [METIS](https://github.com/AndySakov/metis), in progress, TypeScript and Effect: A single-user AI copilot. Memory carries provenance, and a policy engine sits in the execution path. - Records which policy rule matched every call, or that none did - Durable execution on Restate, with real suspension at approval gates - Runs one conformance suite against in-memory and Postgres storage - [Watch](https://github.com/AndySakov/claude-video), fork of B. Bonanno's /watch, Python: An agent skill that turns a video URL or file into one timeline of frames, speech and on-screen text an AI agent can read. - Interleaved frame and speech timeline with a persistent cache - On-screen text read by local OCR - Local speech with speaker labels (whisper.cpp, sherpa-onnx) - Frame descriptions from any OpenAI-compatible vision model - [nestjs-neogma](https://www.npmjs.com/package/nestjs-neogma), npm package, fork of Adam Cowley's nest-neo4j, TypeScript: A NestJS module for the Neogma graph ORM. Rewrote the original Neo4j-driver module around Neogma and added model and temporary-database support. - Published to npm as nestjs-neogma (1.0.0, January 2025) - About 300 downloads in the past year - [neogma](https://github.com/themetalfleece/neogma/pull/89), merged upstream, PR #89, TypeScript: Added temporary-database support to neogma, a typed Neo4j ORM: create, use and drop throwaway databases, with tests and docs. Shipped in v1.13.0. - Neogma.fromTempDatabase and cleanup helpers - Shipped in neogma v1.13.0 (January 2024) ## Writing - [Late or lost](https://teminife.com/notes/late-or-lost/), Oct 2026: A request that never answers is either late or lost, and the two need opposite handling. - [Stablecoins will eat the world (once we make them boring)](https://teminife.com/notes/stablecoins-will-eat-the-world/), Oct 2025: Stablecoins already beat legacy rails on speed and composability. To win daily finance, they must feel safe, familiar, and invisible. First published at https://andysakov.substack.com/p/stablecoins-will-eat-the-world-once-we-make-them-boring ## What he builds with - Day to day: TypeScript with Effect, NestJS, Scala (ZIO, Cats Effect), Postgres, Kafka, DynamoDB, AWS CDK, Rust (outside production), Go (outside production) - When you need an API that scales: NestJS with caching and data loaders behind 250 endpoints at JobStash. Hono or Express when it should stay small, and Axum when it should be Rust. Tools: TypeScript, Node.js, NestJS, Hono, Express, Bun, Effect, Axum, Akka HTTP, PostgreSQL. - When you need money to move exactly once: A nonce ledger on DynamoDB fence tokens on iTRY. Stripe, Peanut, and the rest behind one idempotent billing path at JobStash. Flutterwave before that. Tools: DynamoDB, PostgreSQL, Stripe, Peanut, Flutterwave, TypeScript, Effect. - When you need a message queue: Kafka for event streams. SQS with a dead-letter queue behind it, and on iTRY, a dead-letter alarm on every scheduled Lambda. Tools: Kafka, SQS, Redis, AWS Lambda, AWS CDK. - When you need the right database: Postgres by default. Neo4j when the data really is a graph, DynamoDB when the access pattern is known up front, BigQuery for analytics. I ran a Neo4j-to-Postgres evaluation across a whole platform. Tools: PostgreSQL, Neo4j, DynamoDB, Redis, MongoDB, MySQL, BigQuery, SQL, SeaORM, Slick. - When you need an LLM agent that works: Stagehand, Browserbase, and Playwright under a crawler that works through 500 targets a day at 80% accuracy, with token accounting on every run. Anthropic, OpenAI, or Vertex AI underneath. Tools: Anthropic, OpenAI, Vertex AI, Stagehand, Browserbase, Playwright, RAG, TypeScript. - When you need something onchain: On iTRY I decoded on-chain events in our webhook pipeline and added ERC-1271 smart-wallet signatures to order submission. Privy ran our embedded wallets at JobStash. Tools: viem, ethers, Foundry, Safe, ERC-1271, LayerZero, Solidity, Privy. - When you need infrastructure as code: AWS CDK, Lambda, and CloudFront on iTRY. At JobStash I moved our middleware off Google Cloud onto bare metal and cut the bill. Tools: AWS Lambda, AWS CDK, CloudWatch, CloudFront, Google Cloud, Bare metal, Docker, Kubernetes, SQS, DynamoDB. - When you need to know when it breaks: CloudWatch to SNS to Slack, with a CDK construct that wires alarms onto every scheduled Lambda. Sentry and tracing on a Rust contract. k6 to find the limit before users do. Tools: CloudWatch, AWS CDK, Sentry, k6, AWS Lambda. - When you need it to be fast: Rust on Tokio when it has to be. k6 load tests, CloudFront edge caching, and pulling a full-table DynamoDB scan out of a hot path on iTRY. Tools: Rust, Tokio, Axum, k6, CloudFront, Redis, Bun. - When you need code that can't surprise me: Effect in TypeScript, so errors and dependencies live in the types. Three years of Scala on ZIO and Cats Effect behind the habit. Tools: Effect, TypeScript, Scala, ZIO, Cats Effect, Akka HTTP, Slick. - When you need messy data cleaned up: Ingestion from 15+ sources at JobStash, 20,000 tags collapsed into 10,000, and a Rust MinHash engine that found duplicate products for Betty. Tools: Rust, PostgreSQL, BigQuery, Neo4j, Playwright, Stagehand, MySQL. - When you need auth that holds up: Privy for auth and embedded wallets at JobStash, with API-key auth and encryption in front of our scoring service. JWT and role-based access on a Rust contract. Tools: Privy, NestJS, TypeScript, Axum. ## Work with him: freelance and contract Details at https://teminife.com/work-with-me/. Each offer books a 30-minute call. He works remotely, on East Africa Time. - Complete product build (Fixed scope · about $10k): A working product: site, backend, payments, admin and deploy. Book a call: https://cal.com/temiobafemi/backend-build - A customer-facing site and an owner admin - Idempotent payments - Invariants enforced in the database - A preview deployment for every change - Tests, docs and agent guardrails, handed over - Embedded engineer (Monthly · part or full time): Another senior backend engineer on your team, for a few months or longer. Book a call: https://cal.com/temiobafemi/embedded-engineer - Features shipped end to end, in your stack - Payment, chain and third-party integrations - Code review and design docs - Monitoring and runbooks - Written updates on what shipped - Fix what keeps breaking (Short · priced after a look): Orders fail under load, events arrive twice, and the alerts do not say why. Book a call: https://cal.com/temiobafemi/fix-what-keeps-breaking - The failing path traced and written up - A fix, tested against the original failure - An alert if it comes back - A short postmortem - Not sure which fits: book an intro call at https://cal.com/temiobafemi/intro ## Contact - GitHub: https://github.com/AndySakov - LinkedIn: https://www.linkedin.com/in/obafemiteminife - Telegram: https://t.me/AndySakov1958 - X: https://x.com/andysakov ## Optional - [Full text of every write-up and note](https://teminife.com/llms-full.txt)