Yastremskyi

Selected work

Four decisions

Not feature lists. Each one records the constraint, what was chosen over what, and the detail a mid-level engineer would have got wrong — because that is what a senior reader actually evaluates.

Three of the four are under NDA. The domains are described concretely and the clients are not named, which is the whole of the compromise: no logos, no product names, no screenshots. Groundwork is the exception — it is public, and it is linked.

  1. 01

    Groundwork

    Risk-based task classification L0–L4, 5 specialised review agents,11 automated gates and 14 workflow procedures, shipped under MIT with semantic versioning.

    • Claude Code
    • Bash
    • Static analysis
    • OpenAPI
    The subtle partRoughly one task in three is stopped before any code is written — mis-scoped, conflicting with existing behaviour, or cheaper to solve without development.
  2. 02

    Voice to structured data

    Speech becomes a validated task rather than a guess — domain-tuned transcription, schema-constrained extraction, and a human in front of every action.

    • Whisper STT
    • Schema-constrained extraction
    • Tool calling
    • Queues
    • WebSocket
    • Hebrew
    The subtle partThe tests must never call the provider. It is not about the invoice — a suite that depends on a remote model is a suite that fails for reasons unrelated to the change under test, and a team learns to ignore it within a fortnight. The provider is mocked in CI, and model upgrades are caught by response-regression tests that compare structured output against fixed cases, so a silently retrained model is caught by the suite instead of by a user.
  3. 03

    Payments, clearing and tax documents

    Card tokenization, idempotency-keyed clearing and accounting export, in a domain where being approximately right is being wrong.

    • Laravel
    • bcmath
    • Idempotency keys
    • PCI tokenization
    • Signed webhooks
    • VAT
    The subtle partA tax document with a zero total is rejected outright by the provider. That sounds like an edge case until a discount, a refund or a fully-covered line produces one in the middle of an otherwise valid batch — and because issuance is all-or-nothing, the whole batch fails and nobody's invoices go out. Those items have to be recognised and closed locally instead, so the zero never reaches the provider at all.
  4. 04

    Multi-market commerce platform

    One codebase cloned per market — config-driven currency, locale and timezone — with a pricing engine, driver-abstracted payments and delivery, and an ERP catalogue sync.

    • Laravel 12
    • JSON API
    • Job chains
    • Typed DTOs
    • JSON-LD
    • OAuth
    The subtle partCatalogue sync from the ERP stages every product change as a typed DTO for a human to review before it applies. It would have been far less work to write the incoming data straight to the catalogue — and an import that applies itself is an import nobody can undo. When the ERP sends a bad price on ten thousand products, the difference between staging and applying is the difference between a rejected batch and a weekend.