Skip to main content

Dilsher Singh

Senior Full Stack Engineer

I build LLM features and financial systems that have to be right every time.

TypeScript/Node.js and Python in Hong Kong. I shipped an LLM pipeline that turns legal documents into code-verified payout terms, and I own a settlement pipeline that has paid investors 13,800+ times over 18 consecutive months, 100% on time.

  • Hong Kong Permanent Resident
  • Team lead (5 engineers)
  • LLM extraction in production
Dilsher Singh
Field accuracy on a human-verified eval, 12 document templates
99%
Legal documents covered by the LLM extraction pipeline
1,342
Ledger-to-settlement discrepancies since April 2025
0
Repositories where I gate merges
10

About Me

I build LLM features for systems where a wrong number costs real money. In October 2026 I shipped one at Dualmint: a Python pipeline that extracts the legally committed yield terms from 1,342 asset provenance documents, verifies every quote against the source page in code, and has a person confirm the terms before our TypeScript backend checks each monthly payout against them. The model never decides a money value.

I have built the same equipment-financing marketplace since 2022: the Next.js client, the Node.js/Express backend and the settlement contracts, which Hacken audited at 9.1/10. I joined Ipseity Network as an intern in 2021 and as a full stack engineer in 2022. When Dualmint was formed in 2025 from the merger of five companies, I was assigned to lead its platform as Senior Full Stack Engineer. Today I own the TypeScript backend for 1,500+ financed assets, lead a team of five engineers and gate merges across 10 repositories.

Most of my work is about making money movement boring. Every payout is held until IoT telemetry, bank data and operator reports agree. A daily idempotent reconciliation job has found zero ledger-to-settlement discrepancies since April 2025, and event-log replay repaired 13 corrupted records without changing a single user balance.

Settlement runs onchain, so I also work in Solidity, EIP-712 signing and multi-chain infrastructure, including a Chainlink CRE workflow live on Solana mainnet backed by a US$90,000 Solana Foundation grant. I also designed the AI-assisted process my team ships through: coding agents working from PRDs and scoped backlog issues, with strict TypeScript, pre-commit checks and human review gating merges. Earlier, at Ipseity Network, I worked on privacy-preserving data products: a consent-based data marketplace and a React Native identity wallet.

Currently
Senior Full Stack Engineer at Dualmint
Leading
A team of five engineers
Based in
Hong Kong · Permanent Resident
Education
BEng Computer Engineering, HKUST (2018–2022)

Selected work

LLM extraction that never decides a money value

A Python pipeline extracts the committed yield terms from legal PDFs with every quote verified in code. A person confirms them, and the TypeScript backend checks each payout against them.

1,342 documents through 12 templates, 99% field accuracy on a human-verified eval. Shipped October 2026.

Read how it works

Problem

Every financed asset on Dualmint comes with provenance documents that state, in legal language, the yield an investor is promised. Payouts were checked against values in our database, not against what those documents actually committed to.

Constraints

  • The documents are PDFs in a dozen layouts, some scanned and some inconsistent with themselves.
  • A model can misread a number or invent one, and a payout check built on a wrong number is worse than no check at all.

Design

  • I grouped the 1,342 documents into 12 templates by fingerprinting their layout, so the model extracts once per template plus two spot-checks, not once per document. The whole build cost about US$8 in API calls.
  • Every extracted value must come with a page and a quote. Code checks that the quote exists on that page and contains the value, and rejects anything that fails. Output is validated against a schema before it goes anywhere.
  • When a document states two different values for the same term, neither the model nor the code picks one. The field stays empty and every mention goes to a person.
  • An admin reviews and confirms each template's terms in a review screen. Confirmed terms are never edited in place; a changed document goes back through intake as new provenance. Ingest is idempotent, so re-running the pipeline never creates duplicates.
  • On every monthly yield deposit, the TypeScript backend compares the payout with the confirmed terms and reports the result, match or not.

Evals

I labelled gold answers for all 12 templates and checked them field by field. The first run scored 90%, and most of the mismatches turned out to be mistakes in my own labels, not the model. After fixing the labels and narrowing one over-broad rule, the pipeline reached 99% field accuracy on the human-verified eval set.

Result

Shipped to production in late October 2026. All 12 templates are confirmed, and the first payouts it checked all matched the confirmed terms.

Limits

The 99% figure holds for these 12 templates. Quote verification proves a quote exists, not that it is the right clause, which is why a person confirms every template before any payout is checked against it. The model never decides a money value.

  • Python
  • Anthropic API
  • Pydantic
  • structured extraction
  • LLM evals
  • TypeScript
  • Node.js

Payouts that wait for agreement

Investor payouts are held until three independent data sources agree, and a daily replay job checks the ledger against settlement.

13,800+ payouts over 18 consecutive months, 100% on time

Read how it works

Problem

Investors are paid from the revenue operators earn with financed machines. Every cycle has to pay out on time, and no cycle can pay out on bad data.

Constraints

  • Revenue is reported by three independent sources: IoT telemetry, bank data and operator reports. They can disagree.
  • A payout is money. Once it has gone out, it cannot be clawed back casually.

Design

  • Three-way reconciliation gates every payout. Nothing is paid until telemetry, bank data and operator reports agree.
  • A daily idempotent job replays the previous 24 hours of settlement events against the ingested records and emails an audit report.
  • The job sorts discrepancies into three classes and fixes only the actionable one automatically.
  • It never lowers a balance automatically, because that would destroy authoritative data. It logs the case and a human decides.
  • Corrupted records are repaired by replaying the event log, with the pre-repair state verified first.

Result

  • 13,800+ payout cycles over 18 consecutive months, 100% on time.
  • Zero ledger-to-settlement discrepancies since April 2025.
  • 13 corrupted records repaired by event-log replay, with zero balances changed.

An AI-assisted SDLC a team actually uses

Coding agents work from PRDs and scoped backlog issues. Strict TypeScript, lint, pre-commit checks and human review gating merges.

Adopted by all 5 engineers across 10 repositories

Read how it works

Problem

Coding agents can produce a lot of code quickly. The goal was to get that speed without lowering the quality bar on systems that move money.

Constraints

  • It had to work for the whole team, not for one person.
  • It could not weaken review. Every change still has to be understood by a human before it merges.

Design

  • Work starts as a PRD and is broken into scoped backlog issues, so an agent always has a clear, bounded task.
  • Each repository carries its own agent scaffolding, AGENTS.md and agent skills, describing how that codebase is built and checked.
  • Agent-generated code passes the same gates as any other code: strict TypeScript, lint and pre-commit checks.
  • Human review gating merges.
  • This is an engineering process, not an AI product.

Result

  • Adopted by all 5 engineers across 10 repositories.
  • Merge gatekeeper on 435 of 592 client merges.

Migrating a live platform without stopping trading

Staged upgrades of a revenue-carrying marketplace from Next.js 12, React 17 and web3.js to Next.js 15, React 19 and ethers v6.

Next.js 12 → 15, React 17 → 19 and web3.js → ethers v6 on a live, revenue-carrying platform

Read how it works

Problem

The marketplace carries revenue, and it was running on aging versions: Next.js 12, React 17 and web3.js.

Constraints

  • Trading could not stop. Every step had to ship to the live platform without interrupting it.
  • Three major upgrades in one combined release would have been hard to reason about and hard to reverse.

Design

  • The work was staged as separate upgrades: Next.js 12 to 15, React 17 to 19, and web3.js to ethers v6.
  • Each stage shipped on its own, so a regression could only come from the one change that had just landed.
  • One upgrade was deliberately rolled back when shipping safety warranted it, then redone later. Waiting a cycle on an upgrade is cheap; interrupting a live market is not.

Result

  • Next.js 12 → 15, React 17 → 19 and web3.js → ethers v6 on a live, revenue-carrying platform.

Earlier work

Screenshot of Ipseity Network

Ipseity Network

A consent-based data marketplace: businesses run surveys and data collections, and people choose what to share and are rewarded for it. I built the reward escrow contracts, the inWallet identity wallet in React Native, and pay-per-use billing for the Virtual Clean Room.

ReactReact Native (Expo)Node.jsSoliditylibsodium
(opens in a new tab)Visit the site

Experience

Jan 2025 - Present

Senior Full Stack Engineer · Dualmint, Hong Kong

  • Shipped the first production version of the marketplace across client, backend and settlement contracts, audited at 9.1/10 by Hacken.
  • Built and shipped an LLM extraction pipeline (Python, Anthropic API) that turns legal provenance PDFs into cited, code-verified yield terms; the TypeScript backend checks each payout against them.
  • Own the TypeScript backend for 1,500+ financed assets and the settlement pipeline that pays investors.
  • Lead a team of five engineers and gate merges across 10 repositories.
  • Designed the AI-assisted process the team ships through, with human review gating merges.
  • Onchain work includes a Chainlink CRE workflow live on Solana mainnet, backed by a US$90,000 Solana Foundation grant.

Jun 2022 - Jan 2025

Full Stack Engineer · Ipseity Network, Hong Kong

  • Built the reward escrow: a platform token plus a clone factory that creates one escrow contract per data request to hold its reward pool.
  • Built the inWallet identity wallet in Expo / React Native for iOS, Android and web, with passwordless login and onchain rewards.
  • Upgraded the wallet from Expo SDK 43 to 47 (React Native 0.64 → 0.70, React 17 → 18) by stepping through SDK 45 after direct jumps failed. Merged two branches that had diverged for nine months.
  • Added pay-per-use billing to the Virtual Clean Room, where companies find overlaps between their encrypted datasets without sharing raw data.

Apr 2021 - Sep 2021

Software Engineer Intern · Ipseity Network

    2018 - 2022

    BEng Computer Engineering · Hong Kong University of Science and Technology

    Skills

    AI / LLM
    • Python
    • Anthropic API
    • Structured extraction
    • LLM evals
    • Pydantic
    • pytest
    • LangChain
    • LangGraph
    • RAG
    • Vercel AI SDK
    Backend
    • TypeScript
    • Node.js
    • Express
    • REST APIs
    • PostgreSQL
    • MongoDB
    • MySQL
    • Stripe
    • Webhooks
    • Redis/BullMQ
    • Vitest
    Frontend
    • React
    • Next.js
    • React Native (Expo)
    • Tailwind CSS
    • TanStack Query
    • Zod
    • Recharts
    Infra
    • AWS (EC2, SES, CloudWatch)
    • Docker
    • GitHub Actions
    • Sentry
    • Datadog
    Onchain
    • Solidity
    • Hardhat
    • Foundry
    • OpenZeppelin
    • ethers.js
    • viem
    • EIP-712
    • Chainlink CRE
    • Solana Anchor
    • IPFS
    • libsodium/NaCl
    Engineering process
    • Claude Code
    • Agentic coding with human review
    • TDD

    GitHub Contributions

    Loading contribution activity…

    Get in Touch

    Email is the quickest way to reach me. I am also on LinkedIn and GitHub.

    Hong Kong SAR

    dilsher07singh@gmail.com