Anicca
Conversation analysis for leadership coaching.
Role
Sole engineer: designed and built the product end to end
- 1
- engineer
- 800+
- commits
- ~590
- unit tests
- Mar 2026
- in production
Anicca helps leaders and coaches see how a conversation actually went. Upload a recording or send a notetaker bot to a meeting, and Anicca transcribes it, identifies each speaker, and scores the conversation on three communication signals with written coaching feedback. Teams tag who was in the room so each person's results roll up to a shared dashboard. It is a subscription product in production since March 2026.
How a recording moves through it
- Upload or meeting bot
- S3
- FFmpeg compression
- Transcription + speakers
- LLM analysis
- Team dashboard
- Recordings up to 2 GB upload straight from the browser to S3, and an FFmpeg function compresses the audio to Opus before transcription, cutting transcription cost by an estimated 60 to 70 percent. If compression fails or is skipped, the original file goes through.
- Transcription submits are keyed on the stored file, so retries and duplicate webhooks never re-bill the same recording.
- Analysis prompts are versioned in the database and editable from an admin console, with the in-code prompt as a fallback so a database failure cannot break analysis.
- Per-speaker results are cached, so team dashboards roll up without running the model again. A second feature generates stories with retrieval over pgvector embeddings.
- Usage is metered in audio minutes behind Stripe subscriptions. I fixed a lost-update race in the billing counters with atomic writes, and a Postgres deadlock between concurrent serverless cold starts with an advisory lock.
- Tested like a team product: integration tests against a real Postgres cover 145 of 158 API surfaces, with Playwright end-to-end and axe accessibility checks in CI.


