Ben Modigell · Product Engineer

I'm Ben Modigell.

Idesign &buildworkflow-drivensoftware.

Both projects below started as problems I ran into — and turned into full products I designed and built.

StatusOpen to roles
Based inCologne, Germany
BackgroundMarketing, SEO & UI/UX → Engineering

Vibes

01 · Desktop App
App built
Site live

A desktop DJ library manager for large collections (10k+ tracks). Sole engineer — app architecture, audio analysis pipeline, recommendation engine, website, licensing, and release.

TauriRustReactViteTypeScriptSQLitePythonReact Flow
Vibe taxonomy showing mood, function, and arrangement categories
Vibes — Category overview
Track sorting interface with vibe selection and album art carousel
Vibes — Track sorting
Vibes library with audio player and waveform analysis open
Library — Song list & waveform player
Set builder canvas with connected track groups forming a DJ set
Set Builder — Flow view

DJs with large libraries (10k+ tracks) spend hours preparing sets — organizing music, finding compatible tracks, building transitions. Existing tools handle playback but not preparation. Vibes is a desktop library manager built around this workflow.

  • Import from Traktor, Rekordbox, Engine DJ, or Serato — bring your existing library in
  • Analyze every track: key detection, BPM, beat grid, cue points, energy curves, lead regions — features DJ software doesn't extract
  • Tag with vibes — subjective mood/style labels (“Dark”, “Euphoric”, “Driving”) that you define, not a classifier
  • Get recommendations for the next track based on the musical goal of the transition — raise energy, deepen a groove, shift key
  • Build sets on a visual canvas where tracks are nodes in a directed graph, grouped into chapters
  • Export back to DJ software with all metadata preserved

01The Architecture

Three runtimes, each handling its bottleneck

Three-runtime desktop architecture where each layer handles its bottleneck:

  • React + TypeScript + Vite for the interface
  • Rust + Tauri for the audio engine, desktop integration, and data layer
  • Python sidecar for ML-based audio analysis — off the UI thread

The system covers the full preparation workflow: library import → analysis → tagging → recommendation → set design → export.

02The Analysis Layer

Custom audio intelligence beyond standard DJ tools

Goes further than standard DJ tools — extracts transition-aware features (cue points, beat grid, energy curves, lead regions) that existing software doesn't provide.

  • Vibes (mood/style tags) are deliberately manual — a DJ's subjective curation, not a classifier
  • Runs outside the UI thread via Python sidecar, so the app stays responsive during batch processing

03The Recommendation Model

Transition-intent matching, not just similarity

Scores based on the musical goal of the next transition — raising energy, deepening a groove, bridging major/minor.

Three scoring dimensions (BPM, key, vibe) that the DJ controls — shaping recommendations around what they actually want next.

04The Interface

Performance-critical React frontend at scale

Performance-critical React frontend — 5,000+ tracks, 60fps audio sync, canvas-based set building, and keyboard-first workflows.

The Hard Part

Beat-grid alignment — finding the exact millisecond of the first downbeat — broke everything. The onset detector locked onto the loudest early transient, but in tracks with pickup beats, that transient fires one beat before the actual musical downbeat. Every grid downstream was phase-shifted.

Website & Licensing Platformvibesdj.io ↗

Built the product website and licensing backend handling the full purchase → activation flow for the desktop app.

  • Stripe checkout, license generation, and seat-based device activation
  • Offline validation with no server dependency after activation
  • Drives signups through interactive DJ tools, structured SEO content, and docs

Built with Next.js 16 using server components and route-group separation for marketing, account, and checkout systems.

Pipe

02 · CLI Tool
CLI built
Site built

SEO content engine that turns keywords into structured articles through video discovery, transcription, and staged AI generation. Sole engineer.

PythonClickOpenAI APIOllamaWhisperSupabaseDataForSEOyt-dlp
CLI Pipeline Interface
CLI — Pipeline run
Generated article output
CLI — Generated article
Product website landing page
Website — Landing page

Content teams producing SEO articles face a manual pipeline: find relevant videos, transcribe them, extract key information, write structured articles, optimize for search, and publish. Pipe automates this end-to-end as a self-hosted CLI.

  • Cluster keywords by semantic similarity + SERP overlap — grouping by what Google actually treats as the same topic
  • Discover videos for each cluster, download, and transcribe locally via Whisper ($0 per article)
  • Extract structured data (techniques, gear, concepts) from transcripts using local LLMs
  • Generate long-form articles (1500-4000 words) with internal links, FAQ schema, diagrams, and quality scoring
  • Import directly into the CMS with deduplication, quality gates, and link integrity checks

Currently used for the Vibes SEO content — the same pipeline that produces the articles on vibesdj.io.

01The Architecture

Staged pipeline with filesystem as state store

A resumable pipeline architecture that runs without external infrastructure — each stage is independent, and the filesystem is the state store.

Domain logic lives in YAML config, so the system adapts to new content verticals without changing code.

02The Retrieval Logic

Clustering by meaning AND search intent

Embeddings alone group semantically similar keywords that Google treats as separate topics.

Adding SERP overlap data grounds the clustering in how content is actually discovered.

03The Runtime Design

Graceful degradation over hard failure

Each stage uses the execution model that fits its bottleneck — and the system degrades gracefully when components fail, rather than stopping.

  • Runs resume from where they stopped — failed stages don't repeat expensive API calls

The Hard Part

Pure embedding clusters looked semantically coherent but targeted different search intents — one article trying to rank for divergent queries performed poorly.

Quality scoring weights are first-pass intuition, not empirically calibrated.

Product Websitecontentpipeline.io ↗

Designed and built the product site for Pipe, a self-hosted CLI for SEO content production.

  • Interactive demos showing actual pipeline stages and output
  • Terminal-style UI reflecting the CLI experience

Built as a static Next.js 16 site.

03About

I'm a product engineer. I build tools shaped around how the work actually happens.

Ben Modigell

I own problems end-to-end and do my best work in small teams where engineers trust each other's scope. Six years at a digital experience agency, then frontend developer on a B2B webshop (Next.js, 15,000+ products) — building checkout, dashboards, search, and catalog systems. Got the developer position by presenting a private project to my boss. Same pattern as Vibes.

Both projects above started the same way: a workflow I kept running into, no tool that handled it well, so I built one. Both required building in domains I had no prior experience in: desktop audio tooling, recommendation engines, NLP pipelines, LLM orchestration. That's the part I enjoy most. I'm at my best when I can own a problem end to end.

FrontendReact, TypeScript, Next.js, Vite, Tailwind, Framer Motion
SystemsRust, Tauri, Python, SQLite
AI / MLOpenAI API, Ollama, Whisper
InfrastructureSupabase, Stripe, Vercel
ToolingClaude Code, Git, Windsurf
DesignFigma, Adobe XD
DomainSEO, UX, Audio Analysis

If you're building something worth caring about, I'd like to help.

© 2026 Ben Modigell

Next.js · Tailwind · Motion