{{ screenTitle }}
{{ userName }}
{{ userInitials }}
311 queue{{ queueCount }}
{{ q.icon }}
{{ q.name }}{{ q.sub }}
{{ q.wait }}
{{ meta.initials }}
{{ meta.caller }}{{ meta.phone }} · 311-General · {{ meta.langLabel }}
View in Salesforceopen_in_new {{ agentStatus.label }}
headset_mic
Available Waiting for calls · special pickup line
ring_volume
Incoming 311 call Waited 0:42 in queue · routed by IVR to Sanitation · special pickup
person_search
{{ ident.title }}{{ ident.sub }}
{{ talk.icon }}
{{ talk.who }}{{ talk.text }}
hourglass_top
Opening the Salesforce case…The case form fills in from the call in a few seconds.
Case is Pending PaymentMake Payment transfers the caller to the AI payment agent. The caller speaks the card details. Your audio is muted, the recording pauses and keypad tones are blocked.
{{ s.label }}
headset_off
Caller is with the AI payment agentYour audio is muted. You see progress only — never card data.
{{ p.icon }} {{ p.label }} {{ p.state }}
{{ talk.icon }}
{{ talk.who }}{{ talk.text }}
{{ result.icon }}
{{ resultKicker }} {{ result.title }} {{ result.sub }}
{{ meta.amountStr }}
AI SUMMARY · 3 LINES · WRITTEN TO SALESFORCE CASE {{ sfc.id }}
•{{ l }}
Case Number{{ cs.caseNo }}
Case Status{{ cs.status }}
Contact Name{{ meta.caller }}
Priority{{ cs.priority }}
Call ContextDetails given by the caller
Request Type{{ cs.requestType }}
Item Categories{{ cs.category }}{{ cs.itemsText }}
Service Address{{ cs.address }}
Amount{{ meta.amountStr }}
Pickup Slots
{{ cs.slotIcon }}{{ cs.slotText }}
Case Information
Case Number{{ cs.caseNo }}
Case Status{{ cs.status }}
Contact Name{{ meta.caller }}
Contact Phone{{ meta.phone }}
ServicePublic Works
CategoryStreet Cleaning
SubcategorySpecial Pick Up
Case OriginPhone
Priority
Order ID{{ cs.orderId }}
Pickup Slot{{ cs.slotField }}
Subject{{ cs.subject }}
Additional Details{{ cs.details }}
Transaction IDNew field{{ cs.txn }}
cloudSalesforce caseOpenopen_in_new
Opened automatically when you answered
{{ r.k }}{{ r.v }}
Caller history
{{ h.d }}{{ h.t }}
Disposition
{{ agentNote }}
{{ s.mark }}
{{ s.label }}{{ s.sub }}
graphic_eq Conversation {{ curLang }} {{ elapsedStr }}
phone_in_talk No active session Pick a scenario and press Start, or transfer a caller from the agent desktop.
{{ m.label }}
{{ m.text }}
{{ meta.typeUpper }}{{ meta.caller }} · {{ meta.acct }}
{{ meta.amountStr }}
{{ r.label }} {{ r.val }} {{ r.icon }}
mic_off{{ cardStep.text }}
{{ tokenBox.icon }}{{ tokenBox.text }}
mic
{{ speech.status }} {{ speech.sub }}
LAST HEARD {{ speech.heard }}
PCI CONTROLS
{{ p.icon }}{{ p.label }}
flagReview queue · payment anomalies{{ reviewCount }}
{{ r.id }} {{ r.caller }} · {{ r.amount }} · {{ r.status }} {{ r.flag }}
Velocity rules: the same card token on many addresses, or repeated declines from one number. Gateway fraud tools run as well.
{{ txCountLine }}Clear filters
search
PAYMENTTIMECALLERPICKUP · REQUESTAMOUNTCARDLANGSTATUSAI TIMESALESFORCE
No payments match these filters.
{{ t.id }} {{ t.timeShow }}
{{ t.caller }}{{ t.phoneMask }}
{{ t.type }}{{ t.acct }}
{{ t.amountStr }} {{ t.cardStr }} {{ t.langShort }} {{ t.status }}flag {{ t.durStr }} Viewopen_in_new
{{ sel.id }}{{ sel.status }}
{{ sel.type }} · {{ sel.caller }} {{ sel.dateLine }} flagFlagged for review · {{ sel.flag }}
{{ sel.amountStr }}
End-to-end trace
{{ e.t }}
{{ e.svc }}{{ e.msg }}
One trace per callOPENTELEMETRY SPANS
{{ sel.spanTree }}
never present: card number, expiry, security code, raw gateway payload
auto_awesomeAI summary{{ sel.sfLine }}
•{{ l }}
{{ kv.k }}{{ kv.v }}
smsSMS · confirmation and reminderACS SMS
{{ s.text }}
{{ s.meta }}
shield_lockPCI evidence
check{{ p }}
Gateway response · redacted
{{ sel.json }}
LIVEStreamed from payment events · updated {{ refreshed }} · refreshes every 5 minSAMPLE DATA
{{ k.label }} {{ k.v }} {{ k.delta }}
{{ volTitle }}AI completedReturned to agent
{{ volSvg }}
Callers per period. Hover a bar for the split. The last bar updates with each refresh.
Call outcomes
{{ donutSvg }}
{{ o.label }}{{ o.n }}{{ o.w }}
Collected by pickup category
{{ t.label }}{{ t.v }} · {{ t.pct }}
Card type
{{ t.label }}{{ t.v }}
Call language
{{ t.label }}{{ t.v }}
Scheduled pick-ups for today · {{ pickupsToday.date }}{{ s.n }} {{ s.l }}
Booked by 311 and paid ahead of the pickup day. Not affected by the period filter. Unpaid pickups stay on hold and are not sent to crews.
WINDOWCASERESIDENTADDRESSITEMSZONE · CREWFEEPAYMENT
{{ p.win }} {{ p.sf }}open_in_new {{ p.caller }} {{ p.addr }} {{ p.items }} {{ p.zoneCrew }} {{ p.feeStr }} {{ p.payment }}
BUSINESS VALUE
savings
Business value2025 volume from the solution deck · unit costs are planning estimates
PLANNING ESTIMATES
{{ k.label }} {{ k.v }} {{ k.delta }}
Cost per completed payment{{ costPer }}
(Telephony + speech + tokens + gateway fee) ÷ completed payments. Tokens are a rounding error; the gateway fee dominates.
{{ c.label }} · {{ c.sub }}{{ c.v }}{{ c.w }}
Demand forecast vs actual · pickups by week
ActualForecast (seasonal model · Azure ML)Forecast error {{ fcErr }} (MAPE)
{{ fcSvg }}
W1–W8 actual from Salesforce history; W9–W12 forecast only (dashed). Sanitation uses this to plan crews by zone.
Clear filters
PCI guardian & voice qualitySAMPLE DATA
{{ g.icon }}{{ g.label }}
{{ g.v }} {{ g.sub }}
No services match these filters.
{{ s.icon }}
{{ s.n }}
{{ s.lat }}ms p95{{ s.st }}
Alerts
No alerts match these filters.
{{ a.icon }}
{{ a.title }}{{ a.meta }}
Alert rules by layer
{{ r.icon }}
{{ r.rule }}{{ r.layer }}
{{ r.state }}
App Insights · live traces{{ monLogCount }}
No traces match these filters.
{{ g.t }}{{ g.svc }}{{ g.msg }}
{{ setCur.title }}{{ setCur.sub }}
Card capture · build or buy
{{ f.k }}
{{ f.v }}{{ f.icon }}
{{ t.label }}{{ t.sub }}
Refund {{ refundDlg.id }}
Amount{{ refundDlg.amount }}
Your refund limit{{ refundDlg.limit }}
blockThis refund is above your limit. Send it to Finance for approval.
auto_awesome
Ask FluidCases · Calls · Payments · Access
badgeAnswering as {{ fluid.asRole }} · only what your role can openSAMPLE DATA
Hi, I'm Fluid. Ask me about Salesforce cases, RingCentral calls, payments or who can access what. I answer only from records in this app and show where each answer came from. TRY ASKING
{{ x.text }}
description{{ r.l }}
manage_searchSearching records…
check_circle{{ toast }}