carolyn-dail-retail-ops/pos-protocol.html

121 lines
6.0 KiB
HTML
Raw Permalink Normal View History

2026-07-18 22:37:48 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>The POS Protocol — Carolyn Dail</title>
<link rel="stylesheet" href="style.css"/>
<style>
@import url(style.css);
.hero{height:100vh;display:grid;grid-template-columns:1fr auto;align-items:center;padding:0 8vw}
.content-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(520px,1fr));gap:3rem;padding:6rem 8vw}
.protocol-card{background:linear-gradient(180deg,rgba(26,26,47,.4),rgba(10,10,15,.9));border:1px solid #bf9b30;padding:3rem;position:relative}
.protocol-card::before{content:'';position:absolute;top:0;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,#ffd700,transparent)}
.protocol-step{font-size:2rem;font-weight:700;margin-bottom:1.5rem;color:#ffd700}
.protocol-detail{font-size:1.1rem;line-height:1.6;opacity:.9}
.protocol-data{background:rgba(10,10,15,.6);border-left:3px solid #ffd700;padding:1.5rem;margin-top:2rem;font-family:'JetBrains Mono',monospace;font-size:.9rem}
.media-frame{aspect-ratio:16/9;background:radial-gradient(circle at center,#1a1a2f,#0a0a0f);display:flex;align-items:center;justify-content:center;border:1px solid #bf9b30;margin:2rem 0}
.media-frame img{width:100%;height:100%;object-fit:cover;filter:brightness(0.85) contrast(1.1)}
.tempo-mark{display:inline-block;padding:0.5rem 1.5rem;border:1px solid #ffd700;border-radius:3rem;font-size:.75rem;margin:1rem 0;color:#ffd700}
.citation-link{color:#bf9b30;font-size:.75rem;text-decoration:underline}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<nav>
<a class="nav-star" href="index.html"></a>
<a class="nav-star" href="scar-festival.html"></a>
<a class="nav-star" href="pos-protocol.html" style="text-shadow:0 0 24px #ffd700"></a>
<a class="nav-star" href="garden.html"></a>
</nav>
<section class="hero">
<div>
<h1>THE POS PROTOCOL</h1>
<p class="quote">Every transaction is a duet. Miss a beat, and the whole floor knows.</p>
<p>Operations Manual • Shift Log • Receipt Archaeology</p>
<p><span class="tempo-mark">TEMPO: 112 BPM</span></p>
</div>
<div class="gold-thread"></div>
</section>
<section class="content-grid">
<article class="protocol-card">
<div class="protocol-step">01 // THE OPENING SCAN</div>
<div class="protocol-detail">
The register breathes. Thermal head warms to 165°C. Paper spool rotates counter-clockwise. We do not touch the till until the green LED pulses twice.
<br/><br/>
In Herndon, the morning rush arrives at 06:47 EST. By 07:12, we've processed 47 transactions. The math is simple: 47 ÷ 25 minutes = 1.88 tx/min. Anything below 1.7 means we're losing customers. Anything above 2.2 means we're rushing the receipt fold.
</div>
<div class="protocol-data">
// OPENING CHECKLIST
thermal_head_temp: 165°C ± 2°C
paper_spool_rotation: 0.3 rev/sec
tx_target_min: 1.7
green_led_pulse: 2
// SOURCE: queuebuster.co retail ops manual
</div>
</article>
<article class="protocol-card">
<div class="protocol-step">02 // THE RECEIPT FOLD</div>
<div class="protocol-detail">
Dolly taught us: you don't apologize for the tear, you reinforce it. When the thermal print jams mid-line, you don't rip the paper. You slide a fresh roll beneath the curl, align the sprocket teeth, and let the machine finish the sentence.
<br/><br/>
The perfect fold: accordion, three creases, width 86mm. It must fit in the customer's palm without bending. We practice this during slow shifts—127 folds per hour, blindfolded.
</div>
<div class="media-frame">
<img src="https://images.pexels.com/photos/9755391/pexels-photo-9755391.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Point of sale terminal with thermal paper roll emerging from the print head"/>
</div>
<div class="protocol-data">
// FOLD GEOMETRY
crease_width: 28.67 mm
final_envelope_width: 86 mm
target_folds_per_hour: 127
// DATA TWIN: pos-protocol.json
</div>
</article>
<article class="protocol-card">
<div class="protocol-step">03 // THE ERROR CHORD</div>
<div class="protocol-detail">
When the scanner rejects an ISBN, the floor freezes. We do not panic. We recite the fallback sequence: manual entry, checksum verify, override code. Each step is a note in Beyoncé's bridge—build the tension, then release it.
<br/><br/>
Error rate target: 0.4% of total scans. Last quarter we hit 0.31%. The difference wasn't better hardware. It was the pause before the override.
</div>
<div class="protocol-data">
// ERROR HANDLING
reject_rate_target: 0.004
fallback_sequence: ["manual_entry","checksum_verify","override_code"]
pause_before_override: 1.3 sec
// SOURCE: Q386147 point-of-sale definition
</div>
</article>
<article class="protocol-card">
<div class="protocol-step">04 // THE CLOSEOUT SONG</div>
<div class="protocol-detail">
At 23:00, the till counts itself. We stand beside it and listen. The drum of the coin sorter. The whisper of the bill validator. Any deviation from the expected hash means we re-count the drawer. Not because we doubt the machine—but because the machine trusts us to hear the lie.
<br/><br/>
Total revenue variance allowed: $0.47. Anything larger, and we reopen the audit trail. Last month, we caught a phantom $1.23 credit. It became a team tradition: the Ghost Dollar ceremony.
</div>
<div class="protocol-data">
// CLOSEOUT SPECS
coin_sorter_rpm: 1400
bill_validator_latency: 42 ms
revenue_variance_max: $0.47
phantom_credit_recovery: $1.23 (Aug 2025)
</div>
</article>
</section>
<footer style="padding:4rem 8vw;text-align:center">
<p><a href="pos-protocol.json">DOWNLOAD THE DATA TWIN</a> | <a href="scar-festival.html">RETURN TO THE SCAR FESTIVAL</a> | <a href="index.html">HOME</a></p>
<p class="citation-link">Built on Wikidata Q386147 (point-of-sale) & Q330190 (receipt)</p>
</footer>
<script>
document.addEventListener('DOMContentLoaded',()=>{
const cards=document.querySelectorAll('.protocol-card');cards.forEach((c,i)=>{
c.style.opacity='0';c.style.transform='translateY(48px)';setTimeout(()=>{
c.style.transition='opacity 1.2s ease-out, transform 1.2s ease-out';
c.style.opacity='1';c.style.transform='translateY(0)'
},i*400)
})
})
</script>
</body>
</html>