Company Reveal Testing

Test company detection from identity events (pp/id) with real company domains for KickFire lookup

What This Tests

These forms trigger Path 2 company detection: pp/id events with business email domains get queued to the reveal-company worker for KickFire domain lookup. The worker returns enriched pc/ic events with full firmographic data (employees, revenue, SIC/NAICS, location, social).

Use Preview Mode to see: pp/id event -> Stage 7.7 queues company lookup -> pc/ic event arrives via re-entry with company group containing KickFire data.

1. Simple Contact Form — Known Company (KickFire)

Single person from kickfire.com. KickFire should return full firmographics for their own company.
Path 2 (domain lookup) pp -> pc kickfire.com

Expected Result

pp event with person data, then pc event with company.domain: "kickfire.com", company.name: "IDG Communications, Inc" (or "KickFire" trade name), full SIC/NAICS, employees "10 to 50", revenue range.

2. Enterprise Lead — Microsoft

Single person from microsoft.com. Should return large enterprise firmographics.
Path 2 (domain lookup) pp -> pc microsoft.com

Expected Result

pc with company.domain: "microsoft.com", employees "25,000+", revenue "$1,000,000,000+", SIC 7372 (Prepackaged Software), stock "MSFT".

3. Explicit identifyPerson() — Google (ic event)

Uses _ll.identifyPerson() with company object. Should produce an ic (identified company) event with conf=1.0.
Path 2 (domain lookup) id -> ic google.com

Click the button to call _ll.identifyPerson() with Google company data:

Expected Result

id event, then ic event with company.domain: "google.com", company.src: "explicit", company.conf: 1.0, employees "25,000+", revenue "$1,000,000,000+".

4. Unknown Company Domain — No KickFire Match

Uses a tiny/unknown domain that KickFire likely won't have. Should still create a pc event with minimal data (domain only, no firmographics).
Path 2 (domain lookup) pp -> pc (minimal) tinyunknownstartup.io

Expected Result

pc with company.domain: "tinyunknownstartup.io", company.name: "tinyunknownstartup.io" (domain as placeholder), company.conf: 0.8. No emp/rev/sic/naics fields.

5. Personal Email (Gmail) — No Company Event Expected

Gmail address should NOT produce a company event. The LLM should detect this is a personal email provider and not extract a company domain.
No company path pp only none expected

Expected Result

pp event only. No pc event. Gmail is a personal email provider — no company domain to look up.

6. Multi-Person Form — 3 People, 3 Companies

Form with 3 people from different companies. Should produce 1 pp event and 3 separate pc events (one per company domain).
Path 2 (3 domain lookups) pp -> 3x pc salesforce.com, hubspot.com, stripe.com
Primary Contact
Partner Contact
Technical Contact

Expected Result

1x pp event with 3 people detected, then 3x pc events:

  • company.domain: "salesforce.com" — CRM, 25,000+ employees
  • company.domain: "hubspot.com" — Marketing software
  • company.domain: "stripe.com" — Payment processing

7. identifyPerson() with Company Object — Stripe

Uses _ll.identifyPerson() with structured company object including domain. Tests the explicit identification path.
Path 2 (explicit) id -> ic stripe.com

Expected Result

id event, then ic event with company.domain: "stripe.com", company.src: "explicit", company.conf: 1.0.