The work

The things I've worked on, and how I came at them.

Less a list of titles, more the actual problems and how I approached them, in the detail a bullet point never gets. Most recent first, starting with Parrot.

2025–Present

Parrot

Type a card on your phone. It shows up in a mailbox, handwritten and stamped.

Founder · Chicago, IL

What it is

A card you make on a screen, mailed as a real one.

Parrot Postage, Parrot for short, turns a card you make on your phone into one that lands in a mailbox. You design it in the app: upload a photo, write a message, and, if you want, let it generate the handwriting and the cover art. Parrot prints it, handwrites the envelope, stamps it, and drops it in the mail through USPS. You watch it move from submitted to delivered.

The positioning is "real beats impressive." The note is meant to read as genuinely from you, so the product pushes toward believable, low-key, human messages rather than the flowery language on a store-bought card. A card runs about seven dollars, all in.

A bowl of printed Parrot Postage greeting cards: Happy Birthday, Thank You, Thinking of You, Girls Night, Bridesmaid, and more.

What I built

The whole thing, from the editor to the print queue.

I built the product and the operations from zero, raised a pre-seed, and hired the first team. It runs as one codebase with four moving parts: a card-creation app that compiles to web, iOS, and Android from a single source; a backend that renders a print-ready PDF matching the on-screen preview exactly; an internal dashboard operators use to work the mail queue from awaiting-print to mailed; and a helper app that drives the physical printer.

The harder parts are the ones that make it feel human: turning a typed message into real handwriting, keeping the printed card pixel-faithful to what you designed, billing on a ledger that never double-charges, and logging every card so nothing gets lost between the screen and the mailbox.

One card, screen to mailboxThe same design becomes a print-ready file, then a physical object. The first half happens on a device; the second half happens on a printer with a stack of stamps.
  1. Designphoto, message, layout
  2. Generatehandwriting and cover art
  3. Rendera print-ready PDF
  4. Printcard printed, envelope handwritten, stamped
  5. Mailinto USPS
  6. Tracksubmitted to delivered
on a screenin the world

Who it's for

One person, a business, or someone else's product.

Three ways to send run on the same rails. Individuals send personal cards. Businesses run bulk campaigns with mail-merge and a personalized card per recipient. And a partner API lets other products call Parrot's handwriting generation and put real handwriting inside their own apps, the first of them being Handfelt.

2024–2026

Three Pillars

Zillow, but for businesses.

Cofounder · Chicago, IL

What it was

Zillow, but for businesses.

Zillow is one of the most fun sites on the internet. You click around a neighborhood and every house wears a number, an estimate of what it is worth, and you never have to ask anyone. Under the hood it is just a pricing model pointed at houses.

Three Pillars did that for companies. You could browse a library of businesses and see what each one was worth and how it was doing, the same click-around curiosity, with businesses in place of houses. We even shipped a Chrome extension: land on any business listing, hit capture, and it would build you the model on the spot.

The catch is that a house hands you clean comps and a business does not. There are no tidy three-statement financials sitting on the corner coffee shop. Getting from almost nothing to a real, defensible number was the whole game.

Capture a listing, get a valuationThis is a re-creation of what it felt like to use, not the actual product. Pick a listing, then click the Three Pillars browser extension. It reads the page, highlights the numbers that matter, and converts it into a valuation you can check against the asking price.
bizforsale.example/riverside-coffee
Riverside CoffeeFOR SALE
Cafe
Asking Price:$450,000
Gross Revenue
$610,000
Real Estate
Leased
Cash Flow (SDE)
$110,000
Established
2019
Business Description

7 years in business

Turnkey, loyal regulars, and fully staffed.

A stand-in for the real interface, which is still live at three-pillars.com. Illustrative businesses and figures, not real listings.

Why I did it

I spent a year on it because the opening was that clear.

Coming out of an MBA I could have taken a normal job. I spent a year on this instead, and not because I like starting companies. For a private business the important numbers are a guess: what it is worth, whether its performance is any good. That judgment has always been gated behind people you pay and degrees you earn, and AI had just made it possible to hand a first draft of it to anyone with a browser.

That kind of opening only shows up once in a while. It was worth a year to find out whether it was real.

How it worked

From a listing to a number you can defend.

Getting there meant working backwards from how a normal model does it. A traditional DCF starts from a top-line growth rate you assume and rides on a few blanket numbers. Three Pillars built the business up from its actual operating units instead, for a coffee shop, down to cups and croissants, then bounded every estimate against reality by reading public-company filings. A cafe pulls a comp like Starbucks' 10-K to anchor revenue per store and employees per store, so hundreds of granular inputs each stay inside what public markets actually show.

And because it was a real structured model, not AI writing a number into a cell, you could interrogate it with a sensitivity analysis across about five hundred inputs.

How it differed from a normal modelA traditional DCF, and the way Three Pillars built one.
Traditional DCFThree Pillars
Starts from
a top-line growth rate you assumethe business's real operating units
Runs on
a handful of blanket assumptionshundreds of granular inputs
Kept honest by
the analyst's judgmentreal benchmarks from public-company filings
Stress-test
a few cells at a time~500 inputs at once
You end with
a number riding on your growth guessa standardized, referenceable model

Illustrative: made to show the approach, not exact data.

The trick

It learned from the ten thousand that already exist.

A new coffee shop feels like a blank page, but it isn't. Thousands are already open, and the big chains publish their economics to the decimal in their 10-Ks. So the model never guessed your shop from scratch. It read the giants' filings for structure, cost ratios, revenue per store, revenue per square foot, and leaned on the crowd of comparable shops for the range. It is the Moneyball move: no single one of them is your business, but in the aggregate they add up to a number you can stand on.

You can't hold ten thousand businesses in your head. Pillars could, and not just for coffee shops. Here is the idea in miniature, one target company you can actually move around:

Where a business landsPillars never showed you this exact picture, but it is the move underneath everything it did: drop a target company into the sea of comparable ones, anchor it with the public names, and read the value that falls out. It ran this automatically, across thousands of comps and hundreds of inputs, for any business, not just coffee shops.
$648,000estimated valuation
Reference companies
comparable companiescompany averagetarget co

Illustrative distribution and figures, not real data.

Play with it

One valuation is a guess. Run it ten thousand times.

A single number pretends to a precision it does not have. The tool's answer was to run the whole model thousands of times over, wiggling every driver at once, and hand you the range instead of a false-precise point. Toggle the drivers and re-run it. Fewer moving parts, tighter spread. This is a stripped-down stand-in for the real thing, which is still live atthree-pillars.com.

Monte Carlo valuationEvery enabled driver varies ±15% at once, 10,000 runs. Bars are the range of what the business is worth; the dashed line is the single-point baseline.
10,000 runs
meanmedianσ5–95%25–75%baseline

Drivers, sorted by impact

Illustrative model and figures, not the real one. A stand-in for the tool at three-pillars.com.

The response

People didn't need convincing.

The response in customer conversations was strong. I won't name names, but the same reaction kept coming up:

"This is our holy grail."

the head of technology at a fund of funds

"You've answered the question I stay up at night, staring at the ceiling, trying to solve."

a business-school professor

"This is exactly what we were looking for."

more than one experienced executive

It was credible enough that a roughly $100M legal case hired us to run the valuation.

What it took

I built the system, and got good people around it.

This wasn't a thin wrapper over a chatbot. I wrote the reasoning agents, the full front and back end, and the gnarly data structures underneath. Most of the hard work in a system like this is the plumbing nobody sees.

And I did most of it with almost no money. I had master's and PhD engineers building alongside me, a few experienced advisors, a standing session with a fund of funds, and a development partnership with a finance company that wanted in. I couldn't pay much; they showed up anyway.

The system, and the people around itMost of it on a shoestring.
What I built
  • AI reasoning agents
  • A full front and back end
  • Complex data structures under the hood
The people involved
  • PhD and master's engineers out of the University of Chicago, for almost nothing
  • A few experienced advisors
  • Standing sessions with a fund of funds
  • A development partnership with a finance-industry leader
  • An angel who invested and met with me weekly for six months

How it ended

Why I stopped.

I stopped pushing it. The window to build it into a real business looked like it was closing faster than I expected, with commercial AI getting better at the exact thing that made Three Pillars worth using. I decided that wasn't a bet worth more years of my life, so I put it down and moved on.

The demand was never the question. The timing was.

2022–2025

Skyworks

The numbers behind a plane built to beat the one I used to fly.

Strategy & Finance Associate

The question

Could you build a plane to beat the V-22, and pay for it?

Right after I stopped flying the V-22 Osprey, I spent three years modeling whether someone could build a plane to beat it. At Skyworks I worked directly for the chairman, a former University of Chicago trustee, as the person responsible for one question: was a next-generation aircraft, meant to compete with the Osprey, realistic to develop and to finance? The program contemplated hundreds of millions of dollars of planned investment.

What I built

One integrated model, eight separate aircraft.

I owned and built the full financial model, and not for one aircraft but for eight entirely separate ones. Each needed its own development budget, timeline, testing and prototyping plan, certification path, DCF, and set of fundraising tranches, all wired together so a change in one showed up everywhere. I worked directly with PhD-level engineers to keep the development timelines honest rather than optimistic, because that is the assumption everything else rides on.

One model, eight aircraftEach aircraft ran through the same stack, all connected so leadership could see which programs to fund, and when.
Development budgetTimeline and milestonesTesting and prototypingCertification pathDCF valuationFundraising tranches
× 8 aircraft, wired together into what to build, in what order, and how to fund it.

Where it went

It sized a nine-figure raise.

The model let leadership make the real calls: prioritize requirements, adjust timelines, work out which of the eight aircraft actually mattered, and sharpen the raise. It was solid enough to build the documents behind a nine-figure fundraise. The chairman and board used it, and the board included a former Secretary of Defense. I built the case. I did not present or defend it in the room.

How it ended

The internship ended.

This was an internship, and it ran its course. I left with the model built and a clearer sense of how a nine-figure aircraft program actually gets priced: how much of it comes down to credibility rather than spreadsheets, and how development risk shows up once real money has to move.

2022–2024

reOrbital

Making optical fiber in orbit was the easy part. The bet was doing it fast.

Cofounder · Chicago, IL

The problem

The internet runs on glass with a floor.

Nearly every long-haul internet signal travels as light through silica glass fiber. Silica is cheap and clear, but it has a floor: past roughly 1.5 microns of wavelength it starts absorbing its own signal, so the light fades and has to be caught and re-amplified every so many kilometers down the line.

One glass doesn't have that floor. ZBLAN, a fluoride glass of zirconium, barium, lanthanum, aluminum and sodium, stays clear far deeper into the infrared. In the mid-IR band where silica quits, it can carry a signal with up to about 20× less loss. It has been known since the 1970s. Almost nobody uses it, for one stubborn reason.

A hair-thin thread you sell by the meterPrice per meter, log scale. We planned to price around $900/m (premium specialty territory) and bring back ~50 km per launch.
$0.10$1$100$10,000price per meter →Standard telecom fiber≈ $0.30 / mTop-end specialty fiber · photonic-crystal≈ $200–600 / mSpace-drawn ZBLAN · our projection≈ $900 / m
~$900 per meter  ·  ~50 km of it per launchZBLAN fiber is about as thin as a human hair, so 50 km is a small, light spool. The whole run comes home in one vehicle. Initial estimates; the launch itself we projected near $54K.

Prices per meter: standard single-mode fiber ≈ $0.30 (2025 fiber pricing); photonic-crystal specialty fiber ≈ $200–600 (RP Photonics). The ~$900/m and ~50 km/launch are reOrbital's own initial estimates.

Illustrative: made to show the shape of the argument, not exact data. Don't take the precise numbers as gospel.

Why nobody uses it

On the ground, gravity clouds the glass.

As the drawn glass cools, a crystal can nucleate inside it. It'slighter than the glass around it, so it starts to rise, and rising drags the surrounding glass into motion. That disturbance is what grows the crystal and seeds the next one. On Earth a single nucleus can start the chain. In orbit it has no reason to rise, the glass stays still, and it mostly just sits there. Same cooldown, two gravities:

As the glass cools, one crystal starts a chainIt happens on cooldown, not melting. In tests, 1g crystallizes while 0g stays clear.
1g · Earth
it rises, stirs the glass, and seeds another
0g · Orbit
no rise, no stirring, it just sits
The rising is the trigger: a buoyant crystal drags the glass into motion, and that motion seeds the next. Remove gravity and nothing rises. (Theoretical loss approaches ~0.001 dB/km.)

Illustrative: made to show the shape of the argument, not exact data. Don't take the precise numbers as gospel.

…and this is the fiber you getThe same difference, frozen into the drawn fiber: crystallites cloud the 1g fiber; the microgravity fiber stays clear.
1g · Earthcloudy: light scatters
0g · Orbitclear: light passes
NASA electron micrographs: ZBLAN fiber drawn in 1g is covered in crystallites; the same fiber drawn in microgravity is smooth and clear.A drawn ZBLAN fiber, clear on one side and crystallized/cloudy on the other.
The real thing: NASA electron micrographs of ZBLAN drawn in 1g (crystal-riddled) versus microgravity (µg, clear), beside a drawn-fiber comparison. Images: NASA.

The rendered fibers are illustrative: for the shape of the idea, not exact data. The micrographs are real (credited above).

The real problem

Space fixes the glass. Space is also slow.

The part that mattered: everyone already knew all of the above. NASA and others have drawn ZBLAN in microgravity since the 1990s, and in 2024 a company pulled roughly 12 kilometers of it aboard the ISS. The physics question was settled. The businessquestion wasn't, because the ISS way is painfully slow. You're a guest in someone else's lab, rationed by crew time, and a finished spool can wait months for a ride home on the next return capsule.

reOrbital's whole thesis was that this is a throughput problem, not a physics problem. Put the production on reusable rockets instead of the station: short, dedicated runs (a few days in orbit) that come straight back down and fly again. Many fast cycles beat one long one. That's the number a factory in space lives or dies on: usable fiber returned per unit of time.

Why the vehicle matters more than the furnacereOrbital's framing of the cadence bet.
ISS routeone ~6-month increment · crew-gated · then wait for a return rideReusable~3-day production runs · return · fly again · fly again

Illustrative: made to show the shape of the argument, not exact data. Don't take the precise numbers as gospel.

Why it could work now

The economics only work once launch gets cheap enough.

None of this was settled fact. It was the projection we were building against. A reOrbital run carried roughly 360 kg, so the bill for one launch is just the price per kilogram times ~360. As that price fell, the cost of flying our factory fell with it, from about$54,000/kg on the Shuttle, to $2,700/kgon a reused Falcon 9, toward Starship's $150/kg target.

And it doesn't slide down smoothly. It crosses thresholds. At Shuttle prices one launch runs into the tens of millions: no-go. At reused-Falcon prices it's about $970K, a real but survivable line item: economically viable. At Starship's target it drops near $54K a flight, roughly the ~$60K we were planning around, and cheap enough that the fiber inside is worth far more than the ride: valuable.

What one of our launches would cost, and when it starts to pencilOur projection as we built. A reOrbital run carried ~360 kg, so one launch ≈ $/kg × 360. Log scale; Starship is a target.
NO-GOECONOMICALLY VIABLEVALUABLEcost of one ~360 kg launch$10M$1M$100K$19M / launchShuttle · $54,000/kg$970K / launchFalcon 9 · $2,700/kg$54K / launchStarship · $150/kg

Illustrative: made to show the shape of the argument, not exact data. Don't take the precise numbers as gospel.

The approach

The unproven part was throughput, not physics.

Drawing ZBLAN in orbit wasn't our idea. NASA and others had done it, and the ISS had made kilometers of the stuff. What nobody had really shown was whether you could make enough of it, fast enough, for the economics to hold up. That's the part I worked on: throughput per run, on a vehicle that could fly often enough to matter. It's a narrower and less romantic question than "manufacturing in space," but it's the one the business actually turned on.

I joined a senior space engineer already chasing the process; my job was to turn a promising run into something a customer and an investor could underwrite.

Where it went

Enough people bet on it to keep it alive for two years.

We took it through the New Venture Challenge, Booth's accelerator, and placed 2nd of 65, which came with $280,000. Duality, the national quantum accelerator, took us into its third cohort with another $50,000, and we opened an SBIR to pull in non-dilutive government funding.

  • ~20×less signal loss than silica, in the mid-IR
  • 2nd / 65New Venture Challenge
  • $280Kraised at the NVC
  • $50K+ a Duality cohort seat

How it ended

Why I'm not still doing this.

Fair question, after all those numbers: if one launch could bring back that much fiber, why stop?

Because the piece we'd treated as solved wasn't. The underlying fiber-drawing technology wasn't nearly as mature as we thought, and you can model orbital throughput and price all day, but none of it matters until you can reliably draw good fiber in the first place. That base layer wasn't ready. We pivoted to work on it, but the path to a real product kept getting longer, and after about a year with the venture I moved on.

The economics were real. The technology under them wasn't there yet.

2013–2022

The Osprey years

Nine years as a Marine, most of them in the cockpit of the Osprey.

United States Marine Corps · Osprey pilot and aviation planner

What I flew

A helicopter and an airplane at the same time.

Long before any startup, I spent eight years flying the MV-22B Osprey for the Marine Corps. It lifts off straight up on two big rotors like a helicopter, then tilts those rotors forward and cruises like a turboprop, roughly twice as fast and far as any helicopter can go.

A pen drawing of an MV-22B Osprey tiltrotor in helicopter mode, rotors vertical and landing gear down.

The flying

Moving 24 Marines, in any conditions.

The job under all of it was simple to say and hard to do. Put 24 Marines into a landing zone in enemy territory, day or night, in any weather, on less than six hours' notice, sometimes launching off the deck of an aircraft carrier. Each of those flights was a call you could not take back, with other people's lives in the back of the aircraft.

That kind of work builds one specific thing: a tolerance for irreversible decisions made fast, on incomplete information, with real consequences. It is the tolerance I carried into everything after.

Running the operation

Deciding which aircraft flew each day.

Later I ran current operations, which meant I set the squadron's daily flying. On deployment that was about 48 aircraft across six types, roughly $2B worth, spread over three ships and outside bases; in garrison it was smaller, about a dozen aircraft of one type. The hard part was never the flying. It was the scarce shared resources: competing Navy and Marine Corps priorities, ship positioning and flight-deck access, which Marines had to move and when, and constant re-planning as aircraft broke or readiness changed.

That is resource allocation under uncertainty, the same core problem as running a company's capacity or a portfolio, just with louder failure modes. It taught me that operations is mostly triage, done well, over and over.

Building a tool

Replacing the paper ticket book with software.

I inherited a paper green book that ran every IT and comms request for a 250-person organization. I replaced it with a real ticketing system I built in Microsoft Access. The database wasn't really the point. What mattered was what it let me do: every request now had a status, and everyone who filed one got told exactly where theirs stood. IT stopped being a black box you dropped a request into and hoped.

The green book becomes a databaseThe paper log I inherited, the tracked system I replaced it with, and the status update every requester started getting. Illustrative tickets.
IT & Comms Request Log
  • Cpl Reyes, SIPR locked out
  • HF handset dead, ready room
  • new Lt needs email + NIPR
  • sched printer offline (again)
  • VOSIP phone, no dial tone
TicketFromRequestStatus
  • #0412Reyes, J.SIPR lockoutResolved
  • #0413Ready RoomHF handsetIn progress
  • #0414Ellis, T.New accountsOpen
  • #0415OpsPrinter offlineResolved
  • #0416WatchVOSIP dial toneOpen

Illustrative tickets and messages, for the shape of the idea.

Finding the bottleneck

One network line, 500 hours back.

The other fix was physical. Pilots planned missions on a shared network in one room, then carried the plan about 300 feet down the hall to brief it. That briefing room is also where the duty officer sits, the pilot running the day's flying, who is not allowed to leave the post. That person is almost always flying the next day and needs to prepare, and couldn't, because the planning network was in the other room.

I'd earned the CompTIA Network+ certification that none of my peers bothered with, so I knew how far I could run a single length of CAT5 without a repeater. I ran exactly that far, straight to the duty desk, and dropped a computer in. Now the person pinned to the post could plan during the downtime the job forced on them. It gave back something like 500 hours of planning time, and it wasn't complicated. It just took noticing.

One length of CAT5, down the hallThe duty officer was stuck 300 feet from the planning network. Watch a day play out: before, they can't join planning until they walk over after their shift; after, one cable lets them plan from the post. Illustrative.
The planning day, two ways07:00
Before the cable
Planning room≈ 300 ftReady Roomthe duty poston duty
The officer's stuck on the post.
After the cable
Planning room≈ 300 ftReady Roomthe duty poston duty
Getting set up.

Illustrative day and figures, for the shape of the fix.

Liaison to Saudi Arabia

Getting four US warships into a Saudi port.

Near the end of my time in the Marine Corps, I was sent to Saudi Arabia to help pull off an unusual port visit. Four US warships, led by a large amphibious ship, were coming into Jeddah Islamic Port. It had been about a decade since a comparable visit, and this time the ships were using one of the region's big civilian commercial ports instead of a naval base. I got there after the decision had already been made. My job was to make it real.

A naval base knows how to receive a warship. A commercial port has a different job, so ordinary questions suddenly needed answers: where do the ships go, who's allowed into the port, how do hundreds of American personnel move through a civilian facility, who provides what the ships need alongside, which Saudi organizations need access, and who actually has authority over each piece. Most of the work was finding the one person who could answer a question, making sure they understood what everyone else needed, and connecting the pieces.

Everyone who had to line upThe visit only happened if all of these moved together. Most of the job was standing in the middle, connecting them.
U.S. NavyU.S. MarinesLocal supportSaudi governmentPort leadershipSaudi Navythe ship

When the answer didn't exist yet

"Are we cleared?"

One of my jobs was confirming that Saudi Arabia had formally cleared the ships into its territorial waters. As the arrival got closer, the Americans kept asking me the same thing: are we cleared? I asked a senior Saudi civilian official, and he thought the Navy had it. I asked the senior Saudi naval side, and they thought the civilian side had it. The ships kept getting closer.

A lot of it was expectations that didn't line up. The American side had its own sense of how fast a clearance should come and when the answer should exist, and it kept projecting that timeline onto a partner nation that didn't run on it. Add a handful of stakeholders who weren't talking directly to each other, and the calls all landed on me. Most of the work was managing that: explaining the same uncomfortable thing to the Americans, that this was Saudi Arabia's country and Saudi Arabia's call, while working the Saudi side to find the right people and make sure the request wasn't sitting forgotten on a desk. I could keep it moving. I couldn't manufacture a clearance nobody had issued yet. We got it in on time, but it was close.

Once it was in port

Getting the ship there was only half of it.

Arrival wasn't the finish line. The busiest stretch started once the ship was alongside: hundreds of American personnel moving through a civilian facility, Saudi hosts coming aboard, and problems that needed an answer on the spot, now that everyone was finally in the same place. One of them:

The ship's security team planned a very intensive screening for anyone approaching the vessel. From their side, that was reasonable. Then I pictured our Saudi hosts going through it, and asked my translator whether it would be appropriate. His answer was essentially: absolutely not. The Saudis had welcomed an American warship into their port, and putting senior hosts through that kind of screening could turn a good visit into an insult.

The security team couldn't take that direction from me, but the captain could. So I called the captain, explained it, and asked him to change the procedure before the hosts arrived. He did.

What it came to

A warship in the port, and a visit to run.

A photo of the ship alongside in Jeddah is the simple version of the story. The real one is weeks of meetings, phone calls, unanswered questions, introductions, permissions, contractors, and reading the room across cultures and organizations, most of it once everyone was finally in the same place and needing something. Getting the ship there mattered. Keeping the visit running once it arrived was the bigger part of the job.