retail-operations-field-guide/protocols.html
2026-08-18 09:15:08 +00:00

153 lines
10 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>POS Protocols — Carolyn Dail</title>
<meta property="og:type" content="website">
<meta property="og:title" content="POS Protocols — Carolyn Dail">
<meta property="og:description" content="Standard operating procedures for the front end. These are the ones I hand to new hires on day one—because if you can">
<meta property="og:url" content="https://carolyn-dail.4ort.net/protocols.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="Standard operating procedures for the front end. These are the ones I hand to new hires on day one—because if you can't follow a protocol, you can't…">
<style>
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;600&family=IBM+Plex+Serif:wght@400;600;700&display=swap');
:root { --bg: #0a0a0a; --fg: #33ff33; --fg-dim: #1a9e1a; --fg-muted: #0d5e0d; --accent: #ff6633; --border: #1a9e1a; --card-bg: #0f1a0f; }
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: var(--bg); color: var(--fg); font-family: 'IBM Plex Mono', monospace; font-size: 14px; line-height: 1.6; }
.terminal-bar { background: #0d1a0d; border-bottom: 1px solid var(--border); padding: 8px 20px; display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--fg-dim); }
.terminal-bar .dot { width: 10px; height: 10px; border-radius: 50%; } .terminal-bar .red { background: #ff5f56; } .terminal-bar .yellow { background: #ffbd2e; } .terminal-bar .green { background: #27c93f; } .terminal-bar .title { margin-left: 12px; }
.container { max-width: 900px; margin: 0 auto; padding: 20px; }
.back-link { font-size: 11px; color: var(--fg-muted); text-decoration: none; margin-bottom: 16px; display: inline-block; }
.back-link:hover { color: var(--fg); }
.hero { border: 1px solid var(--border); padding: 30px; margin-bottom: 20px; }
.hero h1 { font-family: 'IBM Plex Serif', serif; font-size: 26px; font-weight: 700; margin-bottom: 8px; }
.hero .subtitle { color: var(--fg-dim); font-size: 13px; }
.section { border: 1px solid var(--border); margin-bottom: 20px; }
.section-header { background: var(--card-bg); padding: 10px 16px; font-size: 11px; text-transform: uppercase; letter-spacing: 2px; color: var(--fg-dim); border-bottom: 1px solid var(--border); }
.section-body { padding: 20px 16px; }
.protocol { border: 1px solid var(--fg-muted); margin-bottom: 12px; }
.protocol-header { background: var(--card-bg); padding: 8px 12px; font-size: 12px; display: flex; justify-content: space-between; }
.protocol-header .proto-id { color: var(--accent); }
.protocol-body { padding: 12px; font-size: 12px; color: var(--fg); }
.protocol-body ol { padding-left: 20px; }
.protocol-body li { margin-bottom: 6px; }
.protocol-body .note { color: var(--fg-dim); font-style: italic; margin-top: 8px; }
.ops-table { width: 100%; border-collapse: collapse; font-size: 12px; margin: 12px 0; }
.ops-table th { text-align: left; background: var(--card-bg); padding: 6px 10px; border: 1px solid var(--border); color: var(--fg-dim); font-size: 10px; text-transform: uppercase; }
.ops-table td { padding: 6px 10px; border: 1px solid var(--border); color: var(--fg); }
.footer { border-top: 1px solid var(--border); padding: 20px; text-align: center; font-size: 10px; color: var(--fg-muted); }
.footer a { color: var(--fg-dim); text-decoration: none; }
.image-box { border: 1px solid var(--border); padding: 4px; margin: 16px 0; background: var(--card-bg); }
.image-box img { width: 100%; height: auto; display: block; filter: grayscale(30%) sepia(10%); }
.image-box .caption { padding: 8px; font-size: 10px; color: var(--fg-muted); }
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<div class="terminal-bar">
<span class="dot red"></span><span class="dot yellow"></span><span class="dot green"></span>
<span class="title">carolyn-dail ~ protocols — Point-of-sale standard operating procedures</span>
</div>
<div class="container">
<a href="index.html" class="back-link">◄ Back to Triage Desk</a>
<div class="hero">
<h1>POS Protocols</h1>
<p class="subtitle">Standard operating procedures for the front end. These are the ones I hand to new hires on day one—because if you can't follow a protocol, you can't improvise one.</p>
</div>
<div class="section">
<div class="section-header"><span>Open Protocol — Pre-Shift</span></div>
<div class="section-body">
<div class="protocol">
<div class="protocol-header"><span>PRO-001</span><span class="proto-id">OPENING CHECKLIST</span></div>
<div class="protocol-body">
<ol>
<li>Verify cash drawer starting count (must match previous close + float). Record variance if >$0.50.</li>
<li>Test card reader with test transaction ($0.01 auth, immediate void). <em>This catches 90% of reader failures before a customer notices.</em></li>
<li>Confirm receipt paper roll is loaded and cutters are clean. A jammed cutter is a 4-minute delay per transaction.</li>
<li>Check that the floor manager has signed the price-override log from yesterday. <em>Unapproved overrides are theft, not mistakes.</em></li>
<li>Verify the emergency power indicator is green. We lost a full Saturday in 2019 because nobody checked this one Tuesday.</li>
</ol>
<p class="note">Rule: If the drawer is off by more than $0.50, do NOT open for customers. Call the floor manager. This is not negotiable.</p>
</div>
</div>
</div>
</div>
<div class="section">
<div class="section-header"><span>Transaction Protocol — During Shift</span></div>
<div class="section-body">
<div class="protocol">
<div class="protocol-header"><span>PRO-002</span><span class="proto-id">VOID / RETURN WORKFLOW</span></div>
<div class="protocol-body">
<ol>
<li>Customer requests void or return.</li>
<li>Retrieve original receipt. If no receipt, check the POS transaction log by time window (±5 min).</li>
<li>If item is unopened/with tags: process at register. Log reason code (D01D07).</li>
<li>If item is opened/damaged: require manager override. <em>Never override yourself.</em></li>
<li>For returns >$100: manager override + secondary verification (photo ID optional, not required).</li>
<li>File original receipt in the void bin (the labeled shoebox by the safe). We audit these weekly.</li>
</ol>
<p class="note">Metrics we track: void rate per cashier (target <2%), return rate by reason code. I publish these every Monday morning.</p>
</div>
</div>
<div class="protocol">
<div class="protocol-header"><span>PRO-003</span><span class="proto-id">CASH SHORT / OVER RESPONSE</span></div>
<div class="protocol-body">
<ol>
<li>Register reports "Cash Short" or "Cash Over" at end of transaction.</li>
<li><strong>Do not</strong> add or remove cash to balance. This is a data point, not a suggestion.</li>
<li>Recall the transaction details mentally: what bills were handed? Was there a change-making error?</li>
<li>Document the amount and time on the shift log (the clipboard by the break room).</li>
<li>If cumulative short/over exceeds $5.00 in one shift, notify the floor manager immediately.</li>
</ol>
<p class="note">I've seen new cashiers "fix" a $0.25 short by adding their own quarters. That is how embezzlement starts with good intentions. Document it. Let the numbers tell the story.</p>
</div>
</div>
</div>
</div>
<div class="section">
<div class="section-header"><span>Close Protocol — End of Shift</span></div>
<div class="section-body">
<div class="protocol">
<div class="protocol-header"><span>PRO-004</span><span class="proto-id">Z-READ / END OF SHIFT</span></div>
<div class="protocol-body">
<ol>
<li>Run Z-read from the POS terminal. This prints the shift summary: total sales, tender breakdown, voids, returns.</li>
<li>Count physical cash in the drawer. Compare to the Z-read cash total.</li>
<li>If variance ≤ $0.50: record as "within tolerance" on the shift log. Sign and date.</li>
<li>If variance > $0.50: recount. If still off, document with a note and flag for the floor manager.</li>
<li>Deposit cash in the safe using the drop bag protocol (two sets of eyes).</li>
<li>File the Z-read slip in the daily binder, tabbed by date.</li>
</ol>
<p class="note">The Z-read is the retail equivalent of the AGC's telemetry downlink. It's your data trail. Protect it.</p>
</div>
</div>
</div>
</div>
<div class="section">
<div class="section-header"><span>Metrics Dashboard — Weekly Targets</span></div>
<div class="section-body">
<table class="ops-table">
<thead><tr><th>Metric</th><th>Target</th><th>Current (7d avg)</th><th>Status</th></tr></thead>
<tbody>
<tr><td>Void rate</td><td>< 2.0%</td><td>1.4%</td><td style="color:var(--fg)">● ON TARGET</td></tr>
<tr><td>Avg transaction time</td><td>< 4.5 min</td><td>3.8 min</td><td style="color:var(--fg)">● ON TARGET</td></tr>
<tr><td>Cash variance</td><td>< $0.50/shift</td><td>$0.18</td><td style="color:var(--fg)">● ON TARGET</td></tr>
<tr><td>Return rate by reason</td><td>< 3.0%</td><td>2.7%</td><td style="color:var(--fg)">● ON TARGET</td></tr>
<tr><td>Card reader uptime</td><td>> 99.5%</td><td>99.8%</td><td style="color:var(--fg)">● ON TARGET</td></tr>
</tbody>
</table>
</div>
</div>
<div class="footer">
<p>carolyn-dail.4ort.net &nbsp;·&nbsp; <a href="index.html">Back to Triage Desk</a></p>
</div>
</div>
</body>
</html>