TL;DR
Building solo — roughly forty scheduled background jobs do the work a team would otherwise split among people.
They run on Inngest, a background job platform that breaks each function into steps and retries only the step that fails, which is why I can rely on a cheap model like MiniMax 3 without everything falling apart.
Building alone means the “floor” — the stuff that happens no matter what — doesn’t exist until you deliberately build it: a registry of every function’s cost profile, cost audits, and jobs that ship paused by default.
An admin dashboard renders all twenty-eight pausable functions as toggleable cards grouped by category, so I can see and control the whole system at a glance.
The Night Shift
At eleven at night, while I’m winding down in Brooklyn, my product creates its own YouTube videos.
Nobody tells it to. Nobody’s awake to watch it happen. It just does — on schedule, every night, whether I remember it exists or not.
That’s one job out of roughly forty. At two in the morning it refreshes research on places users previously saved. Mondays at three it fans out across the charter networks — Brooklyn Prospect, Success Academy, Uncommon, Ascend — and pulls whatever changed on their enrollment pages. At four it audits its own AI spending and emails me if yesterday cost too much. Every other day at nine it compiles a prospecting digest and drops it in my inbox.
I’m building Motley NYC, a neighborhood-and-schools intelligence platform, and I’m building it solo. Underneath all of it — the videos, the research refreshes, the enrollment scraping, the spend audits, the digest — are Inngest functions. Building alone means I have to build code into the system that can approximate, in timing and reliability, what other people would otherwise do for me.
What Inngest actually does
Inngest is a background job platform. You write a function, tell it when to run — a cron schedule, or an event like “user saved a place” — and it handles the scheduling, the retries, and the execution for you.
What matters most is how it treats a function’s steps. A job isn’t one opaque block of code that either finishes or doesn’t. You break it into steps, and Inngest logs each one as it completes. If step four of a nine-step job throws an error, Inngest doesn’t rerun steps one through three — it retries step four, picks up where it left off, and leaves the rest of the batch alone.
That’s why I can rely heavily on a cheap model like MiniMax 3. Cheap models make mistakes more often, but the added durability turns a crash into an inconvenience instead of a mystery.
The floor
Every product has a floor. On a team, the floor is made of other people. Someone notices the scraper broke. Someone gets an error. Someone opens the dashboard on Tuesday because that’s what they do on Tuesdays.
Building solo, the floor is whatever you remembered to do — which means it doesn’t exist until you build it, deliberately. The floor is the minimum that happens no matter what: the checks nobody has to remember to run, the audits that fire whether or not you had a good day.
The need for this got concrete fast. Once I’d hooked up enough external APIs — the LLM, Foursquare, Exa, whatever comes next — I couldn’t hold their costs and behavior in my head anymore. I needed to be able to look at any function and know, instantly, what it did and what it cost, especially because I knew I’d be changing this system constantly. Six months from now I won’t remember why a given job calls the LLM twice instead of once. The registry isn’t a nice-to-have; it’s the only reason I can touch this system later without breaking something I’ve forgotten about.
Motley NYC has a registry file that’s the single source of truth for every scheduled and event-triggered function — its cron expression, what it does, its cost profile: whether it calls the LLM, whether it hits Foursquare’s premium attributes, whether it burns Exa credits. New functions with costs ship paused. That single default — paused until I explicitly flip it — is what lets me keep building. I can wire up a new job, point it at a new API, let it sit inert next to forty functions already running unattended, and nothing changes for the system until I decide it should. The gate isn’t just a cost control; it’s what makes it safe to keep adding without re-auditing everything already in motion. Above all of it sits the daily cost monitor, itself just another Inngest function, aggregating yesterday’s LLM calls and flagging any prompt with an error rate over twenty percent. That’s the person who checks the bill. I don’t have colleagues.
The wall of switches
The registry only started earning its keep when I could see it. I’m a visual thinker by nature — I like to see things when making decisions.
Motley NYC’s admin renders all twenty-eight pausable functions as cards, grouped into seven labeled sections with an icon on each: Places & venues, Housing, Admissions, Scoring, Marketplace, Place research, Operations. Each card carries the plain-English description straight from the registry, what it costs to run, and a toggle that reads active or paused. Each group header tells me how many of its jobs are currently off.
The floor is not the ceiling
What the night shift bought is narrower than growth, and more useful.
Five of eight middle-school matches one week. Seven of eight elementary the next. Real families, matched to real schools, off data that was fresh because nothing had to be remembered to refresh it. The admissions calendar is current because a function reads it every morning. The neighborhood narratives regenerate weekly whether I’m shipping features or not.
But a floor is not a ceiling. Nothing running overnight has judgment, or taste, or an opinion about why fifty clicks should stay fifty and not creep to five hundred. A function can execute a decision I’ve already made. It can’t tell me the decision was wrong, or notice that the whole approach needs to change. That still needs the part of me I can’t schedule.
That’s the actual trade of building solo: you don’t get more hours, so you spend the ones you have on the part of the job nothing else can do, and you write everything else into a system patient enough to run it for you. Somewhere between two and four tomorrow morning, before I’ve had coffee, that system will already have hit a wall, retried, picked itself back up — and never once woken me to say so.





