Skip to main content
Intempt
CLI · v0.1.0

Instrument the codebase, not aspreadsheet.

Scan your source, generate a tracking plan, ship typed SDK wrappers for 14 platforms. Any call that does not match the plan fails at compile time.

Free. Reads your own source tree and nothing else.

A brass deep-sea plug about to click into a porthole socket.
analytics.ts
// generated
Analytics.userSignedUp({
plan: "pro",
emial: "a@b.co",
});
Property 'emial' does not exist. Did you mean 'email'?
intempt.yaml
events:
- name: user_signed_up
properties:
- email: string
- plan: string
- source: string
$ npm install -g @intempt-technologies/cli
$ intempt init
→ detected: Next.js · TypeScript · pnpm
14 platforms supported

One plan, typed wrappers forevery stack.

Same intempt.yaml, fourteen generators. Rename a property once in the plan, regenerate, every SDK site type-errors until it matches.

TypeScript
React
Next.js
Vue
Nuxt
Svelte
iOS / Swift
Android / Kotlin
React Native
Flutter
Python
Go
Ruby
PHP

intempt init, then two morecommands.

Detects your framework, proposes events from a source scan, writes them to intempt.yaml, generates the wrappers. Three commands, no dashboard step.

intempt init
checkout.tsx
signup.tsx
pricing.tsx
AI scan
intempt.yaml
- name: user_signed_up
  properties:
    email: string
    plan: string
- name: checkout_started
  properties:
    plan: string
    seats: number
- name: payment_confirmed
  properties:
    amount: number
intempt generate
Analytics.checkoutStarted({
plan: "pro",
seats: 5
})
type-safe
intempt status
user_signed_up
in code
checkout_started
in code
payment_confirmed
in code
invite_sent
⚠ missing
subscription_upgraded
⚠ missing

A mistyped property breaks the build,not the funnel.

Every analytics call the generator writes is typed against the plan. Wrong property name, wrong type, missing event, none of it ships. It fails locally, in review, or in CI.

The alternative is finding it three weeks later in a broken dashboard, with no way to backfill.

AI scan sends source to the model provider only for files you approve. Nothing routes through an Intempt server.

Platforms
14
Commands to learn
3
Config file
intempt.yaml
Type errors caught pre-ship
all of them

What sellers, marketers and PMs will ask you tofix next.

Eight cases the tracking plan owns before the ticket exists.

event-drift

Renaming an event.

Change the name in intempt.yaml, regenerate. Every call site breaks the build until it matches.

missing-props

A required property nobody sent.

intempt status lists the events planned but not yet called anywhere in the code.

platform-mix

iOS, web and Android sending different shapes.

One plan generates typed wrappers for all three, so shape drift is impossible.

pr-review

Analytics code review during PRs.

Wrappers are just imports; reviewers read them like any other typed call.

onboarding-new-eng

A new engineer instrumenting their first flow.

They import the generated wrapper, autocomplete does the rest.

ci-guard

A CI check that fails on unplanned events.

Static token authenticates, intempt status --json returns machine-readable drift.

deprecating-an-event

Retiring an event without breaking dashboards.

Remove from plan, regenerate, compile errors surface every call site that still uses it.

stack-change

Adopting a new SDK next quarter.

Same plan, different generator. No re-writing of instrumentation.

Two ways to use it. Same output,different input.

Option A

Set it up from inside Claude Code.

Paste one prompt into your agent. It installs the CLI, runs init, walks you through the AI scan, shows you the plan, generates the wrappers and reports status. Waits for your confirmation before each step.

claude-code prompt
You are helping me set up the Intempt CLI. It scans a codebase,
proposes a tracking plan, and generates typed SDK wrappers for 14 platforms.

Walk me through it one step at a time, run commands for me where you can,
and wait for my confirmation before moving on.
...

Device-code login handles auth. No terminal credentials.

Option B

Every command supports --json for piping.

For scripted and batch work, run the commands directly. Static token authenticates in CI. Registry commands return machine-readable JSON.

terminal
$ intempt init --plan-only
$ intempt generate --platform typescript
$ intempt status --json | jq .missing

Config lives in intempt.yaml at repo root. Commit it.

Wired into the tools your teamalready opens.

Salesforce, HubSpot, Slack, Gmail, Calendar, Zoom, Segment, Shopify. Plug in once, generate typed wrappers for every event that touches them.

JavaScript
Node JS
Apple
Stripe
Gmail
Google Calendar
Google Meet
Twilio
SendGrid
Slack
Amazon SES
Webhook
Apache Kafka
Amazon S3
Firebase Cloud Messaging

Teams love it

Teams stopped shipping broken funnels because their compilercaught them first.

StockInvest

Acquisition and retention are one connected motion. Personalizing the path before signup only pays off when the same system carries the user through onboarding afterward.

Anonymous traffic was not turning into registered users, and acquisition and retention were run as two separate problems. We ran Experiences on the anonymous visitor flow to put the right content and CTAs in front of each visitor, then handed new signups to automated Journeys for onboarding and deeper engagement.

455,396

users instrumented

Read the full research
FieldsUSA

Judge experiments on revenue per visitor instead of conversion rate. A variant can win on conversions and still lose on revenue, and repeat buying only shows up when the whole journey is in one view.

High-intent shoppers browsed a large, specialized outdoor catalog, and browsing, product interest and purchase history sat in different places. We unified them into one customer view, then ran real-time personalization, intent-based segmentation and timely follow-ups on top of it, judging experiments on revenue per visitor.

Read the full research
Hoperfy

Build the pipeline on observed signals. When follow-ups trigger on intent, the team spends its time on the users who are genuinely engaging.

Static lead lists and timeline-based follow-ups were hiding who was actually engaging. We ran a signal-led outbound pipeline where follow-ups fire on real behavior: outbound replies, onboarding progress and product usage.

Read the full research
v0.1.0

Instrument once. Never chase a brokenfunnel again.

Free. Reads your own source tree and nothing else. Three commands from install to typed calls.

npm install -g @intempt-technologies/cli

Ready to instrument once?

Free. Reads your own source tree and nothing else. Three commands from install to typed calls.

Nothing ships until you approve it.