# John Kingola: AI tooling resume

> AI tooling engineer · Models as extensions to coding tools · MCP servers and CLI design. Nairobi, Kenya (UTC+3) · remote as a contractor or through an EOR · no visa sponsorship needed.

I check that something is true before anyone relies on it: trading strategies, AI agents, and the systems around them.

- **v0.3.0** Rig on npm, launched on Show HN
- **3** coding agents Rig wires into
- **8** languages Cernos translates and verifies
- **0** API keys StickyInc asks for

I build the layer between AI models and the tools developers already use. Rig plugs into coding agents such as Claude Code, Cursor, and Codex over MCP and gives them a semantic map of the codebase instead of grep; it is at v0.3.0 on npm and launched on Show HN. StickyInc finds whichever agent CLI is installed (claude, codex, gemini, or Ollama) without asking for a key, and turns a tool call into a checkbox on screen. Cernos is a terminal tool with its own command and TUI that runs an LLM loop on OpenRouter to translate trading strategies from eight languages, then checks every translation against the original code. On the Change Intelligence Platform I fine-tuned Llama 3.1 8B and served it with vLLM on a Modal L4 GPU, behind an OpenAI-compatible API with an OpenRouter fallback.

### Why hire me: decisions, and how I checked them
- **What does a coding agent need from a codebase that grep can't give it?** Thought: Grep returns strings. To change code safely an agent needs callers, callees, and what a change will break. Tested: Rig indexes a repo in six stages into a typed graph and exposes search, callers and callees, impact and hubs as MCP tools, wired into Claude Code, Cursor and Codex. Result: On npm at v0.3.0 and launched on Show HN. Local-first: no key, nothing uploaded. Proof: [npm: rig-constellation](https://www.npmjs.com/package/rig-constellation).
- **Can you trust an LLM's translation of trading code?** Thought: An LLM can turn a strategy into clean JSON that still trades differently from the original. Tested: Cernos runs the original code in a locked-down sandbox and requires its signals to match the translation before anything is backtested. The sandbox runs Python originals today. Result: A translation that drifts is rejected, not accepted as mostly right. Proof: Private repo, described.
- **How do you put an LLM in a desktop app without asking for an API key?** Thought: Most developers already have an agent CLI installed and signed in. Tested: StickyInc detects claude -p, codex exec, gemini -p or Ollama and uses whichever one is there. Result: No key, no config file, no backend. Releases are cut from every tag. Proof: [StickyInc releases](https://github.com/Astralchemist/stickyinc/releases).
- **What does "balance" actually mean in this API?** Thought: The schema documents a field; only a live account shows what is spendable. Tested: Checked CreditWatch against a live account: the spendable figure is credit, not balance. Result: Shipped 1.0.0 on that finding. Windows and Linux were built and unit tested but not claimed, because no one had run the installed binary. Proof: [CreditWatch 1.0.0](https://github.com/Astralchemist/creditwatch/releases/tag/v1.0.0).

### Projects
- **Rig** (Semantic codebase graph over MCP; npm v0.3.0 · Show HN). npx rig-constellation gives a coding agent a map of the codebase instead of grep. Local-first, no key, nothing uploaded. Hard part: About 100 commits in four days to v0.1.5, stable per-project ports, and keeping the map live during indexing. Stack: TypeScript, MCP, Node, SQLite.
- **StickyInc** (Commitment pane fed by MCP; v0.5.1 · v0.6 in review). Tell an LLM to call the dentist Friday, an MCP tool call fires, and a checkbox appears on screen. No backend, ever. Hard part: Detecting whichever agent CLI is installed without asking for a key or a config file. Stack: TypeScript, Rust, Tauri, MCP.
- **Cernos** (Strategy research engine in Rust, LEAN indicators ported; Pre-release · private repo). A terminal tool that finds trading strategies on the web, translates them into one JSON format with an LLM, checks each translation against the original code in a sandbox, backtests and breeds them, and exports the winner as standalone Python or C++. Hard part: Counting every parameter trial. The first gauntlet records each parameter set it tries and judges with CSCV/PBO and a probabilistic Sharpe of at least 0.95, so tuning cannot hide in the result. The first BTC-USD run failed all 12 trials. Stack: Rust, OpenRouter LLM loop, Sandboxed containers, Python and C++ export.
- **CreditWatch** (Cloud-credit runway from the menu bar; 1.0.0 released 2026-09-21). Answers one question: how long does the prepaid GPU credit last at the current burn. Hard part: The account schema documented balance. A live account proved the spendable figure is credit. Windows and Linux were built and unit tested but not claimed, because no human had run the installed binary. Stack: Kotlin, Compose Desktop, SQLite, Keychain.
- **Signly** (Forex signal verification; Maintained, not live). Verify Telegram trading signal channels before trusting them. Built and shipped, and maintained; not live, with the public site offline. Hard part: Parsing free-text signals reliably, and defining a verdict that penalises stop-loss indiscipline instead of rewarding win rate. Stack: Python, FastAPI, Polygon, PostgreSQL.
- **Liquidity Engine** (BTC order-book research, pre-registered; Public · negative result). A deterministic Rust engine that records BTC perpetual order books on three venues, replays them exactly, and tested a market-making strategy that does not work at retail fees. Hard part: Measuring what a fill costs. Probes resting at the touch saw 41 to 66 ticks of adverse drift within one second on every venue, in every session, under every fill model. Stack: Rust, WebSocket feeds, L2 queue model, Python figures.
- **Backtest API** (Trading infrastructure; Private, described architecturally). Backtest as a service: the boring parts, built so the same strategy is never computed twice. Hard part: Cache keys that survive strategy edits. The same strategy is asked for a hundred ways, so the key is the strategy hash, not the request. Stack: Python, FastAPI, TimescaleDB, Redis, Docker.
- **Trading Strategy Library** (Public quant work; Open source). A strategy catalogue plus research tools, from indicator to execution to statistics. Hard part: Keeping research honest. The research suite is labelled research-only in its own README, and that label stays. Stack: Python, MQL5, NumPy, QuantConnect Lean.
- **Strategy Rebuilds** (16 published FX and gold systems, reverse-engineered; In progress · private). Rebuilt published MyFxBook systems from their trade logs: profiled 16, inferred their entry rules, and ported the strongest to MT5 and to a core-plus-adapters Python kit where session, trend and pause filters attach without touching the entry logic, then tested them on real broker ticks. Hard part: Separating an edge from tuning. Filters were chosen on January to June 2026 and checked on July to October; only 33% of profitable setups held, and one-shot holdouts with hashed configs failed after costs. Live demo fills then confirmed the cost model. Stack: MQL5, MT5 real-tick tester, Python, Dukascopy and broker ticks.

## Experience
- **The Change Intelligence Platform**, Lead engineer (contract), then maintainer (Dec 2025 to Present, Dubai, UAE · remote)
  - Built and shipped the platform solo in six months, Dec 2025 to Jun 2026, from architecture to production, under the direction of change-management practitioners. On retainer since for maintenance and feature work.
  - Multi-tenant change-management SaaS: Next.js and FastAPI on a Docker Compose stack with Supabase. Fine-tuned Llama 3.1 8B and served it with vLLM on a Modal L4 GPU, behind an OpenAI-compatible API with an OpenRouter fallback.
  - Four role-based tiers, including a delegated Champion portal with magic-link auth, PDF export via Puppeteer, a seven-tag sentiment model, and an automated LinkedIn outreach pipeline.
  - Led a latency and build-performance pass after an audit surfaced I/O-wait bottlenecks and N+1 query patterns.
  - Stack: Next.js, FastAPI, Python, Supabase, PostgreSQL, Docker Compose, Llama 3.1 8B, vLLM, Modal, OpenRouter, Puppeteer
- **Early-stage stealth startup**, Technical advisor, algorithmic systems (Oct 2025 to Present, Dubai, UAE · remote)
  - Joined as lead algorithmic engineer at the founding stage, then moved to an advisory role while funding closes.
  - Designed the backtest-as-a-service API: FastAPI, TimescaleDB, a Redis cache keyed on the strategy hash, and per-key rate limits.
  - Stack: Python, FastAPI, TimescaleDB, Redis
- **ConsultHasha**, Principal systems engineer (2024 to 2025, Nairobi · hybrid)
  - Early engineer at a startup. Designed and built the REST API layer and the production service endpoints the product and its client integrations ran on.
  - Owned architecture, deployment, and reliability.
- **Upwork**, Freelance quant and full-stack developer (2020 to 2025, Remote)
  - MQL5 and MT5 Expert Advisors built to client risk specifications, then Python backtesting tools, Telegram signal bots, and execution dashboards.
  - Also Docker-first Next.js and Postgres client platforms.
  - Stack: MQL5, MetaTrader 5, Python, Telegram bots, Next.js, PostgreSQL, Docker

## Skills
- AI and GPU inference: vLLM on CUDA GPUs (Modal L4), PyTorch, Hugging Face Transformers, Accelerate, KV-cache and GPU memory tuning, Llama 3.1 8B fine-tuning and serving, Claude, OpenRouter, Ollama fallback, Tool-calling loops, embeddings, and RAG
- Tooling and desktop: Rust (Tauri, research engines), Kotlin (Compose Desktop), MCP servers, npm publishing, SQLite, Linux and VPS ops
- Data and backend: Python, FastAPI, PostgreSQL and pgvector, TimescaleDB, Redis, RabbitMQ
- Web and product: TypeScript, React, Next.js, Tailwind CSS, Node.js, Supabase
- Delivery: Docker Compose, GitHub Actions CI, Cross-platform credential stores, Release engineering, Latency and build-performance passes, Upstream PRs to quant libraries
- Trading and research: Backtesting engines, Signal extraction, L2 order books, markouts, and adverse selection, Power laws and EVT, MQL5, MT5, and Pine Script, QuantConnect Lean

## AI tools I build with
- **Claude Code** (Anthropic): Daily coding agent. Rig wires its MCP server into it, and StickyInc runs on it through claude -p with no API key.
- **Cursor** (Anysphere): AI editor. Rig wires its MCP server into Cursor, so the editor's agent queries the codebase graph instead of grepping.
- **Codex** (OpenAI): CLI agent. Rig wires into it, and StickyInc can run on it through codex exec.

Web version: https://kingola.dev/resume/ai-tooling/ · PDF: https://kingola.dev/john-kingola-resume-ai-tooling.pdf · Contact: kingolajohn55@gmail.com
