All posts
Generic Chatbotmy swap failedWhat error did you see?Which network are you on?Can you share your wallet?User opens Discord insteadWallet-Aware Support0x742...d3f1 · Ethereummy swap failedYour swap of 500 USDC → ETHfailed 3 min ago. Revert:INSUFFICIENT_OUTPUT_AMOUNT.Try 1% slippage.✓ Resolved in 12 seconds

Wallet-aware support vs generic chatbots: what's the difference

Generic chatbots have no idea who your user is, what chain they're on, or what their last transaction did. Wallet-aware support does, and that changes everything about the quality of help it can provide.

by @Non_Fungible_Howard28 June 20266 min read

Put a generic chatbot in a DeFi app and you've improved on nothing. The user types 'my transaction failed', the bot says 'I'm sorry to hear that. Could you tell me more about the transaction?', and the user immediately opens Discord to find a real answer.

This isn't a problem with the underlying AI. The problem is that the bot has no context. It doesn't know who the user is. It doesn't know what they were trying to do. It doesn't know what actually happened. Without that, the best it can do is ask questions, which is the last thing a frustrated user wants.

What generic chatbots don't know

When a generic support chatbot receives a message, it has exactly one piece of information: the text the user typed. Everything else (wallet address, connected chain, token balances, transaction history, current contract state) is invisible to it.

In most support contexts that's fine. If you're building a support bot for a SaaS product, the user's identity is usually resolved via a session cookie, and their history lives in your database. The bot can be wired up to query it.

DeFi is structurally different. The user's identity is their wallet address. Their history is on-chain. Neither of those is in your database. They're on a public blockchain that your chatbot has to be explicitly connected to in order to read.

The identity gap

In Web3, the user's wallet IS their identity. A support system that doesn't read the wallet doesn't know who it's talking to. Every question it receives is effectively from an anonymous stranger.

How wallet-aware support works

A wallet-aware support agent reads the user's connected wallet state when the support session opens, silently, without asking for anything. No login, no copy-paste, no seed phrase. The user's wallet is already connected to your app; the support layer reads the same connection.

What it reads depends on what's relevant to your protocol, but at minimum: the wallet address, the currently connected chain ID, and recent transaction history. From that baseline, it can answer questions that a generic bot simply cannot.

The failed transaction example

This is the clearest illustration of the difference. User sends: 'my swap failed'.

Generic chatbot

  • "Can you tell me what you were trying to swap?"
  • "What error message did you see?"
  • "Which network are you on?"
  • User has to describe what they don't understand
  • Resolution time: 10-20 minutes

Wallet-aware support

  • Reads connected wallet on session open
  • Looks up the failed tx automatically
  • Decodes the revert reason
  • Gives a specific, actionable answer
  • Resolution time: under 30 seconds

Generic chatbot: 'I'm sorry to hear your swap failed. Can you tell me what you were trying to swap, on which network, and what error message you saw?'

Wallet-aware support: 'Your swap of 500 USDC for ETH failed 4 minutes ago. The transaction reverted because the price moved outside your 0.5% slippage tolerance before the transaction was included. Try increasing slippage to 1% in settings, or wait for a period of lower volatility.'

The first response asks the user to describe something they don't understand. The second explains it. The information required to generate the second response (transaction hash, revert reason, token pair, slippage setting) was all available on-chain.

The wrong-network example

User sends: 'nothing is loading, I can't see my balance'.

Generic chatbot: 'This can happen for a few reasons. Have you tried refreshing the page? Are you on the correct network?'

Wallet-aware support: 'Your wallet is connected to Arbitrum (chain ID 42161). This protocol runs on Ethereum Mainnet. Please switch networks in MetaMask to continue.'

Again, the difference is context. The chain ID is available the moment the wallet is connected. A support system that reads it can give a specific answer instantly. One that doesn't gives generic troubleshooting steps.

What wallet-aware support cannot do

It's worth being precise about what reading a wallet does and doesn't enable. The wallet connection used by your app exposes the address and chain. Reading transaction history requires an RPC call. Reading contract state (vesting schedules, lock expiries, reward balances) requires knowing which contracts to query.

There's also a meaningful privacy consideration. Users should know that the support agent can see their wallet activity. This should be disclosed in the UI, not buried in terms of service. In practice, most users are comfortable with it (the data is public on-chain regardless), but the disclosure matters for trust.

  • What it can read: wallet address, chain ID, ETH balance, token balances, transaction history, contract state
  • What it cannot read without additional infrastructure: detailed event logs on high-throughput chains, historical prices, data from other protocols
  • What it should never read: seed phrases or private keys. These are never accessible via a standard wallet connection and any tool claiming otherwise is a scam

Why the default is still generic chatbots

Building wallet-aware support is harder than dropping a generic chatbot into a chat widget. It requires RPC access, wallet connection integration, on-chain data retrieval, and a support agent that knows how to use that context when formulating answers.

The generic chatbot option exists because it's easy to ship. You can deploy a knowledge-base chatbot in an afternoon. Connecting it to wallet state, transaction history, and contract reads takes significantly more infrastructure.

But the quality gap is real and users feel it. A support experience that asks them to describe their own transaction (something they don't understand and are asking for help with) is actively worse than no chatbot at all. It delays resolution and signals that the tool isn't really trying to help.

The test for any support tool in DeFi is simple: can it answer 'why did my transaction fail' without asking the user a single follow-up question? If it can't, you're not deploying support. You're deploying a different way to collect information before escalating to a human.

The right frame for evaluation

When you're evaluating support tooling for your protocol, don't ask 'does it have an AI chatbot?' Almost everything does now. Ask: what does it know about the user before they type their first message?

If the answer is 'nothing except what's in your documentation', you have a docs-retrieval system. That's useful for general questions but limited for the transaction-level issues that make up the majority of DeFi support volume.

If the answer is 'the connected wallet address, chain, recent transactions, and relevant contract state': you have something that can actually help.


Ready to move support in-app?

TxID Support gives your protocol an AI support agent that already knows what your users' wallets did, embedded in your app, not Discord.

Start free: 150 conversations/month