I like figuring out how and where to make things better.
better
adjective
uk /ˈbet.ər/ us /ˈbet̬.ɚ/
of superior suitability, advisability, desirability, acceptableness, etc.; preferable.
Sometimes that means untangling a process, restructuring a document or working out why a project keeps getting stuck in the same place. Sometimes it means writing the copy, redesigning the way information is organised, or building a small tool because the existing way of doing something is unnecessarily annoying.
My background is in creative agencies, corporate communications and digital projects. The work has ranged from annual reports, investor communications and large-scale production projects to workflow design, documentation and information architecture. My contribution has rarely stopped at the edges of the job description. If something could be clearer, easier to use, easier to maintain, or simply less painful to do twice, I'm probably already thinking about how to improve it.
Increasingly, that's also meant building my own tools and frameworks.
This portfolio is a filing cabinet for some of that work: professional projects, self-initiated experiments, things I've built because I needed them, and a few ideas that became considerably larger after I started pulling on the thread.
Have a look around. The drawers are labelled
SELF-BUILT TOOLPRODUCT · UX · DOCUMENTATION
TangentMD
tangentmd.website
A lightweight Markdown workspace built around portability, parallel thinking and getting out of the way.
The context
TangentMD began with three recurring bits of friction: cleaning formatting artefacts from AI-generated text, having nowhere lightweight to draft while seeing Markdown properly rendered, and getting clean, portable content back out of platforms without fighting their export functions.
None was a major problem. Together, they created enough repeated friction to justify a small, purpose-built solution.
The approach
The starting point was deliberately modest: one self-contained HTML file, running entirely in the browser, with two working canvases and live Markdown preview.
Markdown remained the underlying format rather than being converted into a proprietary document structure. Existing .md files can be opened directly, worked on and exported as Markdown again, allowing TangentMD to sit between other tools without becoming the permanent home of the work.
The dual canvases were similarly designed around coexistence rather than hierarchy. Originally fixed and stacked, they became independently resizable, switchable between stacked and side-by-side layouts, and individually focusable as real use exposed where the original implementation was unnecessarily restrictive.
What emerged through use
Development continued through daily use rather than a predetermined feature roadmap.
Some additions solved obvious friction. Others came from recognising capabilities already present in the browser. Raw HTML in Preview simply rendered, which opened the workspace to interactive checklists, collapsible sections, images, tables, SVGs and even quick experiments with snippets from elsewhere.
The result grew substantially without changing the original premise: make a particular part of the workflow easier without trying to own the rest of it.
From workaround to release
Across 20+ iterations, TangentMD developed from a personal utility into a documented public release, complete with its own identity, landing page and downloadable app.
Its eventual distribution model followed much the same logic as the build itself. TangentMD is a self-contained HTML file which runs locally in a browser. Putting substantial infrastructure around it simply to control access would add complexity to something whose usefulness partly comes from having very little of it.
So the public version is deliberately simple: download the file, use it, modify it if useful, and buy its maker a coffee if so inclined. It still consists of one HTML file.
SELF-BUILT TOOLSATIRE · PROMPT DESIGN · LANGUAGE ANALYSIS
Culty Ipsum
A satirical text generator built to make manipulative and coercive rhetoric easier to recognise.
The problem
Manipulative language isn't new. What has changed is how easily it can be packaged, personalised and distributed.
Influence that once depended on being in the room can now arrive through a feed, sales funnel, campaign email, podcast, Telegram channel or suspiciously intimate message from someone with a ring light. Old mechanisms have acquired new voices: the cult leader, political demagogue and hard-sell salesperson now coexist with crypto hustlers, wellness gurus, manosphere influencers and coaches selling access to increasingly specific forms of enlightenment.
The language changes. The underlying patterns are remarkably persistent.
And those patterns are often easier to feel than they are to name. A message might manufacture urgency, turn disagreement into disloyalty, construct an enemy, attach belonging to compliance or make one outcome feel like the only legitimate choice. Something feels off, but without language for the mechanism, it can be difficult to identify exactly what is creating that pressure. Naming the mechanism makes the pattern easier to recognise the next time it appears.
Culty Ipsum has a simple purpose: make those patterns exaggerated enough to become visible…in an entertaining way.
A satirical text generator seems considerably more memorable and demonstrative than another list of manipulation warning signs.
The approach
The visible product is deliberately simple: choose a mysterious archetype, choose an intensity and generate some nonsense.
Behind it are twelve independently designed personas, drawn from recognisable archetypes of modern influence culture.
Rather than using one prompt template with different vocabulary swapped in, each persona was built around its own rhetorical logic, worldview, cadence, jargon and characteristic forms of pressure.
The live interface deliberately obscures the persona names. Discovering exactly what kind of terrible person has just been selected is part of the experience. However, for the purpose of this case study, we can spoil the surprise:
The Motivational Speaker
The Crypto Bro Hustler
The Feminine Embodiment Coach
The MLM Boss Bitch
The Conscious Capitalist
The Pseudo-Scientific Cult Leader
The Silicon Valley Visionary
The Alpha Life Coach
The Fearmongering Politician
The Televangelist Preacher
The Men's Rights Influencer
The Networker (Social Capital Extractor)
The underlying mechanisms may overlap, but their delivery doesn't.
For example, the Crypto Bro Hustler and the Feminine Embodiment Coach may both use exclusivity or social proof, but they don't construct authority, belonging or urgency in the same way.
Detection had to explain, not just flag
A tool that says “this contains manipulative language” doesn't teach much.
One that identifies enemy framing and shows where an opposing group has been constructed as hostile, or identifies manufactured urgency and explains how delaying a decision has been made to feel dangerous, gives the reader a concept they can recognise somewhere else.
The detector therefore names the mechanism and explains how it appears in the specific text rather than reducing the output to a generic warning or manipulation score.
It doesn't make the judgement for the reader. It makes the structure easier to see.
From generation to detection
The generator came first, sparked by the initial desire to create a dynamic, AI-integrated version of those novelty database-based placeholder text generators that have been around forever.
Once the satirical output was working, due to the chosen subject matter, a much more useful possibility became apparent: the same text could become its own teaching material.
Generation alone made the patterns exaggerated enough to notice. Adding an analytical layer could give those patterns names.
Adding detection as a completely separate function was the only thing that made sense. The generator was already doing its job when the analytical layer emerged; there was no reason to change it simply because the output had found another use.
How they work together
The finished output is passed to a second AI system, which analyses the language against its own taxonomy and explains the mechanisms it finds: enemy framing, manufactured fear and urgency, false dichotomies, moral absolutism, scapegoating, dehumanisation, appeals to exclusivity or belonging, or whichever combination is actually present in the generated text.
The generator receives the persona, topic and intensity calibration and produces the specimen. The detector receives that finished text and independently analyses what is actually present against its own taxonomy.
That separation also matters because the generation specification is not the ground truth for the analysis.
The detector isn't reporting what the generator was instructed to include. The output is being independently examined for patterns detected in the language that actually landed on the page.
One creates the specimen. The other examines it.
The analysis is concerned with observable language, not mind-reading. A rhetorical mechanism isn't proof of malicious intent, and the same device can operate differently depending on context, consequence and how pressure is applied.
The useful question isn't what kind of person would say this?
It's: what is this language doing?
Each of the twelve personas has a separately authored system prompt at each of the three intensity levels.
12 ARCHETYPES × 3 INTENSITY LEVELS = 36 DISTINCT SYSTEM PROMPTS IN TOTAL
These system prompts are not simply tone-of-voice instructions.
Alongside cadence, vocabulary and jargon, the prompts encode the rhetorical logic of the archetype: how it establishes authority, creates urgency, positions the audience, frames disagreement and applies its characteristic forms of pressure.
The intensity variants then define how that particular rhetorical system changes as plausibility decreases and exaggeration increases. Worked examples provide concrete calibration points for each level rather than applying one universal definition of “more extreme” across all twelve.
Calibrating the absurdity
“Intensity” isn't simply a measure of how coercive the output is. It controls how far the language moves from something that could plausibly exist in the wild towards an increasingly exaggerated and saturated version of the archetype.
Each persona operates at three intensity levels:
1. Chillingly Plausible
At Level 1, the persona stays close enough to reality that the output could conceivably have appeared in a LinkedIn post, campaign email, Telegram channel or suspiciously expensive online course. The rhetoric is heightened, but the seams aren't supposed to show.
2. Certified Soul Coercion
At Level 2, the characteristic voice becomes harder to miss: greater certainty, denser jargon, stronger pressure, more absolutist framing and increasingly conspicuous appeals to authority, belonging, fear or exclusivity.
3. Dissociative Vocabulary Syndrome
At Level 3, plausibility begins to collapse. Jargon density increases, claims become grander, metaphors pile up and coherence starts to fray, while the underlying persona remains recognisable.
Getting that progression consistent required more than telling a generation model to “make it more extreme”.
UX/UI
Each persona also arrives with a default topic already loaded into a fully editable prompt field, chosen to demonstrate the archetype without requiring the user to think of something first, so they can generate an output immediately, and the voice will make sense in its natural habitat.
That's where another part of the absurdity appears.
The rhetorical machinery can be separated from the subject matter it would normally be attached to. A Fearmongering Politician can become gravely concerned about The Real Housewives of Beverly Hills. A wellness grifter can bring the full weight of spiritual transformation to office stationery. The subject changes. The voice survives.
That mismatch is funny, but it also makes the construction of the archetype easier to see. Once familiar rhetoric is attached to something ridiculous, the patterns belonging to the voice become harder to mistake for properties of the topic.
Example: Challenge/Solution
Making the creative intent legible under updated model guardrails
Two archetypes presented a different kind of prompt-design problem.
After the underlying generation model was updated, the Men's Rights / Anti-Feminist Influencer began triggering stronger generation guardrails. The Fearmongering Politician later presented the same problem. Removing them was an option, but it would also have removed two useful examples of how grievance, fear and adversarial framing can operate in contemporary influence culture.
The challenge wasn't to make the model less safe. It was to make the creative intent more legible.
Read more about the solution
Earlier instructions could describe a toxic worldview using direct imperatives: reproduce the entitlement, blame an outside group, treat rejection as injustice. Although those instructions were written in the context of satire, an updated model could reasonably interpret them as instructions to generate the underlying hostility itself. In the case of the Men's Rights persona, the prompt had become psychologically more specific while simultaneously becoming more ambiguous about whether the model was being asked to examine the worldview or advocate it.
The prompts were reframed around the character's rhetorical behaviour and flawed reasoning instead.
The Men's Rights Influencer interprets ordinary rejection as evidence of a system rigged against him. His boasts expose old humiliations; his certainty masks insecurity; his self-serving interpretations reveal the entitlement the satire is targeting. The prompt explicitly establishes that the subject of the satire is his grievance-based worldview, rather than the people he blames for it.
The Fearmongering Politician received the same treatment. Rather than instructing the model to blame “outsiders” and rally an audience against them, the revised prompt describes a politician whose relevance depends on maintaining a permanent state of alarm: reducing complexity to moral battles, escalating setbacks into catastrophes, selectively constructing evidence and treating disagreement as an existential threat, without endorsing a particular political position.
The distinction is subtle but important: write about the worldview, not for it.
The archetypes didn't need to become less recognisable. The relationship between the model, the character and the target of the satire needed to become clearer.
And in practice, the constraint improved the characterisation. The Men's Rights Influencer became less of a generic angry stereotype and more of a coherent character whose own rhetoric gradually exposes the insecurity and reasoning underneath the performance.
What emerged
Culty Ipsum became a strange combination of satire, prompt design and language analysis.
Someone can choose an archetype, generate something immediately, replace its natural subject with something ridiculous, push the intensity from plausible to completely unhinged, and then turn the result over to the detector to see the rhetorical machinery inside it.
Pattern recognition happens almost as a side effect of play.
The old mechanisms are still there. The personas, vocabulary and delivery systems have changed, but the structures underneath them remain surprisingly familiar.
The satire is the hook. Making the mechanism legible is the point.
Status
Live and public at cultyipsum.com, with twelve personas, three intensity levels, editable prompts and separate generation and detection systems.
FRAMEWORK · IN DEVELOPMENTSYSTEMS · STRATEGY
Organisational Identity Architecture
An early-stage methodology for giving AI genuine organisational context, not just a style guide. (In development.)
The gap
A conventional brand or tone-of-voice document can tell an AI system how an organisation should sound: clear, optimistic, not overly casual. What it can't do is answer the harder question, how does this organisation actually make decisions and communicate when the answer isn't already written down in the style guide?
Most organisational AI context is shallow in exactly that way. It describes surface preferences. It doesn't externalise the underlying operating logic, the values, priorities, and decision patterns that actually govern a judgement call when there's no rule to point to.
OIA starts from a different premise: that identity, for an organisation as much as a person, isn't one flat description repeated at every audience. There's a single foundational identity, values, decision logic, authority structure, tolerance for uncertainty, communication invariants, and then different relational expressions of that same identity depending on who it's speaking to. Customers get a value-exchange relationship. Employees get a belonging/purpose relationship. Investors get a stewardship/accountability relationship. Same organisation, same underlying logic, different relational lens.
Where it came from
The methodology didn't start as an organisational idea. It started as a personal one, a framework (CGE) for deliberately accumulating and externalising context about how an individual actually operates, built and used over sustained daily practice rather than designed upfront.
The mechanism that made it work wasn't “AI analyses you and discovers things.” It was closer to structured evidence-gathering: individually meaningless observations, recurring preferences, habitual ways of solving problems, contradictions between self-narrative and accumulated evidence, that only became useful in aggregate, tested and checked against source material rather than taken as given. Low-stakes, half-formed input turned out to matter as much as deliberate reflection, an offhand reaction to something annoying carries the same kind of signal as a considered answer, once there's enough of it to find the pattern.
The interesting result wasn't the personal context file itself. It was recognising, after enough use, that the underlying mechanism wasn't specific to a person. The same gap, between surface-level preference and the deeper operating logic underneath it, exists in organisations too. That recognition, abstracting a working method away from the individual case it was built for, is where OIA comes from.
Status
OIA is in development and prototyping stage, not a built product. It's the same underlying question CGE answers for an individual, applied to a different unit: what context does an AI actually need to make a good decision, when a prompt alone isn't enough. A conversation with a developer working on AI-generated communications infrastructure surfaced a plausible real-world seam for it, audience-intelligence systems handle the who and the channel; OIA would supply the identity layer underneath that, so the same organisation stays coherent across all of them without needing a separate rulebook per audience.
Next development step is defining what that externalised identity layer actually needs to contain to be useful in practice, not just in theory.
UX · INFORMATION ARCHITECTURE · PROCESS DESIGN
UX, IA & Process Design
Evidence for process mapping, documentation, information architecture, workflow design and systems thinking will live here.
Testimonials, artefacts and process examples can be added to this sheet as the content is assembled.
PROJECT · CLIENT · OPERATIONS MANAGEMENT
Project, Client & Ops Management
Evidence for account and client management, production and print management, and presentation or workshop delivery will live here.
Testimonials, artefacts and delivery examples can be added to this sheet as the content is assembled.
STRATEGIC COMMUNICATIONS · CONTENT CREATION
Strategic Comms & Content Creation
Evidence for onboarding and training materials, copywriting and editing, Figma and presentation work will live here.
Writing samples, artefacts and communications examples can be added to this sheet as the content is assembled.
APPLIED IDEATION · PRODUCT · FRAMEWORK DEVELOPMENT
Applied Ideation: Product & Framework Dev
Evidence for framework design, digital tool development and AI-integrated workflow design will live here.
Product experiments, frameworks and process examples can be added to this sheet as the content is assembled.
About
I have a well-indexed brain and a habit of cross-referencing it.
Years of working across client management, operations, communications, UX, process design and digital problem-solving have given me a broad base of knowledge and experience. What I’m particularly good at is making connections across it.
A problem that looks like a communications problem might turn out to have a process issue underneath it. A UX decision might benefit from something learned through project delivery. An idea from one industry can prove unexpectedly useful in another.
My capabilities are distinct, but they don’t operate independently. The value is often in recognising what connects them, pulling together the right combination, and turning that into something useful.
Track record (Enndex)
A running index of results, roles and reference points — structured, dated, scannable.
Contact
Got something complicated that could work better?
I’m available for consulting and project-based work across UX, operations, strategy + comms, and development.
Available for UX, operations, strategy + comms, and development work; reach out on LinkedIn if you’ve got a complicated problem that could be clearer, easier to use, or simply work better.