Daily OS
A personal operating system I built to run my job and contract search like an actual job. A fixed weekly schedule on my calendar, a morning agent that pulls the day's best openings, and a logbook web app to track the work I do each day. Built it for myself, and it is live.
Why I built it
When you are between roles, the hardest part is structure. There is no one telling you what to do, so it is easy to drift. I wanted to treat the search like a full-time job, with a real routine and a real way to see whether I was actually doing the work. So I built my own system for it instead of forcing my week into a generic to-do app.
It comes in three layers, and each one solves a different part of the same problem.
Layer 1: the calendar
The schedule lives in Google Calendar, not in the app. Recurring weekday blocks for the things that matter: a morning workout, an applications block, a build and case-study block, an outreach block, an AI learning block, and an admin and shutdown block to close the day. A weekly review block on Sunday. Every block is set to Free availability on purpose, so booking links and interview times stay open and nobody sees me as busy when they go to grab a slot.
Layer 2: the morning agent
A scheduled cloud agent runs every weekday at 5:30am Eastern, before I am at my desk. It searches the web for fresh job and contract openings in the lanes I care about (AI Solutions and Implementation Engineering and GTM/RevOps Engineering, with Forward Deployed roles as a swing), then hands me a ranked shortlist to read when I sit down. So the applications block does not start with a blank search bar. It starts with a list already waiting.
Layer 3: the logbook
The calendar tells me what to do. The logbook is where I record that I did it. It is a single-page web app, deployed on Vercel, built around the same six buckets I block out on the calendar: Workout, Applications, Case Study, Outreach, AI Learning, and a Daily Shutdown.
Each bucket takes real entries, not just a checkmark. Applications capture company, role, and a link, plus a clickable status that moves through Applied, Responded, Interview, Offer, and Rejected, so the log doubles as a simple pipeline tracker. Outreach captures who and which channel. Case studies and learning capture what I built or learned, which feeds a running "Menu" of everything produced (the raw material for a portfolio like this one).
On top of the logging there is a To-Do and Backlog list seeded with my real starter tasks, a day-streak counter that only counts a day if I hit at least four of the six buckets, weekly target bars, and a Follow-ups panel that automatically flags applications sitting too long at Applied or Responded and outreach that has gone quiet. There is also JSON export and import so I always have a backup.
How it is built
The frontend is a single vanilla HTML and JavaScript file, no framework. It is local-first: everything saves to the browser immediately so it works even with no connection. Behind it sit two small Vercel serverless functions, one for cross-device sync (a per-user record in Neon Postgres) and one for public config. The sync layer is built to use Google sign-in, verify the token on the server, and store each user's data as a single JSON blob keyed to their account, with the design pulling the day's calendar blocks in read-only.
Right now it runs in local-only mode. The sync and Google sign-in are coded and deployed, but they stay dormant until I wire in the Neon connection string and the Google OAuth client. The config endpoint checks for both and flips sync on automatically once they are set. So the logging, to-dos, streaks, and follow-ups all work today, and the cross-device sync turns on the moment I finish the setup.
What it shows
This one is personal, not client work, so I can be open about it. It is a small but complete full-stack build: a real schedule, an automation that does useful work while I am still asleep, and an app I actually use to stay honest about the search. I am non-technical by training, and I shipped the whole thing end to end with AI as the pair. That is the point of it being here.