1. The card in the bay
step 1 of 4Laminated card on the dash stand or handed through the window. Printed QR, NFC sticker on the back, short URL as the last resort. Same link on all three.
today's oil change
Bay code 2
Which phones does each path work on?
- QR: any phone with a camera app that reads QR codes (iPhone since 2017, Android since ~2018, older via Google Lens). No app. This is the universal path.
- NFC: iPhone XS/XR (2018) and newer read tags with the screen on, no app. iPhone 7 to X need the NFC Reader tile in Control Center. Android reads tags when NFC is switched on in settings, which many people never touch. Treat NFC as a faster lane for some iPhones, not the plan.
- Typed URL + bay code: anyone. Also what the tech says out loud if the card is missing.
Store 1977 · Salem · Bay 2
step 2 of 4You're in bay 2. Enter your email and we'll send a 4-digit code that unlocks $5 off this visit.
Validation log (what the system checked)
- Start typing to see each layer run.
Check your inbox
step 3 of 4We sent a 4-digit code to . Enter it here, or tap the link in the email.
Code expires in 15:00
Show this screen to your technician.
We couldn't use that address
Nothing was saved. The discount only unlocks with an inbox you can open right now.
Bay queue · today
v1 needs none of this screen: the tech sees the customer's green screen and keys NEW5 (or BACK1) into the POS. This view is v1.5, for when you want the verified email in big type so the tech can enter it into the POS without reading it off a customer's phone.
Today · Store 1977
Counts update live as you run the customer flow. Seeded with a sample morning so the numbers aren't zero.
Funnel
Cars = POS tickets (from the nightly report). Everything else comes from the capture service.
Bad data stopped at the door
Each of these would have landed in the franchisor's CRM as a record that looks fine and bounces on first send.
Nightly reconcile · yesterday
The POS report is scraped nightly (same browser-bot pattern as the ad-platform pulls). Each POS email is matched against the verified capture for the same bay and time window.
| Ticket | POS has | Verified | Result |
|---|---|---|---|
| #4411 | kwilliams@gmai.com | kwilliams@gmail.com | tech typo |
| #4417 | m.brown@comcast.net | mbrown@comcast.net | tech typo |
| #4420 | nobody@gmail.com | no capture | placeholder |
| #4402 to #4425 | 11 others | match | clean |
14 tickets with an email, 11 clean, 2 tech typos, 1 placeholder. Fix list goes to the store manager each morning.
What a one-week pilot proves
- Capture rate: verified emails as a share of cars. Baseline today is unknown; the franchisor says half of what's captured is bad.
- Where bad data comes from: typos fixed vs fakes blocked vs undeliverable vs abandoned at the code step.
- Tech time: seconds per car spent on email. Target is zero.
- Entry path mix: QR vs NFC vs typed, so you know whether the NFC sticker earns its place.
- Discount cost: $5 per verified first-timer. At 20 cars a day that is about $100 a day if everyone takes it.
What six months proves: the franchisor's 3.5x lifetime revenue claim. Compare return rate of the verified cohort against the pre-pilot cohort, same store, same season.
How it fits together
Solid teal boxes are the franchisee's own. Dashed boxes are systems he doesn't control.
- 1Bay cardPrinted QR + NFC sticker + short URL. Encodes store and bay. Cost: about $1 per card, laminated.
- 2Customer's phone, plain web pageNo app. Customer types their own email. The tech never touches it. This alone removes the fat-finger and "didn't hear it" half of the bad data.
- 3Capture service: 7 validation layersSyntax, typo repair, placeholder patterns, disposable domains, role inboxes, deliverability API, then proof of receipt. Details below.
- 4Email provider sends the codeTransactional send (Postmark, Resend, SES). Subject line carries the code so it shows in the notification without opening.
- 5Customer enters the code (or taps the link)Proof they can open that inbox today. A deliverable address that isn't theirs fails here.
- 6Green screen with a POS coupon codeNEW5 for first-timers, BACK1 for returning. The customer shows it, the tech keys it. Existing POS, existing coupon report, no new tech-side software.
- 7POS (Auto Data / PosiLube) records the coupon and the emailTech still types the email into the POS today. The nightly reconcile catches typos against the verified copy.
- 8Nightly browser bot scrapes the POS reportsTickets, coupons, car counts, by store and day. Runs on the office Mac at midnight, same pattern as the ad-platform pulls.
- 9Franchisee-owned databaseCapture events + POS scrape + launch media plans + external (traffic, weather, promo calendar). One place an agent can be pointed at. Survives the POS and CRM migrations.
- 10Franchisor CRM (Driven)Downstream consumer. Receives verified emails only, through the POS as today. Nothing unverified ever reaches it.
Validation layers
| # | Check | Catches | Where |
|---|---|---|---|
| 0 | Customer types it | Tech typos, mis-hearing, "nobody@gmail.com" placeholders | Design |
| 1 | Syntax | Missing @, spaces, bad TLD, double dots | Phone, instant |
| 2 | Typo repair | gmial.com, gmail.con, hotmal.com, yaho.com (suggest, one tap) | Phone, instant |
| 3 | Placeholder patterns | nobody@, none@, test@, asdf@, declined@, a@a.com | Phone, instant |
| 4 | Disposable domains | mailinator, yopmail, guerrillamail, temp-mail | Phone, instant |
| 5 | Role inboxes | info@, sales@, office@ (warn, allow) | Phone, instant |
| 6 | Deliverability API | Mailbox doesn't exist, dead domain, catch-all risk. Kickbox, ZeroBounce or similar, about $0.004 to $0.01 per check | Server, under 1s |
| 7 | Proof of receipt | Real address the customer can't open (president@whitehouse.gov). The one layer an API can't do. | Email + code |
Layer 6 is simulated in this prototype. Swap in a real API key for the pilot.
QR vs NFC vs typed
| QR | NFC | Typed | |
|---|---|---|---|
| Works on | Any phone with a camera, no app | iPhone XS+ auto; iPhone 7 to X via Control Center; Android if NFC is on | Everyone |
| Customer steps | Open camera, point, tap banner | Hold phone to card, tap banner | Type URL + bay code |
| Failure modes | Glare, dirty card, bad lighting | NFC off, phone case, wrong spot on phone | Typos |
| Cost per card | $0 (printed) | $0.20 to $0.50 sticker | $0 |
| Role in v1 | Primary | Bonus lane, measure uptake | Fallback, tech can say it aloud |
What gets stored, and where
Capture service (franchisee)
- Email (normalized), first name, optional mobile + SMS consent timestamp and the exact consent text shown
- Store, bay, entry path (qr / nfc / url), timestamps for started, code sent, verified, redeemed
- Validation log: which layers ran, what was fixed or blocked
- Returning flag (hash match against prior verified captures)
Not collected
- License plate, VIN, photos. Oregon is strict on plate capture and the pilot doesn't need it. The POS already has vehicle data.
To the franchisor
- Verified email only, entered into the POS as today. Open question whether the franchisee may keep his own copy under the franchise agreement. Minimum defensible record: a hash + consent + verification timestamps.
One-store pilot, one week
Day 0 setup
- Create two coupon codes in the POS: NEW5 ($5, first-timer) and BACK1 ($1, returning)
- Print and laminate 4 bay cards (2 bays, 1 spare each). Add NFC stickers to 2 of them to measure uptake
- Deploy the capture page on a short domain the franchisee owns. Sending domain with SPF/DKIM so codes land in the inbox, not spam
- Email verification API in sandbox, then live (free tiers cover a pilot week)
- Two-line script for techs: "Scan the card for $5 off, then show me the green screen"
Days 1 to 7
- Run every car. Nightly scrape of the POS coupon and ticket reports
- Morning fix list for the manager: tech typos and placeholders from the reconcile
Decide on
- Capture rate above 60% of cars, abandonment at the code step under 15%, tech time per car near zero, zero unverified records entered
Build estimate
One page app, a small database, two API integrations (email send, email verify). A few hours to a working v1, a couple of days to something a store can run unattended. Running cost in the low tens of dollars a month plus about a cent per verification. [moderate confidence on cost]
Open questions before the pilot
- Franchise agreement: does the franchisee keep a copy of the verified email, or only the verification record? A question for his franchise counsel, not a design decision.
- Brand use: the card and the page carry the store name. Whether they can carry the franchisor's logo needs a yes from them.
- Getting emails into the POS: the tech types it today. A keystroke bot could enter verified emails nightly, but automating entry into the franchisor's system needs their blessing.
- SMS: marketing texts need express written consent. Email-only for week one keeps the pilot simple.
- POS migration: corporate stores first, franchise stores after. The capture service sits outside the POS on purpose so the migration doesn't touch it.