Skip to content
Integrations

Keep Tanda. Stop being the switchboard.

Chains already on Tanda do not want another roster. They want the 6am calls gone. Sofia is that layer.

Tanda

How does Sofia talk to Tanda?

A roster adapter. Sofia’s voice loop never knows whether it is talking to Tanda or to Sofia’s own Firestore. In Tanda mode it reads users and schedules, vacates a shift, assigns cover, and publishes so staff see it on their phone. The customer-facing Connect button is not shipped yet; the adapter is.

What the adapter writes

Tanda API v2. Scopes: roster, user, department, leave.

What the adapter writes
ActionTanda
Vacate a call-offPUT schedule user_id null, then assign cover
Make it visiblePOST /schedules/publish
Directed swapReassign + publish (swap plans when connected)
Sick leavePOST /leave — coverage still wins if leave fails

Connect-Tanda OAuth in the app is boarding. Until then, a store token is a secret on the function, not a customer setting.

1

Two modes, one brain

Mode A: Tanda is the roster. Mode B: Sofia’s Firestore roster is the system of record. Coverage matching, SMS fallback, kill switch and the call log are identical.

  • Tanda failure does not silently write Firestore
  • Native mode runs in the emulator without a Tanda token
  • Deputy and 7shifts are the same adapter later
FAQ

Questions, answered

Do I have to leave Tanda?

No. That is the point of Mode A. Sofia is the AI layer on top.

Can I connect Tanda in the app today?

Not yet. The adapter and the write path exist. The OAuth button is the next UI pass. Get in line for a store number and we will connect the first stores by hand.

Does Sofia calculate award rates?

No. Tanda already does awards. Sofia writes who works when.

Explore more of Sofia

CoverWaitlist

Still short after Auto-Fill? Cover is a waitlist, not a live pool.

See Cover
She answers the phone$200

Get a store number, or let us show you around.

$200 a store. The line is boarding. Or open a workspace and run the roster today.