Skip to content
View Emos21's full-sized avatar

Block or report Emos21

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Emos21/README.md

Portrait of Amos Mwangi drawn in code symbols, printed line by line

Amos Mwangi

Backend and platform engineer. I build the part of a product that has to be right: the API, the data model, the queue, and the deploy path that puts them in front of users. Mostly Python and Go, on PostgreSQL, under real load. Remote, from Nairobi.

What I am doing now

  • Backend work on data-heavy platforms: ingestion pipelines, query paths that stay fast as tables grow past eight figures, and the migrations that get there without downtime.
  • Moving hot paths off Python and into Go services where the latency budget is tight.
  • Running my own small production systems end to end, including point-of-sale and marketplace software in daily use by Kenyan businesses.

Selected work

System What it does The hard part Stack
Arizona Sunshine Portal Public portal over Arizona campaign finance filings 12.6M records kept queryable and correct through repeated bulk ingests Django, PostgreSQL, React
ClearDD Financial due diligence, automated: builds the statements on the client's reported basis, computes EBITDA, working capital and trailing twelve months, flags anomalies and produces the workbook, deck and PDF that advisers deliver Tying the reported basis line for line, and carrying add-backs through to the deck without a number drifting Django, DRF, Celery, PostgreSQL, React
ProcureCrawl, at IntegralMASS Opportunity intelligence for Arizona investors: procurement contracts, commercial property, businesses for sale and economic data, aggregated, scored and delivered as reports Scheduled crawlers over sources that disagree with each other, and scoring an investment group will act on Python, Celery, Next.js
Extreme POS Point of sale running a Nairobi print shop: sell, invoices, purchases, stock reports, suppliers, debts, accounting, shift handover Twelve modules rebuilt from observation, then changed week to week against the live database the shop trades on PHP 8, SQLite, vanilla JS
Classy Carry POS Point of sale and stock control for a leather goods retailer M-Pesa STK push, offline-tolerant SQLite, staff role gating PHP 8, SQLite, M-Pesa Daraja

Lead developer on ProcureCrawl. Earlier product work: GoVerde Errands Marketplace (FastAPI, WebSocket chat, escrow payments, role-based access) and Tensor Marketplace (Django REST, Stripe webhooks, signed expiring file delivery).

Tools I wrote to think about systems rather than to ship features: chronos, boolean algebra over cron schedules, in Dart. subnetics, a CIDR buddy allocator with a live fragmentation treemap. MpesaGuard, mobile money transaction screening.

Stack

Stack, scrolling right to left: Python, Go, Django, FastAPI, PostgreSQL, Docker, PHP, TypeScript, React

Layer What I reach for
Languages Python, Go, TypeScript, PHP, SQL, Dart
Backend Django, Django REST Framework, FastAPI, Celery, REST and GraphQL
Data PostgreSQL, Redis, MongoDB, SQLite
Infrastructure Docker, Linux, Nginx, GitHub Actions, VPS and cPanel deploys
Frontend, when I own the whole thing React, Next.js, Vue, TypeScript, Tailwind

By the numbers

  • 12.6M records in one Django and PostgreSQL deployment, still serving reads in milliseconds.
  • 60% of request latency removed by moving the hottest endpoints to Go.
  • 3,820 contributions so far in 2026, 3,142 of them in private repositories.
  • 21 public repositories across Python, Go, Dart, PHP and TypeScript.

How I work

  • Tests before "done". A feature without a failing-then-passing test is a rumour.
  • Migrations are reversible, deploys are boring, and logs say what happened.
  • I would rather delete a service than add one.

Contact

Open to remote backend and platform engineering roles. Nairobi, UTC+3: the whole European working day, and US mornings.

The portrait is not a photograph. It is 60 columns of characters, generated from one by scripts/ascii.py, kept as text in assets/portrait.txt, and set in type by scripts/portrait_svg.py, which prints it a line at a time and holds a cursor at the end. It stops moving if your system asks for reduced motion.

Pinned Loading

  1. Cooperation-org/Az-Sunshine Cooperation-org/Az-Sunshine Public

    Python

  2. Gofundme_scrapper Gofundme_scrapper Public

    Python 1

  3. Mowasalat_Bus_Wash Mowasalat_Bus_Wash Public

    Python 1