Estúdio de analytics comportamental — taxonomia, funis, cohorts, jornadas e memos de oportunidade.
Behavioral analytics studio — taxonomy, funnels, cohorts, journeys and opportunity memos.
PT-BR · English · Live Demo · Stack · Architecture · Quick Start · Author
BehaviorGraph conecta taxonomia de eventos, funis de ativação, cohorts de retenção, grafos de jornada e memos de oportunidade de produto em um estúdio analítico de lab.
Aviso de lab: demo de portfólio com dados sintéticos. Não é produto em produção com SLA, tracking real de usuários ou atribuição causal.
| Item | Estado |
|---|---|
| Escopo | Portfolio lab / MVP (seed sintética) |
| Live Demo | barujafe1.github.io/BehaviorGraph |
| CI | GitHub Actions (API + Web) |
| Tracking de produção | Fora do escopo |
Produtos digitais coletam eventos, mas times ainda lutam para responder:
- Quais passos de ativação perdem usuários?
- Quais transições de sessão dominam?
- Quais cohorts retêm depois da semana 0?
- Onde o atrito é alto o suficiente para merecer uma aposta de produto?
Métricas de vaidade (“quantos se cadastraram?”) escondem o caminho.
- Taxonomia de eventos como contrato com owner
- Funil de ativação aninhado (usuários únicos que permanecem dos passos anteriores)
- Cohorts de retenção por primeira semana vista (offsets W0–W4 reais)
- Grafo de jornada (transições de sessão via NetworkX)
- Segmentos + radar de atrito com severidade (
low/medium/high) - Memo de oportunidade (ação + hipótese de impacto + limites)
- Snapshot estático para demos públicas confiáveis
- Backend FastAPI opcional para execução full-stack local
Depois de uma release, o funil “melhora”. Mas foi o produto ou a instrumentação?
O lab agora valida contratos de tracking antes de comparar releases:
data/contracts/events.yml— contrato versionado por evento (owner, props obrigatórias, ordem, cardinalidade, versão)- Validador determinístico: missing props, order violations, duplicate
insert_id, cardinality, unknown events e event drift - Comparação raw vs trusted por usuário único com veredito explícito
- Intervalos de confiança de Wilson; linguagem estritamente observacional
Golden scenario (fixtures sintéticas determinísticas):
v2.3.0-buggy raw onboarding_completed +24.3% → trusted −0.9% ⇒ artefato de instrumentação
v2.3.0-fixed activation_completed +9.1% → trusted +9.1% ⇒ melhora real
Demo: /releases · Método: docs/RELEASE_INTELLIGENCE_METHOD.md
v2.3.0-buggy — raw +24.3% desaparece no trusted (−0.9%): artefato de instrumentação |
v2.3.0-fixed — +9.1% sobrevive ao filtro trusted: melhora real |
- É: estúdio lab de behavioral analytics.
- Não é: clone de Amplitude/Mixpanel, CDP, SDK de tracking de produção, ferramenta causal.
BehaviorGraph connects event taxonomy, activation funnels, retention cohorts, journey graphs and product opportunity memos in one analytics studio lab.
Lab notice: portfolio demo with synthetic data only. Not production telemetry, not Mixpanel, and not causal attribution.
Digital products collect events, but teams still struggle to answer:
- Which activation steps lose users?
- Which session transitions dominate?
- Which cohorts retain after week 0?
- Where is friction high enough to deserve a product bet?
Conversion vanity metrics (“how many signed up?”) hide the path.
- Event taxonomy as an owned contract
- Nested unique-user activation funnel (+ conversion from start)
- Retention cohorts with true W0–W4 offsets
- Journey graph edges with weights (NetworkX)
- Segments + friction severity bands
- Opportunity memo (action + impact hypothesis + limits)
- Static lab snapshot for reliable public demos
- Optional FastAPI backend for local full-stack runs
After a release, the funnel “improves”. But was it the product — or the instrumentation?
The lab now validates tracking contracts before comparing releases:
data/contracts/events.yml— versioned per-event contract (owner, required props, sequence, cardinality, introduced-in)- Deterministic validator: missing props, order violations, duplicate
insert_id, cardinality, unknown events and event drift - Raw vs trusted comparison on unique users with an explicit verdict
- Wilson confidence intervals; strictly observational language
Golden scenario (deterministic synthetic fixtures):
v2.3.0-buggy raw onboarding_completed +24.3% → trusted −0.9% ⇒ instrumentation artifact
v2.3.0-fixed activation_completed +9.1% → trusted +9.1% ⇒ real improvement
Demo: /releases · Method: docs/RELEASE_INTELLIGENCE_METHOD.md
v2.3.0-buggy — raw +24.3% vanishes under trusted (−0.9%): instrumentation artifact |
v2.3.0-fixed — +9.1% survives the trusted filter: real improvement |
- Is: behavioral analytics studio lab.
- Is not: Amplitude/Mixpanel clone, CDP, production tracking SDK, causal tool.
URL: https://barujafe1.github.io/BehaviorGraph/
Demo hospedada para avaliação de portfólio / Hosted for portfolio review.
Lab demo — synthetic data only. Not a production SLA product.
Activation Funnel — nested unique-user conversion |
Retention Cohorts — first-seen week matrix |
Journey Graph — session transitions |
Opportunity Memo — hypotheses + limits |
| Tecnologia | Uso no projeto |
|---|---|
| Next.js 15 / React 19 / TypeScript | UI + export estático |
| Recharts | Charts |
| FastAPI / Pydantic v2 / Pandas / NetworkX | Analytics API |
| Pytest / Ruff / ESLint / tsc / GitHub Actions | Qualidade |
CSV seed → FastAPI analytics (Pandas/NetworkX/Pydantic)
↓
demo-snapshot.json (static)
↓
Next.js cockpit (Recharts)
Details: docs/ARCHITECTURE.md · decisions: docs/TECHNICAL_DECISIONS.md
- Node.js 20+
- Python 3.12+
- npm
start.batSobe API em :8000 e web em :3000.
cd apps/web
npm install
npm run devOpen http://localhost:3000 — uses embedded snapshot (no API required).
# API
cd apps/api
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
# Web (outro terminal / another terminal)
cd apps/web
npm install
npm run devSee .env.example and apps/web/.env.example.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_API_URL |
Optional FastAPI base URL; empty = snapshot lab mode |
GITHUB_PAGES=true |
Adds /BehaviorGraph basePath for Pages builds |
Never commit .env.local or secrets. See SECURITY_NOTES.md.
# API
cd apps/api
.venv\Scripts\python -m pytest -q
.venv\Scripts\ruff check app tests
# Web
cd apps/web
npm run lint
npm run typecheck
npm run buildMore: docs/TESTING.md · Deploy: docs/DEPLOYMENT.md
| Choice | Gain | Cost |
|---|---|---|
| Static snapshot demo | Reliable public URL | Must regenerate after analytics changes |
| Nested funnel | Honest drop-offs | Stricter than independent counts |
| Transition graph | Clear journey story | Not attribution / not causal |
| Lab scope | Portfolio clarity | Not a full product-analytics suite |
- MVP (done): taxonomy, nested funnel, cohorts, graph, friction, memo, static demo, CI
- Phase 2 (done): release intelligence — tracking contracts, instrumentation validator, raw vs trusted funnel comparison per release
- Phase 3 (planned): minimal SDK, near-real-time ingest, experiment tags
Non-goals: Mixpanel clone, generic metrics dashboard, production tracking.
- Product analytics thinking (instrumentation → narrative → decision)
- Correct funnel/cohort definitions (not vanity charts)
- Full-stack delivery (FastAPI + Next.js) with a resilient static demo mode
- Responsible analytics communication (limits stated in UI + docs)
- Engineering hygiene (Pydantic contracts, tests, CI, deploy docs)
Pitch notes: docs/portfolio_pitch.md
Developed by Felipe Alirio Baruja.
- Portfolio: https://barujafe.vercel.app/
- GitHub: github.com/BarujaFe1
- LinkedIn: linkedin.com/in/barujafe
- Repository: github.com/BarujaFe1/BehaviorGraph
MIT License © 2026 Felipe Alirio Baruja.
See LICENSE for details.
BehaviorGraph
De eventos brutos a oportunidades de produto.
From raw events to product opportunities.







