Case study portfolio

Every system I build is designed to catch something before it becomes a problem.

Four projects in decision logic, experience analytics, data quality, and AI-assisted operations — each one built so the safeguard catches the failure, not the person relying on it.

Complexity → Clarity → Adoption Open to roles in systems design, data & CX analytics, and AI-assisted operations
About this work

I design decision systems, data-quality pipelines, and AI-assisted workflows that make complex work faster, clearer, and easier to trust.

My projects usually start with a familiar problem: a manual process is eating up time, creating avoidable errors, or making good decisions harder than they need to be.

The case studies below include:

Decision support

Cut case resolution time from 30 minutes to 5

CX analytics

Turned 3 years of user feedback into insights that helped shape a shipped product feature

Data quality

Built an automated validation pipeline protecting 30+ programs from downstream errors

AI workflow design

Created and tested an AI-assisted workflow that surfaced a critical failure before reaching the user

swipe

Three projects were built inside organizations and are presented with identifying details removed.

One is a self-directed AI portfolio project shown in full — including the workflow, design decisions, testing, and where it broke.

It's not possible to overstate what a game-changer this has been for us. Saves frustration, reduces wasted time, and reduces errors.Direct manager, on awarding a 2025 Spot Award for Innovation

Portfolio at a glance

The headline number from each system.

83%Faster case resolution — Decision Intelligence
8,400Data points analyzed — CX Analytics
30+Programs protected every cycle — Data Quality
1Identity error caught before send — AI Workflow
Full toolkit

Everything used to build these four systems.

Excel Power Query ETL Data Validation Decision Logic AI-Assisted Design Change Management Survey Analysis Data Categorization CX Analytics Dashboard Design Stakeholder Presentation Solution Architecture Team Development n8n Gemini Wispr Flow Workflow Automation Process Automation Systems Thinking Asana AI-Powered Design
The case studies

Four systems, four kinds of failure they were built to catch.

take a look

Not collecting tools. Using them to solve something real — and knowing what has to happen before the solution becomes real for a business.

If you want the full, non-anonymized versions of the decision intelligence, CX analytics, or data quality case studies, or want to talk through how any of this would apply to your team, I'm easiest to reach on LinkedIn.

Connect on LinkedIn
or send a message directly

04 · AI Automation

Call Recap to Tone-Guided Follow-Up Email

A self-directed n8n workflow prototype that converts structured call recaps into addressed Gmail drafts for human review — and the draft-only safeguard that caught its own failure.

Self-directed portfolio project inspired by a publicly posted freelance brief. Not commissioned client work.

5 min read
4Workflow components: intake, draft, create, review
2Test scenarios, chosen by risk: a success case and a stress case
1Identity inconsistency caught before send
Draft-onlyHuman-in-the-loop safeguard, by design

The short version: a self-directed n8n + Gemini workflow drafts tone-matched Gmail follow-ups from call recaps — and during testing, its human-review safeguard caught an identity mix-up before it could reach a client.

Jump to Real Engagement → Solo project — see 3-Year CX Analytics Initiative for team-scale leadership →
Who this serves & what was at stake

Serves: the BD/account team member sending the follow-up, and the client on the other end of the call · Why it matters: every minute not spent drafting from scratch is a minute the BD team gets back to focus on the relationship itself, not paperwork.

A generic, unreviewed follow-up right after a phone call reads as impersonal — clients who just spoke with someone want a reply with the right tone and a personal touch, not a template. That's exactly why the workflow stops at a draft: a human still checks it before anything reaches the client.

01 · Context

A real business problem. One deliberately chosen slice. A prototype designed around human control.

I found a public freelance brief describing a familiar workflow problem: turning sales calls into follow-up emails was repetitive, manual, and inconsistent.

Each team member was:

  • Copying call transcripts into an AI tool
  • Writing prompts from scratch
  • Creating recaps in different formats
  • Drafting emails in their own tone and structure

The opportunity: turn that fragmented process into a repeatable workflow that could produce a consistent, voice-aligned draft for human review.

I didn't build everything. I chose the part worth testing.

Without access to the client, its systems, or real customer data, recreating the entire proposed solution would have added complexity without proving much more.

So I scoped the prototype around one high-value question:

Can a structured call recap reliably become a useful, voice-aligned email draft without giving AI the final say?

The prototype

The workflow:

  • Standardizes the drafting process
  • Reduces repetitive manual work
  • Applies defined voice and writing rules
  • Grounds the email in the supplied recap
  • Stops at Gmail Drafts rather than auto-sending
Call recap AI drafting Gmail draft Human review

Why that last decision matters

The goal wasn't maximum automation. It was finding the right boundary between automation and human judgment.

For customer-facing communication, AI could do the repetitive first-pass work. A person still owned the final decision.

That was the system I wanted to test.

02 · Solution

The short version: a four-node pipeline that drafts the email and stops — a human decides what sends.

What I built, and why the human stays in control

I built the four-node pipeline below in a single afternoon, then spent the following days testing it against real and fictional scenarios.

try it
Click a step above to see an illustrative example of its input or output.

The AI drafting step

The recap is converted into an email using defined voice and style rules. Click the five highlighted phrases below to see which rule shaped each one:

Hi Morgan, thanks for the time today. Per our call, the team needs API access by end of month, so I'll get a technical contact looped in this week. We can start the setup once the contract is signed, and I'm happy to hop on a quick call if anything above needs adjusting.

Best,
Jordan

Reconstructed example.

Model choice

Gemini powered the prototype, but I did not treat that choice as final.

For a real implementation, I would compare multiple models against the same test set for:

Voice consistency Accuracy Hallucination risk Draft quality Cost and speed

The goal would be to select the model based on evidence, not preference.

Human stays in control

The Gmail integration creates an:

Addressed email subject line completed draft

But it never sends automatically.

The workflow ends in Drafts, keeping a human responsible for reviewing and approving every customer-facing message.

Intentional boundary: draft, not send

The automation removes repetitive setup. It does not remove the reviewer's responsibility to verify identity, recipients, facts, commitments, action items, and tone before sending.

For testing inputs, I used my own Wispr Flow call recaps, because the meeting recorder produces the structured overview, key points, action items, and next steps this workflow needs.

Estimated impact (illustrative, pending Discover-phase validation)

Adjust the assumptions to see how the estimate moves.

try it

That's roughly 6 hours a week returned to relationship-building instead of drafting.

Multiply by team size for organization-wide impact.

What I did not do
ChatGPT (for drafting)

Why rejected: Ongoing API cost for a workflow meant to run on every call, not a one-off.

Chose instead: Gemini — lower cost for a prototype run repeatedly.

Zapier (for the automation itself)

Why rejected: Subscription cost scales with usage — expensive to run this on every call.

Chose instead: n8n — self-hostable, no per-task cost.

Fireflies (meeting recorder)

Why rejected: A human needs to review the recap right after the call, not after a processing delay.

Chose instead: Wispr Flow — the structured recap is ready immediately.

Before & after
MetricBeforeAfter
Path to a follow-upHave the call → AI drafts a transcript → prompt ChatGPT to draft the email → copy the draft into Gmail → address and sendWispr Flow captures the call → review and paste into n8n → draft comes out → human reviews and sends
Tools touched per email3–4, switching by hand1 workflow, start to finish
Voice & toneWhatever each person wrote that dayDefined voice rules, applied consistently
Human review before sendInconsistent, easy to skip under time pressureRequired by design — draft-only
03 · Testing

The short version: the safeguard did its job — a flawed draft never reached a client inbox.

The output failed an identity check. The safeguard worked.

TestPurposeObserved result
Recruiter screening recap (success case)Confirm form submission, model drafting, and Gmail creation worked end to endAddressed Gmail draft produced — plumbing confirmed
Fictional sales discovery recap (stress case)Test the same workflow against the brief's actual target scenarioDraft completed, but contained an identity inconsistency
Input — call recap from the successful test run
Output — Gmail draft from the successful test run

The prompt assumed one sender, while the fictional recap named a different BD lead: the draft described that lead's actions in third person, then signed off in their name. It didn't pass the identity check — but because the workflow stops in Gmail Drafts, the inconsistency was caught before it could become client-facing communication.

Had it sent, the cost wasn't just an awkward typo — it was content confusion and damaged trust. A client who just got off the phone doesn't want a generic, mismatched follow-up; they want a reply with a personal touch and the right tone, checked by a person before it lands in their inbox.

Hi Morgan, following up on today's call — Jordan discussed pricing options and next steps with your team, and wanted to confirm we're aligned before the proposal goes out. Happy to jump on a quick call if anything needs clarifying.

Best,
Jordan

Click the two highlighted spans to see the inconsistency — reconstructed for illustration.

The prototype was built around a single known sender. A team-ready version needs sender identity, approved voice rules, and signature details as structured inputs — not assumptions hidden inside one prompt.

What the fix would look like

A structured sender profile, selected before drafting — instead of an assumption buried in the prompt.

Sender: Jordan Lee, BD Lead · Voice: warm, concise, no em dashes · Signs as: Jordan Lee

A hypothesis, not yet tested — not a built feature.

04 · From prototype to team-ready

The short version: six workstreams — from discovery to measurement — separate this prototype from a team-ready rollout.

What a real engagement would add

Rollout roadmap Scroll to see all 7 workstreams →
01Discover
Discover

Interview BD, account, and operations leads; map call types, ownership, and approval steps.

Planned
02Design
Design

Define sender profiles, voice rules, required sections, and the human approval boundary.

Planned
03Build
Build

Add recipient/sender validation, duplicate prevention, retries, failure alerts, and prompt versioning.

Planned
04Evaluate
Evaluate

Test representative call types and edge cases against a defined accuracy/identity/tone rubric, including a head-to-head comparison of drafting models before locking one in.

Planned
05Govern
Govern

Confirm transcript consent, confidential-data handling, retention, and access control.

Planned
06Pilot & adopt
Pilot & adopt

Small-group rollout with trained reviewers before expanding to the wider team.

Planned
07Measure
Measure

Define KPIs/OKRs before rollout (e.g., minutes saved per rep, time from call to sent email, percentage of drafts sent without edits), then track them against the estimated impact above once live.

Planned

If I had to prioritize two of these first, it would be Discover and Evaluate: you can't design real guardrails without understanding actual call patterns, and the one failure this prototype surfaced was an evaluation gap. Govern would run alongside Discover, not wait until later, given this touches real client communications.

What would remain human-owned regardless: final factual verification, commitments made to the client, recipient selection, sensitive content, relationship judgment, and the decision to send.

1

A safeguard caught a real identity error — before it reached a client.

2

The workflow stops at Drafts. A human decides what sends.

3

Six clear workstreams separate this prototype from a team-ready rollout.

Reflection

The hardest part wasn't building the automation. It was defining the right boundary between AI and human judgment.

This prototype shows how I:

  • Scope ambiguous problems
  • Test responsibly
  • Catch failures
  • Turn experimentation into a clear next step

This is exactly the kind of work I want to keep doing: finding the deliberate boundary between automation and human judgment, and building systems people can actually trust. Solo, this is how I think. With a team, it's what I've already led — see the case studies above for what that looks like at scale.

Also relevant — both self-directed initiatives, built without being asked:

02 · 3-Year CX Analytics Initiative →
Connect