Added ICP management#143
Merged
Merged
Conversation
- ICP profile CRUD (NestJS controller/service/repository) - Apollo.io integration via mixed_companies/search and contacts/search - ICP list and detail pages with infinite-scroll company/contact tabs - MultiSelect component for filter fields (industries, locations, employee ranges) - EditorJS dark-mode CSS fixes - Prisma IcpProfile model and migrations Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add page/perPage params to GET /icps with Number() coercion fix - Repository returns paginated response with total/totalPages - Switch frontend from useQuery to useInfiniteQuery with getIcpProfilesInfinite - Nav label updated to ICPs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Switch contacts search to use q_keywords (industries + locations) per Apollo /contacts/search spec - Remove unsupported filter params (q_organization_keyword_tags, organization_num_employees_ranges) - Update response mapping to use present_raw_address and richer organization fields - Replace useState tab with nuqs useQueryState (?tab=) for refresh-safe tab selection Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove restrictive q_keywords filter from Apollo contacts search so all contacts are returned (was returning 0 results) - Replace raw <img> tags with Avatar component in ICP company and contact table name cells, with initials fallback Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace static APOLLO_API_KEY with OAuth access tokens from ApolloIntegrationService. - ApolloService now injects ApolloIntegrationService and fetches Bearer tokens per org - searchCompanies/searchContacts accept organizationId and use Authorization header - IcpModule imports IntegrationsModule to get ApolloIntegrationService - Remove deprecated APOLLO_API_KEY from .env.example Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace invalid app_scopes with correct scope names from Apollo's supported list - Use contacts_search (CRM contacts) and organizations_search (company search) - Remove mixed_people_api_search and mixed_companies_search which are not registered in the OAuth app - Log active scopes in authorization URL for easier debugging Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merged duplicate @zuko/ui-kit imports in IcpForm.tsx and replaced `any` types with `unknown`/`typeof fetch` in chat.test.tsx. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- BasePage.updateTableCell: blur for number/date inputs instead of Enter (number inputs don't save on Enter) - BasePage.showHistory: increase post-click wait from 500ms to 5s - apollo-integration.spec: decode URL before asserting oauth/authorize (Apollo redirects through login, encoding the auth URL in a param) - companies.spec: increase navigation timeout to 20s with waitUntil commit to avoid waiting for slow full-page load - DealDetailPage.goto: wait for deal title instead of h2 Activity heading; the title renders much earlier and is always present Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
anujeet98
reviewed
May 29, 2026
anujeet98
reviewed
May 29, 2026
anujeet98
reviewed
May 29, 2026
anujeet98
requested changes
May 29, 2026
- Updated variable name from `pag` to `pagination` in ApolloService to enhance code readability. - Adjusted references to the new variable name in the pagination response structure. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
anujeet98
approved these changes
May 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces the ICP (Ideal Customer Profile) feature, which lets users define customer criteria and discover matching companies and
contacts via the Apollo.io OAuth integration.
Features
/organizations/search) using the profile's filters, displayed in aninfinite-scroll table with logo avatars and fallback initials
/contacts/search), displayed in an infinite-scroll table with photo avatars andfallback initials
details/companies/contacts) is persisted in the URL via nuqs (?tab=companies)Apollo OAuth Integration
ApolloServicenow usesApolloIntegrationService.getAccessToken(organizationId)instead of a staticAPOLLO_API_KEY, with automatic tokenrefresh
app_scopes,mixed_people_api_search,mixed_companies_searchcontacts_search,organizations_searchIcpModuleimportsIntegrationsModuleto consumeApolloIntegrationServiceDatabase
IcpProfilemodel insalesschema withfilters(JSON),description(JSON), andnotes(JSON) fieldsTest plan
?tab=URL param restores the active tab🤖 Generated with Claude Code