Featured · 2026 – Present
Curio
A full-screen swipe feed of short, source-backed knowledge cards — psychology, science, history, mysteries, and the rabbit holes between them — with an AI layer that opens any card up. Built and shipped solo on iOS, live on the App Store.
72k
Lines of TypeScript
289 files, 413 commits, solo, in about six weeks
17 / 4
Categories / Languages
English, 中文, Español, Português
Jul 22, 2026
Launched
US App Store, now on 1.0.4
- Built the AI content engine behind the app: card generation, quality filtering, factual-risk screening, multi-language translation, and continuous replacement of weaker cards with stronger ones
- Engineered Curio AI, an in-app companion that explains concepts, answers follow-ups, generates quizzes, and spins up new rabbit holes — hardened against hallucination with retrieval grounding and validation checks
- Designed six reading experiences: eye-protection mode, immersive soundtracks, read-aloud listening, translation-based language learning, branching "what would you do?" scenarios, and community stories
- Shipped a native iOS app from one React codebase via Capacitor 8 on SPM, against an Express + PostgreSQL backend serving the card pipeline
- The last CI step,
verify:guards, reintroduces six defects that had already shipped through a green test suite and fails the build unless the guard covering each one turns red. Its first run proved two of my own fixes were decorative
ReactTypeScript
ViteCapacitor 8
TailwindFramer Motion
Node.jsPostgreSQL
OpenAIClaude API
ElevenLabsRevenueCat
Featured · 2026
ATLAS
A walk-forward machine-learning pipeline for short-horizon FX binary-option prediction across 28 currency pairs. The model is the small part. The point of the project is the harness around it, which is built to destroy its own results before anyone else can.
79% → 57%
What the holdout did
Pre-registered 2003–2015 cut. I recorded the 57%
138
Registered experiments
Penalised statistics, leak-free testing
28
Currency pairs
1-minute candles, ~6 signals a day
- A calibrated LightGBM reads the just-closed candle and outputs a probability; the decision rule is an expected-value gate against the live payout, so a worse payout demands more conviction rather than a fixed confidence threshold
- A second meta-labeling model scores the trade's context — hour, volatility, trend strength — and filters signals the primary model would have taken anyway. The system abstains most of the time, and the abstaining is the edge
- Guardrails against fooling myself: chronologically purged walk-forward, probability calibration, cross-asset trade clustering, decade-scale replication on external data, Bonferroni correction, and a 154-trial deflation penalty applied to every statistic
- Rejected levers — ensembling, HAR-RV volatility features — are written down as rejected so they are never quietly retried
- Ships with an MCP server so Claude can read the broker and place demo trades. Live trading is off unless explicitly enabled, and there is no validated live edge yet — the forward test is pre-registered and still running
PythonLightGBM
scikit-learnpandas
NumPyMCP
// shipped & running in production
Client work · Live · 2026
BEASTY PAGES
An ordering app that behaves like an iPhone home screen. Every kitchen is an icon; open one, order from it, and a single cart carries the whole thing to one checkout. Launched as BEASTY PAGES, renamed from the original working title, The Home Screen.
- Live and taking real orders. One cart spans several independent kitchens and splits into a separate ticket per vendor, with a state machine the kitchen moves each ticket through
- Paid memberships run on real Stripe checkout, with the webhook signature verified against the raw request body
- Card payment for food is the one part still switched off, and the switch is a constant in the source, not an environment variable — keying it off the presence of a Stripe key once let the app show "One charge of $X" while charging nobody
- These are real businesses, so nothing is invented: no made-up menu item, price or photo
TypeScriptReact
Node.jsExpress
PostgreSQLStripe
Render
GOSVEA Inc · 2026 – Present
ALLCPR — iOS App
Sole developer of ALLCPR, the company's iOS app for CPR, BLS and first-aid students — class discovery, certification lookup, store, and site maps. Ships through TestFlight.
- Rebuilt the app as an editable five-tab React codebase — Home, Map, Classes, Store, Profile — replacing a build that existed only as compiled output
- Built a native in-app form system for volunteer signup, group training and certificate lookup, so students stop getting handed off to the website mid-flow
- Capacitor 8 on Swift Package Manager rather than CocoaPods, with the iOS platform, icon and splash wired in and verified on device
ReactTypeScript
ViteTailwind
Capacitor 8Swift / SPM
GOSVEA Inc · 2026
ALLCPR Site Intelligence
Decides where to open the next training center. Scores 33,772 US ZIP codes on demand, competition and demographics, and shows the evidence behind every score — including where the evidence is thin.
- Combines Google Places demand signals, competitor density and Census ACS demographics into a scored, source-tracked site report
- The national layer recomputes entirely offline from stored rows, so the whole country can be re-scored without spending an API call
- A validation harness scores the model against real class-enrollment history. It found the previous version's evidence was circular — the validation target had been injected into the rows before scoring — and the honest result is far weaker than the number it replaced. That is in the README
- One map dashboard as the single decision surface, bilingual, with a per-ZIP panel that states the verdict, an honest range, what is known for and against, and what is still unknown. 1,300+ tests
PythonFastAPI
PostgreSQLLeaflet
Census ACSGoogle Places
Curio · 2026 – Present
Curio Automation Platform
The content and distribution machine behind Curio. It writes, voices, captions and renders vertical video, paints image posts, runs the quality gates, and publishes to Instagram, Facebook and YouTube from one queue.
- An autonomous video pipeline that runs a full build end to end at 1080×1920, with audit gates — prosody, caption fallback, listen-back scoring — that reject a run rather than ship it
- A painted quote-post engine where the artwork is generated and the text is typeset in code, so producing the same post in another language costs nothing
- A publisher split across a FastAPI queue on Render and a launchd worker on my Mac: credentials and media never leave the machine — the server only ever sees slugs
- Best cut holds an 80.4% average watch ratio on traffic that is 97.8% cold algorithmic recommendation
PythonFFmpeg
PillowFastAPI
launchdElevenLabs
Graph API
Public repo · 2026
Continuity
A persistent memory layer for AI work. When one session ends, expires or runs out of context, the next one resumes from a written checkpoint instead of from nothing.
- Holds the project state outside the model: goal, plan, task queue, decisions, checkpoints, and a handoff any agent or person can pick up
- Local-first and runs with no LLM required — it is infrastructure above the tools, not another wrapper around one
- Tested in CI on GitHub Actions
TypeScriptNode.js
CLIGitHub Actions
Past project · Oct 2025 – Apr 2026
Scenara
A bilingual prediction-market simulation platform targeting Brazil — positions on real events across crypto, sports, politics and macro news. Architected and built solo: frontend, backend, infrastructure and the market pipeline.
- Trading engine with probability-based pricing, position tracking, balances, payouts, PnL and automated market resolution
- AI market generation from breaking news every two hours, producing bilingual YES/NO markets in English and Brazilian Portuguese
- KYC onboarding and compliance-oriented user management modeled on real fintech platforms
- Wound down in April 2026. Prediction markets remain tightly regulated in the markets Scenara targeted, with little sign of that easing, so I stopped rather than keep building toward a launch that could not happen
React NativeExpo
TypeScriptFastAPI
PostgreSQLVercel
Render
// agents & internal tools
GOSVEA Inc · 2026 – Present
ALLCPR Student Help Agent
A student-facing help agent built from the CRM manual, the Smart Manikin manual and the operations log. Answers course, certificate and equipment questions in English and Chinese.
- Runs with no AI API key, by design — lexical retrieval over pre-written bilingual answers, ~7ms round trip, $0/month to operate. Adding a key only lets a model rephrase what was retrieved; it never adds knowledge
- The 911 emergency redirect lives in code, upstream of retrieval. It was originally in the prompt, which meant that in the shipped no-key configuration it did not exist — "my baby is not breathing" returned an infant-manikin card
- Three gates before any commit: a schema and PII scan, a coverage check that every source block is either cited by an entry or excluded with a written reason, and a question suite asserting emergencies divert to 911 while equipment questions do not
Node.jsJavaScript
ExpressRender
Public repo · 2026
明途 — Gut Health Advisor
A Chinese-language RAG agent for gut-microbiome questions. It does two things: explains the evidence graded by how much it can be trusted, and decides when to tell you to see a doctor. It does not diagnose.
- A deterministic safety screen runs first. Alarm symptoms described in the first person route straight to fixed see-a-doctor wording, with no model anywhere in the path
- Hybrid retrieval — BM25 and vector, fused with RRF — weighted by evidence grade, population and regulatory class, with quotas so specific categories cannot be crowded out
- Every substantive claim must carry a source number, and an exit check verifies the citations exist and that the text makes no health claim banned under Chinese advertising and food-safety law. Failing text is rewritten; if it fails twice, the agent declines to answer
PythonFastAPI
RAGBM25
Render
GOSVEA Inc · 2026
ALLCPR Site Operations Agent
A bilingual staff tool for Smart Manikin training sites — site inspections, incident triage, new-staff onboarding, and the SOP knowledge base behind all three.
- A deterministic SOP answer engine with an optional model summary layer on top, so the answer does not change when the API key does
- Fully bilingual English and 中文, matching how the sites actually operate
- Staff view behind a PIN; FastAPI service auto-deploying to Render
PythonFastAPI
OpenAIRender
GOSVEA Inc · 2026
Yelp Review Desk
Watches for new Yelp reviews, classifies each one against a configurable issue taxonomy, and drafts a fact-grounded reply for a human to approve. It never posts.
- Never auto-posts, on purpose. Yelp has no reply API and automating the business portal risks the listing, so the flow stops at "copy and open Yelp" and a person pastes. The Gmail credential is draft-only, with no send scope
- Yelp's notification emails turned out to be useless as a source of truth — truncated to about 80 characters and missing most reviews. The real refresh is a scrape from a logged-in browser; the email poll survives only as a tripwire for brand-new reviews
- Slack alerts on anything at or below four stars, plus anything escalated regardless of rating. Clean five-star reviews stay quiet
- Paired Chrome extension pre-fills the approved reply on Yelp for Business and syncs posted status back. It never clicks Send
PythonFastAPI
Gmail APISlack
Chrome Extension
Client work · 2026
ONPECY AI Lab — 3D Proposal
A renovation proposal for a second-floor AI lab, delivered as an interactive 3D page: the LiDAR scan of the real room on one side, the renovated model on the other, on the same camera so the comparison is honest.
- The room was scanned with LiDAR and then rebuilt parametrically at its measured dimensions rather than shipped as raw scan mesh
- Every object in the 3D maps to exactly one purchase line — click it and you get the item and its price. Proving that held required dumping all 355 model node names and checking each family against the budget
- A layout audit script measures real clearances and prints the clash list, so the drawing can be checked rather than trusted. It found five furniture collisions and a 0.70 m walkway against a 0.90 m minimum
- One Python estimator is imported by both the written report and the 3D page, so the two documents cannot drift apart on a number
PythonBlender
three.jsglTF
LiDAR
// sites & smaller builds
Client work · 2026
FLORES Boxing Gloves
Brand site for a Bay Area maker of hand-stitched leather boxing gloves, in business since the 1920s.
- Static site, no framework and no build step — it loads on a phone in a gym
- Responsive product galleries served at three image widths
- Heritage typography and a hand-drawn oval mark, drawn as SVG so it stays sharp at any size
HTML5CSS3
JavaScriptSVG
GOSVEA Inc · 2026
安安 — WeChat Sticker Pack
A 24-sticker WeChat pack for ALLCPR's Chinese-speaking students, in Chinese and English, with a download page.
- Captions are typeset in code instead of baked into the artwork, so producing the second language cost nothing
- Transparent PNGs sized for WeChat, generated by a Python pipeline rather than by hand
- Hosted download page, because WeChat has no bulk install outside its own store — the honest answer was to make saving 24 files easy, not to pretend otherwise
PythonPillow
HTML5Render
Personal · 2026
Noctilucente
The site for my own music — an EP page under an animated night sky. The only thing I make with no metric to hide behind.
- Hand-built, no framework, single page
- The animated sky is deliberately cheap to draw: no backdrop-filter anywhere, because it destroyed the frame rate on mobile
- Links out to Spotify
HTML5CSS3
JavaScriptCanvas
Personal · 2026
Services Site
My own services page — every service I build, with a starting price next to it, across web, AI, operations, growth and data.
- Prices stated up front rather than "contact for a quote"
- Static, hand-written, deploys from a push
HTML5CSS3
JavaScriptRender
// earlier work
Pinned · 2025
ExpertFlow
A clickable prototype of an expert-network CRM for research teams — request intake, expert matching, consultation pipelines and SLA tracking, all in one file.
- Nine full screens in a single HTML file with no build step. Open it from disk and it runs
- Kanban pipeline, expert-matching views, a working dial pad, and separate Admin, Manager and Associate role views
- Charts through Chart.js; everything else is hand-written CSS and vanilla JavaScript
- A design prototype, not a running system — the AI panels and the dialer are mocked, with no backend behind them
HTML5CSS3
JavaScriptChart.js
Pinned · 2024
Orryin Investment
A platform letting people outside the US invest using their own country's ID — a Brazilian CPF instead of a US SSN — generalised across countries. Backend MVP with KYC, FX and brokerage flows, plus a React Native onboarding app.
- KYC verification pipeline with document upload and identity checks
- FX exchange and brokerage integration flows
- React Native (Expo) mobile MVP validating onboarding and funding readiness
- Stopped on the regulatory documentation burden, not on the engineering
PythonFastAPI
React NativeExpo
MIDAS
Personal · 2024
MIDAS
Research-oriented trading system for market data processing, strategy prototyping, and historical backtesting.
- Market data ingestion and normalisation pipeline
- Strategy prototyping harness with historical replay
- Performance-sensitive core in Rust and C++, analysis in Python
RustC++
Python
AIngle
Personal · 2024
AIngle
Full-stack experimental platform for AI-assisted image analysis, combining a FastAPI backend with a React Native mobile client.
- FastAPI backend serving a visual processing pipeline
- React Native (Expo) client for capture and review
- Built as an experiment in end-to-end model plumbing, not as a product
PythonFastAPI
React NativeExpo
catnap
Personal · 2024
catnap
AI phone and SMS intake for small businesses. Customers call or text, an AI collects their details, and the owner gets notified.
- Telephony and SMS intake with structured field extraction
- Owner notification on a completed intake
- Built for businesses that lose leads to an unanswered phone
PythonAI/NLP
Telephony APISMS
GX
Open Source · 2023
GX-Ambient
A Chromium extension that loops ambient tracks inspired by Opera GX, and gets out of the way the moment you play something else.
- Five looping tracks with a picker, play/pause, and a volume slider
- Watches every open tab and fades itself out when anything else starts playing audio, then fades back in when that stops
- Vanilla JavaScript against the Chrome extension APIs — no libraries, no build step
JavaScriptBrowser Extension
HTML5 Audio
M4L
Freelance · 2023 – 2026
Freelance Builds & Max4Live Devices
Prototypes, small business sites, automation tools and interface work for independent clients — plus custom Max4Live MIDI devices for Ableton Live with audio processing and interactive controls.
- Small business sites built and deployed end to end, including a dog-walking service site
- Web automation and internal tooling for one-person operations
- Max4Live MIDI devices for Ableton Live, and LED strip control over MIDI on Teensy
JavaScriptPython
Max4LiveAbleton Live
C++