<- all tokdocs

Classifying Website Visitors With Jev and PostHog Is Cheap. Getting Their Email Address Is Not.

Watch on TikTok

View on TikTok ->

Angus Sewell McCann walks through a four-step build: install PostHog on an existing landing page with a Claude Code prompt, wait two weeks for data, ask Claude to cluster visitors into archetypes, then wire a page-leave handler that sends the session to Jev, gets a persona back, and fires a matching follow-up email. The screen recording is unusually specific for a 73-second clip. You see the literal install prompt calling npx -y @posthog/wizard@latest, a PostHog Persons table with 6,861 rows, a POST https://api.typesafe.ai/v1/systemone body with "model": "jev-latest" returning "choice": "investor", "confidence": 0.94, a HubSpot contact card carrying a custom Visitor Persona property, and two generated emails from a fictional company called Tallyloop. The classification half of this build works and costs close to nothing; the identification half, which decides whether you have an address to send to at all, is where the funnel collapses, and the video gives it nine seconds. The opening line also says "with the release of Jev and PostHog," which puts a six-year-old analytics product and a two-week-old model in the same breath.

One of these two products is new

PostHog launched on Hacker News in February 2020 as a Y Combinator W20 company and has raised a $12M Series A and a $15M Series B since. It is not a new release. Jev is. TypeSafe AI put Jev into limited early access on 15 September 2026 alongside a $40M seed round led by DCVC, and opened it to everyone on 21 September. The video posted on 29 September, so the model was two weeks old on camera. The correct framing is that a new decision model became available to point at six-year-old analytics data, and the phrase "with the release of Jev and PostHog" reverses that.

The technical detail on screen checks out against TypeSafe's docs. Jev is a System One model, meaning it returns typed values with probability distributions instead of generated text. The docs list one model ID, jev-1.13.0, aliased as jev-latest and jev-preview. The request in the video sends jev-latest and the response comes back stamped jev-1.13.0, which is exactly what the alias does. The endpoint, POST https://api.typesafe.ai/v1/systemone, matches TypeSafe's published curl example. So does the choice question type with per-option probabilities and a confidence score.

The demo data is synthetic, and the video says so for two seconds

Frame 16 shows the archetype prompt in full, and the first line reads: "This is a demo for a video with synthetic data - do not write to any database, do not file issues/tasks/entities, do not reference my own skills or clients." The answer underneath, "Your roughly 3,300 human visitors in the last 30 days sort into 8 types," is therefore not a real result from a real site. That disclosure is honest and it is also invisible unless you pause. The archetype grid that follows (Decision Maker, Investor, Job Applicant, Junior Champion, Veteran Sales Guy, Happy Customer, Competitor, Researcher) is a plausible taxonomy, not one the data produced.

This matters for the instruction to "wait about two weeks." The synthetic run uses 3,300 visitors across 30 days. A landing page doing a tenth of that will hand Claude a few hundred sessions, which is not enough to separate eight behavioural clusters from noise. If you run this, size the wait by sessions rather than by calendar, and do not start until you have a few thousand.

The identification step is the whole system

The pipeline only sends mail if it can resolve a session to an address. The video's line is "which will only find their email like 20% of the time, but hey, it's a start," over a card listing RB2B (person-level ID, US visitors), Vector (contact-level), Snitcher (company-level), Dealfront (company-level) and Warmly.

That 20% needs a denominator the video does not give. RB2B's own support documentation reports contact-level identification around 30 to 45 percent of unique US-based traffic for Pro users. Independent reviews of the category put realistic person-level rates closer to 5 to 20 percent. Both of those percentages are of eligible US traffic only. RB2B's person-level resolution does not cover visitors outside the United States, who come back at company level at best. So the honest version of the claim is roughly one in five of your US visitors, and effectively none of your international ones, with a vendor-versus-reviewer spread wide enough that you should measure it on your own traffic before building anything downstream.

Frame 14 shows the ceiling directly. It is an IPinfo lookup, and the company field reads "Anthropic, PBC" with AS Type "Hosting" and an abuse contact at anthropic.com. That is the network operator behind the address, not the visitor's employer. IP-to-company enrichment returns a lot of cloud providers, VPN exits and corporate ISPs, and each of those is a row that looks like a signal and is not one.

The $30,000 figure is rhetoric

"If they paid 30 grand, set up a system that, like, tracks people and emails them" is a number with no source behind it, and the real pricing spans two orders of magnitude. Vendr's data puts the median 6sense annual contract at $62,440, with deals ranging from about $11,400 to $177,000. Demandbase's median annual contract comes in at $68,591 across 185 purchases. At the other end, Dealfront's visitor identification starts around €99 per month, Snitcher starts at $49 per month, and Vector's company-level tier starts at $399 per month. Warmly prices its deanonymization module near $10,000 per year. Treat $30,000 as a rhetorical midpoint rather than a benchmark.

The build the video describes is genuinely cheap, which is the stronger argument and the one it does not make with numbers. PostHog's free tier covers 1M events and 5,000 session recordings per month, renewed monthly, with no card required. Jev charges $0.042 per million input tokens and nothing for output. A classification call carrying a few hundred tokens of page history costs a small fraction of a cent. Your real spend is the identification vendor and the email sending infrastructure, and neither of those got a price on screen.

Where this gets you in legal trouble

The video handles consent as a data-availability problem: "which obviously is easy if they've already opted in. If not, you could use one of these identification tools." Those are different situations under law, not different difficulty levels.

Company-level identification through IP-to-company matching generally sits outside GDPR because it does not process personal data. Person-level identification does process personal data and needs a lawful basis, either consent or a documented legitimate interest assessment. Sending unsolicited email then adds a second layer: B2B cold email can run on legitimate interest in the EU, while B2C requires prior consent under the ePrivacy Directive. In the US, CAN-SPAM permits unsolicited commercial email provided you identify the sender, give a physical address and honour opt-outs, which is why the mock emails in the video carry a "Tallyloop Inc., Austin, Texas" footer with unsubscribe and preference links. That footer is the one compliance detail the build gets right on camera.

Deliverability is the quieter risk. Mail to addresses you never collected, sent from the domain your real customers reply to, earns spam complaints that degrade your sending reputation for every other message you send. Route this kind of send through a separate subdomain if you run it at all.

The two lines worth copying

The api/visitor-left.ts handler shown around the 45-second mark contains the only real engineering judgment in the video, and it goes by without comment. First, a suppression rule: if (contact?.persona_email_sent) return stop("already emailed"), plus a quietFor(visitor.id, "30m") debounce so a single browsing session does not trigger several sends. Second, a confidence gate: if (persona.confidence < 0.6) return stop("not sure enough").

The gate is the reason to use Jev here rather than an LLM prompt. Jev returns a calibrated probability distribution across your allowed options, so "0.6" is a number you can tune against outcomes instead of a vibe. Start that threshold high, closer to 0.85, and watch what falls through before you loosen it. A wrong persona does not produce a neutral email. It produces an investor-relations pitch to a job applicant, which is worse than sending nothing.

One more thing to hold in view while evaluating any of this: the creator discloses in the video description that he works with PostHog as a channel partner, and his website lists PostHog as a "Gold partner" under a note reading "Tools I use most days. A few have a discount for readers." The disclosure is upfront and the technical content still stands on its own. It is a reason to check the identification rates against your own traffic rather than take the architecture as neutral advice.

Key Takeaways

  • PostHog has been generally available since February 2020 as a YC W20 company. Jev shipped 15 September 2026. Only one half of "the release of Jev and PostHog" is new.
  • The archetype analysis on screen runs on synthetic demo data, stated in the prompt itself. Size your own wait by session count, not by two calendar weeks.
  • Measure your identification rate before building the email logic. RB2B's docs claim 30 to 45 percent of eligible US traffic; independent reviews report 5 to 20 percent; non-US visitors resolve at company level at best.
  • IP enrichment frequently returns the hosting provider rather than the employer. The video's own screenshot resolves to "Anthropic, PBC" with AS Type "Hosting."
  • Budget the identification vendor, not the model. PostHog is free to 1M events and 5,000 recordings per month, and Jev costs $0.042 per million input tokens with free output.
  • Set the confidence gate near 0.85 before loosening it, and keep the persona_email_sent suppression check. A misclassified persona sends actively wrong copy.
  • Person-level identification plus unsolicited email needs a GDPR lawful basis in the EU and UK, and ePrivacy requires prior consent for B2C. Send from a separate subdomain to protect your main sending reputation.

Resources

Published September 29, 2026. Writeup generated from a favorited TikTok.