Dealfront - AI in the Company Profile

Dealfront already knew which companies visited your website, who worked there, and what they looked at. Reading it was a research job, and nobody had time for it. I added an AI layer inside the Company Profile that answers the questions people were already trying to answer by hand. Two rounds, two weeks, both shipped.

Overview

Dealfront helps B2B teams find and reach companies. The Company Profile is where a user lands once they find a lead - whether it came from a prospecting list or from visiting your website - and it opens as a panel beside your list of companies.

The Dealfront Leadfeeder view with the feed sidebar, a list of visiting companies, and the Company Profile panel open on the right showing the AI Insights tab
Where this lives: the profile opens beside the list, so the AI never gets the whole screen to itself.

Every tab is full of real, useful data. That was the problem. From here on the screens show just the profile panel, since that is where the work happened.

The Problem

Three tabs, three kinds of overload.

  • Activity. Every visit, every session, every page, with source, device and location. Real buying behaviour is in there. Someone spending eight minutes across pricing and product pages is a different lead than someone who bounced off a blog post. Finding that meant reading the full log line by line, which could be massive and updated frequenly.
  • Contacts. Hundreds of people at a single company. The right person to talk to changes with what you sell. If you sell office supplies you want operations. If you sell an AI platform you want whoever drives adoption. No column in the table tells you that.
  • The company itself. News, competitors, market position, recent events. That research happened in a different browser tab, on Google.

None of this was missing data. It was unsorted data. Signal and noise looked the same, and separating them was manual work for people whose job is selling, not research.

Round one: the question is the product

The first round ran from zero to shipped in a week. No long discovery, no system rewrite. I did the research, interviews, designs, prototypes and testing, working with two PMs and the engineering team.

The version we got wrong first

The first designs were automatic: you open the profile, the AI has already read everything, here is your insight. No work for the user.

We put it in front of internal users and a handful of real users we booked in the same week. They pushed back on the same thing. The summary was fine, but it was not what they would have asked. One person wants buying signals. The next wants to know who to call. The next wants competitors. A single automatic answer serves none of them well.

What they asked for was control: their own questions, and a way to keep them. That flipped the project. The AI was not the product. The question was.

Questions instead of a blank box

A chat input with a blinking cursor asks the user to invent the right question. Most people will not, and the ones who try give up after a bad answer. So every AI block opens with question cards. Real questions, already written, one click to run. We got the "base questions" through interviews and our own internal knowledge .The free text field sits underneath for anyone who wants it.

The AI activity summary block with three suggested question cards and a free prompt field, sitting above the activity log
The entry point is a question someone already wanted to ask.

On Contacts, the questions describe your deal

The Contacts questions are not data filters. They are descriptions of what you are trying to do: "Marketing leaders", "I want to sell them office supplies", "People I can reach via phone".

That is the difference between filtering a table and asking for help. The table can already filter by job title. It cannot know that office supplies means facilities and operations, not the CMO.

AI contact recommendation with intent shaped question cards above the contacts table
Questions written the way a salesperson thinks about a deal.

Saving a question is the whole point

If a question is good for one company, it is good for the next hundred. So any question can be named and saved, and saved questions come back in a library above the cards. Pin the ones you use every day.

The name your question modal with a single name field
The same person asks who the main buyers are on every company they open. They should write it once.

The answer lands next to the data

I explored two ways to connect an answer back to the table it came from. The first marked recommended people with an AI icon in the row, with a hover tooltip explaining the reasoning for each person.

Recommended contacts marked with an AI icon in the table, with the reasoning tooltip open
Roads not taken: the AI flags people in place, and you hover to find out why.

The second added a toggle: "Filter contacts by this result". Turn it on and the table narrows to the recommended people. Turn it off and everyone comes back.

Filtering won. The icon was easy to miss in a long table, and the reasoning was buried behind a hover, which also means it never reaches keyboard or touch users. The toggle is visible, it says what it does, and it leaves the choice with the user.

The filter contacts by this result toggle on the AI contact recommendation block
Obvious, reversible, and the user decides.

One block, three places

The same block runs three times: AI activity summary on Activity, AI contact recommendation on Contacts, and AI Insights in its own tab. Same header, same cards, same save flow, same collapse. Only the base questions and the data source change. Users learn the pattern once.

Round two: earning trust

A week later we went back in. Two things drove it.

Dealfront was shipping AI in more than one place. Lists Enrichment and Alerts were getting their own AI features, each with their own look. Three teams were inventing three AI languages at once. The Company Profile had to stop being an island and join a house pattern: the purple accent, the sparkle icon, lighter surfaces instead of the grey panel, and the same idea of offering example prompts rather than an empty field.

And real use exposed what was missing. You could not see where an answer came from. You could not fix a question you had phrased badly. You could not tell us the answer was wrong. And you had to already know the feature existed to find it.

Making it findable

The biggest change is the smallest to describe. An "AI summary / Filter" toggle now sits in the Activity toolbar.

The Activity toolbar with a segmented AI summary and Filter control above the AI block
The feature stopped hiding inside a panel inside a tab.

In round one, the AI lived inside a panel, inside a tab, below the fold. If you never opened that tab you never learned it was there. Putting the switch in the toolbar, next to Filter, frames it as one of two ways to read this data rather than a feature bolted on top.

Showing the work

Answers stopped being a wall of prose. They come back as numbered sections, and each claim carries a Source link.

An AI answer in numbered sections with a source link under each claim, and thumbs up and down controls
A disclaimer tells you the AI might be wrong. A source lets you check.

This is the change I would defend hardest. Round one shipped with "Dealfront AI can make mistakes. Check important info." That sentence puts the work back on the user without giving them any way to do it. A source link is the same honesty, made actionable.

Letting people correct themselves

A bad answer is usually a badly phrased question. So the question became editable in place, sitting in a field directly above the answer it produced, with Cancel and Send.

The question shown in an editable field directly above the answer it produced
Fix the question, not just the answer.

Follow-ups turned it into a thread. Your question appears as a bubble above the input, so asking a second thing builds on the first instead of replacing it.

A follow up question shown as a bubble above the input, forming a thread
The block reads as a conversation rather than one shot question and answer.

Closing the loop

Thumbs up and thumbs down joined pin, copy and delete. In a beta, the answer quality is the open question, and the people best placed to judge it are the ones reading it.

Smaller fixes from the same round: "17 questions" became "17 saved questions", because a count with no noun tells you nothing. And the saved questions grew from one slowly scrolling line into multiple rows, so the library is something you scan instead of wait for.

The border does two jobs

The AI block is outlined rather than filled, and the stroke animates, with the colour travelling around the edge while a request runs. It is the loading state and the AI signature in one, and it lets the block sit on white instead of needing a grey panel to mark itself out. I explored a single purple and a purple to orange blend before settling on the gradient you can see above.

Outcome

Both rounds shipped, in beta, inside two weeks. People asked questions and, more telling, they saved them, which was the behaviour the whole design was built around.

The honest limitation is that I left shortly after round two, so I cannot speak to how it performed over time. What I can say is that the second round fixed the thing the first round got wrong. Round one proved people wanted to ask their own questions. Round two gave them a reason to believe the answers.