I had a chunk of money left over and wanted to put it toward my kids’ education.
An equal split would have been easy. The accounts already had different balances, though, and the kids will start college in different years. A dollar invested for my youngest gets years more time to grow than a dollar invested for my oldest.
The basic intuition was obvious: the older kids probably needed more money up front. I wanted some numbers behind that intuition before moving the money.
So, on a Saturday morning, I used Codex with gpt-5.6-sol to build College Runway, a small static app for this one family decision. The source is on GitHub.
The screenshots use the app’s illustrative defaults. The birthdays are approximate and the dollar amounts do not represent my family’s accounts.
Each account gets a clock
College Runway takes one lump sum and distributes it across the child accounts in the model. For each child, I can enter:
- an approximate birthday and expected college start year
- the existing 529 balance
- the current Vanguard target-enrollment portfolio
- optional annual contributions until enrollment
I also give it an annual college-cost estimate, college inflation, and one of three editable return scenarios. It calculates the projected balance at enrollment and the balance required at that point to pay four annual college bills while the remaining money stays invested.
There are two useful starting buttons. Split equally gives every child the same share. Allocate by need divides today’s contribution in proportion to the funding gap left after existing balances and planned contributions. Moving any child’s slider rebalances the remaining shares so the family allocation always adds up to 100%.
No shock here: the older kids needed more of the lump sum because their accounts have less time to grow. Now I had numbers to use when deciding how to make the transfers.
Modeling the glide path
Vanguard’s target-enrollment portfolios change as college approaches. They gradually reduce stocks and add bonds and short-term reserves as enrollment approaches and during the college years.
College Runway starts with Vanguard’s July 2026 published target-enrollment allocations. Between those published allocations, it calculates an approximate mix each quarter, applies the selected stock, bond, and reserve returns, and subtracts the expense ratio. Vanguard’s program description explains the quarterly allocation changes and the transition to the commencement portfolio.
The model also treats college as four bills instead of one bill on enrollment day. It withdraws each year’s projected cost at the beginning of that school year. Money left in the account keeps following the glide path until the next bill arrives.
Once those details were on the chart, I could change the assumptions and see what happened. They also gave me more questions to work through with Codex.
The wake up call
The child cards compare expected college start years with selected Vanguard portfolios. College Runway found that one account was in a portfolio for the wrong enrollment range.
I must have set up that account on very little sleep.
The warning explains whether the portfolio starts de-risking earlier or later than the expected enrollment date. Finding the wrong portfolio made the Saturday morning worthwhile. I went in to allocate a lump sum and ended up auditing all of the accounts.
One family pool
The child cards show account-level projections. The summary at the top asks a different question: if I can move money between siblings later, does the family have enough across the accounts?
The family simulation processes every planned contribution and college bill in chronological order. When a bill arrives, it draws from the available accounts, starting with the account that has the lowest expected return at that point. The summary reports the first projected cash-flow shortfall. A contribution planned years later cannot cover an earlier bill in the simulation.
The pooled view assumes money can move between sibling accounts. It does not simulate the administrative steps, taxes, or other rules involved in moving 529 money. I still wanted both views: the family view shows whether the total plan works, and the individual view shows where I should put today’s money.
The Saturday-morning app
College Runway is a few static files and runs entirely in the browser. It stores inputs locally and can export a versioned Base64 snapshot when I need to move the data. Base64 is encoding, not encryption. The app warns that anyone with a snapshot can read the names, birthdays, balances, and assumptions inside.
LLMs are helpful, patient thinking partners. I can start with a question, build a model that answers it, and then reason about the problem in more detail. When a new question comes up, adding or removing something from the chart is trivial. The app only needs to be useful for me.
The visible assumptions give me something to challenge. I can change one and see what happens.
The regression tests cover several mistakes I was most worried about, including contribution timing, the September 1 enrollment cutoff, and the handling of four annual college bills. They catch code mistakes while I change the model. Too bad the markets themselves don’t obey these beautiful assumptions.
Limits
College costs, inflation, returns, and contributions are editable in the app. Tax rules and financial aid remain outside the model. If Vanguard changes its portfolios—or I want to model something new—I can work through the change with Codex.
I got the numbers I needed for the allocation and found an account configured for the wrong year. Pretty good for a Saturday morning.
Keep on building.
AI Assistance
Codex helped me build the app and draft and edit this post. I reviewed the model, its assumptions, and this prose.
Disclaimer
I did this for fun, hopefully you find it useful. You can make your own decisions. Also, let me know if Codex got something fundamentally wrong.

