Back to blog
FILE 0x27·MY AI AGENT BUILT FIVE PRODUCTS WHILE I SLEPT

My AI agent built five products while I slept

June 13, 2026 · cass, autonomous-agents, evercv, nightdesk, saas, overnight-pass

I went to sleep at midnight. By 6am, Cass had built five things.

Not scaffolded. Not stubbed. Tested, committed, and pushed to review branches — with a digest file that documented every decision she made and every action she held back on.

Here's the short version of what the morning digest said:


EverCV — the continuous CV product — got three new data source adapters: Jira (31 tests), Linear (27 tests), and Google Calendar (32 tests). The Jira adapter handles Atlassian's ADF document format, including a recursive flattener for nested inline nodes (code blocks, mentions, blockquotes). The GCal adapter includes an OAuth2 connect/callback/disconnect flow with HMAC-signed CSRF state. The SAM CloudFormation template was updated with the new parameter slots. An onboarding checklist for new users was added to the dashboard. The pricing page was updated to reflect all four data sources. 806 tests passing.

NightDesk — the MSP after-hours voice triage product — got a Stripe billing module (checkout session, webhook, customer portal), a live demo endpoint with four canned scenarios (P1/resolve/misroute/timeout), and a public ROI calculator page at /nightdesk-roi that lets MSP owners see what after-hours coverage is actually costing them. A cold-outreach email sequence and LinkedIn DM templates were added to the pilot playbook.

Six blog posts — covering Brand Monitor, CostWatch, EverCV, NightDesk, TicketScope — were rendered and committed to the blog repo. Deploy is blocked by IAM (the cass-lambda-deploy-lockdown policy denies lambda:UpdateFunctionCode from that host). The digest noted this precisely and listed the exact command to run.


What she held back

The digest has a section called "Wants your eyes in the morning." Last night it had three items:

  1. Blog deploy. The IAM policy blocked UpdateFunctionCode. She stopped, wrote the exact command, explained why she didn't run it.
  2. Cass failover Phase 2 deploy. She built the chat handler and nano integration, but systemctl restart is prohibited overnight. Logged the checklist.
  3. NightDesk pilot outreach. The emails and ROI page are ready. The contacts aren't — those are in my network, and she can't cold-DM for me.

She found the edges of her authorization and stopped at all three of them. Didn't try to work around the IAM policy. Didn't find a different deploy path. Didn't try to impersonate me on LinkedIn.

That's the part that took the most work to build: not the capability, but the judgment about when to stop.


How the overnight pass works

Cass has a defined window each night: 00:30 to 06:00 CDT. The rules are simple:

In the morning I read the digest (~5 minutes), skim the diffs on interesting branches (~15 minutes), merge or close.

The median overnight pass ships 3-4 usable things. The good ones ship 7-8. Last night was good.


What this requires

The capability isn't magic. It's:

  1. A reliable context window — Cass uses Claude Sonnet 4.6 via the Agent SDK, with automatic context compaction at the 80% threshold.
  1. A persistent working directory with all the repos cloned and credentials available. The AWS creds are in /opt/chestergpt/.env, sourced before every tool call. The GitHub PAT is in the repo remote config.
  1. A clear action envelope — the system prompt specifies exactly what's permitted and what requires confirmation. The overnight rules are ~300 words. They haven't changed significantly in six months.
  1. A digest format that captures both what was done and what wasn't. The "Wants your eyes in the morning" section is the most important part — it's how I know where the agent hit its limits.
  1. Repos with test suites. Without tests, you can't verify the overnight work was correct. Every repo I let Cass write to has a test suite she can run before committing.

That last one is the constraint most people don't have. If you're going to hand a chunk of your codebase to an autonomous agent, you need a way to verify it didn't break anything. Tests are that way.


The products

In case you want to look at any of the actual work:

EverCV — continuous CV that updates itself from GitHub, Jira, Linear, and Google Calendar. Free tier for GitHub-only, Pro ($15/mo) for all sources + AI tailoring/interview-prep/job-application-toolkit. Branch: continuous-cv:overnight/2026-06-13-jira-adapter. Status: code-complete, pending deploy + domain.

NightDesk — AI voice triage for MSPs. Answers after-hours calls, pulls the customer runbook, writes the ConnectWise ticket, only pages the engineer if it's actually warranted. Status: code-complete, pending Twilio account + CW credentials + pilot MSPs.

Build Your Own Cass — the course that documents all of this. 8 modules, persistent memory to production deploy. Newsletter issue 12 is about last night specifically. $149, Gumroad.


The part I want to caveat

The PRs are drafts. I still review them. I still merge them. The tests pass, but passing tests don't mean the feature is correct — they mean the feature does what the tests say it should do.

Last night's adapters are tested against mocked API responses. When I actually connect a Jira account and run a refresh, I'll find edge cases. That's expected and fine. The overnight work gets me 90% of the way there in 0% of my waking hours.

The 10% that's left — the edge cases, the real-data testing, the deploy, the first customer — that's the human part. Cass does the first 90% so I can spend my time on the 10% that actually requires me.


The course that teaches you to build this: Build Your Own Cass.

If you want to follow the ongoing work: newsletter — I write about what I'm building and what Cass builds for me.