Open-source revenue intelligence — detect buying signals from your PostHog + CRM data and route the warmest leads to sales. Self-hostable. The open-source alternative to Pocus and Common Room.
37
stars
477
commits
TypeScript
primary language
Jun 8, 2026
updated
Open-source revenue intelligence for product-led growth.
Turn your PostHog product data into buying signals, score every account, and route the warmest leads to your CRM — no data engineering required.
The open-source alternative to Pocus and Common Room.
Website · Pricing · Integrations · Blog
Your product already knows which accounts are about to buy, expand, or churn — the signals are sitting in PostHog. But they never reach the people who act on them: by the time usage data becomes a dashboard, the moment has passed, and sales is still working off gut feel and lead forms. Commercial tools that close this gap (Pocus, Common Room) are closed-source, expensive, and want to own your data. Beton Inspector is the open-source alternative: run it yourself, point it at your own PostHog and CRM, and own the whole pipeline.
Beton Inspector connects to your product analytics (PostHog) and turns raw usage data into actionable revenue signals. Instead of guessing which accounts are ready to buy, expand, or churn, Beton detects concrete behavioral patterns — trial conversion intent, power user emergence, feature adoption velocity — and scores each account automatically.
The signals and scores flow into your CRM (Attio, HubSpot, Pipedrive, Zoho), giving your sales team a prioritized list of accounts with context on why they should reach out and when.
Key value: Your product data already contains the buying signals. Beton Inspector surfaces them without requiring data engineering or custom dashboards.
Prefer managed hosting? See Beton Cloud pricing — $0.50 per tracked user, free trial, no credit card required.
Beton Inspector is fully self-hostable under AGPL-3.0. Leave DEPLOYMENT_MODE=self-hosted
(the default) and all billing/Stripe features are disabled — unlimited use, no payment dependency.
git clone https://github.com/getbeton/inspector.git
cd inspector
cp .env.example .env
# Edit .env and set at minimum:
# NEXT_PUBLIC_SUPABASE_URL your Supabase project URL
# NEXT_PUBLIC_SUPABASE_ANON_KEY Supabase anon key
# ENCRYPTION_KEY 64-char hex (generate below)
# AGENT_SECRET 64-char hex (generate below)
# DEPLOYMENT_MODE=self-hosted
# Generate the two secrets:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Reads .env, starts the app on :3000 (and an optional local Postgres on :5432)
docker compose up
# → http://localhost:3000
npm install
npm run dev # next dev loads your .env
# → http://localhost:3000
When self-hosting, set DEPLOYMENT_MODE=self-hosted (or leave it unset). This disables all billing features, giving you unlimited access with no Stripe dependency.
| Component | Technology | Details |
|---|---|---|
| Application | Next.js (TypeScript) | Full-stack — pages + API routes |
| Database | PostgreSQL (Supabase) | RLS-secured, multi-tenant |
| Auth | Supabase OAuth (PKCE) | Session cookies, workspace context |
| State | Zustand + React Query | Client state + server cache |
All code lives in src/. There is no separate backend — business logic runs as Next.js API routes.
src/
├── app/
│ ├── (auth)/ # Login, OAuth callback
│ ├── (dashboard)/ # Protected pages (signals, identities, memory, settings)
│ └── api/ # ~40 API route handlers
├── components/
│ ├── ui/ # Base UI primitives (base-ui + CVA)
│ ├── layout/ # Sidebar, header, navigation
│ ├── signals/ # Signal-specific components
│ └── billing/ # Billing UI (optional)
└── lib/
├── heuristics/ # Signal detection & scoring engine
│ └── signals/detectors/ # 20+ signal detectors
├── integrations/ # PostHog, Attio, Stripe clients
├── supabase/ # Client helpers + auto-generated types
└── email/ # Notification emails (Resend)
npm run dev # Start dev server
npm run build # Production build (must pass before committing)
npm run lint # ESLint
npm run typecheck # TypeScript check
We welcome contributions! Please see CONTRIBUTORS.md for guidelines on how to get started.
To report bugs or request features, open an issue.
Beton Inspector is licensed under the GNU Affero General Public License v3.0.
This means you can freely use, modify, and distribute the software, but any modifications must also be made available under the same license, including when running a modified version as a network service.
Beton is open-source revenue intelligence. Inspector is the flagship product. We also maintain:
Resources:
TypeScript
97.3%
PLpgSQL
2.2%
Open-source revenue intelligence — detect buying signals from your PostHog + CRM data and route the warmest leads to sales. Self-hostable. The open-source alternative to Pocus and Common Room.
37
stars
477
commits
TypeScript
primary language
Jun 8, 2026
updated
Open-source revenue intelligence for product-led growth.
Turn your PostHog product data into buying signals, score every account, and route the warmest leads to your CRM — no data engineering required.
The open-source alternative to Pocus and Common Room.
Website · Pricing · Integrations · Blog
Your product already knows which accounts are about to buy, expand, or churn — the signals are sitting in PostHog. But they never reach the people who act on them: by the time usage data becomes a dashboard, the moment has passed, and sales is still working off gut feel and lead forms. Commercial tools that close this gap (Pocus, Common Room) are closed-source, expensive, and want to own your data. Beton Inspector is the open-source alternative: run it yourself, point it at your own PostHog and CRM, and own the whole pipeline.
Beton Inspector connects to your product analytics (PostHog) and turns raw usage data into actionable revenue signals. Instead of guessing which accounts are ready to buy, expand, or churn, Beton detects concrete behavioral patterns — trial conversion intent, power user emergence, feature adoption velocity — and scores each account automatically.
The signals and scores flow into your CRM (Attio, HubSpot, Pipedrive, Zoho), giving your sales team a prioritized list of accounts with context on why they should reach out and when.
Key value: Your product data already contains the buying signals. Beton Inspector surfaces them without requiring data engineering or custom dashboards.
Prefer managed hosting? See Beton Cloud pricing — $0.50 per tracked user, free trial, no credit card required.
Beton Inspector is fully self-hostable under AGPL-3.0. Leave DEPLOYMENT_MODE=self-hosted
(the default) and all billing/Stripe features are disabled — unlimited use, no payment dependency.
git clone https://github.com/getbeton/inspector.git
cd inspector
cp .env.example .env
# Edit .env and set at minimum:
# NEXT_PUBLIC_SUPABASE_URL your Supabase project URL
# NEXT_PUBLIC_SUPABASE_ANON_KEY Supabase anon key
# ENCRYPTION_KEY 64-char hex (generate below)
# AGENT_SECRET 64-char hex (generate below)
# DEPLOYMENT_MODE=self-hosted
# Generate the two secrets:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Reads .env, starts the app on :3000 (and an optional local Postgres on :5432)
docker compose up
# → http://localhost:3000
npm install
npm run dev # next dev loads your .env
# → http://localhost:3000
When self-hosting, set DEPLOYMENT_MODE=self-hosted (or leave it unset). This disables all billing features, giving you unlimited access with no Stripe dependency.
| Component | Technology | Details |
|---|---|---|
| Application | Next.js (TypeScript) | Full-stack — pages + API routes |
| Database | PostgreSQL (Supabase) | RLS-secured, multi-tenant |
| Auth | Supabase OAuth (PKCE) | Session cookies, workspace context |
| State | Zustand + React Query | Client state + server cache |
All code lives in src/. There is no separate backend — business logic runs as Next.js API routes.
src/
├── app/
│ ├── (auth)/ # Login, OAuth callback
│ ├── (dashboard)/ # Protected pages (signals, identities, memory, settings)
│ └── api/ # ~40 API route handlers
├── components/
│ ├── ui/ # Base UI primitives (base-ui + CVA)
│ ├── layout/ # Sidebar, header, navigation
│ ├── signals/ # Signal-specific components
│ └── billing/ # Billing UI (optional)
└── lib/
├── heuristics/ # Signal detection & scoring engine
│ └── signals/detectors/ # 20+ signal detectors
├── integrations/ # PostHog, Attio, Stripe clients
├── supabase/ # Client helpers + auto-generated types
└── email/ # Notification emails (Resend)
npm run dev # Start dev server
npm run build # Production build (must pass before committing)
npm run lint # ESLint
npm run typecheck # TypeScript check
We welcome contributions! Please see CONTRIBUTORS.md for guidelines on how to get started.
To report bugs or request features, open an issue.
Beton Inspector is licensed under the GNU Affero General Public License v3.0.
This means you can freely use, modify, and distribute the software, but any modifications must also be made available under the same license, including when running a modified version as a network service.
Beton is open-source revenue intelligence. Inspector is the flagship product. We also maintain:
Resources:
TypeScript
97.3%
PLpgSQL
2.2%