Generate Hub
Link a bank to auto-fill your Company Hub with the businesses you actually transact with — pre-scraped server-side so logos and overviews are ready before you ever click in.
Generate Hub turns your bank statement into a Company Hub. You link an account once through your aggregator of choice — Plaid or MX — Teleperson reads the merchant names from your transactions, and every recognizable company shows up as a followed entry. No more typing in domains by hand.
How to use it
- Open the panel and click Add company.
- Pick the Generate Hub tab — the one with the sparkles icon.
- Choose your provider: Plaid (11k+ banks) or MX (16k+ institutions). If your bank doesn't show up under one, try the other.
- Click Generate Company Hub.
- The aggregator's secure connect window opens. Pick your bank and sign in with your usual credentials.
- When the connect flow finishes, the modal closes. Within a few seconds a Discovered from your accounts card appears at the top of your Company Hub listing the businesses Plaid found in your transactions.
- Each row has a toggle on the right (default ON). Flip off the ones you don't want in your Hub — for example, the gas station you used once on a road trip — and click Save. The selected companies join your Hub; the unselected ones are remembered as dismissed so they won't be proposed again on the next sync.
The first sync pulls up to two years of history, then keeps itself current in the background. Each subsequent sync surfaces only newly-discovered vendors — companies you've already accepted or dismissed don't reappear.
If your admin has turned Plaid or MX off in Admin → Features, that provider won't appear as an option here. Plaid is on by default for new installs; MX is off (turn it on if your users' banks aren't covered by Plaid).
Plaid vs. MX — which should you pick?
Both providers do the same thing. They differ mostly in which banks they cover best:
- Plaid — broadest coverage of US retail banks and fintechs (Chase, Bank of America, Wells Fargo, Capital One, Robinhood, etc.).
- MX — strong on regional banks and credit unions; often a good fallback when Plaid can't find your institution.
If one provider can't find your bank, swap to the other and try again. You can have both linked at the same time — the discovered companies flow into the same Hub.
What Teleperson sees, and what it doesn't
- Sees: the merchant name, transaction amount, and date — the same fields that already show in your bank statement.
- Doesn't see: your banking username, password, account number, or card number. Your aggregator handles the link and never shares those with us.
Access tokens are encrypted at rest with AES-256 inside Supabase. Your followed companies, transactions, and the link itself are scoped to your account by row-level security — no other user can read them.
Trying it without a real bank
You can test the flow end-to-end against either provider's sandbox:
- Plaid sandbox: pick any institution, then sign in with username
user_goodand passwordpass_good. Returns a deterministic transaction set. - MX sandbox: pick MX Bank (or any institution flagged as a test one) and follow the on-screen credentials.
What gets added to your Hub
Each transaction's merchant name gets normalized and matched against Teleperson's company catalog. The match becomes a discovered company that you review in the Hub before it lands in your followed list:
- High-confidence match: Teleperson recognizes the merchant and proposes the existing catalog entry.
- Auto-created: Teleperson hasn't seen the merchant before but is confident enough to create a new catalog entry, then proposes it to you.
- Low-confidence match: the merchant is queued for a Teleperson admin to disambiguate; once approved, it'll appear in your next sync's discovered list.
- Personal payees (people you Venmo'd, salary deposits, transfers between your own accounts): ignored — they're not businesses.
Nothing is added to your Hub silently. Every discovered company waits in the review card until you toggle and Save.
Re-running Generate Hub on an already-linked bank doesn't create duplicates. It just refreshes the transaction window. Your prior accept / dismiss decisions persist across syncs.
Pre-scraping: what's ready when you click in
Every company that lands in Discovered from your accounts for the first time is also queued for a server-side pre-scrape. Within ~5 minutes of the company being created from a Plaid match, a background job:
- Fetches the company's homepage with a five-second timeout.
- Hits Clearbit for a logo if one isn't already on the row.
- Sends the scraped page text + the company name to Perplexity with the same structured-extraction prompt the panel uses on first visit, and parses the JSON it returns.
- Saves the resulting overview to the shared
companies.ai_overviewcolumn — the same field the panel reads when you visit the site.
Result: when you eventually open americanexpress.com (or any other
company that came from your Plaid sync), the Overview tab is fully
populated immediately — tagline, industry, top reasons, top intents,
firmographics, logo. No waiting for a scrape. No spending a Vapi or
Anthropic token of your own.
The pre-scrape skips three cases:
- Companies that already have an
ai_overview(curated by an admin or generated by a previous panel visit). Pre-scraping never overwrites curated data. - Sites that block server-side fetches (Cloudflare interstitials,
403s, etc.). The row is marked
scrape_status='failed'with the status code; the panel's existing client-side scrape still runs on first visit and produces the overview that way. - Anti-bot challenge HTML. If the homepage response is a "checking your browser" page rather than real content, we refuse to feed it to the AI step.
If pre-scrape failed, the Overview tab behaves exactly like it always has: client-side scrape on first visit, AI extraction via your configured key (Anthropic in Admin → General, or Vapi in Admin → Voice AI). You just don't get the zero-latency benefit.
Re-authenticating an expired bank link
Banks sometimes invalidate aggregator access — usually after a password change or a long stretch of no use. When that happens, the affected account shows up as Needs re-auth in the panel. Click it and the aggregator's connect flow opens in update mode; finish the prompts and the sync resumes.
Removing a linked bank
In the panel under Admin → Connected banks, hover the bank and click Disconnect. Disconnecting:
- Revokes the aggregator's access token immediately.
- Removes the encrypted token from our database.
- Leaves the followed companies in your Hub intact (they're yours whether or not the bank is linked).
If you also want the underlying transaction data deleted, use Delete all bank data on the same screen — that wipes the encrypted item, accounts, and transactions in one shot.
Source code
AddCompanyModal.jsx— the modal, the provider chooser, and both connect flows.plaidLink.js— Plaid Link bridge (loads inside a sandboxed iframe on teleperson.com).mxConnect.js— MX Connect widget overlay.plaid-create-link-token,plaid-exchange-public-token,plaid-sync-transactions— Plaid edge functions.connect-mx-user,sync-mx-data,mx-webhook— MX edge functions.
Related
- Company Hub → — where the linked companies show up.
- Auto-detection → — how unrecognized merchants become catalog entries.
- Security → — how we store and isolate your data.