Work

Selected software and systems

A record of production applications, research builds, and technical experiments. The projects vary. The common denominator is figuring out technically difficult software and building it.

Featured

Document Intelligence

Systems that turn documents, regulations, records, reports, and scanned source material into structured data, retrieval-ready chunks, cited answers, and evaluation-ready knowledge bases.

Scanned Document Processing

OCR + Vision-Language Processing Pipeline

Challenge

Built for an organization that needed to turn messy scanned reports into searchable, structured knowledge.

Solution

Self-hosted OCR + Vision-Language Model pipeline running on GPU with CUDA optimization.

Business value

The solution automated document processing and made large volumes of previously hard-to-use information easier to search, analyze, and reuse.

Technical deep dive

Self-hosted OCR + Vision-Language Model pipeline running on GPU with CUDA optimization. Handles scanned documents, complex layouts, tables, and embedded images. Benchmarked multiple OCR engines (PaddleOCR, Nanonets, MistralOCR, Deepseek OCR, OlmOCR...) against a representative corpus to select the optimal engine per document type. Includes intelligent chunking with semantic embedding for downstream RAG.

Implementation: PaddleOCR, MistralOCR, Nanonets, Deepseek OCR, OlmOCR, Gemini Vision, CUDA, Python, Pinecone

Legal Research Assistant

Agentic RAG with Source-Backed Retrieval and Reasoning

Challenge

Built for a legal-services organization dealing with dense, non-standardized regulations.

Solution

Multi-agent RAG pipeline for complex legal document corpora.

Business value

The system retrieves and explains relevant legal passages, helping users understand the right sections faster instead of manually searching through long regulatory documents.

Technical deep dive

Multi-agent RAG pipeline for complex legal document corpora. Custom AI chunker segments non-standardized legal text while preserving cross-references. Hybrid retrieval combines BM25 keyword search with vector similarity search, fused via Reciprocal Rank Fusion (RRF) for optimal ranking. LLM-as-Judge validation loop scores retrieved passages for relevance and completeness before answer generation. Metadata enrichment adds jurisdiction, document type, and date filters.

Implementation: LangGraph, Anthropic Claude, Pinecone, BM25, Vector Search, RRF, LLM-as-Judge, Metadata Enrichment, Python

Coverage Assistant

Retrieval and Reasoning Across Health Documents and Live Data

Challenge

Built for a healthcare organization that needed to answer complex questions about coverage, procedures, and documentation.

Solution

Retrieval-based assistant for Health AI.

Business value

The solution helped users get accurate, source-backed answers without depending on support staff for every request.

Technical deep dive

Retrieval-based assistant for Health AI. Answers questions about health coverage, procedures, and documentation requirements by retrieving from official health documents - PPTX presentations, SQL databases, and regulatory text. Self-hosted infrastructure: Supabase for data and authentication, Qdrant for vector storage, OpenRouter for multi-model LLM access. Hugging Face embeddings with reranking pipeline. Arize Phoenix observability for tracing retrieval quality and latency. Chunked document retrieval with relevance scoring, source attribution on every answer, and memory for multi-turn conversations about complex healthcare procedures.

Implementation: Qdrant, Supabase, OpenRouter, Hugging Face, Reranking, Arize Phoenix, Python, RAG

Academic Assistant

Multilingual AI Assistant with Document Retrieval and Live Schedule Data

Challenge

Built for an educational institution that needed to provide students and staff with reliable academic information.

Solution

Multilingual retrieval-based assistant for a Serbian higher-education institution, fielding student and staff questions about exam schedules, deadlines, and general academic information.

Business value

The assistant made schedules, exam details, and institutional content easier to access through a simple chat interface.

Technical deep dive

Multilingual retrieval-based assistant for a Serbian higher-education institution, fielding student and staff questions about exam schedules, deadlines, and general academic information. Hybrid retrieval splits factual exam queries to a live MySQL table so answers always reflect the current schedule, and routes everything else to semantic search over scraped institutional content (Pinecone, paraphrase-multilingual-MiniLM-L12-v2 embeddings, Gemini synthesis). Custom ingestion pipeline transliterates Cyrillic to Latin, strips HTML boilerplate, and chunks with RecursiveCharacterTextSplitter before embedding. Conversation history and authentication persisted in MySQL; Streamlit frontend for student-facing access.

Implementation: Pinecone, MySQL, Gemini, Streamlit, Hybrid RAG, paraphrase-multilingual-MiniLM-L12-v2, RecursiveCharacterTextSplitter, Python

Document Processing

AI-Agent Document Chunking Pipeline

Challenge

Built for teams working with large and inconsistent document collections.

Solution

AI agent-driven document chunking pipeline that analyzes document structure and contextualizes chunks with logical boundaries.

Business value

The pipeline improved AI retrieval quality by turning messy documents into cleaner, more meaningful sections before they were used by downstream systems.

Technical deep dive

AI agent-driven document chunking pipeline that analyzes document structure and contextualizes chunks with logical boundaries. The agent determines optimal split points based on semantic meaning, section hierarchy, and content type. Falls back to LangChain splitters (RecursiveCharacterTextSplitter, MarkdownHeaderTextSplitter) when agent segmentation is not cost-effective. Cleans headers and footers, normalizes metadata for vector storage, detects tables, and generates image descriptions for embedded visuals. Built for heterogeneous, large-scale document collections where standard splitters break: mixed formats, messy structure, tables, visuals, and schema normalization across sources.

Implementation: Python, AI Agents, RecursiveCharacterTextSplitter, MarkdownHeaderTextSplitter, Table Detection, Metadata Normalization, Pinecone

AI Evaluation

LLM Evaluation and Benchmarking System

Challenge

Built for a team developing AI question-answering systems.

Solution

Automated evaluation and testing pipeline for LLM question-answering, retrieval quality, and answer reliability.

Business value

The framework helped compare models, prompts, and retrieval strategies so the team could improve quality with measurable feedback instead of guesswork.

Technical deep dive

Automated evaluation and testing pipeline for LLM question-answering, retrieval quality, and answer reliability. Built custom metrics alongside DeepEval framework and NLP algorithm metrics for comprehensive benchmarking of retrieval and generation quality. Golden datasets enable rapid comparison of prompting strategies, chunking approaches, and model selections across different providers. Continuous improvement pipeline that feeds evaluation results back into system tuning.

Implementation: Python, DeepEval, Custom Metrics, NLP Metrics, Benchmarking, OpenAI, Anthropic

AI Agents & Custom Software

Applications where AI retrieves context, calls coded tools, prepares outputs, updates records, supports decisions, and routes work for human approval where needed.

Product Support Assistant

AI Product Support and Installation Assistant

Challenge

Built for an established German company selling technical products with detailed specifications, use cases, and installation requirements.

Solution

Website assistant that answers questions about product catalog, compares multiple products side-by-side, and delivers detailed installation instructions - all in German.

Business value

The assistant helped customers find the right product, understand installation steps, and compare options more easily, reducing repetitive support questions and improving self-service.

Technical deep dive

Website assistant that answers questions about product catalog, compares multiple products side-by-side, and delivers detailed installation instructions - all in German. Collects contact details through guided flows with suggested questions to reduce friction. Analytics dashboard tracks conversations, user feedback, and conversion paths. FAQ system with confidence scoring to speed up self-service resolution.

Implementation: Next.js, OpenAI, Analytics Dashboard, Lead Capture, FAQ System, Python

Building Codes Assistant

RAG System for Building Codes and Regulations

Challenge

Built for builders and architects working with complex construction regulations.

Solution

Specialized RAG system for building code and construction regulation documents.

Business value

The assistant retrieves and explains the right regulatory passages, helping users understand requirements faster and reducing the risk of relying on the wrong interpretation.

Technical deep dive

Specialized RAG system for building code and construction regulation documents. Parses legal text with structural awareness - chapters, sections, subsections, and amendments - to maintain hierarchical context. Retrieves exact passages with citation metadata (document, chapter, section, paragraph) so every answer points to the specific regulatory source. Source verification step cross-checks retrieved citations against the original document to prevent hallucinated references.

Implementation: Python, RAG, Citation Engine, Legal Document Parsing, Source Verification, Pinecone

Business Analytics

Text-to-SQL + Vector Retrieval Analytics System

Challenge

Built for an analytics-focused organization that needed easier access to both database records and written knowledge.

Solution

Natural-language analytics interface combining structured SQL querying with semantic vector search.

Business value

The system allowed users to ask questions in natural language instead of writing SQL or manually searching through documents, while automatically generating charts and visualizations to make insights easier to understand.

Technical deep dive

Natural-language analytics interface combining structured SQL querying with semantic vector search. Routes queries between OpenAI and Google Gemini based on complexity. Supabase integration for data management, authentication, and real-time sync. Automated retrieval with explanation generation and analytics tracking dashboard.

Implementation: Text-to-SQL, OpenAI, Google Gemini, Supabase, Vector Search, Python, Hybrid RAG

Product Documentation

Autonomous Documentation Generation Agent

Challenge

Built for a platform that had no existing documentation.

Solution

Autonomous crawling agent that structures platform documentation into a queryable knowledge base.

Business value

The system explored the application, extracted product knowledge from its screens and workflows, and generated structured user guides automatically. As the product changed, the knowledge base could be regenerated and kept up to date.

Technical deep dive

Autonomous crawling agent that structures platform documentation into a queryable knowledge base. Crawls unstructured sources, extracts meaningful content, and organizes it for team and customer access. Generates step-by-step instructions on how to use the web app based on documented features and workflows. Self-updating architecture that detects documentation changes and regenerates affected sections.

Implementation: Python, Web Crawling, Knowledge Base, Content Extraction, Auto-Update Pipeline

Company Knowledge Assistant

Retrieval-Based Knowledge Query Interface

Challenge

Built for internal teams that needed faster access to company knowledge.

Solution

Query interface over generated knowledge bases.

Business value

The query interface reduced time spent searching through documentation by returning specific answers with source attribution.

Technical deep dive

Query interface over generated knowledge bases. Delivers instant, specific answers from organizational data - not web search. Retrieves from collected company knowledge with source attribution. Designed for teams that need fast answers without hunting through documentation.

Implementation: Python, RAG, Vector Search, Source Attribution, Next.js

Visual Knowledge Assistant

Multimodal Visual RAG Assistant

Challenge

Built for environments where important information was spread across both text and visual materials.

Solution

Multimodal extension to the text-based assistant.

Business value

The system allowed users to ask questions and retrieve relevant answers from diagrams, manuals, and image-heavy documents.

Technical deep dive

Multimodal extension to the text-based assistant. Users ask questions in natural language and the system retrieves answers directly from a vector store of images - product manuals, installation diagrams, technical sheets - without OCR or caption generation. ColPali and ColQwen encode each image into late-interaction embeddings that capture fine-grained visual and textual features. At query time, the user's question is embedded and matched against this image vector store via similarity search, returning the most visually and semantically relevant pages. Answers are grounded in the retrieved image content combined with text documentation.

Implementation: ColPali, ColQwen, Multimodal RAG, Next.js, Python, Pinecone

Factory Data Assistant

AI Interface for Hierarchical Factory Data

Challenge

Built for a manufacturer with complex machine specifications and maintenance records.

Solution

Natural language interface for deeply nested tree/folder structured data.

Business value

The system allowed workers to ask questions in plain language instead of manually searching through nested folders and technical files.

Technical deep dive

Natural language interface for deeply nested tree/folder structured data. Parses hierarchy of machine specifications, maintenance schedules, and operational status stored in folder structures. Plain-language queries return precise answers without manual navigation through nested directories.

Implementation: Python, LangChain, OpenAI, Tree Parsing, Structured Data, FastAPI, React

AI Receptionist

AI Voice Receptionist and Booking System

Challenge

Built for a service business that was missing calls and losing booking opportunities.

Solution

AI that answers your phone calls, takes bookings, and handles the full reservation flow through natural conversation.

Business value

The AI receptionist answered calls, guided customers through reservations, and reduced the need for staff to handle repetitive phone conversations.

Technical deep dive

AI that answers your phone calls, takes bookings, and handles the full reservation flow through natural conversation. Built on SIP with real-time speech processing, it integrates directly into your dispatch system - no hold times, no extra operators, no missed calls.

Implementation: LiveKit, Google Gemini, Python, Prompt Engineering, Validation Flows, Webhook Orchestration

Company Assistant

Company Knowledge AI Assistant

Challenge

Built for a company that needed clients and employees to quickly understand its products, services, and internal policies.

Solution

Retrieval-based assistant over company documentation - product specs, service descriptions, policies, and FAQs.

Business value

The assistant improved self-service and revealed common knowledge gaps through conversation analytics.

Technical deep dive

Retrieval-based assistant over company documentation - product specs, service descriptions, policies, and FAQs. Two response modes: concise answers for quick lookup, and expanded mode that retrieves additional context from related documents for deep dives. Auto-generated suggested questions based on retrieved context guide users to relevant follow-ups. Analytics track which questions are asked most and where the knowledge base has gaps.

Implementation: Next.js, OpenAI, RAG, Vector Search, Conversation Analytics

Finance Assistant

AI-Powered Finance Tracking and Planning Platform

Challenge

Built for a fintech startup creating a more personal way for users to understand their money.

Solution

Full-stack AI finance platform with WhatsApp as the primary user channel.

Business value

The platform turned income, spending, goals, and financial questionnaires into conversational insights and weekly summaries.

Technical deep dive

Full-stack AI finance platform with WhatsApp as the primary user channel. Built and integrated the WhatsApp bot end-to-end: onboarding flow guides users through account setup, income categorization, and goal definition via natural conversation, and weekly AI-generated summaries are delivered directly to WhatsApp with spending breakdowns, trend analysis, and goal progress. AI layer analyzes financial profiles to generate personalized advice and runs calculations on income, expenses, and goals. AI-generated Pro Plans built by asking users detailed questions about their financial situation, risk tolerance, and objectives - producing structured, actionable financial roadmaps. Dynamic UI updates reflect personalized insights per user.

Implementation: OpenAI, Next.js, TypeScript, Python, FastAPI, PostgreSQL, PG Vector, WhatsApp API

SaaS Spend and License Tracker

Active Apps, Expiring Licenses, and Team Settings

Challenge

Built for a team that could not answer three basic questions without a spreadsheet: which apps are we paying for, which licenses expire soon, and who owns the settings.

Solution

A rich dashboard over the full SaaS inventory: spend and stack charts, tables the team can actually work from, and alerts when licenses are about to expire.

Business value

The dashboard puts active apps, spend, expiry reminders, and user/team settings on one screen so those questions do not require another CSV export.

Technical deep dive

A rich dashboard over the full SaaS inventory: spend and stack charts, tables the team can actually work from, and alerts when licenses are about to expire. Widgets cover the live app list, a tech-stack overview, licenses close to expiry, the largest expenditures, and an app-recommendation panel. Settings cover individual users and teams. Light theme and widget layout were rebuilt so the same data is readable on desktop. Incoming CSV and scrape files are cleaned, deduplicated, classified by category and use, given short descriptions, and loaded with working logos instead of broken placeholders.

Implementation: Next.js, React, TypeScript, CSV Import, Data Classification

Cafe Operations Software

Stock Tracking and Daily Reporting

Challenge

Built for a cafe that needed to track stock and close the day with a report, instead of rebuilding the numbers by hand.

Solution

Custom web app for daily cafe operations: stock levels, movements through the day, and a daily report the team can close against.

Business value

The app keeps inventory movements and the daily close on the same records, so the team does not have to maintain a separate spreadsheet.

Technical deep dive

Custom web app for daily cafe operations: stock levels, movements through the day, and a daily report the team can close against. Frontend and backend were built together so inventory changes write into the same records the end-of-day report reads. Deployed as a production web app the staff can use during service, not a prototype.

Implementation: Next.js, TypeScript, Supabase, Inventory Tracking, Daily Reports

Data Infrastructure & Product

Interfaces, pipelines, apps, authentication, and deployment work for production products and existing codebases.

Market Intelligence

Large-Scale Web Data Extraction Pipeline

Challenge

Built for a market-intelligence company that needed structured data from thousands of websites.

Solution

Filtered a large candidate URL set down to usable sites before extraction.

Business value

The pipeline extracted pricing, features, and company metadata from more than 2,000 websites and turned messy public data into usable market intelligence.

Technical deep dive

Filtered a large candidate URL set down to usable sites before extraction. Crawl4AI as the primary scraping engine for high-performance, JavaScript-aware crawling at scale. Proxy rotation and browser automation handle difficult, JavaScript-heavy, and protected sites. Vision AI fallback (Gemini) processes sites that block even headless browsers. Pydantic schema enforcement ensures structured, consistent output regardless of source heterogeneity. Extracted pricing tiers, feature lists, and company metadata with precision.

Implementation: Python, Crawl4AI, Gemini Vision, Pydantic, Proxy Rotation, Stealth / Anti-Bot

Venue Discovery

Conversational Venue Discovery and Outreach System

Challenge

Built for an event-planning company that needed to help users find suitable venues faster.

Solution

Conversational AI using Google Places API for venue discovery.

Business value

The assistant guided users from requirements gathering to venue discovery, ranking, and personalized outreach.

Technical deep dive

Conversational AI using Google Places API for venue discovery. Follow-up questioning narrows requirements until search criteria are clear. Web scraping and reranking filter results. Generates personalized outreach emails for selected venues. End-to-end flow from discovery to contact in a single conversation.

Implementation: Google Places API, Python, Web Scraping, Reranking, Email Generation, React

Voice AI App

Real-Time AI Voice Mobile Application

Challenge

Built for a mobile-app startup that wanted users to interact with AI through voice.

Solution

React Native mobile application with AI voice conversations.

Business value

The solution delivered a production-ready mobile experience with real-time speech interaction, authentication, and subscription management.

Technical deep dive

React Native mobile application with AI voice conversations. Vapi.ai handles real-time speech processing. Supabase provides authentication and data persistence. RevenueCat manages In-App Purchase subscriptions and monetization. Production-ready iOS build for App Store deployment with full subscription lifecycle handling.

Implementation: React Native, Expo, Vapi.ai, Supabase, RevenueCat, WebRTC, TypeScript

Advanced Research & System Experiments

Experiments and advanced builds around graph retrieval, fine-tuning, local models, voice systems, simulation, and research workflows.

Drug Discovery

AI-Powered Molecular Simulation and Research Pipeline

Challenge

Built for a biotech research team working on drug-discovery workflows.

Solution

End-to-end molecular simulation pipeline for precision medicine research.

Business value

The pipeline helped automate complex molecular research tasks and made research papers and clinical data easier to retrieve inside one workflow.

Technical deep dive

End-to-end molecular simulation pipeline for precision medicine research. Automated protein-ligand docking with AutoDock Vina and GNINA. RAG system built on research papers and clinical datasets, integrated into CellType CLI for interactive research analysis. Proposed AxialBridge patient app for EULAR - ML/CV-based Axial Spondylitis detection from MRI and ultrasound imaging.

Implementation: AutoDock Vina, GNINA, RAG, ML/CV, MRI Analysis, Python, CellType CLI

Graph-Powered Research

Hybrid Graph + Vector RAG System

Challenge

Built for teams that needed better answers to complex, multi-step questions.

Solution

Neo4j knowledge graph combined with vector embeddings for hybrid retrieval.

Business value

The system combined relationship-based reasoning with semantic search to retrieve more useful context than either method alone.

Technical deep dive

Neo4j knowledge graph combined with vector embeddings for hybrid retrieval. Outperforms vector-only approaches on multi-hop queries by following relationship paths. Outperforms graph-only approaches on semantic similarity matching. Best of both architectures for complex reasoning tasks.

Implementation: Neo4j GDS, Vector Search, Hybrid RAG, Knowledge Graph, Python, Embeddings

Contextual Voice Assistant

Multi-Agent Voice System with LangGraph

Challenge

Built for an experimental AI platform that needed more engaging voice conversations.

Solution

LangGraph state machine with conditional edges for contextual routing between conversation personas.

Business value

The system routed users between different AI personalities and created a more dynamic spoken interaction experience.

Technical deep dive

LangGraph state machine with conditional edges for contextual routing between conversation personas. Real-time speech classification determines which agent handles each user turn. ElevenLabs TTS for natural voice output.

Implementation: LangGraph, LangChain, Google Gemini, ElevenLabs TTS, Speech Recognition, Python

Custom Model Training

LLM Fine-Tuning Automation Pipeline

Challenge

Built for teams customizing language models.

Solution

Automated SFT pipeline via API with pre-flight validation.

Business value

The automation reduced failed training runs by validating files, estimating costs, and monitoring fine-tuning jobs before mistakes became expensive.

Technical deep dive

Automated SFT pipeline via API with pre-flight validation. Training file format checking prevents costly failed jobs. Cost estimation before submission. Real-time monitoring of training progress and evaluation metrics. Reusable system that protects against common fine-tuning mistakes.

Implementation: Python, SFT, OpenAI API, Training Validation, Cost Estimation, Monitoring

Local Model Lab

Local Apple Silicon LLM Training Pipeline

Challenge

Built for developers who wanted to experiment with model training locally instead of relying on cloud infrastructure.

Solution

MLX-based pipeline for Apple Silicon: LoRA fine-tuning, embeddings generation, reranking, and contrastive learning.

Business value

The pipeline made local fine-tuning, embedding generation, reranking, and benchmarking easier to run on Apple Silicon.

Technical deep dive

MLX-based pipeline for Apple Silicon: LoRA fine-tuning, embeddings generation, reranking, and contrastive learning. Core tasks benchmarked with MTEB for quality validation. High-throughput local training on Apple Silicon with BF16 precision. Self-hosted training without cloud dependency.

Implementation: Python, MLX, LoRA, Apple Silicon, MTEB, BF16, InfoNCE

Have a software problem or project in mind?

Tell me what you are trying to build, improve, or automate. I can take on the complete build, a defined technical scope, or work with your existing team.

Discuss a project