Dragan Apostolski

Dragan Apostolski

Full-Stack & AI Engineer · Building AI products end-to-end

Seven years of delivering production software across the stack — from high-traffic fintech at Bitstamp to AI-powered products voice agents, chatbots, automations. Comfortable owning features end-to-end: backend, frontend, infrastructure, and the AI layer on top.

Ljubljana, Slovenia contact@apostolski-dragan.com apostolski-dragan.com github.com/dragan-apostolski linkedin.com/in/dragan-apostolski

Experience

Software Engineer · Bitstamp
Aug 2021 — Dec 2025

Technical lead for frontend and REST API work on a small team at one of the world’s longest-running crypto exchanges (4M+ customers).

  • Contributed to a secure, scalable pipeline for migrating 1M+ users from Bitstamp to Robinhood after the acquisition.
  • Built UI components and REST APIs for Travel Rule — a regulatory-compliance feature collecting additional information on crypto withdrawals and deposits for 100k+ users.
  • Developed and maintained frontend and backend features across Bitstamp’s web application.
  • Migrated the back-office frontend from Django templates to Nuxt — unifying frontend code and design tokens.
Python Django Vue.js Nuxt.js JavaScript Go PostCSS AWS Docker
Software Engineer · Informa Studio
Jan 2020 — Jul 2021
  • Implemented a new frontend from scratch (from Figma designs) using Django templates, JavaScript, HTML & CSS.
  • Rewrote and fully migrated a legacy codebase from Ruby on Rails to Django, affecting thousands of users.
  • Built a system of Python web-scrapers triggered by cron jobs — aggregating data for 10k+ companies across 4 countries with rate-limiting, IP-rotation, and PostgreSQL storage.
  • Developed backend services, REST APIs, and integrations on a Django back-office platform — serving ~100k users across 4 countries with a multi-tenant architecture (django-tenants).
Python Django JavaScript HTML CSS

Selected Projects

AI Sales Assistant for Photography Store
apostolski-dragan.com

Agentic RAG assistant for a camera store: catalog answers on price, stock and specs, plus how-to answers grounded in 65 camera manuals. LangGraph + Claude agent, hybrid pgvector/full-text retrieval, cross-encoder reranking. Built a Ragas eval harness to catch invented specs; it drove the fixes: chunking, HNSW recall, reranker swap.

Python FastAPI LangGraph Claude pgvector Ragas
Kolpa Adventures Booking
apostolski-dragan.com

Custom booking platform for a Slovenian rafting company, built end-to-end as sole product engineer. Multi-step booking flow with embedded Stripe payments, automated legally-required fiscal receipts via Slovenia’s FURS/Minimax integration, confirmation emails, and a staff admin panel.

Next.js TypeScript Tailwind Supabase Stripe Resend
PharmaLinea Voice Agent
apostolski-dragan.com

Voice-AI sales assistant that qualifies inbound leads and answers catalog and sales questions, then writes qualified leads to an internal database for the sales team to pick up. Built on LiveKit (Python) with Gemini Flash and ElevenLabs, embedded in their landing page via a React component.

Python React LiveKit
AI Dental Receptionist
apostolski-dragan.com

Production-grade voice AI receptionist for dental clinics: real-time phone conversations and calendar-synced appointment booking. STT-LLM-TTS architecture on LiveKit (Claude and Gemini, ElevenLabs and Soniox for speech), tuned to balance latency and accuracy. Reachable by phone via Twilio (SIP).

Python LiveKit Twilio Soniox PostgreSQL
Photography Portfolio
photography.apostolski-dragan.com

Personal photography portfolio — a Nuxt.js app with a custom gallery optimized for performance and aesthetics, plus an automated image pipeline with Cloudflare R2 CDN delivery.

Nuxt.js Vue Tailwind Cloudflare R2