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.
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.
| Action | Tanda |
|---|---|
| Vacate a call-off | PUT schedule user_id null, then assign cover |
| Make it visible | POST /schedules/publish |
| Directed swap | Reassign + publish (swap plans when connected) |
| Sick leave | POST /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.
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
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
- Call Sofia
Staff call one number. Sofia covers late, sick, and Julie-take-Thursday — through the same rules as Auto-Fill.
- Rostering & Auto-Fill
See the week. Fill open shifts. Every pick is scored and reversible.
- Ask Sofia
Ask this week in plain language — open shifts, Cover waitlist, labor, overtime. Grounded in your data, read-only.
Still short after Auto-Fill? Cover is a waitlist, not a live pool.
See CoverGet 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.