Natural Language Filter

At Intapp, I led the design of Natural Language Filter that helps users filter CRM data using conversational input, rather than manually building filters with exact field names or complex logic.

Main Interface Image

Context

Before this feature, users manually stacked filters across multiple menus. Even simple questions like "Which Tier A clients haven't been contacted in the last four months?" required digging through dropdowns and understanding internal hierarchies, creating friction for non-technical users. The goal was to make data discovery effortless, even when users didn't know exact field names or structures, by aligning the experience with how people naturally think and ask questions.

Context Search Interface

Before this feature, users manually stacked filters across multiple menus. Even simple questions like "Which Tier A clients haven't been contacted in the last four months?" required digging through dropdowns and understanding internal hierarchies, creating friction for non-technical users. The goal was to make data discovery effortless, even when users didn't know exact field names or structures, by aligning the experience with how people naturally think and ask questions.

Advanced Search Interface

Explorations

We explored multiple approaches and chose the integrated view-builder because it best enables effortless data discovery without requiring knowledge of field names or structure. The assistant overlay limited iteration, and the structured builder still assumed schema familiarity. The integrated experience converts natural language into editable filter tokens in context, reducing friction while preserving enterprise-grade transparency and control.

Exploration 1
Exploration 2

Final Solution

To enhance the overall experience, I focused on reducing uncertainty, increasing transparency, and supporting fluid workflows.

Final Solution Interface

To offer prompt help, I added in-line micro-guidance in the natural language input that suggests fields, time frames, and examples as users type, helping them learn what the system understands without breaking flow.

Prompt Help 1
Prompt Help 2
Prompt Help 3
Prompt Help 4

I replaced generic spinners with a descriptive loading state that shows how the system is translating intent into filters. Finally, I enabled seamless switching back to the previous data grid while preserving state and allowed users to save views, turning ad-hoc queries into reusable, auditable configurations.

Loading State
Saved Views