A roofing company can be a target today and an acquirer next year, so we stopped making it the same record.
Home Services Advisory Group is an M&A advisory firm for home services businesses: HVAC, plumbing, roofing, pest control and the rest. Its buyer universe lived in spreadsheets and its sellers in GoHighLevel. We built an Attio workspace where each business exists once, its role in a deal lives on a separate record, and the PE ownership tree links itself.
Paid build
Engagement
2,182
Companies imported
775
Ownership links
10,166
Values verified
2
AI agents
The problem.
HSAG sits between private equity firms that buy home services businesses and the owners who sell them. The buy side was a spreadsheet: about 1,200 PE groups, 355 operating companies and 604 sub-brands, with contacts for most of them.
The sell side was a different system entirely. Roughly 30,000 business owners sat in GoHighLevel on the marketing side. Getting a qualified seller into the CRM meant copying them across by hand.
The hard part was ownership. Most sub-brands belong to a platform, and most platforms belong to a PE firm. Calling a sub-brand is wasted effort, because it will not buy anything. What matters is knowing who owns it.
And a business does not stay on one side. The managing partner came from DealCloud and was clear: these are just companies. Some are owned by PE, some are not, and either kind can end up buying or selling.
Objectives.
- One record per business, however many deals it takes part in, on either side.
- Import the company and contact file with every parent and subsidiary linked, and prove nothing was lost.
- Bring qualified sellers across from GoHighLevel automatically, and keep the rest of the marketing list out of the CRM.
- Capture buyer and seller intake from the website straight into Attio.
- Use Claude to rank the buyers that fit each live mandate.
The data model.
A business is permanent. Its role in a transaction is temporary. So the business lives on Companies once, and what it is doing in a deal lives on its own record that points back to it.
Companies
Every business tracked, told apart by primary sector: Private Equity (1,223), Home Services (355) and Sub-Brand (604). Holds financials, 21 trade sub-sectors, ownership structure and the PE buy box.
People
1,646 contacts, each linked to their company, with a contact role: buyer contact, seller owner, broker or PE contact.
Buyers
What a firm is looking to acquire. One PE firm can run several mandates with different criteria, so each search is its own record.
Sellers
A business going to market, with qualification status, an A / B / C fit tier and a GoHighLevel contact id back to its marketing record.
Deals
One live transaction, joining a seller to the buyers it was taken to, through stages from NDA signed and CIM prep to LOI and diligence.
Interactions
A structured note: subject, date, several contacts, several companies, and who from the firm was there. Built from the managing partner's own DealCloud note.
The import.
The ownership tree links itself
Every company names its parent. We turned that into 775 parent and subsidiary links across 172 parents. Open a PE firm and every business it owns is listed, with nothing typed by hand.
Every value checked
After the load we compared all 10,166 values back to the source file. Everything supplied came across intact, with no duplicate companies.
Corrected after the walkthrough
The file was named as a buyer list, so the first load tagged every row as a buyer. On the walkthrough it became clear it was a company list. We re-imported, and cleared the tag from the 604 sub-brands, which by the firm's own rule never buy.
Automations and agents.
Seller intake from GoHighLevel
When an opportunity is created or a contact is tagged as a seller in GoHighLevel, the seller lands in Attio and is researched and tiered. The rest of the marketing list stays out.
Three web forms
Sell my business, get a valuation, and buy a business, rebuilt in Fillout with embed code for the site, each writing straight into Attio.
The NDA flow
A buyer signup sends the NDA and chases it when it sits unsigned. When a deal reaches CIM prep, a blind teaser is drafted.
Notes written once
A note on a person is copied to their company, and the other way round. Interactions go further: one conversation, linked to every company it was about.
Buyer matchmaking agent
When a mandate goes to market, a Claude agent ranks the acquirers most likely to buy it and writes the shortlist onto the deal, with the reason on every line.
Weekly pipeline digest
What moved, what went quiet, which NDAs are unsigned, and which qualified sellers have not been taken to buyers yet. Both agents run on the firm's own Claude subscription.
What the matching still needs.
Matchmaking is only as good as the buy box it reads. At handover, six of the eight preference columns in the source file were empty, so about 86% of buy boxes were blank. The agent is built. It gets useful as the firm's team fills in what each buyer is looking for.
Results.
- 2,182 companies and 1,646 contacts in one registry, each business entered once, with its full ownership tree.
- Qualified sellers cross from GoHighLevel on their own, so the CRM holds real prospects and not a 30,000-owner marketing list.
- Buyer and seller intake from the website lands in Attio without copy and paste.
- A Deal Flow and Pipeline Performance dashboard: pipeline by stage, conversion, closed-won value and sellers by EBITDA.
- Two Claude agents with no separate AI bill and nothing to host, plus a Notion runbook written for whoever operates the workspace next.
Ready when you are.
Book a call and we will tell you honestly whether this is worth doing, or start with the free 48-hour audit and decide afterwards.