From Kāneʻohe, Oʻahu. Studying at BYU in Provo this fall, and building inside the BYU AI Foundry, a student consulting firm that ships production AI for paying clients. The failures on this page get more room than the wins.
Claude CodeTypeScriptNext.jsNode.jsPostgres
Systems-thinker. I write down what breaks.
I build things for real businesses and a second brain for myself. Everything below is a live link or a failure.
Voice agents for small businesses, built on Vapi and Claude over an Express backend. The server computes the facts. The model never invents them.
Second brains
A two-layer archive and wiki that a language model maintains. I built mine first and use it every day, and now I build them for other people.
Study systems
A spaced-recall drill built out of my own lectures and textbooks, so the questions come from the course rather than from a stranger's deck.
Websites
Astro and Next.js when a site needs a framework, and hand-written HTML when it does not. This page is the second kind.
Forward-deployed work
Sitting inside a partner company's sprint cadence and working on their live systems, instead of handing over a deck and leaving.
Featured builds
Five things that are live right now
01 / 05
evannalu.com
Nalu Agency
AI receptionists and company brains for Oʻahu businesses. The honest version: one paying client so far, and it churned; I had built way more than what they were paying for.
Also public on GitHub, at github.com/NaluKicks-808: portfolio, hukilau-salon, strikev3 and oahu.
Private build, public receipts
The brain, by the numbers
A second brain I have been running since July 2026. Two layers: every source kept whole, and a wiki compiled on top of it that a language model maintains. Its dashboard sits behind a key, so what I can show you is the census and the failures.
282wiki pages
29postmortems
2,564tests in its tooling
July 2026running since
Snapshot 2026-09-10, measured by the vault's own scripts, not typed.
Last 30 days: 774 commits · Yesterday: 11 answers in the drill · 1 of 1 limb on schedule · 900M tokens through the brain.
The teardown
Three things I broke, and what watches for them now
These are taken straight out of the postmortem file the brain keeps on itself. They are here because a list of things that worked is not evidence of anything.
01
Eighteen days of sales calls, recorded and filed and never transcribed
What happened
A nightly job fired on schedule for eighteen days, wrote nothing and reported nothing. Four call recordings sat untranscribed the whole time because the transcription service wanted a Content-Length header that a presigned link never sends.
Why
A job whose normal output is "nothing happened tonight" looks exactly like a dead one, and nothing was watching the difference.
The machine now
A check built this week reads every scheduled job's cadence and its log's last write, then names the limb that stopped instead of the symptom. It covers three of the four failures of this kind. This one was scheduled outside that system, so it stays paused and the gap is named rather than closed. A gap you can see beats a fix you cannot.
02
Fifteen thousand messages handed to one agent
What happened
A background agent was handed an entire message backlog, roughly 907,000 tokens, with one thread inside it worth three context windows on its own. It would have run out of room partway through and written a confident summary of whatever fraction it had read.
Why
Every coverage rule in the system governed reading. None of them governed handing work off, and handing work off feels like scheduling rather than reading. Evan caught it from one line of the launch message.
The machine now
Measure a corpus before it is handed off, split it to fit, and make every worker report coverage as a fraction, "read 1,847 of 1,847", instead of the word absorbed. Parallel workers get separate files to write to.
03
The session that wrote the rule about autostash and then ran it anyway
What happened
The commit script starts by stashing every uncommitted file and reapplying it after a rebase. A session ran it while three agents were mid-write, hours after writing down that doing so is how work gets lost. The reapply conflicted, left conflict markers in a tracked file, and the session kept dispatching work against a tree it believed was clean.
Why
The command's output was piped through tail, so the sentence saying the reapply had failed went straight to the floor. Thirteen minutes passed before anyone looked.
The machine now
A daily check reads the stash list and reports every entry it cannot prove was already superseded.
Prose rules lose to machines. Every rule that matters here has a hook, a gate, or a detector behind it.
Tech stack
Claude Code
TypeScript
Next.js
Node.js
Python
Supabase
Postgres
Vercel
Fly.io
Vapi
Astro
Obsidian
The road
How I got here
2005Born in Honolulu.
PunahouDebate, second in the state. Two self-published books.
2021 to 2023A crypto lending startup with friends. We raised $200k in under an hour and peaked near $10M in deposits. It collapsed.
2022 to 2023BYU–Hawaii. Won a business-idea competition.
2023 to 2025Two-year mission in Cambodia, ending as an assistant to the mission president.
2026Back at BYU–Hawaii. A campus job, and mentoring new missionaries at the MTC.
Fall 2026BYU in Provo, and the AI Foundry.
Let's connect
No form here on purpose. A static page cannot send one, and a message that vanishes is worse than no message. Email is the fastest way to reach me.