↑↓ select · ENTER go · ESC close

Case studies

Complex work carried through to a working outcome

Some work is protected by NDA. The cases show context, responsibility, decisions and honest disclosure boundaries. Filter by outcome rather than programming language.

Verifiable facts

Short results, with nothing rounded in my favour.

2026Client work

Commercial property parsing: 521 unique listings

Collection, deduplication and geographic filtering turned manual browsing into three structured groups.

  • 526 source cards → 521 unique listings after deduplication
  • 129 listings passed the geographic filter
  • The selection is reproducible: the same input yields the same result

Only the completed first stage is claimed; later stages are separate work.

Automation
2026MVP

Semantic knowledge-base search

Local search with synonyms, word forms and semantic clusters, without a required paid AI API.

  • Query normalisation, synonyms and word forms
  • Relevance scoring with a dynamic result threshold
  • Explainable ranking without an external paid API

Working MVP; external-model integration is not claimed before completion and verification.

Product
2026Own MVP

Admission Radar — application-monitoring Telegram bot

An independent MVP with parsers for multiple formats, position risk scoring and privacy safeguards.

  • HTML, XLSX and CSV parsers
  • Pseudonymisation and HMAC identification
  • Risk scoring and effective position
  • Docker and automated tests

Presented as an independent MVP, not as a large production service.

ProductAutomation
2026Live demo

Websites, localisation and technical SEO

This site is a live proof: static generation, accessibility and technical SEO without a heavy runtime.

  • Static generation without a persistent Node process
  • Initial-load budget below 100 KB gzip
  • Two themes, accessibility and technical SEO

Public site-quality figures are calculated during every build rather than inflated manually.

Product

Work I take on

Get in touch

Have a project to discuss?

Start with ScopeMap or describe what happens today and what should happen instead. I will suggest a safe first step.