Objective, explainable analytics for 1:1 conversations — with charts, a stick-figure infographic, and a polished PDF report. No attraction/personality inference. Only observable, defensible metrics.
The process is as shown in the image below.
A one figure sample result looks like the image below.
Live Demos: Try ConnectionSensor here — and share feedback via our LinkedIn pages below!
- Inputs: Transcript/Turns CSVs (+ optional Nonverbal & Prosody).
- Metrics: Talk-time %, turn lengths (avg/median/P90), overlaps/min, latency, open-question ratio, hedge density.
- Visuals: Talk-time bar, turn-length histogram, overlap trend, nonverbal rates, stick-figure infographic.
- Reports: One-page Executive Snapshot + strengths/opportunities + 3 suggestions, exported as PDF + TXT.
- Fake-data chatbox: Generate synthetic interactions → “Analyze Generated Data”.
- Style learning: Bootstraps from local folders to match your look:
interaction_starter_kit/*(sample CSVs)sample_results/*(sample PDF, charts)
git clone git@github.com:semework/ConnectionSensor.git
cd ConnectionSensor
cp .env.example .env # fill any keys if using Spaces/Redis, else leave local defaults
docker compose up --build
# API → http://localhost:8000/docs
# Web → http://localhost:5173On startup (or POST /bootstrap/from-folders) the app:
- Loads
./interaction_starter_kit/*.csvand computes baseline metrics. - Reads
./sample_results/*to learn phrasing and visual style. - Caches
{starter_metrics, style_profile}used to render charts/reports.
POST /analyze– multipart CSVs → returns metrics + signed links to charts, infographic, PDF, TXT.POST /render/infographic– analysis JSON → PNG/SVG infographic.POST /generate/fake-data– create synthetic CSVs; optional auto-analyze.POST /bootstrap/from-folders– (re)learn from the local folders.GET /download/:id– zip of results (PDF/TXT/PNGs/SVG).
- Backend: FastAPI, Pandas/Numpy, Matplotlib, ReportLab.
- Frontend: React + Vite (Chart.js/Recharts).
- Storage: Local
./outputin dev, S3/Spaces in prod (signed URLs + TTL cleanup). - Queue: RQ/Redis for heavy jobs (PDF/images).
- Requires explicit consent.
- Neutral language: “observed”, “in this sample”.
- “What we do not infer” statement on every report.
- Redaction tools for names/locations.
- 3 components (api, worker, web) + Spaces + Redis add-on.
- Or a single Droplet with Docker Compose + Nginx TLS.
- Health check
/healthzwarms up plotting backends to avoid first-request lag.
PRs welcome. Please add unit tests for new metrics and snapshot tests for charts/infographic.
Your preferred license here.
ConnectionSensor was conceived and built during the DigitalOcean NYC Hackathon.
Huge thanks to the organizers and community for the energy, mentorship, and feedback:
👉 DigitalOcean NYC Hackathon – Meetup Event
We’re grateful to the volunteers, mentors, and fellow hackers who helped shape the project!

