Projects
Things I've built. Click any project for status and next steps.
Knowledge Graphs
ActiveBrainifai
Federated personal knowledge graph for Claude
A multi-instance federated knowledge graph that ingests from Slack, GitHub, ClickUp, Apple Calendar, Twitter/X, Git repos, and Claude Code sessions, then routes data through an AI orchestrator (Claude Haiku) into specialized per-instance graphs (coding, manager, project-manager, EHR, researcher, general). Each instance gets its own Kuzu database and MCP server. Schema covers atom, entity, and episode nodes with spreading activation, episodic recall, and scheduled maintenance passes; cross-source identity resolution links the same person across Slack, GitHub, and email.
ActiveEHR-Clinical-Assistant
Does graph retrieval beat SQL for clinical Q&A?
A thesis experiment rigorously comparing graph-based retrieval against SQL and LLM-only baselines for clinical question answering. Synthetic dataset of 2000+ patients (Synthea, seed 42) with 7 node types and 12 relationships in Kuzu, mirrored in Postgres. 80-question evaluation harness covering simple lookup, multi-hop, temporal, cohort, and reasoning questions. A unified provider abstraction routes the same harness through Claude (via MCP) and Ollama, plus a doctor-facing chat UI with streaming responses, an interactive Sigma.js patient graph, and document generation (referral letters, SOAP notes).
Agents
ShippedMycelium
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.
ShippedCrucible
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.
ExperimentalOffice 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.
ShippedBrainstorm
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.
Infrastructure
Shippedclaude-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.
ShippedVec3 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.
ShippedMicroservices 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.
Machine Learning
Shippedwake-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.
ExperimentalImageCleanerAI
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.
ShippedDDH 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.
CourseworkHMM 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.
CourseworkSleep 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.
Apps
ShippedAlfred
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.
ActiveMosaic 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.
ActiveAballos
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.
ShippedSwipeNews
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.
CourseworkSnapGoals
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.
CourseworkNTUAflix
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.
CourseworkECE 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.
ArchivedAltify 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.