aistack
Let's work together →
← All articles
Sales · Cross-sell

CRM reports on cross-selling: which customers to offer what they don't buy from you yet

Most regular customers buy one or two things from you and never hear about the rest of the range. Claude connected to your CRM and invoicing shows you in one sentence who is missing what, and who to call first.

October 2026·7 min read·Milan Janoštík·
ClaudeMCPSales
Infographic: customer cards and an invoice on the left travel through a blue bridge with Claude and an identity lock, arriving on the right as a ranked list with opportunities highlighted in green.

A CRM cross-sell report has one job: tell you which existing customers to offer the things they don't buy from you yet. Most small companies can't answer that, because deals live in the CRM and what each customer actually bought lives in invoicing. Put the two together and you get a list you can start calling from on Monday morning.

The work nobody wants

Picture a twenty-person company that sells printer servicing, consumables and equipment rental. The sales rep knows some customers only ever order toner. Which ones exactly? Finding out means opening invoicing, exporting a year of line items, matching them to companies in the CRM where the names are spelled slightly differently, then hunting for gaps in a spreadsheet.

It happens once a quarter, if at all. A week later the spreadsheet is out of date and nobody remembers who edited it last. So the team calls whoever got in touch first, and everyone else keeps buying one product out of seven.

That customer has bought paper from us for five years. They found out we do servicing from a competitor.

— A sales meeting, paraphrased

What connecting the CRM and invoicing actually means

Claude knows nothing about your customers on its own. The model isn't what's missing. What's missing is a path between Claude and the data you already have. We build that path as a small MCP server: a narrow bridge that can read customers and deals from the CRM and line items from issued invoices.

The bridge doesn't copy anything into someone else's database. When a rep asks “which customers buy consumables but have no service contract?”, Claude fetches the data at that moment, under that rep's name and permissions, and answers with a list. Next to every name it shows what the answer rests on: the date of the last invoice, what the customer buys and what they don't.

The bridge rule
Claude never sees more than the person asking
If a rep can only see their own region in the CRM, so can Claude. The head of sales gets the whole company. Permissions aren't set up a second time: the bridge inherits them from the tools you already use and records every query in an audit trail.
Customers from the CRM and invoice lines pass through a bridge carrying your identity and come back as a ranked list of opportunities

Concretely: Raynet and Fakturoid

Take a common Czech setup: customers and deals in Raynet, invoices in Fakturoid. Both stay exactly as they are; we only add the bridge. A company with a few hundred active customers and several product lines usually has dozens of combinations nobody checks, and that is where cross-sell quietly leaks away (an illustrative estimate, not a measurement).

  • Matches each CRM company to the invoicing customer by company ID (IČO), not by a name that's spelled differently in every system.
  • Works out, for each customer, which product lines they buy and which they don't.
  • Finds patterns: similar customers who buy A and B, set against those who only buy A.
  • Ranks opportunities by volume, how long since the last order and open deals in the CRM, so nobody gets called twice.
  • On request, drafts a short call brief with the customer's history.

For illustration: a small coffee wholesaler in Brno sells beans to offices and cafés. On Monday the owner asks which offices buy coffee but have never ordered machine servicing. A minute later there are twelve companies on the list. Three run a machine older than five years, and one has an open enquiry in the CRM that nobody followed up. That's how Monday starts.

What cross-selling with Claude won't do, and why that's good

Claude doesn't call or email the customer on its own. It doesn't decide whether an offer is appropriate. It doesn't know the owner complained about a delivery last month and now is the wrong moment, unless someone wrote that down. The rep knows, which is why a person reads the list rather than a mass-mailing machine.

That limit isn't a weakness. Give someone a list with reasons and they can check it, strike a name and come back to another in a month. Launch an automated campaign and you usually hear about the mistake from an annoyed customer. Harvard Business Review notes that winning a new customer costs five to twenty-five times more than keeping an existing one. The relationship with the customers you already have is exactly the thing not to gamble with.

1 sentence
instead of an export, matching and a spreadsheet
~4 h
of manual quarterly reporting that goes away
0
copies of your data outside your infrastructure

What it would take

Not a year-long project. The bridge to your CRM and invoicing runs on your infrastructure, in your tenant, with your people's identities. You start with the one question sales asks most often and test it on real data. Once the query works, we save it as a shared skill: a “weekly cross-sell review” any rep can run, each with their own permissions.

CRM (Raynet)→Invoices (Fakturoid)→MCP bridge with your identity→Claude→Opportunity list for the rep

What's left

A better model won't sign a single service contract by itself. You've had the data on who buys what for years. The only thing missing is the bridge between that data and Claude, and that's what we build.

If you'd like to see how this looks on your own data, write to us. A short call is enough to work out which systems to connect first and which question the first report should answer.