I build interfaces the way people were always meant to be met — with clarity, care, and a quiet conviction that the work
is in service of something larger than the screen.
For a long time I treated this page like an inventory — stacks, shipped projects, clients served. The list was
true. It wasn’t the truth.
The truth is simpler. I make software because I believe the interface is the invitation — the moment a person
decides whether they feel seen or unseen by the system in front of them. Every screen is a small chance to
choose love over fear. I want to keep taking that chance.
Our internal abundance is the source of our external abundance. Who we are, not just the services we
provide, creates the work.
— an operating principle, borrowed and lived
That’s what this page is now. Not a brag sheet. A testimony — of what I’ve built, why I built it, and what I’m
here to do next.
IIPractice
Three words I build by.
Clarity. Speed. Leverage. Not slogans — sequence. You can’t have the third without the first two, and you can’t have
any of them without love doing the work.
I
Clarity
Before a single line of code, see the whole system — not just the screen, but the organization behind it,
the humans using it, the fear and friction hiding in every click. Clarity is knowing what the interface is
really for.
II
Speed
Speed is not haste. It’s the natural byproduct of alignment. When thinking is clear, when tools are sharp,
when love — not ego — drives the work, delivery compresses. Sprints become afternoons. Not because we cut
corners, but because we removed the ones that didn’t serve.
III
Leverage
One prototype can realign a roadmap. One automated report can surface what months of meetings couldn’t. I
look for the single highest‑leverage action in every engagement — the small intervention that creates an
outsized shift. That’s where I work.
IIIWork
Real systems. Shipped with conviction.
I don’t deliver decks. I deliver things that work — and then explain why they work, so the team I leave behind can
keep building.
012019–2021
Truist — designing the merger
Two designers, three engineers. Ten million consumer households on the other end.
Truist needed a single product to carry two customer bases through the largest U.S. bank merger since 2008. I
was one of two designers shipping screens with Haley Ahokas, and one of three engineers — with Jasmine Krull and
Elijah Townsend — coding both the design system and the surfaces it powered.
The work wasn’t decorative. It was the contract between the new bank and the roughly ten million consumer
households about to log into a product they’d never asked for. Tokens, components, account dashboards,
transactions, transfers, rewards. A system that had to feel inevitable on day one and quietly absorb every new
surface for the next decade.
What that team built still ships at scale: Truist holds $549B in assets, $385B in deposits, runs 1,928 branches
across 15 states and DC, and divested its insurance arm for $15.5B in 2024 to focus on the core bank. The
screens are still there.
A booking-flow onboarding surface, shipped across the design system, component library, and product.
Apple Search Ads needed a way to show advertisers what their ads could actually look like across the App Store.
Every surface, every format, every example. The challenge was doing it without eating the page. The answer was a
modal that opened into a carousel, six screens of real ad placements framed tightly enough to feel effortless,
deep enough to answer the question on its own. Shipped pixel perfect, gated behind a feature flag, so the team
could roll it out carefully and measure what actually helped.
Built before ChatGPT existed, hand coded top to bottom across three repositories. Design tokens in the system
repo, the reusable component in Stencil, and the product integration in Angular and TypeScript. The hard part
was not the carousel itself. It was making it reusable enough that every educational modal after it could
inherit the pattern without rewriting a line.
A twelve‑day sprint that turned into a profitable engine, then open‑sourced on the way out.
I wanted to know if one person could teach a language model to trade. Kalshi runs prediction markets on
real‑world outcomes, from elections to Bitcoin to weather, and those markets reward patience and good math more
than speed. So I built an autonomous engine that reads the book, sizes its bets, and decides when not to play.
Twelve days later it was profitable, running on its own, and making better decisions than I would have. I
open‑sourced the whole thing and walked away, because the point was never the money. The point was proving the
methodology on a problem I had never touched before.
Three strategy evolutions, each one replacing the last. News‑based Claude reasoning to price the harder‑to‑model
events, a Black‑Scholes probability model on fifteen‑minute Bitcoin contracts, and cross‑platform arbitrage for
the easy mispricings. A self‑learning loop logged every loss and tuned its own parameters between runs. Python
for the engine, a WebSocket feed into Kalshi for live book data, and a small React dashboard so I could watch it
think. Eighty‑six commits, one hundred eighty‑seven tests, and every decision logged so the backtest and the
live run tell the same story.
A full production platform for Austin’s live comedy scene, built end to end and ready for its people.
Austin runs on live comedy, and the people who make it happen have been stitching the scene together with group
texts and Instagram DMs for years. OpenLaughs is the place all of that finally has room to live. Comedians get a
home for their shows and their reach. Venues get a real tool for lineups and headcount. Fans get one place to
find the night they did not know they were looking for. I built it the way I wish more local platforms got
built, with actual care for every role on the other end of the screen, so when the first show lands on it, it
feels like the software already knew this was coming.
Four role‑based dashboards, one for each audience the platform serves, all running on React eighteen with a
GraphQL layer over DynamoDB. Cognito handles social auth across roles. Google Places powers venue search so
lineup creation stays fast and accurate. A Lambda image pipeline keeps comedian headshots and show art
consistent across every surface. Deployed on AWS Amplify, live‑ready, waiting on content partnerships rather
than code.
Roles
4 dashboards
Stack
React 18
Cloud
AWS Amplify
State
Live‑ready
React · GraphQL · DynamoDB · Cognito
OpenLaughs · fan dashboard
052026
I Built My Own AI Coworker
A personal operating system that remembers, reasons, and ships alongside me every day.
Most people use AI like a search box. I wanted something closer to a coworker, so I built one and gave it a
place to live on my machine. It reads a handbook every morning, writes what it learned into memory every night,
and shows up to every new conversation already knowing what I am working on, who I am talking to this week, and
what we decided yesterday. It has access to the same tools I do, which means less time re‑explaining context and
more time building. The honest surprise has been watching how fast the quality of my own thinking climbs when
the repetitive part of the work just quietly disappears.
A single repository called .agents, versioned like any other project. An AGENTS.md handbook defines how it works
with me. An OPERATOR.md captures how I work. Memory is synced across sessions through a small shell script, and
skills load on demand instead of all at once so context stays clean. Every connected app, Notion, GitHub, Drive,
Gmail, Calendar, iMessage, the codebase itself, runs through the Model Context Protocol, so adding a new tool is
as simple as wiring in a new source.
Earlier chapters include a CTO seat and a long run as Lead Frontend Engineer for enterprise traffic management
systems at Yunex. The speed isn’t the point — it’s the symptom. The point has always been the people on the other
end of the screen.
Built with & for
IVGuide
from The Law of Divine Compensation
Do something not because you think it might make money; do it because it makes your heart sing.
Marianne Williamson · ch. 8, Spiritual Surrender
Dear God,
I surrender to You who I am, what I have, and what I do.
May my life and talents be used in whatever way serves You best.
May the Light of Your Love shine deep within my heart,
and extend through me to bless the world.
Amen.
Williamson,
The Law of Divine Compensation, HarperOne, 2012
VTestimony
The work chose me before I chose it.
I’ve been building interfaces since before I understood what they were for. Not just the screens — the
systems underneath. The way information moves through an organization. The way a tool can make someone feel
competent or invisible. The distance between what software does and what humans need.
Five years sober in Austin. Deep in
A Course in Miracles. Reading Marianne Williamson on putting love first. Building,
shipping, teaching, learning — and slowly, quietly, letting the work become a calling instead of a job. A
calling, in her words, is an organic field of energy that emerges from the deepest aspects of who you are.
That sentence rearranged me.
So this is the practice now: every engagement starts with understanding the system, not the screen. I don’t
just design what people see. I try to architect what they experience — and what they never have to think
about again. Love first. Everything else flows from there.
I want to serve. I want to help people do their best work. I want to build things that genuinely matter —
and I want the humans on the receiving end to feel that, even if they never see me.
Whether it’s a two‑week sprint or an ongoing partnership, I’ll bring clarity, speed, and leverage to your next
product — and care for the people on the other side of it.