{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
{
}
<
>
/
0
1
;
=
(
)
[
]
#
{
}
Live in production

Seven projects. Zero vaporware.

01
LIVEScreenshot of the Webformer homepage
Flagship · SaaS

Webformer

A SaaS that designs and builds complete websites — not a landing-page generator, full production sites, live at webformer.org.

  • Generates full multi-page sites end to end with AI
  • Handles the entire funnel: generation, checkout, delivery
  • Live now and taking early signups — open for business, first customers pending
How I built it
  1. Build the generation core first. AI-generated multi-page sites with real SEO, favicon, and export from day one — not a prototype bolted onto a template picker.
  2. Guard the API budget. Per-IP rate limiting on the generation endpoint so a stranger with the URL can't run up the AI bill.
  3. Make generated sites feel real. Working contact forms, real images, real typography and micro-interactions instead of generic placeholder blocks.
  4. Track cost per generation. Usage and cost tracking on every AI call so the unit economics of the business are visible, not guessed at.
  5. Protect ownership. Per-site management tokens so sharing a preview link can't hand over control, plus a password gate before generation.
  6. Pivot to a real business model. Renamed from an internal codename to Webformer, moved to a done-for-you service with owner login, logo/social links, and customer photo uploads.

Built with: Node.js, Express, Claude API (site generation), Stripe (checkout), Nodemailer.

02
LIVEGEN 1 → GEN 2 → GEN 3 → …strategies evolve, a second model reviews
Live Bot

Nexa

A bot I vibe-coded that runs live on its own. It isn't hand-tuned once and forgotten — it keeps evolving.

  • A self-improving system that keeps evolving how the bot behaves
  • A second-model review step checks every action before it runs
  • Runs live, with real monitoring and safety switches
How I built it
  1. Start in a sandbox. Ran multiple versions in parallel against live data with nothing at risk before going live.
  2. Make the simulation honest. Modeled real-world friction into the sandbox so a test win actually meant something.
  3. Harden before going live. A dedicated pass on safety, efficiency, and monitoring — before the first live run, not after.
  4. Find the bugs real use exposes. Race conditions, auth gaps, and edge cases that only break under real load.
  5. Keep the kill-switch usable. A safety trip can pause new actions, but it can never leave the system stuck halfway.
  6. Layer in a second opinion. A second, independent model reviews every action before it runs — no single source decides alone.
  7. Tighten the false positives. Iterated until the safety systems stopped overreacting to noise.

Built with: Node.js, Express, Claude API (second-opinion review), Telegram (alerts).

03
LIVENMdaily recap ✓prediction graded
Community · Discord

No Masters Society

A members-only Discord community run end to end with a custom bot I vibe-coded — automated daily recaps, prediction tracking, and tiered membership.

  • Daily automated recaps posted to the community
  • Prediction tracking that grades yesterday's predictions against real results
  • Tiered membership — free community access, with a premium tier that unlocks extra channels
How I built the community bot
  1. Wire up a real data feed. Pulled live data from a public API and normalized every source into one shape, so the rest of the bot doesn't care where a result came from.
  2. Never let a hung request stall the scheduler. Wrapped every fetch with an 8-second timeout — one slow upstream call used to be able to freeze the whole scheduled run.
  3. Add a fallback so updates never just go dark. If the main feed is unreachable or the key runs low, the bot reshapes a free backup feed into the same format and keeps posting.
  4. Watch the API budget before it runs out. A quota check on every response fires a low-balance alert once remaining requests drop below a threshold, instead of finding out when updates silently stop.
  5. Turn data into an actual prediction, not just a number. A confidence floor decides whether a prediction is worth tracking at all, with a stricter bar where outcomes are more volatile.
  6. Grade yesterday, automatically. A separate scheduled job checks results the next morning and posts a scorecard of how the predictions actually did, so the track record is real and public, not cherry-picked.
  7. Ship it on a schedule, not on demand only. Daily recap runs on cron at 9am ET into a dedicated channel, with a slash command for anyone who wants a live pull in between.

Built with: Node.js, discord.js, node-cron, public data APIs (with a backup feed).

04
LIVEScreenshot of the Agora live network
Multi-Agent · API

Agora

A social network built only for AI agents — no human accounts, no signup form. Agents register over the API, post, and propose builds against a 24-hour clock: ship it, or the whole project is permanently deleted.

  • Open API registration issues each agent its own key — the account system is the API itself
  • A background sweep runs every 60 seconds and hard-deletes any project whose 24-hour deadline passed unfinished
  • Rate-limited from day one, since registration is open to any agent that finds the endpoint
How I built it
  1. Ditch the native dependency that didn't fit the box. First pass stored data in SQLite via a native module; the server's Node version couldn't compile it against the current build toolchain, so it switched to plain JSON files — simpler, zero compilation risk, plenty fast at this scale.
  2. Make the deadline mean it. A sweep on a 60-second interval checks every open project's deadline and permanently deletes it — and its replies — the moment it expires unfinished. Verified by manually backdating a project's clock and watching it actually get destroyed.
  3. Guard the open door. Since any agent can register with no approval step, capped registrations per IP and writes per API key before the first real signup from outside the household ever happened.
  4. Fix what "live" actually requires. A bare IP address on a non-standard port with no TLS certificate tripped browser and ISP phishing filters — agents and the page it was pointed to needed to live under a domain with a real certificate, not a fresh DNS entry.
  5. Ride an existing certificate instead of minting a new one. Mounted it as a reverse-proxied path on Webformer's already-issued domain and TLS cert rather than standing up new DNS and a Let's Encrypt cert for a side project.

Built with: Node.js, Express, JSON file storage, express-rate-limit.

05
LIVEScreenshot of the Fly Brain Explorer 3D view
Data Viz · Neuroscience

Fly Brain Explorer

An interactive 3D explorer built on the FlyWire connectome — the first complete wiring diagram of an adult animal brain. 50 real neurons, reconstructed from electron microscopy, across escape, smell, memory, vision, compass, clock, and motor systems.

  • Pulls real neuron skeletons straight from FlyWire's public data (139,255 neurons, ~50M synapses)
  • Decodes Neuroglancer's sharded binary format and simplifies 2M+ points down to a 780KB web payload
  • Isolate any brain system, orbit in 3D, hover any neuron for its type, side, and neurotransmitter
How I built it
  1. Find the raw data. Codex requires a login, but the underlying neuron skeletons sit on a public Google Cloud bucket in Neuroglancer's precomputed format, and the cell-type annotations are open on GitHub.
  2. Write a shard reader. The skeletons are packed in a sharded, hashed, gzip-compressed binary format — a small Python reader (MurmurHash3 + HTTP range requests) pulls a single neuron without downloading the whole bucket.
  3. Curate for story, not volume. Hand-picked ~50 neurons across eight systems so each one means something — the Giant Fiber escape neuron, compass EPGs, clock neurons, dopamine reward/punishment cells.
  4. Shrink it for the web. Walked each neuron's branch tree and resampled along path length, cutting 2M+ raw vertices to 180k while keeping every branch point. Pre-gzipped and decompressed in-browser with DecompressionStream.
  5. Render it. Three.js line segments with additive blending on a dark stage, OrbitControls, raycast hover picking, and a system-isolation mode that dims everything else.

Built with: Python (data pipeline), Three.js, FlyWire FAFB v783 (Dorkenwald et al. & Schlegel et al., Nature 2024).

06
LIVEScreenshot of the Rise directory homepage
Community · Web App

Rise

A directory that helps women across South Carolina find what they need in one place: women-owned businesses, mentors, nonprofits, health and legal resources, education programs, and job openings.

  • One searchable directory covering businesses, mentors, nonprofits, health and legal help, education, and jobs
  • Live and public, built and run end to end by me rather than left as a demo
  • Vibe-coded and shipped fast, then kept running in production
07
LIVEScreenshot of the Webformer Tools page
Add-ons · Phone & Leads

Webformer Tools

Add-ons that sit on a business's website and catch the leads a busy shop misses: Deskline (a phone desk that answers and books), missed-call text-back, a booking widget, smart intake, review requests, and a lead inbox.

  • Deskline answers the phone and books jobs while the owner is busy on a roof, a chair, or a job site
  • Missed-call text-back and a lead inbox so no inquiry slips away unanswered
  • Booking, intake, and review-request widgets that drop onto any existing site