Info
Published May 16th, 2026
I don’t think people want to have every question and solution anticipated for them.
Today, I felt this previously named “friction-via-frictionless interface” in action at Amazon and several other sites. Isn’t it funny how once you see something, you’re primed to see it more? Anyways…
We received a bottle of body wash via Amazon which we wouldn’t have had reasonable access to otherwise. I’m reluctant to give Amazon any praise, but darn it, they get items to our home that I’d have no recourse to get within a month otherwise.
So, the body wash arrives with a busted pump and spout. The viscosity of the wash kept it from seeping everywhere, but it was by no means reasonable to return via our local UPS. I can imagine now how frustrating it would be to watch a patron slap a label haphazardly on a clear bag of loose body wash.
So, understandably, I’d expect to report the item as damaged and open, and because it’s a liquid, they cannot reasonably accept it back (not that returns really get back to where they came from), we’d get a refund, safely dispose of any remaining waste, and buy a new one.
Amazon, in their process-improvement friction-removing fervor, deleted the direct option to speak with a rep. We were being coerced by this ease-of-access flow to mail a bag of loose body wash back to a warehouse where it would sit at the bottom of a pallet of other returns until someone bought it at a deep discount or it found life at an end in the local landfill.
As I leave you with this fun treasure map, I’d like to say this reminds me that in our projects or workflows we cannot reasonably anticipate all outcomes. Additionally, we cannot expect that what we see as a lowered friction entry point for service is desirable. To anticipate and reduce the quality or advocacy process to an automated flow in any field is to dilute or remove the individuality of the person reporting it. It’s not necessarily perceived as efficient in cases like this, but as isolating or dismissive of edge cases. In the service industry, healthcare, or the trades it’s the same effect. It’s perceivable as enshittification and a push for hands-off management. In my career, I’ve heard the public call these workflows like herding cattle.
People want to express what is wrong, even if it’s the same thing everyone else is saying, because that’s part of the process for reconciliation. Companies that think the answer is to remove the opportunity to express dissatisfaction only consolidate this short-lived fuming into a choking-smog that will drive your community away.
Here’s the flow we experienced. Due to the complexity, I did leverage GLM-4.7 (reasoning) from Z.ai via Kagi Assistant to apply the Obsidian Mermaid Syntax to the outlined flow.
flowchart TD %% Style Definitions classDef action fill:#e1f5fe,stroke:#01579b,stroke-width:2px; classDef decision fill:#fff9c4,stroke:#fbc02d,stroke-width:2px,rx:20,ry:20; classDef system fill:#f3e5f5,stroke:#4a148c,stroke-width:2px; classDef result fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px; classDef note fill:#ffebee,stroke:#b71c1c,stroke-width:1px,stroke-dasharray: 5 5,font-style:italic; classDef rep fill:#fff3e0,stroke:#e65100,stroke-width:2px,stroke-dasharray: 2 2; classDef looper stroke:#d50000,stroke-width:4px,stroke-dasharray: 10 5,fill:#fff5f5; %% --- START --- Start((Amazon Item Returns Broken)):::action ContextNote[Context: Unsafe to return would just flow out of bag being liquid]:::note Start -.-> ContextNote Profile[Visit Amazon Profile]:::system Orders[Your Orders]:::system ReturnBtn[Return or Replace]:::system Profile --> Orders --> ReturnBtn %% --- THE FIRST PASS --- ReturnBtn --> Reason{Choose Reason}:::decision Reason -->|Item defective| Photos[Asked to provide photos]:::system Reason -->|Product damaged but box OK| Photos Reason -->|Missing broken parts| Photos Reason -->|Box and item damaged| Photos %% --- THE FORM --- Form[Return form with instructions to drop it off and in exchange can be sent a refund to account balance or original payment method OR receive the same item in exchange]:::system Photos --> Form Form --> Escalation1{Escalation Available}:::decision Escalation1 -->|No option provided| NavCS[Navigate to specialized Customer Service Page]:::action %% --- THE ROUNDABOUT LOOP --- subgraph Circuit [The Return Logic Roundabout] direction TB SelItem[Select Specific Item]:::looper RetRep[Return or Replace]:::looper Reason2{Choose Reason}:::looper Photos2[Asked to provide photos]:::looper Form2[Return form with instructions to drop it off and in exchange can be sent a refund to account balance or original payment method OR receive the same item in exchange]:::looper Escalation2{Escalation Available}:::looper SelItem --> RetRep --> Reason2 Reason2 -->|Options| Photos2 --> Form2 --> Escalation2 end NavCS --> SelItem %% --- LOOP NOTE DETAIL --- LoopNote[Note the areas where we are looping: Begin returned to the exchange type page etc]:::note LoopNote -.-> Form2 %% --- EXIT & RE-ENTRY --- Escalation2 -->|No option provided| Search[Search the word Chat in help content]:::action Search --> SupOpt[Select Support options and customer service]:::system SupOpt --> Link[Select link for Customer Service for 24 7 Support]:::system Link --> MainCS[Returned to main Customer Service center]:::system MainCS ==>|Loop Back| SelItem %% --- GAMING THE SYSTEM --- SelItem --> Egregious{Select Egregious Option}:::decision Egregious -.-> Motiv[Motivation: In hopes that there is not a flow prepped property damage item missing or stolen etc]:::note Egregious -->|Select Option| AIEsc[Get escalated to AI]:::system AIEsc --> Trouble[Complete confirmation of troubleshooting steps]:::system Trouble --> AIResolve[AI says it has been resolved and asks if you need more assistance]:::system AIResolve -->|Select Yes| AIItem{Assistance with this item or another item}:::decision AIItem -->|Same Item| HumanOffer[Offer to escalate to human]:::system HumanOffer -->|Agree| Warn[Warned that lines are busy we may not hear from a human for several minutes or longer]:::system Warn -->|Agree| ConnectNode[Instantly connected to a human]:::result %% --- HUMAN REP FLOW --- subgraph RepProcess [Human Rep Internal Flow] direction TB Receive[Receive Connection]:::rep Listen[Human is informed that the bottle is broken and to ship it would be to mail a bag of loose liquid to Amazon]:::rep CheckAlgo[Pause to check Standardized Internal Flowchart]:::rep CheckNote[Note: Algorithm is Standardized]:::note CheckAlgo -.-> CheckNote Process[Rep immediately calls that silly and processes immediate refund]:::result Receive --> Listen --> CheckAlgo --> Process end %% --- CONCLUSION --- ConnectNode --> Receive Process --> TimeCost[15 to 30 minutes of my morning gone for something that no amount of anticipatory programming could account for]:::note TimeCost -.-> End((END)):::user