From Kāneʻohe, Oʻahu. Pre-Business at BYU Marriott in Provo. Forward Deployed AI Engineer at the AI Foundry @ BYU, a limited-enrollment consulting firm that ships production AI for paying clients, and AI Solution Engineer at Visp, a 30-year-old billing and operations platform for internet service providers. 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
I join a development team's daily scrum and sprint cadence and work on their live systems, instead of handing over a deck and leaving.
The flagship
One system, three ways
I built a second brain for myself, released the machinery of it so anyone can run their own, and then built the same thing for a company. The private one runs my life, so what is public about it is the operating record rather than the contents.
01 · Built for myself
My second brain
Two layers: every source kept whole, and a wiki compiled on top of it that a language model maintains and rewrites as new things land. It has been running daily since July 2026 and it is where everything else on this page gets written down.
It stays private, because it holds my life. The receipts are public: a nightly census of what it did, and a postmortem file of everything I have broken.
The machinery of that brain with my life taken out: a constitution file the model reads first, honesty gates that block a commit on a broken or one-way link, search-first retrieval, a commit script that lets several Claude sessions share one folder, a reminders ledger and a postmortem file.
You bring your own notes. Everything that keeps mine honest is in the folder.
Visp is a 30-year-old billing and operations platform for internet service providers. I am an AI Solution Engineer there as an independent contractor, on the development team's daily scrum and sprint cadence, working on live systems.
I built the company's second brain: a hosted MCP server with OAuth sign-in, three permission roles, an audit trail, and connectors for both Claude and ChatGPT, covered by 128 automated checks.
Since August 2026
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.
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.
Open source
Nine releases, and every one is a link you can open or a repository you can clone
These are the parts of my own setup, and one field trial I ran on it, that turned out to work for anything, so I took my life out of them and released them. Each page below says what it is, why I built it, how to start it if you have never used Claude Code, and the one thing it does not do.
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 Marriott in Provo, Pre-Business. Forward Deployed AI Engineer at the AI Foundry @ BYU: I sourced client projects, run a client engagement end to end, and manage its team of two developers. AI Solution Engineer at Visp. Teaching assistant for a Marriott course on applying AI across business functions.
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.