Projects

Things I've built. Click any project for status and next steps.

Knowledge Graphs

Agents

MyceliumShipped

Mycelium

Small-world agent networks with personality embeddings

A library for building Watts-Strogatz small-world graphs of AI agents where edges represent cognitive similarity in a 6-axis personality embedding (analytical/intuitive, convergent/divergent, abstract/concrete, critical/generative, individual/systemic, conservative/innovative). Three walk strategies (random, diversity-biased, cluster-bridging) select diverse ensembles. Budget-aware iteration mode lets consumers report costs and stops the walk when the cap is hit. A real-time visualization dashboard streams the graph, walk path, selections, radar charts, and event log over WebSocket.

TypeScriptWatts-StrogatzLangGraphWebSocketReact
CrucibleShipped

Crucible

Multi-agent idea-brewing that surfaces tension, not consensus

Routes your prompt through a small-world network of 110 cognitively diverse AI agents. Round 1 has every agent analyze the idea independently. In round 2, each agent only sees responses from its network neighbors (topology-shaped, not all-to-all), so tension emerges from structure rather than artificial cross-pollination. A meta-agent extracts a tension map highlighting agreements, disagreements, and outliers. Streams over SSE, with interactive network and architecture visualizations.

TypeScriptReactMyceliumClaude HaikuExpressViteTailwind
Office SimExperimental

Office Sim

Tycoon game where AI managers delegate real coding tasks

A pnpm workspace with seven packages (shared, runtime, orchestrator, server, mcp, game, client) that turn an isometric office tycoon game into a real coding shop. Managers use MCP tools to spawn tasks; employees execute them as Claude CLI subprocesses (--print --resume) in isolated git worktrees, each with persistent session history and a custom personality. Approval flows (ask/allow/deny) gate execution. Fastify + WebSocket backend, PixiJS isometric renderer, React + Zustand UI, fal.ai sprite generation, 319 unit tests across packages.

TypeScriptpnpmFastifyReactPixiJSZustandClaude CLIMCPfal.ai
BrainstormShipped

Brainstorm

CLI that expands ideas via cognitively diverse agent networks

A command-line tool that feeds an idea through a small-world Mycelium graph of 27 cognitively diverse personas (Devil's Advocate, First Principles, Wildcard, Alien Observer, Systems Thinker, Economist, Pre-Mortem Writer, Bayesian Updater, Metaphor Maker, and more). Selects a maximally diverse subset via a graph walk and streams each agent's response with colored output. Configurable agent count, walk length, model, and budget cap in USD. Includes a visualization dashboard, JSON export, and ships as a Claude Code skill.

TypeScriptMyceliumClaude CLICommanderChalk

Infrastructure

claude-cli-wrapperShipped

claude-cli-wrapper

Unified Anthropic Messages API across Claude CLI, Ollama, OpenRouter

Monorepo with a TypeScript provider abstraction and an Anthropic-compatible HTTP server. Routes any Claude SDK call through the Claude CLI (with full MCP, permissions, and worktree support), local Ollama models, or free OpenRouter models, behind one consistent Messages API. ProviderRegistry auto-routes by model ID; SessionMap persists conversations across requests. Custom providers slot in by extending the Provider interface.

TypeScriptNode.jsFastifyMCPClaude CLIOllamaOpenRouter
Vec3 ComparisonShipped

Vec3 Comparison

Chroma vs pgvector benchmark suite

End-to-end benchmarking pipeline comparing Chroma and pgvector across 10 datasets ranging from 10K to 2M vectors and dimensions from 32 to 1536. Measures throughput, latency percentiles (mean, P50, P99), recall@k, and resource usage; supports HNSW and IVFFlat indexes and multiple batch sizes. Containers are resource-capped (4 GB memory, 6 CPU cores) for fair comparison. React dashboard visualizes results, with JSON, CSV, plot, and LaTeX-table export. Built as an NTUA university project; the accompanying paper found pgvector roughly 2-5x faster on ingestion and lower-latency on queries, while Chroma kept consistently higher recall@k.

PythonChromapgvectorPostgreSQLDockerReactExpress
Microservices TicketingShipped

Microservices Ticketing

Multi-service Node platform with Kubernetes orchestration

Ticket marketplace built as a set of TypeScript microservices (auth, tickets, orders, payments, expiration) coordinated through NATS streaming, deployed to a local Kubernetes cluster via Skaffold. Shared error and event packages keep contracts consistent across services.

TypeScriptKubernetesNATSSkaffoldDocker

Machine Learning

wake-word-mlShipped

wake-word-ml

TC-ResNet8 wake word detector for Alfred

A 65K-parameter TC-ResNet8 trained on synthetic macOS TTS voices, hard negatives (Hey Albert, Hey Alfredo), and personal recordings. Processes 40-dimensional MFCCs from 1-second 16 kHz audio and exports to a roughly 250 KB CoreML model. Sub-millisecond per frame on Apple Silicon, well under 2% CPU at 12 inferences per second. The training pipeline supports retraining with more personal samples, additional ambient noise, and tunable sensitivity.

PythonPyTorchtorchaudiocoremltoolsMFCCTC-ResNet8
ImageCleanerAIExperimental

ImageCleanerAI

Strip burned-in annotations from medical images via AI prompting

Streamlit app that removes burned-in labels, measurement lines, arrows, and patient info from medical images by routing them through fal.ai generative models. Four selectable model tiers (FLUX Dev, Kontext Pro, FLUX.2 Pro, Gemini 3.1 Flash) with per-image cost estimates. Built to preprocess training datasets without manual masking, fighting shortcut learning where classifiers learn to associate markings with diagnoses rather than actual anatomy.

PythonStreamlitfal.aiFLUXGemini
DDH X-ray PreprocessingShipped

DDH X-ray Preprocessing

Classical OpenCV pipeline for cleaning hip x-rays

Modular Jupyter notebook that strips overlaid measurement lines and printed labels from DDH hip x-rays using classical OpenCV inpainting. Five sections, multiple detection strategies (percentile threshold, HoughLinesP, Sobel/DoG derivatives) for lines and (adaptive thresholding, MSER, hybrid union) for text. A mask registry tracks every detection, combines selected masks, and inpaints once. Cleaned output written to a separate folder so originals stay intact.

PythonOpenCVJupyterNumPyMatplotlib
HMM Activity RecognitionCoursework

HMM Activity Recognition

Classifying standing, walking, and running with HMMs

NTUA Pattern Recognition assignment 3. Hidden Markov Models implemented from scratch (PattRecClasses/) to classify three activities from accelerometer recordings, with a feature-engineered vs raw-signal comparison toggle. Two datasets in JSON format: a richer first recording with clear transitions and a shorter, noisier second one for harder evaluation.

PythonNumPyHMMJupyter
Sleep Stage ClassificationCoursework

Sleep Stage Classification

Multimodal EEG, EOG, EMG sleep staging in MATLAB

KTH project for automatic sleep staging from polysomnography. Three phases: EEG-only, EEG+EOG, EEG+EMG+EOG. Modular preprocessing (notch, high-pass, low-pass) with toggles, 30-second epoch segmentation, and time, frequency, and wavelet feature extraction including spectral entropy and eye-movement features. Grid-searched k-NN, RF, MLP, and SVM classifiers across single-modality and multimodal pipelines, with caching for filtered signals and features. Confusion matrices and PCA visualizations exported to Excel and LaTeX.

MATLABEDFWaveletsSVMSignal Processing

Apps

AlfredShipped

Alfred

Native macOS AI coach with wake word and Brainifai memory

A SwiftUI menu bar app powered by Claude CLI, with push-to-talk speech, streaming TTS, image drag-and-drop, and persistent memory backed by the Brainifai knowledge graph. An on-device CoreML wake word detector runs at under 2% CPU at 12 inferences/sec and requires 3 consecutive detections to fire, minimizing false positives. Multi-session conversations with a history sidebar; an alternate Fastify + React web UI is available for remote control.

SwiftSwiftUICoreMLClaude CLIMCPFastifyReact
Mosaic JournalActive

Mosaic Journal

Cross-platform journaling and photo memory app

Multi-platform journaling and photo management product. React Native + Expo mobile app, Next.js dashboard and landing site, and AWS Lambda microservices coordinated as an Nx monorepo with yarn. EAS handles builds and store submissions; OTA updates ship on staging and production branches. Built and shipped with the Mosaic Journal team.

React NativeExpoNext.jsAWS LambdaServerlessNxEAS
AballosActive

Aballos

Live map of public basketball courts and who's playing

An Expo + React Native app that turns public basketball courts into a live network. Real-time check-ins from Firestore show who is on each court, with 90-minute auto-expiry and one active check-in per user enforced client-side. Google Sign-In with first-time username picker, dark mode, and a liquid glass native tab bar on iOS. Court detail view lists active players by username and profile photo. Find a game, start a game, never pull up to an empty court.

Expo SDK 55React NativeExpo RouterFirebaseGoogle Sign-InTypeScript
SwipeNewsShipped

SwipeNews

Tinder-style news reader for iOS

SwiftUI iOS app for browsing news headlines via horizontal swipe gestures. MVVM architecture cleanly separates Models, Views, ViewModels, and Services, with on-device asset catalogs and native SwiftUI components throughout.

SwiftSwiftUIiOS
SnapGoalsCoursework

SnapGoals

Flutter UI/UX coursework: a goal-tracking concept app

NTUA UI/UX course final project. A Flutter prototype exploring goal tracking with photo-based progress capture. Built collaboratively with two teammates, with the course's UI/UX focus over production readiness.

FlutterDart
NTUAflixCoursework

NTUAflix

TMDb-backed movie discovery for the NTUA software engineering course

Team of four built a Netflix-style movie, TV, and people browser on top of the TMDb API. Next.js + Redux frontend with a custom multi-carousel and search-result views. Express backend with OpenAPI 3.0 documentation, Postman API tests, and a Python-driven CLI test harness for functional testing of every endpoint.

Next.jsReactReduxExpressTMDb APIOpenAPI 3.0PostmanPython
ECE Library DBMSCoursework

ECE Library DBMS

Flask + MySQL university library system

NTUA Database Systems coursework. A library management web app built on Flask using the Blueprints pattern, with MySQL as the backing store, WTForms for field validation and CSRF protection, and Faker-generated demo data. Modular per-entity routes and forms, Jinja2 templates in a shared folder, and full ER plus relational schema diagrams documented alongside the code.

PythonFlaskMySQLWTFormsJinja2Faker
Altify ComponentsArchived

Altify Components

React Native and web component library prototype

Cross-platform component library prototype built with Expo, React Native Web, and Storybook. Shared design primitives that render natively on iOS and Android, and as accessible components on the web.

React NativeExpoReact Native WebStorybook