Parth Mangrola

Full-stack engineer · Open to new roles



Versos

Turns a DJ set's tracklist into a playlist. Started as Tracklister in 2024 and now on its fifth version, going from one Next.js app to Cloudflare, a queued monorepo, and finally Effect and Apple Music.

Visit versos.studio

v5 · Versos · Jul 2026 – now

Tracklister, renamed. Paste text, a YouTube link, or a 1001Tracklists page, and get an Apple Music playlist, with a record of why each track was chosen.

what changed

Tracklister became Versos. the stack from v4 stayed, but the backend moved to Effect v4, and the product grew past pasting text.

how it works

  1. Press

    • paste a tracklist, a YouTube URL, or a 1001Tracklists URL. tracklists from The Lot Radio can be extracted too
  2. Parse

    • Jev or Gemini turns the text into artist and track pairs
    • if both fail, a deterministic parser takes over so the import still finishes
  3. Match

    • candidates come from Apple Music and the local catalog
    • Jev judges each one as the same recording, a related version, or a different song
  4. Playlist

    • the playlist is created in Apple Music, and can be public or private

every import stores a decision record: the input, which parser ran, the candidates for each track, and the match it chose. so when a match is wrong I can see exactly why.

radar

Release Radar became Radar. every week it scans your artists for Friday releases and builds a playlist of what came out.

tech stack

  • Frontend: TanStack Start, React 19, Tailwind v4, shadcn/ui, Jotai, Motion
  • Backend: Hono, Effect v4, tRPC, BullMQ
  • Data: PostgreSQL with Drizzle, Redis
  • AI: AI SDK with Gemini, Jev
  • Auth: Better Auth with email, password, and passkeys
  • Observability: OpenTelemetry, evlog, Axiom
  • Hosting: Railway
  • Tooling: Turborepo, Bun, Ultracite, Vitest

what’s next

moving off Railway onto Cloudflare. the plan is two Workers defined with Alchemy, D1 as the database, and Workflows in place of BullMQ and Redis, so there’s nothing always-on to pay for.