Skip to main content

Projects

These projects span storytelling, fitness, games, parenting, and weather forecasting. That's deliberate - the approach is the same regardless of domain: find a space where people navigate by intuition, map the underlying structure, and build a system that makes it clear.

Each one was designed, built, and shipped independently.

Loreteller

Storytelling Toolkit for 25,000+ Creators

A library of 75+ free storytelling frameworks and a $79 premium toolkit of 29 research-backed systems for character psychology, story structure, and worldbuilding. Used by novelists, screenwriters, and game masters who want structured methods, not vague craft advice. Many creators struggle with the chaos of unstructured creativity. I know I do.

75+ Free Resources
29 Premium Frameworks
Research-Backed
Visit

How It Works

Loreteller provides three tiers: free reference resources for mid-session lookup, educational articles that teach craft concepts, and a premium toolkit of guided frameworks for deep creative work. The premium frameworks turn psychological research into step-by-step character, plot, and worldbuilding systems that produce concrete output - not just concepts to understand.

Why I Built It

Many creators struggle with the chaos of unstructured creativity. I know I do. I spent over a decade curating these tools, and building my own. Traditional writing advice tends to be vague and inspirational rather than practical. Loreteller addresses this by providing concrete, research-backed frameworks that transform creative challenges into systematic processes, making storytelling more reliable and efficient.

Technical Highlights

Static Site Generator: Eleventy (11ty) for fast performance
Backend: Supabase (auth, database, storage) + Stripe Checkout
Content Management: Nunjucks templates with JSON data, premium content in Supabase Storage
Performance Focused: Static site architecture with 100+ pages

Character Forge

Psychology-Driven Character Builder

An interactive character creation tool that guides writers through 10 psychology-backed layers - from values and wounds to defenses, personality, and arc. A tension engine cross-references every choice, surfacing 5,000+ pre-authored resonances and contradictions. Character tools either generate random traits in silos or ask vague questions with no framework for answering.

10-Layer Build
200+ Cards
Tension Engine
Visit

How It Works

Writers select cards across 10 sequential psychological layers. At every step, the tension engine analyzes how each new selection interacts with all previous choices - surfacing resonances (layers reinforcing each other, creating blind spots) and tensions (layers contradicting each other, creating dramatic potential). The result is a character with built-in internal conflict and a clear arc trajectory.

Why I Built It

Character creation tools either generate random traits in silos or ask vague questions like 'What is your character's greatest fear?' with no framework for answering. The Forge turns Loreteller's research-backed psychology frameworks into an interactive builder where the system does the cross-referencing. Writers make choices; the Forge shows how everything connects.

Technical Highlights

Framework: Astro + React with Supabase backend
Research Base: Schwartz Values, Schema Therapy, HEXACO, Attachment Theory, Narrative Psychology
Tension Engine: 16 cross-reference types, 5,000+ authored insights
Sharing: Public URLs for character profiles and relationship analyses

The Neurotype Assessment

Cognitive System Analysis

A comprehensive assessment that maps your biological hardware across 6 dimensions of processing to identify your unique neuro-cognitive profile. I wanted to build a tool that didn't just tell people who they are, but how their machine works.

6-Dimensional Model
Hardware Analysis
Ecological Fit
Visit

How It Works

The assessment uses the Neuro-Adaptive Precision-Allocation (NAPA) Model to analyze an individual's 'current baseline state.' Instead of assigning fixed personality types, it measures where a user falls on 6 biological spectrums (like Sensory Gating or Dopaminergic Drive). It then generates a detailed profile that explains the 'metabolic cost' of their processing style and offers strategies for environmental adaptation.

Why I Built It

Current personality models often ignore the 'cost of operation.' I wanted to build a tool that didn't just tell people *who* they are, but *how* their machine works. By understanding our biological hardware -our input filters, our energy systems, our threat detection -we can stop trying to fix ourselves and start engineering environments where we naturally thrive. This is about moving from 'Pathology' to 'Ecological Fit.'

Technical Highlights

Framework: Astro for high-performance static rendering
Methodology: NAPA (Neuro-Adaptive Precision-Allocation) Framework
Research Base: Synthesis of Predictive Coding, Monotropism, and HiTOP frameworks
Design: Accessible, spectrum-based visualization of complex data

Cards From Space

Gamified NASA Image Collection

A collectible card experience built on nearly 20,000 images from NASA's archives spanning 60 years of space exploration. Open packs, discover cards across historical eras, and build a collection that traces humanity's journey to the stars. My son asks every night if we can go look at the sky. When I ask where he'd go, he always says the moon.

~20,000 Cards
Pack Opening Experience
Tiered Rarity System
Visit

How It Works

Players open packs containing 7 cards drawn from NASA's image archives. Each card belongs to a historical era (Mercury, Gemini, Apollo, Shuttle, ISS, Modern) and has a rarity tier based on engagement metrics. Duplicate cards convert to stardust, a currency for crafting specific cards. Eras unlock progressively as players open more packs, creating a journey through space history.

Why I Built It

Every night before bed, my son asks if we can go look at the night sky. When I ask him where he'd go if he could go anywhere, he always says the same thing: "The moon." I built Cards From Space so he can explore 60 years of space history as collectible cards - turning NASA's archives into something a five-year-old can treasure.

Technical Highlights

Framework: Astro + Svelte with TypeScript
Backend: Supabase (auth, database, cloud sync) + Stripe (donations)
Image Source: NASA Image API with proxy caching
Card Effects: GPU-optimized tier effects (lava layers, sparkles, shine sweeps)
Hosting: KnownHost (LiteSpeed) with Cloudflare CDN

One Great Big Family

Interactive Ancestry Journey

An interactive scroll-driven experience that traces the unbroken chain of mothers from you back to LECA, the last eukaryotic common ancestor - grandmother of every animal, plant, and fungus. Each stop is a grandmother - a real individual who lived, survived, and had a daughter. A tree is your cousin.

25 Stops
Scientifically Grounded
DNA Helix Visualization
Visit

How It Works

The experience uses scroll position to navigate through 25 stops on the tree of life. Each stop represents a common ancestor - the grandmother you share with chimps, with mushrooms, with trees. A DNA helix animates alongside the scroll, and the background shifts from warm (present) to cold (deep time). Circular portraits show what each grandmother looked like, based on fossil evidence or scientific reconstruction.

Why I Built It

Evolution is usually taught as abstract lineages and branching trees. I wanted to make it viscerally personal - not 'humans evolved from apes' but 'you have a grandmother who was also the grandmother of every chimpanzee alive today.' The thesis lands at the end: if the chain of mothers connects you to chimps, it also connects you to mushrooms, trees, and bacteria. We are one great big family.

Technical Highlights

Framework: Astro 4.x with MDX content collections
3D Visualization: Three.js WebGL for DNA helix animation
Animation: GSAP ScrollTrigger for scroll-driven transitions
Styling: Tailwind CSS with CSS custom properties for color interpolation
Typography: Literata (Google Fonts) for literary feel
Accessibility: Keyboard navigation, reduced motion support

The Renaissance Child Framework

Parenting by Design, Not by Default

A comprehensive, values-driven parenting framework that connects developmental psychology to daily family life. Built on 13 core values, 17 practical principles, and grounded in Erikson's stages and Gopnik's gardening philosophy. I wanted a coherent system for the parenting decisions I was already making every day.

13 Core Values
17 Daily Principles
Developmental Roadmap
Visit

How It Works

The Renaissance Child is built on a central shift: seeing children as people to connect with rather than problems to solve or products to manufacture. At its heart is the gardening metaphor - rather than crafting a child into a predetermined outcome, the parent creates rich, diverse, safe conditions for natural flourishing. The framework provides the specific seeds (values), soil (principles), and tending practices (activities, guidance) needed. The six areas - Philosophy, Principles, The Parent, Development, Enrichment, and Success - are meant to be accessed flexibly. Start wherever resonates, follow your child's developmental stage, and let curiosity guide enrichment choices.

Why I Built It

I created this framework because I wanted a coherent system for the parenting decisions I was already making every day. It started as personal notes - ideas drawn from developmental psychology books, organized into something I could actually reference during the messy reality of family life. I synthesized established research (Erikson, Gopnik, Baumrind, Gardner) into a practical, structured approach that connects the 'why' of child development to the 'what do I do today' of family decisions. The aim isn't to create a perfect child or follow a rigid checklist - it's to provide a values-driven foundation for raising a resilient, compassionate, self-aware adult.

Technical Highlights

Framework: Astro 4.x with TypeScript
Content: Structured content collections with type-safe schemas
Design: Tailwind CSS with custom color system (cream, forest green, terracotta)
Architecture: 13 values, 6 curses, 17 principles, 5 developmental stages, 67+ activities

GameType Indicator

Experiential Game Analysis Framework

A framework for understanding what it feels like to play a game. Moves beyond genre labels to map experiential qualities across 6 dimensions, revealing why games that share genres can feel completely different. What does it mean to 'like RPGs' when that could mean anything from Pokémon Yellow to Cyberpunk 2077?

6-Dimensional Model
64 GameType Archetypes
Experiential Focus
Visit

How It Works

The GameType Indicator (GTI) uses a six-dimensional model to classify games based on experiential qualities rather than genre labels. Each game receives a code (like MAE-LRP) that describes its Focus (Mechanics-First vs Narrative-First), Stance (Actor vs Director), Progression (Emergent vs Structured), Complexity (High vs Low), Pacing (Relaxed vs Tense), and Encounters (Open vs Private). The framework generates 64 distinct GameType archetypes, allowing players to discover patterns in their preferences and find games that share the same experiential DNA, regardless of genre.

Why I Built It

Genre tags like 'Action-Adventure' or 'RPG' have become so broad they're almost useless. What does it mean to 'like RPGs' when that could mean anything from Pokémon Yellow to Cyberpunk 2077? I built the GameType Indicator to provide a standardized framework for describing what it actually *feels like* to play a game. It helps players understand their true preferences, discover hidden connections between games, and find new experiences that match their experiential preferences rather than generic genre labels.

Technical Highlights

Framework: Six-dimensional experiential analysis model
Archetype System: 64 distinct GameType combinations
Interactive Quiz: Discover your preferred GameType through gameplay
Exploration Tools: Browse archetypes and compare games across genres

Griddle

Daily Logic Puzzle

A web game that provides daily logic deduction puzzles, based on the classic Zebra Puzzle (Einstein's Riddle). I grew up obsessed with logic puzzles.

Daily Puzzles
Multiple Difficulty Levels
Smart Clue System
Visit

How It Works

Griddle presents players with a grid of categories (like Jobs, Pets, Foods, etc.) and provides logical clues to help determine the relationships between items. Players click cells to mark matches (✓) or non-matches (✗), using deductive reasoning to solve the puzzle. The game features three difficulty levels with varying grid sizes and complexity.

Why I Built It

I grew up obsessed with logic puzzles. I had books of them, and the pages were filled with my scribbling in the tables as I tried to solve them. I've recreated the puzzles I was obsessed with as a kid as a daily game anyone can play. Griddle provides a consistent, engaging experience with modern UI/UX that makes these classic puzzles accessible to everyone. The seeded randomization ensures everyone gets the same puzzle each day, creating a shared experience.

Technical Highlights

Backend: PHP with SQLite database for puzzle storage
Frontend: Vanilla JavaScript with modular architecture
Puzzle Generation: Sophisticated algorithm with seeded randomization
Performance: Pre-generated puzzles for instant loading
Accessibility: Keyboard navigation and screen reader support

Letterworth

Daily Word Game

A web game that provides daily word-building puzzles with strategic resource management, featuring "fancy letters" that grant bonus points. It tests vocabulary, imagination, and strategy. I wanted a word game with strategic depth beyond simple vocabulary.

Daily Puzzles
Strategic Letter System
Interesting Decision Space
Visit

How It Works

Letterworth presents players with a set of "fancy letters" that grant bonus points when used in words. Players must strategically build words using these letters to maximize scoring, then visit a shop between rounds to spend points on better letter upgrades. The game features seeded randomization ensuring everyone gets the same daily experience, with support for both single letters and letter pairs.

Why I Built It

I wanted to create a word game that went beyond simple vocabulary challenges by adding strategic depth through resource management. Letterworth combines the satisfaction of word building with the excitement of strategic decision-making, creating a unique "word economy" where players must balance immediate scoring with long-term investments. The daily format creates community engagement through shared puzzles and competitive leaderboards, while the seeded system ensures fair competition.

Technical Highlights

Backend: PHP with API endpoints for score submission
Frontend: Vanilla JavaScript with modular architecture
Game Logic: Sophisticated seeded randomization system
Performance: Client-side game logic with local storage
Accessibility: Full keyboard navigation and screen reader support

Runquesting

Fitness Adventure Platform

Log real miles and travel storied roads: the Boston Marathon, the walk to Rivendell, or a route you draw yourself. Free, with shared quests for companions. My wife asked me for a way to motivate her daily running.

Twenty Drawn Routes
Shared Quests
Multi-Activity Support
Visit

How It Works

Runquesting converts logged activity (runs, walks, rides, swims) into progress along drawn routes. Pick one of twenty preset roads, real or fictional, or lay out your own milestones, set a day goal, and every log moves your marker down the map. Milestones arrive with a small ceremony, the schedule tells you if you're ahead or behind, and shared quests pool a party's miles into one road.

Why I Built It

Traditional fitness tracking apps often feel monotonous. My wife asked me for a way to motivate her daily running, and suggested a gamified approach. Runquesting turns exercise into an adventure: run the Boston Marathon from your own neighborhood, or walk to Rivendell over a season. With a countdown and a destination, every mile means something.

Technical Highlights

Frontend: Astro 7 static site with React 19 islands and Tailwind CSS 4
Backend: Supabase (Postgres with row-level security and transactional RPCs)
Authentication: Supabase Auth with Google OAuth and magic links
Maps: Hand-tuned SVG route geometry with a procedural label-placement engine

Board Game Gaps

Collection Analysis Tool

A web application that helps board game enthusiasts discover missing games in their collections using data from BoardGameGeek. I have a massive board game collection with a very particular mindset.

Smart Collection Analysis
Intelligent Filtering
Gap Detection
Visit

How It Works

Board Game Gaps analyzes your BoardGameGeek collection to identify gaps based on your preferences for player count, play time, and game complexity. The app provides personalized recommendations to help you build a more complete and diverse board game collection.

Why I Built It

I have a massive board game collection, with a very particular mindset. I want to curate a hoard of games that caters to every possible intersection of player count, play time, and game complexity. And, I wanted a way to see what was missing from my collection, and fill it. This tool automates the process by leveraging BoardGameGeek's extensive database and applying intelligent filtering algorithms.

Technical Highlights

Backend: PHP with SQLite databases for efficient caching
Frontend: HTML, CSS (Tailwind), and vanilla JavaScript with Chart.js
API Integration: Robust BoardGameGeek XML API integration with intelligent caching

Trezzer Chest

Financial Literacy for Kids

Allowance banking where the parent is the bank: a virtual ledger that pays compound interest, matches donations, and always adds up — while the real money never leaves your wallet. I built this so I can teach my children about financial stewardship.

You're the Bank
Visible Compound Interest
Self-Recomputing Ledger
Visit

How It Works

Parents run the family bank from one dashboard: allowance on a schedule, automatic raises (birthday, New Year's, or a picked date), withdrawal approvals, and one-tap logging of real-world money moments. Kids get their own sign-in — a username, no email — to watch their balance grow, request withdrawals, and set savings goals with live projections of when they'll arrive.

Why I Built It

Traditional allowance systems don't teach the fundamental principles of financial literacy. This tool transforms allowance into an educational experience that builds lasting financial wisdom through hands-on practice. I built this for use with my children, so I can teach them about the power of financial stewardship and the importance of saving for the future.

Technical Highlights

Frontend: Astro static site — 16 pages, zero framework runtime, hand-rolled OKLCH design-token system
Backend: Supabase Postgres with an event-sourced ledger engine in PL/pgSQL — interest, allowance, matches, and raises rebuild atomically from parent-logged facts
Authentication: Supabase Auth for parents (Google or email); kids sign in with just a username — no email, no account
Delivery: GitHub Actions — type checks and engine-parity tests gate an FTPS deploy; verified by a 72-check live end-to-end suite

Kite-Flying Weather

Specialized Weather Forecasting Platform

A comprehensive weather application designed specifically for kite-flying enthusiasts, providing detailed wind analysis, safety assessments, and kite-specific weather ratings. I was tired of checking three weather apps and doing mental math.

Smart Rating System
Wind Analysis
Safety First
Visit

How It Works

Kite-Flying Weather analyzes multiple weather factors specifically for kite-flying, including wind speed, gust patterns, temperature, visibility, and precipitation probability. The app provides instant kite-flying ratings from Perfect to Deal Breaker, helping enthusiasts make informed decisions about when and where to fly. Features include hourly forecasts with preview summaries, detailed daily forecasts, and comprehensive safety warnings for dangerous conditions.

Why I Built It

Traditional weather apps don't understand what kite flyers need. Wind speed alone isn't enough - you need to know about gusts, wind-to-gust ratios, visibility, and safety factors. I built this because I was tired of checking multiple weather sources and doing mental calculations to determine if conditions were actually good for kite-flying. The app eliminates guesswork by providing specialized analysis that considers all the factors that matter for safe, enjoyable kite-flying.

Technical Highlights

API Integration: Open-Meteo weather API with comprehensive data fetching
Smart Algorithms: Custom rating system with primary/secondary metric weighting
Responsive Design: Tailwind CSS with mobile-first approach
Real-time Updates: Dynamic weather data with timezone handling
Performance Optimized: Efficient data processing and caching
Accessibility: Screen reader support and keyboard navigation

AI Is Not Creative

Data Visualization on AI Convergence

An interactive data visualization that proves AI output is statistical sampling, not creativity. We asked 1,000 independent AI sessions to name 100 things — they gave nearly identical answers. Explore the evidence across 8 datasets. If creativity is the deliberate expression of a self that has lived, felt, and chosen, you can't outsource it to a statistical model.

1,000 Sessions
8 Datasets
Interactive Explorer
Visit

How It Works

The experiment runs 1,000 independent AI sessions, each asking the same prompt ("Name 100 things"). Each session has no shared memory or context — a fresh conversation every time. The visualization lets you explore how these "independent" outputs converge on nearly identical answers: the same items appear in the same positions with predictable frequency. Multiple datasets (things, foods, brands, names, etc.) demonstrate the pattern holds across domains.

Why I Built It

People debate AI creativity with opinions. I wanted data. The finding is stark: what looks like creativity is statistical sampling. The rare items aren't moments of inspiration — they're the long tail of the same probability distribution. AI is an extraordinary tool for programming, analysis, and scientific work. But creativity isn't what 1,000 instances produce on average. It's what one person intentionally chooses to express.

Technical Highlights

Frontend: Vanilla JavaScript with modular component architecture
Data: 8 datasets with 1,000 lists each, stored as JSON
Visualization: Custom bar charts, heatmaps, and interactive browsers
Generation: Claude Opus 4.8 via API with default parameters
Design: Mobile-responsive with dark theme and category filtering

Poké Binder Builder

Pokémon Card Collection Manager

Search the entire printed Pokémon TCG (about 20,000 cards), build a virtual binder, and see exactly what completing it would cost. I wanted to see what it would cost to put together a themed binder.

Advanced Card Search
The Binder
Nightly Price Data
Visit

How It Works

When I got bit by the Pokémon TCG bug, I wanted a way to see what it would cost to put together a binder with a particular theme. Search runs straight from the browser against a Postgres catalog of the whole printed TCG: autocomplete, keyword matching against attack and rules text, and eleven filter groups down to stage, variant, and art style. Cards go into a binder with Owned/Wanted status and quantities, and the footer keeps a running total plus a cost-to-complete figure for the cards you still want. Everything lives on your device; CSV export and import make it portable.

Why I Built It

Collectors mostly want to answer one question about a dream binder: what would it actually cost? Existing search tools were clunky, didn't offer the right specificity, and left the price arithmetic to you. This makes it a search, a few clicks, and a number.

Technical Highlights

Frontend: Astro 7 static site with a React 19 island and a hand-built OKLCH design system
Data: Supabase Postgres queried directly from the browser (read-only RLS, no app server)
Pipeline: Nightly GitHub Actions sync of card data and TCGPlayer prices
Images: Self-hosted WebP mirror on Cloudflare R2, ~99% coverage

Want me to build something for you?

From vision to v1 - brand architecture, product strategy, and launch execution for founders.

Work With Me