The noon dip is normal -- owners are on the floor serving lunch. 10am and 3pm connect best for this list.
| Queue | Waiting | Permission | Best window | |
|---|---|---|---|---|
| TX DistributorsBeverage & food wholesale | 1,204 | Ask before texting | 10a-12p | |
| CA Retail GroceryIndependent stores | 860 | Ask before texting | 2p-5p | |
| Existing customersPrior purchase on file | 312 | Safe to text | any | |
| Your callbacksPromised times | 7 | mixed | scheduled |
| Operator | Dials | Opt-ins |
|---|---|---|
| Maria Ortizyou | 41 | 2 |
| Devon Reyes | 38 | 1 |
| Priya Nandi | 44 | 1 |
| Sam Whitcombeon break | 29 | 0 |
Nothing else is on this screen on purpose. Forty-eight times a shift this is the whole interaction -- one number, one button. The script appears when there is somebody to read it to.
"How did you get my number?"
"We're happy with our supplier."
"Just send me an email."
"I'm slammed right now."
"Is this a sales call?"
| When | Business | Ask for | Why | |
|---|---|---|---|---|
| Today 2:15p | Ridgeline Foods+1 512 908 4417 | Ana Delgado | Wanted pricing on the 24-case | |
| Today 4:00p | Kettleman Grocery+1 512 771 2280 | Owner (no name) | Said call after the lunch rush | |
| Thu 9:30a | Marisol Mercado+1 210 664 1902 | Hector | Partner decides, back Thursday | |
| Thu 11:00a | Buck's Beverage Depot+1 469 330 7745 | Buck Ellery | Asked for a callback with numbers |
| Business | Status | Permission | Attempts | Last touch | |
|---|---|---|---|---|---|
| Vega Wholesale DistributorsAustin, TX · +1 512 367 8722 | Warm | Safe to text | 2 | 1:12pm | |
| Ridgeline FoodsAustin, TX · +1 512 908 4417 | Callback | Ask first | 1 | 12:58pm | |
| Northgate ProvisionsFort Worth, TX · +1 817 442 9031 | Working | Ask first | 4 | 1:04pm | |
| Sunbelt Beverage CoDallas, TX · +1 214 555 0118 | Do not call | Blocked | 1 | 12:47pm | |
| Ellis Market SupplyWaco, TX · +1 254 219 6630 | Nurture | Ask first | 2 | 12:39pm | |
| Cassidy Wine & SpiritsHouston, TX · +1 713 884 2201 | Sent to sales | Safe to text | 3 | Yesterday |
Vega Wholesale Distributors
Beverage Distributor · Austin, TX · 4.2 stars (61 reviews)
- Phone
- +1 512 367 8722
- Ask for
- Danny Ruiz -- owner
- Website
- vegawholesale.com
- Source
- Google Maps · imported 2026-09-01
- Assigned
- Maria Ortiz
- CRM
- queued · CRM Connector
- Granted
- Yes
- Who agreed
- Danny Ruiz
- Method
- Verbal, on call
- Operator
- Maria Ortiz
- When
- 2026-09-09 13:12:04
- Script
- v1-2026-09-09
- Recording
- none -- dialer not connected
This record is what gets produced if a carrier or a complainant asks who agreed to be texted. It cannot be edited or deleted, only withdrawn by a new record.
No messages yet. This number became textable 13:12 today and the first campaign has not run.
Blocks calls and texts everywhere, immediately, and cannot be undone by an operator.
Volume dipped in September and permission capture rose -- 132 against 118 on fewer worked leads. That is the script landing, not the floor slowing down, and it is the only pair of numbers on this page worth reading together.
| Campaign | Leads | Worked | Permission | Rate | Days to first touch |
|---|---|---|---|---|---|
| TX Distributorsproject GL-2201 | 1,204 | 612 | 198 | 32.4% | 4.1 |
| CA Retail Groceryproject GL-2208 | 860 | 318 | 72 | 22.6% | 9.8 |
| Existing customersproject GL-1988 | 312 | 113 | 43 | 38.1% | 2.2 |
| Channel | Attempts | Reached | Outcomes | Cost each |
|---|---|---|---|---|
| Voice · human | 3,180 | 694 | 241 | $4.10 |
| Email · COURIER | 4,182 | 1,715 | 78 | $0.31 |
| Voice · VOX inbound | -- | 147 | 31 | $0.44 |
| Text · SCRIBE | 0 | 0 | 0 | blocked |
Email is thirteen times cheaper per outcome and voice converts five times better per contact. They are not competing -- email opens doors at scale and a human walks through them.
TRIAGE already orders the queue by this. Worth showing anyway -- a supervisor who can see it schedules breaks at noon instead of at ten.
| Report | Answers | Runs | |
|---|---|---|---|
| Conversion funnel | Where in the list leads stop moving | on demand | |
| Campaign efficiency | Conversion, time to first touch, cost per outcome | weekly | |
| Going cold | Everything untouched past 30 days, oldest first | daily | |
| Consent register | Every permission record, who obtained it, which script | on demand | |
| Operator scorecard | Outcomes, QA average, points, bonus accrued | monthly | |
| Channel economics | Cost per contact and per outcome, by channel | weekly | |
| Lead source quality | Which imports produce outcomes and which produce nothing | monthly | |
| Compliance register | DNC requests, opt-outs, holds, and who actioned each | daily | |
| Bonus ledger | Points, earnings, clawbacks, per person per period | monthly | |
| Client summary | What the client sees, in plain language | weekly |
Every report is a named query with a saved filter set and three export formats. A report someone can name, save, schedule and hand over is worth ten charts nobody can reproduce.
Your floor worked 417 leads this week and got 23 of them qualified and handed to your sales team -- up from 16 last week, and the improvement is entirely in the 10am to noon window, which is now where we put your best people.
Eleven more owners gave permission to be texted, bringing you to 313. None of them have been texted yet, because the carrier campaign is still in review -- a queue outside anyone's control and the one thing standing between you and the text channel.
Two things did not go well. Twenty-two numbers on the original list were unreachable line types and were dropped. And four owners asked to be taken off entirely -- we removed them immediately and they will not be contacted again on any channel.
| Project | Worked | Warm |
|---|---|---|
| TX Distributors | 248 | 14 |
| CA Retail Grocery | 131 | 6 |
| Existing customers | 38 | 3 |
The client sees counts and their own warm leads. They do not see operator names, call recordings, or anything about how the floor is staffed.
Channel operators
These three do the outreach. Their autonomy is set by law, not by preference.
Section specialists
One resident agent per screen, each with its own skill prompt. They are what AXIOM answers with on that screen.
| Agent | Lives on | Skill | Autonomy | |
|---|---|---|---|---|
| PACEthroughput coach | Dashboard | Target math, best-window analysis, who to call next and why | advise | |
| WHISPERlive call assist | Active call | Real-time objection handling and script-adherence nudge | advise | |
| DOSSIERlead researcher | Lead profile | Summarises history, enriches, drafts the opening line | advise | |
| TRIAGEqueue ranker | Queue | Orders the queue by likelihood to connect and convert, by hour | acts | |
| FOREMANfloor supervisor | Floor monitor | Coaching moments, staffing gaps, adherence drops | advise | |
| BRIDGEintegration | Connectors | Infers field mappings, explains sync failures in plain language | advise | |
| WARDENlist hygiene | Import | Dedupes, normalises, scrubs DNC, demotes unevidenced consent | acts | |
| GUIDEsupport | Support | Answers from the manual, escalates when it cannot | advise | |
| COACHtraining | Training | Roleplays the owner, scores script adherence, runs drills | advise | |
| LEDGERclient reporting | Client portal | Writes the weekly client summary from real numbers | advise |
Email OPEN NOW
CAN-SPAM permits cold commercial email with no prior consent. What it requires: accurate From and subject, a real physical address, a working opt-out, and honouring it promptly. No per-message registration and no carrier queue.
Voice HUMAN ONLY
A human may cold-call a business today, inside calling hours, against a scrubbed DNC list. An AI voice may not -- the FCC treats AI-generated voices as artificial voices under the TCPA, so outbound telemarketing with one requires prior express written consent. VOX answers inbound and callbacks instead.
Text BLOCKED
Two locks. The carrier campaign is not registered, so nothing sends at all. And each individual number needs its own documented permission before it may be messaged -- that is what the verbal opt-in on a call is for. Opt-ins captured now are banked against the day the campaign clears.
Ray -- we supply about forty independents in DFW and our case price on the fast movers is running under what most are paying. If it's worth ninety seconds I'll send the current sheet, no pitch attached.
Here it is -- the top twenty by volume. No obligation, and I'll leave you alone unless you ask.
Every one carries a real address and a working unsubscribe. The reply routes to a human and the lead moves to warm automatically.
Ray -- we supply about forty independents in DFW and our case price on the fast movers is running under what most are paying. If it's worth ninety seconds I'll send the current sheet, no pitch attached.
Any single auto-fail fails the whole item regardless of the points. Those three are not quality criteria, they are the floor -- an email that scores 95 and messaged someone who opted out is a failed email.
Random plus risk-weighted. Pure random misses what matters; pure targeting means an operator can predict what gets looked at.
| Worker | Sampled | Avg | Trend |
|---|---|---|---|
| COURIERAI · email | 62 | 93 | steady |
| SCRIBEAI · text drafts | 31 | 86 | down 4 |
| VOXAI · inbound | 19 | 95 | steady |
| Maria Ortizhuman | 14 | 94 | up 2 |
| Priya Nandihuman | 16 | 82 | down 7 |
The people who grade the work do not get to change the work, and nobody grades themselves. A submitted score is append-only -- corrected by a second score, never overwritten.
| Item | Cole | Nunez | Ade | Frank | Spread |
|---|---|---|---|---|---|
| Call · consent capture | 95 | 90 | 95 | 90 | 5 |
| Email · cold open | 88 | 85 | 90 | 85 | 5 |
| Call · DNC request | 100 | 100 | 100 | 100 | 0 |
| Text draft · SCRIBE | 75 | 95 | 80 | 75 | 20 |
| Call · objection handled | 85 | 80 | 85 | 90 | 10 |
Marco is the outlier, and consistently high rather than random -- he scores generously. That is coachable and it is also a reason to look at whose work he happened to be assigned.
Amber is the median analyst. Red is Marco's distribution sitting to the right of everyone else's.
| Item | Who | Score | Their case | State | |
|---|---|---|---|---|---|
| Call · Sep 5Ellis Market Supply | Priya Nandi | 68 | "I did read the permission ask -- the recording cuts off before the end of the call." | re-scoring | |
| Email · Sep 4Kettleman Grocery | COURIER AI | 72 | Raised by Devon Reyes: "the subject line was flagged misleading but it describes the email exactly." | re-scoring | |
| Call · Aug 29Palmer Street Market | Sam Whitcombe | 84 | "Marked down for not offering the sheet -- the owner had already hung up." | upheld operator |
A dispute is settled by a second analyst scoring blind, never by the first analyst reconsidering. Both scores stay in the record -- the correction is visible, and a pattern of overturned scores is itself a signal about the analyst.
QA does not report to the floor supervisor whose numbers its scores affect, and it does not sit under the admin who configures the scripts it grades against. It reports alongside Compliance. That reporting line is the difference between a quality department and a department that produces quality-shaped numbers.
- Window
- 8:00am to 8:00pm
- Timezone
- Each lead's own local time
- Weekends
- Saturday only, 10:00am to 5:00pm
- Held now
- 0 leads outside window
Enforced in the queue, not by you. A lead outside its window is never handed out, so there is nothing to remember and nothing to get wrong at 8:01pm.
- DNC Shield · federal
- not connected
- DNC Shield · state
- not connected
- Internal
- 2,914 · updated continuously
- Text opt-outs
- STOP replies · automatic
Numbers change hands. Someone who agreed to be texted in March may not own that number in September, and the person who owns it now never agreed to anything. Checking the FCC's database before messaging is what earns the safe harbour if you get it wrong anyway.
Recording turns an operator's word into evidence -- but roughly a dozen states require every party to consent, and California is one of them. An unannounced recording there is not proof, it is a second problem.
| Script | Version | In force |
|---|---|---|
| Text permissionread before hanging up | v1-2026-09-09 | live |
| Qualification3 questions | v2-2026-09-04 | live |
| Objection sheet5 entries | v1-2026-09-06 | live |
| Text permissionsuperseded | v0-2026-08-28 | retired |
Every consent record stores which version was read aloud. Changing the wording never rewrites what somebody actually agreed to.
- Carrier brand
- not registered
- Campaign
- not registered
- Phone number
- none purchased
- STOP handling
- tested end to end
Calls work today. Texting does not send until the carrier approves the campaign -- a review queue nothing here can shorten. Opt-ins captured now are waiting for it.
- Component
- OMNILINK - CRM Connector · upstream
- State
- queued, not sending
- Waiting
- 41 payloads
| Worker | State | On call with | Talk | Dials | Opt-ins | Script read | |
|---|---|---|---|---|---|---|---|
MO
Maria OrtizOutbound · TX Distributors |
On call | Northgate Provisions+1 817 442 9031 | 02:14 | 41 | 2 | 100% | |
DR
Devon ReyesOutbound · CA Retail |
Wrap-up | -- | 00:41 | 38 | 1 | 92% | |
PN
Priya NandiOutbound · TX Distributors |
Dialing | -- | -- | 44 | 1 | 78% | |
SW
Sam WhitcombeOn break since 12:52 |
Break | -- | -- | 29 | 0 | 96% | |
CO
COURIERAI · email · approve queue |
Working | 318 sent today | -- | -- | -- | n/a | |
VX
VOXAI · voice · inbound only |
Listening | 19 answered today | -- | -- | -- | n/a | |
SC
SCRIBEAI · text · propose only |
Blocked | 214 drafted, 0 sent | -- | -- | -- | n/a |
Humans and AI agents on one wallboard, because they are one team working one list. An agent gets a pause button in the same column a person gets a whisper button.
| Person | Role | Scope | Last seen | Sign-in | |
|---|---|---|---|---|---|
MO
Maria Ortizm.ortiz |
Operator | TX Distributors | now | 2FA on | |
DR
Devon Reyesd.reyes |
Operator | CA Retail | now | 2FA on | |
PN
Priya Nandip.nandi |
Operator | TX Distributors | now | no 2FA | |
SW
Sam Whitcombes.whitcombe |
Operator | CA Retail | 12:52pm | 2FA on | |
RC
Renata Coler.cole · QA lead |
QA | scores all · works none | Yesterday | 2FA on | |
MN
Marco Nunezm.nunez · QA analyst |
QA | scores all · works none | 9:41am | 2FA on | |
YA
Yemi Adey.ade · QA analyst |
QA | scores all · works none | 10:22am | 2FA on | |
DF
Dale Frankd.frank · QA, part time |
QA | scores all · works none | Sep 6 | 2FA on | |
JT
Jordan Tatej.tate |
Supervisor | all | 11:04am | 2FA on | |
MM
Martin M.steward |
Admin | all | now | 2FA on | |
AK
Alex Kima.kim · invited, never signed in |
Operator | -- | never | pending | |
TB
Tom Bairdt.baird · left the company |
Operator | -- | Aug 22 | disabled |
Accounts are disabled, never deleted. Every call and every consent record names the operator who made it, and that attribution has to survive the person leaving -- otherwise a consent record becomes unattributable the day somebody quits.
| Op | QA | Sup | Admin | |
|---|---|---|---|---|
| Work a queue, capture consent | yes | yes | yes | |
| Look up one lead | yes | yes | yes | yes |
| See the whole list | yes | yes | yes | |
| Listen / whisper on a live call | yes | yes | ||
| Score work, including a supervisor's | yes | |||
| Score AI agent output | yes | |||
| Escalate to Compliance | yes | yes | yes | yes |
| Export consent records | yes | yes | ||
| Change scripts or calling hours | yes | |||
| Change an AI agent prompt | yes | |||
| Import a lead list | yes | |||
| Add or disable a person | yes |
QA is the only role that can score, and the only one that cannot work. It is not a supervisor with less access -- it is a department with different access, which is why neither column is a subset of the other.
Last import: Sep 1 · 1,204 rows accepted, 22 rejected as unreachable line types.
OMNILINK - CRM CONNECTOR
Project in, campaign here, outcomes back to the project.
bound to: GrowLink AI CRM
- Base URL
- not set
- Auth
- not set
- Pull
- Projects to campaigns, on a schedule and on demand
- Push
- Calls, texts, emails, outcomes, consent records
- Waiting to push
- 41 payloads
- Last attempt
- never
| GrowLink project | Campaign here | Leads | Channels | Sync | |
|---|---|---|---|---|---|
| SUPER SALES · TX Distributorsproject GL-2201 | TX Distributors3 queues | 1,204 | voice email | pending | |
| SUPER SALES · CA Retail Groceryproject GL-2208 | CA Retail Grocery2 queues | 860 | voice email | pending | |
| SUPER SALES · Existing customersproject GL-1988 | Existing customers1 queue | 312 | voice email sms | pending |
A project arriving from GrowLink is audited on the way in exactly like a CSV -- normalised, line-type checked, deduplicated, DNC scrubbed, split by permission. GrowLink saying a contact opted in does not skip the audit; it is a claim that has to name its evidence.
Every field is marked unknown rather than guessed. A mapping that looks configured but points at the wrong field is worse than no mapping -- it fails silently and you find out from a customer. do_not_call is bidirectional on purpose: a DNC anywhere must be a DNC everywhere, immediately.
| Queued | Kind | About |
|---|---|---|
| 1:12pm | consent | Vega Wholesale · Danny Ruiz said yes |
| 1:12pm | activity | Vega Wholesale · connected 4m 12s |
| 1:04pm | activity | Northgate Provisions · no answer |
| 12:47pm | dnc | Sunbelt Beverage · owner requested |
| Repository | Origin | Licence | Stack | Verdict |
|---|---|---|---|---|
| Sales-Intelligence-Hubbranch sales & payment tracking | fork of sivadst | all rights reserved | Streamlit · MySQL | pattern taken |
| RetailIQretail sales & analytics dashboard | fork of Jnaneswari19 | MIT | Streamlit · MySQL | pattern taken |
Taken -- live in the build
Left behind
OMNILINK - VOICE ASSISTANT
AXIOM speaks, and every role talks back to it.
engine: ElevenLabs · recognition: browser
- Proxy endpoint
- not set
- Voice id
- not set
- Model
- turbo · lowest latency wins here
- Speaking now
- Browser speech synthesis · proves the interaction, not the voice
- Recognition
- Browser, push-to-talk only
- Cached lines
- 18 · already recorded for the console reel
Operator
QA
Supervisor
Admin
| Component | Does | Engine underneath | State |
|---|---|---|---|
| OMNILINK - Operator Console | The floor. Queue, dial loop, consent capture. | ours | live |
| OMNILINK - AXIOM Gate | Checks every AI action before it leaves the building. | ours | live |
| OMNILINK - AI Team | SCRIBE, COURIER, VOX, SENTRY and nine specialists. | ours | live |
| OMNILINK - Consent Ledger | Attributed, script-versioned, append-only permission records. | ours | live |
| OMNILINK - Business Intelligence | Report catalogue, trends, comparisons, exports. | ours | live |
| OMNILINK - Quality Assurance | Blind scoring, calibration, disputes. | ours | live |
| OMNILINK - Incentive Engine | Points, contests, clawbacks, payout ledger. | ours | live |
| OMNILINK - Academy | Certification that gates queue access. | ours | live |
| OMNILINK - Support Desk | Manual, tickets, live agent, AXIOM. | ours | live |
| OMNILINK - Workspace Manager | Client isolation, seats, usage metering. | ours | no tenant column yet |
| OMNILINK - Records & Retention | Schedules, subject requests, litigation hold. | ours | written, not running |
| OMNILINK - Mobile | Installable web app: clock, shift, callbacks, safety. | ours | designed |
| OMNILINK - Client Portal | What the client sees of their own campaign. | ours | live |
| OMNILINK - CRM Connector | Project in, campaign here, outcomes back. | GrowLink AI CRM | not connected |
| OMNILINK - HR Connector | People, pay, time off, documents. | Odoo | not connected |
| OMNILINK - Messaging Gateway | Sends the campaign, receives STOP. | Twilio | awaiting carrier |
| OMNILINK - Voice Gateway | Browser dialer, call recording. | Twilio | not connected |
| OMNILINK - Dialer | Manual, power and predictive modes, voicemail drop. | Twilio Voice | manual only |
| OMNILINK - DNC Shield | Scrub on import, re-scrub monthly, every channel. | FTC + state registries | internal list only |
| OMNILINK - Voice Assistant | AXIOM speaks; every role talks back. | ElevenLabs | browser fallback |
| OMNILINK - Number Integrity | Catches numbers that changed hands since consent. | FCC Reassigned Number Database | not connected |
The naming rule is one line: OMNILINK - then what the thing does, never who makes it. A component name describes a capability the client buys from us and keeps buying if we change what is behind it -- which is the whole point of naming it that way. Swapping Odoo for something else should be a maintenance note, not a rename in every contract.
| Service | What it does here | State | |
|---|---|---|---|
| OMNILINK - MESSAGING GATEWAYengine: Twilio | Sends the campaign, receives STOP | awaiting carrier approval | |
| OMNILINK - VOICE GATEWAYengine: Twilio | Browser dialer, call recording | not connected | |
| OMNILINK - DNC SHIELDsource: FTC registry + state lists | Scrub on import, re-scrub monthly | not connected | |
| OMNILINK - NUMBER INTEGRITYsource: FCC Reassigned Number Database | Catches numbers that changed hands since consent | not connected | |
| OMNILINK - HR CONNECTORengine: Odoo | People, pay, time off, documents | not connected |
- Abandonment
- not measured -- manual mode
- Cap
- 3% per campaign per day
- Ring time
- 15 seconds / 4 rings minimum
One keystroke drops a pre-recorded message and moves to the next lead without waiting out the greeting. Against roughly forty-eight no-answers a shift this is the single largest time saving available anywhere in the console.
| Message | Length | Used |
|---|---|---|
| First attempt · distributorsnames the business, no pitch | 18s | -- |
| Third attempt · last trygives a reason to call back | 14s | -- |
| Callback missedthey asked, we called, they were out | 11s | -- |
Every drop identifies the caller and the business by name and gives a number to call back. A voicemail that does not say who left it is the fastest route to a complaint.
Recording turns a consent record from an attestation into evidence. It also creates its own exposure: some states require every party to consent, so an unannounced recording there is a liability rather than proof.
- Numbers
- 0 purchased
- Caller ID name
- not registered
- Branded calling
- not set up
- Attestation
- not verified
Local presence lifts answer rates and raises your spam-flag risk at the same time -- carriers watch for one number pattern dialing many area codes. If you use it, use few numbers and rotate them slowly.
OMNILINK - HR CONNECTOR
People, pay, time off, documents
engine: Odoo · hr.employee, hr.attendance, hr.leave
The first five map onto Odoo's own HR models cleanly, so they are not guesses. The last two have no natural home -- certifications gate queue access here, and an OSHA incident is a legal record with its own retention. Both probably stay in A-TEAM and get referenced from Odoo.
Meal and rest rules follow the strictest state anyone on the roster works in, not the state the company is registered in.
A telemarketing or call-centre operation may fall under OSHA's partial exemption from routine injury-log recordkeeping -- it depends on your NAICS code and whether you had more than ten employees at any point in the last calendar year. That is a determination to make on paper, once, with the codes in front of you. Not a guess.
| Obligation | Applies | State |
|---|---|---|
| General duty -- a workplace free of recognised hazards | always | policy written |
| "It's the Law" poster displayed | always | posted + in the app |
| Report a fatality within 8h, hospitalisation within 24h | always | no procedure |
| Emergency action plan | always | not written |
| No retaliation for reporting | always | policy written |
| OSHA 300 / 300A injury logs | depends | determine first |
| Ergonomics -- headset, seating, screens | no standard | 4 modules live |
The bottom row has no OSHA standard behind it and it is still where every real injury in a call centre comes from -- hearing, wrists, backs, eyes. Training on it is worth doing because it works, not because someone requires it.
| When | What | Reported by | State |
|---|---|---|---|
| Sep 3 | Acoustic shockHeadset feedback on an inbound call | Devon Reyes | closed · headset replaced |
| Aug 21 | Wrist painReported after 3 weeks on the floor | anonymous | open · assessment booked |
| Aug 14 | Trip hazardCable run across the aisle | anonymous | closed · rerouted |
Reports can be anonymous, and an incident cannot be edited or closed by the person it was reported about. A safety report a manager can quietly alter is not a safety system, it is a liability with a form attached.
| Person | In | Break | Out | Today | Week | Flags |
|---|---|---|---|---|---|---|
| Maria Ortiz | 9:02a | 15m | -- | 4:12 | 22:47 | meal due 2:02p |
| Devon Reyes | 8:58a | 15m | -- | 4:16 | 23:10 | |
| Priya Nandi | 9:14a | 0m | -- | 4:00 | 21:32 | no rest break taken |
| Sam Whitcombe | 9:00a | 45m | -- | 3:29 | 19:48 | on break |
Everyone sees the top three and their own row. Nobody sees who is last. A public bottom does not motivate the person in it and it costs you everyone else's goodwill -- the supervisor and QA see the whole board, which is where that conversation belongs.
September challenge · Clean Hundred
One hundred consent records across the whole floor that every one passes QA at 90 or above. Not ninety-nine and one sloppy -- a single auto-fail resets the count.
The pot splits evenly across everyone who contributed at least one clean record. Even split on purpose -- it stops the strongest operator hoarding warm leads and makes it worth someone's while to help a newer person get their first.
Every line is a rate you were told before the month started, times a count you can see. If an operator cannot compute their own bonus, the plan is not an incentive -- it is a lottery, and people stop trying to win lotteries.
8 clean days. Your best is 14. Streaks reset on an auto-fail, never on a slow day -- a quiet Tuesday is not a failure and should not be punished like one.
Trained someone is there on purpose. If the only way to score is your own numbers, helping a new operator is a cost -- so it has to be worth points, or nobody does it twice.
AI agents outproduce every human here on volume and you cannot pay one a bonus. Putting them on the leaderboard would demote four people to the bottom of a board they cannot win, for nothing. Their output is measured on the QA page, where it belongs.
| Earns | Points | Gate | Rate |
|---|---|---|---|
| Consent record | +120 | QA 90 or above | $20 |
| Qualified lead | +80 | accepted by sales | $20 |
| Callback kept | +40 | return call made | $5 |
| Decision-maker conversation | +25 | qualification complete | -- |
| DNC handled correctly | +15 | QA spot-check | -- |
| Dial | 0 | -- | -- |
| Consent record failing QA | -120 | automatic | clawback |
| QA auto-fail | day to 0 | automatic | day to $0 |
| Contest | Metric | Pot | Split | State |
|---|---|---|---|---|
| Clean HundredSeptember | 100 consent records, all QA 90+ | $1,500 | even, all contributors | 63 / 100 |
| Nobody Left BehindSeptember | Every operator beats their own August | $800 | even, whole floor | 3 of 4 |
| First FiftyAugust · closed | First 50 clean consent records | $750 | even, 4 contributors | paid Aug 31 |
Nobody Left Behind is the most useful contest on this list. It pays the whole floor only if the weakest operator improves, which turns your best people into coaches for eleven days without anyone being told to mentor.
A bonus is a payroll record, not a game score. It has to be traceable to the outcomes that earned it, disputable on the same path as a QA score, and it has to land in payroll as earnings.
| Period | Person | Points | Earned | Clawback | State |
|---|---|---|---|---|---|
| Sep | Devon Reyes | 2,380 | $468 | $0 | accruing |
| Sep | Maria Ortiz | 2,140 | $412 | -$23 | accruing |
| Sep | Sam Whitcombe | 1,905 | $355 | $0 | accruing |
| Sep | Priya Nandi | 1,640 | $290 | -$120 | accruing · 1 dispute |
| Aug | Whole floor | 7,880 | $1,604 | -$40 | paid via HR Connector |
The commission ledger is the one piece of this the team already had twice over. Sales Intelligence Hub's payment model is exactly the right shape -- an amount owed, split payments against it, a status that moves Open to Partial to Closed, and triggers keeping the balance honest. Swap "customer sale" for "bonus earned" and "payment split" for "payout" and the schema transfers directly.
| Client | Seats | Leads | Numbers | Plan | State |
|---|---|---|---|---|---|
| SUPER SALES TEAMworkspace sst · the beta client | 12 / 15 | 2,376 | 0 | Beta · no charge | active |
| OMNILINK internalworkspace omni · demo and training | 3 / 5 | 148 | 0 | Internal | active |
Isolation has to be enforced in the query layer, not in the interface. A workspace filter that lives in the UI is one forgotten WHERE clause away from showing one client another client's list -- and that is not a bug you get to apologise for, it is the end of the contract.
Metering exists before pricing on purpose. You cannot price a seat-plus-usage product until you know what a real client actually burns in a month, and this is month one.
| Record | Keep for | Why |
|---|---|---|
| Consent records | 5 years | Claims run four years -- keep a margin past the last message sent |
| Do-not-call requests | forever | A DNC that expires is a DNC that gets violated |
| Call activity | 4 years | Matches the claim window it would be defending against |
| Call recordings | 2 years | Storage and exposure both grow; the consent record outlives the audio |
| Worked-out leads | 18 months | Contact data nobody is using is only a liability |
Nothing on this schedule runs today. Writing it down is the first half; a job that actually deletes on it is the second, and the second half is what a regulator asks to see.
A California business owner can ask what you hold on them and ask you to delete it. Today that is somebody writing SQL against a live database, under a clock.
When a claim arrives, everything touching that number has to stop moving -- no deletion, no retention job, no edits -- and somebody has to be able to prove it stopped. There is nothing here that does that today.
Recommendation: one installable web app, not three codebases
Everything an operator needs on a phone -- punch, schedule, profile, documents, safety, callbacks -- the web does properly today. Face ID and fingerprint sign-in work through passkeys. Offline punches queue and sync. The camera works for incident photos. One codebase, shipped the moment you push, with no app review standing between a fix and the floor.
Build it as a Progressive Web App the operator installs to their home screen during onboarding. If you later need what only native gives you, wrap this same app in Capacitor rather than rewriting it -- the shell is the change, not the product.
Installable web app
RECOMMENDED · build thisOne codebase. Ships instantly. Home-screen icon, offline, biometric sign-in via passkeys, camera. Push works on Android; on iOS it works once installed to the home screen -- which you control, because you control the workforce.
Capacitor wrapper
LATER, IF NEEDEDSame web app in a native shell. Buys background location, reliable iOS push, and store listings without a rewrite. This is why choosing the web now is not a decision you are stuck with.
Native iOS + Android
NOT YETThree codebases and two review queues for an internal tool used by twelve people, at a company that has not bought a phone number yet. Justified when a verified geofence or store distribution becomes a real requirement.
| Requirement | Web app | Needs native |
|---|---|---|
| Clock in and out, offline-safe | yes | no |
| Face ID / fingerprint sign-in | yes · passkeys | no |
| Photo of an incident or a hazard | yes | no |
| Notify a shift change | Android yes · iOS after install | if install rate is a problem |
| Location at the moment of punch | only while the app is open | if punches must be verified |
| Background geofence, auto-punch on arrival | no | yes |
| Detect a spoofed location | no | yes |
| Listed in the App Store | no | only if it is a product you sell |
Only two rows are real native requirements, and both are the same requirement: do you need to prove where somebody was when they punched? For a floor where people badge into a building, the door already answers that.
The operator's phone
Five screens, one thumb, no menus. Tap the tabs at the bottom of the phone.
Consent capture stays on the desktop console on purpose. The script has to be read carefully, a name typed accurately, and the record right the first time. That is not a task for somebody standing in a car park -- and a consent record captured badly is worth less than none.
Wage-and-hour disputes are decided on time records, so this is not a convenience feature. Three rules built in from the start:
| # | Subject | State | Updated |
|---|---|---|---|
| 411 | Wrong phone on 3 leadsAll three ring a fax line | With support | 1h ago |
| 402 | Callback did not come back to meKettleman Grocery, Tuesday | Fixed | Yesterday |
| 388 | Script wording questionCan I say "a few times a month"? | Answered -- no | Sep 4 |
Publishing a new consent script version does two things automatically: it marks every operator uncertified on that script, and it holds them out of queues that need it until they pass. A wording change is a legal change, so it cannot be a memo nobody read.
| Operator | Script v1 | Objections v2 |
|---|---|---|
| Maria Ortiz | passed | due |
| Devon Reyes | passed | passed |
| Priya Nandi | passed | due |
| Sam Whitcombe | passed | due |
| Alex Kim | not started | not started |