Engineer, systems-thinker, ships things.

Rishi Tank
Senior Full-Stack & AI Engineer · London, United Kingdom
Open to senior full-stack & AI engineering roles
I'm Rishi, a senior engineer with thirteen years of shipping production software, most recently over six years at Adthena, an AI search-intelligence company, latterly as web tech lead across two squads. There I led web engineering on AIO Signals, part of the AI Overview Dashboard that won at the European and Global Search Awards in 2026; contributed to the foundation of an agent-ready rebuild of the web app, one monorepo for the frontend, backend and services; owned the reliability of an extraction pipeline handling millions of events a day; built enterprise single sign-on end to end and rolled it out with customer success; and led the design-system migration. I also took AI code review from a hackday demo, through a multi-week team trial, to the standard across the whole engineering organisation, and built the Claude Code tooling my team used for incident triage and release work.
In 2026 I started Tankster AI to work on the problem I kept running into: an autonomous agent is only as trustworthy as the structure around it. So I design that structure and build it by directing AI coding agents: a fail-closed egress proxy that redacts and meters everything an agent sends to a model vendor, a policy gateway for MCP tool calls, and an adversarial harness that judges an agent by what actually changed on disk rather than by what it said. All of it has tests, all of it has CI, and all of it says plainly what it does not do.
I care about the unglamorous things that separate a demo from something people rely on: verification that comes from outside the thing being verified, budgets enforced at a gateway rather than in a prompt, and documentation honest enough to survive a sceptical reader.
A note on where the code lives, because it is a fair question. The agent infrastructure in the case studies is owned by Tankster AI Ltd and published from its GitHub organisation; the studio runs it in its own estate, and the tools that make agents safe to run are open under MIT while the products built on them stay private. I design each one and build it by directing AI coding agents, which the commit history shows openly. My own GitHub profile is the front door to all of it.
Structural, not cooperative
A gate an agent can talk its way past is not a gate. If a property matters, it is enforced by the type system, the network boundary or a human — never by asking nicely.
Judge the world, not the agent
The filesystem, the wire and the ledger are the witnesses. A tool's own account of what it did is the last thing I would trust.
Honest about limits
Every project I ship documents what it is not. That is not modesty — it is the part a reviewer needs most, and the part most portfolios leave out.
Open source
Upstream issues, proposals and fixes, each backed by a linked issue or pull request:
- Redoc
Built XML and CSV response examples for Adthena's API docs, first proposed in 2023 (#2347) and later backed by other developers. CSV support is merged for the next release (#2869), and my XML fixes to openapi-sampler were merged after review (#223).
- claude-code-lsps
Had a Java language-server (jdtls) reliability fix merged (#73); my request led to Scala (Metals) support (#54), and my diagnosis of why it would not load got it fixed (#56).
- GitHub Copilot CLI
Proposed repo-specific MCP configs, shipped as the repeatable
--additional-mcp-configflag (#288). - MCP TypeScript SDK
My
docker run --initworkaround for orphaned MCP containers was credited by the maintainer when closing the issue (#547). - VibeTunnel
Requested Auggie CLI support, added in v1.0.0-beta.16 and credited to me in its release notes (#526, #680).
- coolify-mcp
Reported that updating an application's domain failed because the server sent
fqdnwhere the Coolify API now expectsdomains; the owner closed it as fixed by a later pull request (#110, #125). - Auggie CLI
Reported a response-delay regression in v0.6.0 and tested the maintainers' prerelease fix, shipped as 0.6.1 (#28); a maintainer said my request for native shell support should be fixed in the latest release (#14).
- DBCode
Requested Redshift Spectrum support, shipped in 1.14.24, then reported a regression in that release, fixed in 1.14.25 (#613, #644).
- stylelint-stylistic
Reported styled-components indentation bugs, fixed in v3.1 and v3.1.1 (#39).
- eslint-plugin-project-structure
Requested a kebab-case
{parentName}reference andjest.mockimport checks; the maintainer shipped them in 2.3.0 and 2.7.0 (#14, #18). - branch-name-lint
Asked for JavaScript config files, which the maintainer added in a pull request that fixes my issue (#51, #66).
- Tagify
Reported a stray
added with every tag, fixed by a maintainer commit that cites my issue (#595). - yajs.vim
Reported two JavaScript and JSX highlighting bugs, both fixed by commits that cite my issues (#168, #169).
- ng-embed
Asked for a way to switch off HTML sanitising, added as an option by a pull request that resolves my issue (#39, #53).
Experience
- 2026 to now
Founder, Tankster AI
Pre-revenue R&D: prototypes for the containment, verification and cost-control layer for autonomous agents.
- 2022 – 2026
Senior Full-Stack Engineer, Adthena, London
Tech lead on the web team (two squads). Lead web engineer on AIO Signals in the award-winning AI Overview Dashboard, and contributed to the foundation of an agent-ready rebuild (one monorepo for the frontend, backend and services). Extraction reliability at millions of events a day, enterprise SSO (OIDC/SAML), RBAC and tenant isolation, a company-wide design system, OpenFeature feature flags, and MCP integrations used by internal agents and customers' agents.
- 2020 – 2022
Senior Frontend Engineer, Adthena, London
Led the Backbone-to-React migration of the flagship analytics app.
- 2016 – 2019
Lead Frontend Developer, Matchbyte, London
WhiteKnight 2.0 airline e-commerce platform, including Tigerair Taiwan's ten-year contract; built and led the web team.
- 2015 – 2016
Full-Stack Software Developer, Yossarian Lives, London
Seed-stage creative search engine; real-time pub/sub architecture, full stack.
MSc Cybernetics — University of Reading · BSc (Hons) Computer Science with Games Technology, First Class — City, University of London
Security: OWASP Top 10
At Adthena I hardened user management and RBAC against OWASP Top 10 risks while refactoring the internal Scala user-management platform.
A01:2025 Broken Access Control
Role-based access control with tenant isolation: authorisation checks stop one customer's users acting on another customer's data. Also fixed CSRF token handling.
A07:2025 Authentication Failures
Enumeration-safe forgot- and reset-password flows that give the same message, in the same time, whether or not an email has an account. Reset links carry a time-limited token, a validation endpoint tells an expired token from an invalid one, and a password reset revokes the account's sessions in Redis.
A09:2025 Security Logging & Alerting Failures
An audit log of user-management actions.
Not shipped, and next on my list: rate limiting on the forgot-password request, per IP and per account.