PROJECTS / ENGINEERING WORK

Systems I've designed, built, integrated, tested, and shipped.

Explore the products, platforms, AI systems, automation workflows, and internal tools behind the work — pick a system and inspect how it works.

10 PROJECTS

01 / AI PLATFORM

01 / 10

READMINDME

Knowledge-grounded AI platform.

PROBLEM

Generic AI assistants hallucinate because they don't know the application's knowledge base. For a study tool, a made-up verse breaks the product's promise.

SYSTEM

TYPE

AI / RAG

STACK

FastAPI · PostgreSQL · pgvector · OpenAI

A production-shaped RAG platform — retrieval, personalization, moderation, and operations — built solo.

View case study →

PRIVATE / NDA

LegalTech Platform — six internal systems.

Full-Stack Developer · 6 Internal Systems · Active Production

Architecture and engineering patterns shown with sensitive details removed — no company name, links, or screenshots.

01

Dynamic Document Generation Pipeline

Legal forms are complex — static templates break the moment data changes. Built a form-driven pipeline where users complete a SurveyJS questionnaire embedded in the storefront, with answers auto-saving as they go. On submission the data triggers an n8n workflow that merges it into a Word template, converts to PDF, and delivers it by email. Paired with an internal admin app — built on the SurveyJS form builder — where staff manage forms, templates, and bundles without a developer, with all writes routed through a resource-style API rather than direct database access.

ReactViteSurveyJSSupabasen8n

Zero manual document handling, and non-developers can ship new form types.

02

Anti-Piracy Document Fingerprinting

Self-help legal documents are trivially resold once they leave your system. Built a two-part fingerprinting subsystem: a Node/Express/TypeScript microservice that stamps formatted footers into .docx files over a REST API (bold, italic, color, font, alignment), and a companion service that injects per-purchase identity — user ID, email, timestamp — into the generated PDF's metadata via pdf-lib. Both are called from the document pipeline, so every delivered file is uniquely traceable to the buyer.

Node.jsExpressTypeScriptpdf-libDocker

Every delivered document carries an invisible, per-buyer fingerprint.

03

Court-Record Lead Classification Engine

Daily public court-record exports arrive as zipped, caret-delimited flat files with separate lookup tables for party types, case types, and judges. Built a Node/Express/TypeScript backend that parses the feed, filters to active family-law matters filed within 180 days, detects trigger events in the docket — service returned, motion to withdraw — and classifies each unrepresented party into one of four lead profiles with priority tiers: newly filed, recently served, dropped by counsel, or simply unrepresented. Leads are enriched with human-readable labels and batch-upserted behind a CRUD API.

Node.jsExpressTypeScriptSupabasen8n

A raw daily court feed becomes a prioritized, deduplicated lead queue with no manual triage.

04

Multi-Party Dispute Scheduling System

Dispute negotiations require all three parties — creator, receiver, and mediator — to agree on a meeting time. Built a scheduling system where a creator proposes a date, the receiver accepts or declines, and on agreement all three parties are notified automatically. Designed for legal dispute workflows where neutral coordination matters.

ReactNode.jsSupabaseGoogle Calendar

Three-party consent model with automated notifications on agreement.

05

Containerized Scheduling Service

The scheduling workload outgrew a single process once reminders, confirmations, and calendar sync all needed to survive restarts. Split it into an Express API and a separate BullMQ worker over Redis, with Postgres for state and migrations applied automatically on container start. The whole stack — API, worker, database, cache, Traefik reverse proxy — ships as a documented compose deployment with a written production runbook.

Node.jsExpressBullMQRedisPostgresTraefik

Background jobs survive restarts; the full stack deploys from one documented runbook.

06

Mediator Rule Engine with Wear OS Integration

Mediators need to trigger timed actions during sessions — reminders, check-ins, delays — without interrupting the flow. Built a rule engine with three rule types: instant (fires immediately), delay (fires after a set timer), and cron (fires on a set schedule). Rules are configured in a frontend dashboard, mapped to named buttons, and surfaced on a Wear OS watch so the mediator can fire any rule with a single button press. Also includes a voice command system for natural-language scheduling.

ReactNode.jsWear OSAndroid

Frontend rule configuration → one-tap execution from a watch during live sessions.

REPEATABLE SHAPES

Patterns behind the work.

Different domains, same engineering shapes — that's what makes the next system predictable to build.

AI / RAG

Ground the model before it speaks.

AUTOMATION

Events flow; nothing is handed off by hand.

INTEGRATION

External systems become one system.

QA

Shipping means proving it works.

DATA

Raw input becomes usable answers.

Want a system like these?

Tell me what you're trying to build, automate, fix, or improve — I'll map the system it needs.