NJ — nathanjoel.com

Nathan Joel

Forward Deployed Engineer.
Working at the seam between retail clients and an AI-driven content product — bridging client needs and product engineering, and shipping in both directions.
Belfast · UK + NA · 2026
01About

I work at the seam between retail clients and an AI-driven content product.

I’m a Forward Deployed / Solution Engineer. My job is the bridge: I sit with clients to capture their technical and output-format requirements directly, translate them into delivery specs the engineering team can run with, and turn the patterns I see across that portfolio into proposals that shape the product itself.

The role only works if you can do both sides credibly. So I also ship — full-stack features, data pipelines, internal tooling. Being close enough to the code to know what’s actually expensive, and close enough to clients to know which expensive thing is worth doing, is most of the value.

I’m based in Belfast and I work with retailers across the UK and North America. I like writing software other people can pick up and run with, and I prefer composing small, well-named things over building cathedrals.

Role
Forward Deployed / Solution Engineer
Sits
Between client delivery & product engineering
Stack
Python · TypeScript · LLM orchestration · data pipelines · ETL
Based
Belfast, Northern Ireland
Markets
United Kingdom & North America
Status
Open to interesting conversations
02Selected work

Six pieces of work, distinct in shape.

01Programme delivery

Lead content delivery across 15+ retailers in the UK and North America, simultaneously.

I own the client relationships across that portfolio end-to-end — from the first technical conversation through to high-volume batch releases. Each retailer has its own taxonomy, brand rules, locale mix, escalation paths. The job is to keep all of that legible to one team without turning every retailer into a special case.

What I’ve built up around it: client-specific config layers on a shared core, status views that surface the few things that need a human, a rhythm of small recurring touchpoints instead of heavyweight reviews.

Portfolio opsClient config layersBatch releaseDelivery rhythm
01 · CONCURRENT CLIENTSEDILDNMANBFSDUBBHXBRSGLANYCBOSTORCHIATL15+CONCURRENT
02Client ↔ engineering

The bridge role — capture requirements, translate them into delivery and product feedback.

I work directly with clients to capture their technical and output-format requirements — the column shapes they actually need, the locales they ship into, the validation rules a downstream system silently enforces. Most of that detail never makes it to a brief; you only get it by sitting in the call and asking the next question.

I then translate those requirements into delivery specs the engineering team can run with, and into product feedback when the same gap shows up in three clients in a row. That second loop — pattern-spotting across the portfolio and feeding it back upstream — is most of the job.

Requirements captureDelivery specsProduct feedbackClient comms
02 · CLIENT ↔ PRODUCTCLIENTOutput formatLocale mixValidation rulesTaxonomyEscalation pathsBrand voicePRODUCT / ENGDelivery specSchema mappingAcceptance testsRoadmap inputProposalBug → featureFDEBRIDGEREQUIREMENTS → SPECS ⇠ PRODUCT FEEDBACK
03Product direction

Authored a data-export design proposal, adopted as direction for the content-export layer.

A recurring pattern across the portfolio: every client wanted a slightly different shape of CSV/XLSX out of the platform, and the way we handled that was accreting per-client special cases instead of paying off the abstraction. I wrote up a design proposal for productising the export layer — a schema-driven model with per-client mapping as configuration rather than code.

The proposal was adopted as the direction for that part of the product. The work that flowed from it now removes a class of bespoke engineering tickets we used to absorb on every onboarding.

Design proposalSchema-driven exportConfig over codeCross-client patterns
03 · EXPORT LAYERPROPOSAL · v3ADOPTEDDRAFTREVIEWADOPTEDBUILTCLIENT ACLIENT BCLIENT C
04Data infrastructure

Built large-scale product data pipelines — translation, standardisation, batch content.

The work the LLMs get credit for only happens because the data arrived in the right shape. I built the upstream of that: cross-language SKU translation that preserves brand and unit conventions; data standardisation and column consolidation that resolve dozens of source schemas into a single canonical one; batch content runs that survive partial failures and resume cleanly.

The hard parts are rarely the transformations — they’re idempotency, observability, and the long tail of edge cases that only appear at scale. I lean on small typed steps, explicit contracts between stages, and unforgiving tests.

PythonETLSKU translationSchema mappingBatch processing
04 · PIPELINERAWi18nNORMMERGEOUTSKU-3E8SKU-3EFSKU-3F6SKU-3FDSKU-404SKU-40BSKU-412SKU-419SKU-420FLOW
05Applied AI

Contributed full-stack features to an agentic PDP generation system.

A multi-step pipeline where retrieval, attribute extraction, copywriting and verification each get their own agent role, coordinated through a graph that knows which steps depend on which. The structure matters more than any single prompt — it’s what lets you tune one stage without destabilising the others.

I contributed full-stack features across it: the UI and APIs that operators use to drive runs and review output, prompt scaffolding around messy real-world product data, and verifier passes that catch the failure modes you only see at scale.

TypeScriptPythonLLM orchestrationFull-stackEval harness
05 · AGENT TOPOLOGYINTAKERESEARCHEXTRACTVERIFYTITLEBULLETSDESCRMETAASSEMBLEAGENT_GRAPH.v39 NODES · 13 EDGES
06Internal tooling

Built a reusable internal scrape-to-sheet tool, used across many retailers.

Retailers ask for the same shape of one-off task more often than anyone admits: pull these fields from these pages into a spreadsheet the merchandising team can open in Excel. I built one tool to do it well, then wrapped it in a thin per-client config so onboarding a new retailer takes hours, not a sprint.

The trick was treating it as a product, not a script — sensible defaults, polite rate-limiting, schema validation on the output, and a familiar enough interface that non-engineers can run it themselves.

PythonScrapingPluggable selectorsSpreadsheet outputPer-client config
06 · SCRAPE → SHEETABCDEFSOURCESHEET
03Open tabs

Things I’m learning through, not things I’ve shipped. The framing matters.

Vazam in progress · research

A Shazam-style concept for voice actor recognition. I’ve been reading my way through the architecture more than building it: speaker embeddings with SpeechBrain & ECAPA-TDNN, vector search with FAISS, source separation via Demucs, diarization with pyannote.audio. Some of the pipeline is prototyped, most of it is still notebooks and questions.

ECAPA-TDNN · FAISS

Homebase tinkering

A personal automation system I keep poking at for my own setup at home — small scripts and services that talk to each other, mostly so I can answer “what would it take to do X automatically?” with experiments rather than guesses.

LOCAL · SELF-HOSTED
04Photos, occasionally

A few frames I liked enough to keep. Filed by where I was when I took them.

Mountain landscape at dusk
City lights reflected on water
Travel photography
Coastal cliffs
Landscape photography
Scenic view
Natural landscape
Travel photography
Architectural detail
Street photography
Landscape
Travel scene
Photography