Every part of a conversation, covered

Knowing the answer is the easy part. TIA also has to find the right product, take the action in the right order, know when to fetch a human, file the work nobody can finish today, and put all of it into the systems you already run. Here is how each piece works.

An agent per job, each with its own brain and face

Create as many agents as your storefront needs: pre-sales, support, wholesale, a second brand. Each carries its own instructions, personality, knowledge, tools, theme, and public embed.

  • System prompt, tone, and guardrails per agent
  • Welcome message and suggested prompts to start the conversation
  • Widget theming that inherits your brand, isolated in a shadow DOM
  • Public access toggle and per-origin allow-list for every agent
Agent documentation

TIA Concierge

Online · replies instantly

Ask about products, orders, returns…

Trained on what you publish, not what a model guessed

Point TIA at your sitemap and it crawls, chunks, and embeds every page. Upload the PDFs your policies actually live in. Write Q&A pairs for the answers that must be word-perfect.

  • Sitemap when you have one, same-origin link crawling when you do not
  • Include and exclude path rules, so the catalog cannot drown the policies
  • PDF, DOCX and plain-text uploads, plus hand-written Q&A pairs
  • Hybrid vector and keyword retrieval for precision on product names
How training works
Knowledge sources4 sources

yourstore.com

Sitemap · 146 pages

shipping-and-returns.pdf

18 chunks embedded

Sizing Q&A

24 question / answer pairs

help.yourstore.com

Crawling · 32 of 88 pages

Agents that do the thing, not just describe it

Register any HTTP endpoint as a tool with typed inputs and a description of when to use it. The agent decides when to call it mid-conversation, and you see the trace.

  • Typed input schemas so the model cannot invent parameters
  • Encrypted secrets injected server-side at call time
  • Dry-run a tool from the dashboard before an agent ever uses it
  • SSRF protections and allow-listed hosts on every outbound call
Tool documentation
Tool · logistics.trackParcelDry run passed
{
  "method": "GET",
  "url": "https://api.carrier.com/v2/track/{{tracking_id}}",
  "headers": { "authorization": "Bearer {{secrets.CARRIER_KEY}}" },
  "input": {
    "tracking_id": { "type": "string", "required": true }
  }
}

Secrets are stored encrypted and injected server-side. The browser and the model never see the value.

Steps it cannot skip, because the tool is not there

Every platform lets you describe a workflow in a prompt and hope the model follows it. Here each step declares which tools it may use, and the runtime hands the model only those. During a 'verify the order' step, the refund tool does not exist.

  • Ordered steps with branches, so real policies fit
  • Per-step tool scoping enforced before the model is called
  • Handoff and abandon always survive, so nobody gets trapped
  • Every run records the path actually walked, branch choices included
How procedures work
Try it · Refund requeststep 1 of 6

Current step

Ask for the order number and look it up.

The agent's full toolset — try any of them

Nothing tried yet. Start with issue_refund — it is three steps away, and the runtime will not let you.

The escape hatch that makes automation safe to ship

Refunds, complaints, edge cases, VIPs. When the agent should not be the one answering, your team joins the same live conversation and the customer never notices a seam.

  • Real-time inbox showing which conversations are waiting
  • Join, reply, and hand control back to the agent in one click
  • Full transcript, page context, and order data preloaded
  • Browser notifications so a waiting shopper is never forgotten
Handoff documentation
Live inbox1 waiting

Conversation #4821

I was charged twice for the same order…

Join

Conversation #4820

Does the blazer run true to size?

Handled by AI

Conversation #4818

Can I change my delivery address?

Handled by AI

Transcript, page URL, cart contents and order history are attached before you type a word.

For everything that outlives the conversation

Not every problem is solvable while someone is on the page. The agent raises a ticket with the conversation attached, tells the visitor you will follow up, and your team works it from one org-wide queue. Nobody has to be online.

  • Statuses that say who the ticket is waiting on, kept accurate automatically
  • Replies reach the customer as properly threaded email, with the ticket number in the subject
  • Delivery is recorded — a reply that failed to send is flagged, not silently lost
  • Balanced or round-robin routing, capacity caps, availability, and saved views
Helpdesk documentation
Helpdesk · All agentsbalanced routing
TKT-1042Lens cracked on arrivalOn you

Returns · urgent · Sam P.

TKT-1041Wrong size shippedOn customer

Returns · high · Ada K.

TKT-1039Invoice for order 8821New

Billing · medium · Unassigned

TKT-1036Bulk order enquiryOn hold

Sales · low · Ada K.

The same agent, out loud — in the widget or on the phone

Voice is not a separate product with a separate knowledge base. Switch it on and shoppers can talk to the agent they were already typing to, with the same tools and the same handoff path.

  • Real-time speech with low latency, powered by LiveKit
  • Live captions and a readable transcript in the widget
  • Shares one conversation with chat, so you switch modes without losing context
  • Answers a real phone number too — bring your own Twilio account and keep your numbers
  • Escalates to a human, or transfers a caller to a real phone number
Voice documentation
Voice session01:24

Live captions

Shopper: “I need a gift for my dad, under a hundred.”

TIA: “Two people buy for exactly that: the merino scarf at $72, or the leather card holder at $59.”

Escalate to a personSwitch to typing

It knows your catalog, your carts, and your orders

Connect Shopify with OAuth and the storefront tools switch on instantly, or bring a non-Shopify catalog through the generic commerce layer. Either way the agent works with live data, not a stale export.

  • Shopify OAuth connection and theme app embed install
  • Product search, detail, and recommendations as first-class tools
  • Cart building and checkout links inside the conversation
  • Order status lookups for post-purchase questions
TIA for Shopify
Commerce toolsShopify connected
searchProductsQuery the catalog by intent, not keyword
productDetailVariants, stock, and pricing in real time
recommendationsRelated and complementary products
addToCartBuild a cart inside the conversation
orderStatusFulfilment and tracking for an order
checkoutLinkHand the shopper a ready checkout

Every lead and ticket, in the tools you already run

Six events — leads, form submissions, and four ticket events — leave TIA the moment they happen. Point them at Zapier, Make, n8n, or your own endpoint. Emission never blocks a visitor: if every one of your endpoints is down, the lead still saves.

  • HMAC-signed payloads with the timestamp inside the signed material, so replays are rejectable
  • Retry backoff, auto-disable, and a per-subscription delivery log you can read yourself
  • The target host is re-checked before every delivery, not just at subscribe time
  • A Zapier app with five instant triggers, two actions, and two searches
Browse integrations
Settings · Webhooks6 events
lead.createdHubSpot · via Zapier
ticket.createdSlack #support
ticket.assignedhttps://ops.acme.co/hooks
form.submittedAirtable · via Make
x-tia-signature: t=1786...,v1=9f3c...

Build on it, not just around it

A REST admin API covers agents, sources, tools, and secrets. An integration API covers leads, form submissions, tickets, and webhook subscriptions. A public streaming endpoint powers the widget, and can power your own interface just as easily.

  • Organization-scoped API keys, re-verified server-side on every request
  • Streaming chat responses for custom front ends
  • Manage knowledge sources, tools, and subscriptions programmatically
  • Consistent envelopes and typed errors across every surface
API reference
POST /api/{organization}/agentsx-api-key
curl -X POST https://tia.tdccommerce.com/api/acme/agents \
  -H "x-api-key: $TIA_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "name": "Storefront Concierge",
    "modelType": "claude-haiku-4.5"
  }'

{ "success": true, "data": { "agent": { "publicSlug": "agt_pub_…" } } }

Autonomy you can actually sign off on

Giving an AI agent access to your storefront and your APIs is a trust decision. TIA is built so the answer can be yes.

Origin allow-lists

A public agent only answers on the domains you name. Anyone who copies your snippet gets nothing.

Encrypted secrets

API tokens for your tools are stored encrypted and injected at call time, never exposed to the browser or the model.

Guarded outbound calls

Custom tools run through SSRF protections and schema validation, so an agent cannot be talked into hitting internal hosts.

Organizations and roles

Multi-tenant workspaces with invitations and owner/admin/member permissions across agents, billing, and the inbox.

Scoped API keys

Issue and revoke keys per organization. Admin endpoints require an owner or admin key; public endpoints never touch them.

Grounded answers

Retrieval is anchored to the sources you upload, so the agent talks about your policies instead of improvising them.

See it answer your own questions

Create an agent, point it at your site, and ask it the three questions your customers ask most. That is the whole evaluation.

Free plan available · One script tag to install