Cloud and Platform

Azure

I deployed document-generation and AI assistant systems across Azure.

See its threads in the world

Used on

AI Course Writer

2024–2026

Generates long structured documents by filling a template's placeholders from source documents, built for an external training-material business.

Stories where it mattered

2023 · Consulting business-development desk

Making architecture decisions arguable instead of announced

Situation
Technology choices were announced rather than argued, so nobody outside the room could challenge them and debates reopened later.
Task
Make the reasoning behind each decision outlive the decision, without imposing heavy documentation.
Action
I set a standing practice: name the choice, name the closest shortlisted alternative, and link to where the why lives, in a small table.
Result
The practice carried across projects and became what new decisions arrive with, so decisions can be reviewed on their reasoning.
View in the world
2026 · Regulatory medical-writing platform

A cache that remembered the failures

Situation
On a regulatory document platform, generated documents came out wrong in ways that did not reproduce, and retries repeated the bad output.
Task
Find the true cause in a pipeline whose output reaches a client in a regulated industry.
Action
I traced it to a global result cache that also stored partial failed runs, then re-architected generation around per-step isolation with failure-aware cleanup.
Result
Failed runs stopped affecting later ones, a retry became a real retry, and the written root cause let the team review it.
View in the world
2026 · Regulatory medical-writing platform

Tables that arrived in the client's document as raw markup

Situation
Medical writing deliverables showed misplaced tables, detached titles, and sometimes raw markup visible as text in the client's document.
Task
Produce one root cause analysis for three separately reported bugs before anyone wrote a fix.
Action
I found three causes: raw XML mutation, incomplete model-emitted HTML, and context-blind placeholders. I moved tables to a structured contract with neighbour context.
Result
The whole class of defect went away, not just the three reported instances.
View in the world
2026 · TalkingDB document question-answering

Credentials in git history, and rotating keys was not enough

Situation
Reviewing repositories before a host move, I found OAuth client secrets in git history, which ships to anyone who clones.
Task
Make the secrets unreachable, not merely invalid, before the repositories were pushed to their new home.
Action
I cloned bare mirrors, mapped each leaked value to a placeholder, rewrote history with filter-repo, pushed to the new remotes, and documented the exact procedure.
Result
The repositories moved with secrets removed from every commit, and another file with hardcoded credentials was flagged for cleanup.
View in the world
2026 · TalkingDB document question-answering

Holding back an accuracy number that would have looked great

Situation
A large reported jump in search accuracy was circulating and was about to become a go-to-market claim.
Task
Check whether the gain was real, since repeated passing results seemed to be counted again across runs.
Action
I raised it plainly, then set a general standard: proposed improvements need a frequency table of failing cases and expected fix share.
Result
The inflated figure never reached a customer-facing claim, and benchmark results are now reviewed against a sheet before approval.
View in the world
2026 · Consulting business-development desk

Finding out what the cloud bill was actually for

Situation
Cloud spend was climbing, and no single person could see which servers it went to because billing access was split.
Task
Establish the real footprint before deciding what to shut down.
Action
I scripted a sweep across cloud projects that listed every virtual machine with its project and state, then sequenced access, pruning and backups.
Result
Pruning followed the inventory instead of guesswork, and the sweep set the order of what to stop.
View in the world
2026 · TalkingDB document question-answering

Being asked to pull a date forward, and naming the real constraint

Situation
Leadership wanted a cross-product integration delivered sooner because it strengthened the story with channel partners, which I agreed with.
Task
Show that the date was set by available engineering time, not technical complexity.
Action
I agreed with the goal, offered to make time visible through tracked tasks, and named three ways to buy time: delegation, clear ownership, hiring.
Result
The conversation moved from when it can be done to which trade-offs we accept, with the task breakdown as shared evidence.
View in the world
2026 · TalkingDB document question-answering

A port that turned out not to be a port

Situation
Search training was to be ported from an older e-commerce AI codebase, and the files looked like a simple lift and shift.
Task
Scope the port properly before committing a sequence of stories others would plan around.
Action
I read the code itself: the crawler was tied to one storefront, so I called for a fresh generic crawl-and-chunk pipeline and resequenced.
Result
The order of work changed without changing the plan, and client-specific code stayed out of the generic package.
View in the world
2024 · Regulatory medical-writing platform

Asking what onboarding was supposed to produce

Situation
Two engineers were joining a document platform module covering audit logs, automatic mapping and server management.
Task
Give onboarding an intended outcome rather than just an activity.
Action
I asked the lead for the target outcome, how we would judge pace, and when production value was expected, and offered a reference checklist.
Result
Onboarding ran against a stated target and a first-value date, and the checklist was reused.
View in the world
2026 · Consulting business-development desk

Overturning a hiring verdict by doing the review myself

Situation
A senior engineering candidate had been assessed by a reviewer I trusted, and the recommendation was already written.
Task
Decide whether I agreed by reading the candidate's actual work rather than the review of it.
Action
I reviewed both pull requests, issue discussions and documents independently, then wrote my assessment point by point, differing on the algorithmic work.
Result
The decision changed on the merits, and the reviewer could see which points I accepted, setting the expectation that recommendations are examined.
View in the world
2025 · Consulting business-development desk

Taking services away instead of adding them

Situation
Two pipelines had each been split into many microservices that shipped, failed and were debugged together, adding cost without independence.
Task
Make the case for consolidation on operational cost, with the boundary authors in the room.
Action
I wrote up the reasoning for a loosely coupled monolith, keeping only the seams with distinct scaling or failure characteristics and merging the rest.
Result
Fewer services to deploy, fewer cross-service failures to trace, and each remaining split could be defended individually.
View in the world
2025 · Consulting business-development desk

Reading the bill before optimising the model

Situation
Model spend was climbing across products, and the instinct was to change models or shrink prompts without breaking the bill down.
Task
Cut cost through a mechanism we could explain, without switching to a cheaper model and losing quality.
Action
I reviewed usage per project so consumption was attributable, saw identical completions paid for repeatedly, implemented prompt-completion caching, and tracked the bill afterwards.
Result
Cost fell sharply with no change to models or outputs.
View in the world

Goes with

Throw me a paper plane

Write a line; I’ll find it in my inbox.