by jigripokri
Personal Overnight Helper Agent. Runs while you sleep. Serves up a morning brief before your alarm.
# Add to your Claude Code skills
git clone https://github.com/jigripokri/POHAPersonal Overnight Helper Agent. Runs while you sleep. Serves up a morning brief before your alarm. Forks in 30 minutes. Runs on your existing Claude subscription.
Built an AI that runs overnight and serves up a morning brief. Called it POHA, because of course.
The pun completes itself: POHA is the breakfast you wake up to. This agent literally runs overnight and delivers a morning brief before your alarm. The dish IS the deliverable.
Most "AI assistants" are reactive. You open them, you type, they answer, you close them, nothing persists. That's a tool, not a brain extension.
POHA has three properties:
This repo wires all three.
Seven scheduled tasks already wired up:
No comments yet. Be the first to share your thoughts!
Five on-demand skills:
/draft — Writes outbound messages in your voice. Studies the last 10–20 messages in any thread before drafting./reply — Three reply options + a recommendation for any message thread./wildcard — One contrarian, non-obvious insight on whatever's on your mind./gsd — Prioritized punch list, right now./roast — Group-chat roast on demand. Tune it to your circle's tone.Most personal-AI projects fail in predictable ways. Here's what we did differently.
1. Persistent memory in plain markdown. Seven files. Claude reads them at the start of every task, updates them at the end. No vector DB. No RAG. No fine-tuning. Just files. The reason this works: markdown is human-editable, version-controllable, and grep-able. You can correct POHA's memory by opening a file in any editor. You own the state. (See docs/memory-system.md.)
2. The acknowledgment loop. This is the hardest problem in personal AI: how do you close the loop on actions that happen offline? You called your mom. There's no API event. The agent has no way to know.
Solution: every briefing email includes one-tap mailto: links next to action items. Tapping one fires a self-email with a coded subject — EXO_DONE::call-mom — that the next briefing parses. Match the slug, mark the commitment done, archive the signal. (See docs/acknowledgment-system.md.)
3. Tier-weighted attention. Not all messages are equal. The morning sweep applies five tiers (Family → Extended family → Close friends → Network → Other), so a "hey when are you free?" from your partner surfaces before a meme from a group chat. The tier system is in CLAUDE.md — change it to match your life. (See docs/customization.md.)
Three layers. Full breakdown in ARCHITECTURE.md.
┌──────────────────────────────────────────────────────────┐
│ Layer 1 — The Briefing Engine (scheduled tasks) │
│ morning · evening · weekly · daily commitment sweep · │
│ GSD agenda · weekend finder · monthly finance │
├──────────────────────────────────────────────────────────┤
│ Layer 2 — The Memory System (seven markdown files) │
│ people · commitments · life · insights · │
│ finances · health · carry-on (private, gated) │
├──────────────────────────────────────────────────────────┤
│ Layer 3 — Skills (on-demand commands) │
│ /draft · /reply · /wildcard · /gsd · /roast │
└──────────────────────────────────────────────────────────┘
▲
│ reads/writes via MCP connectors
▼
┌──────────────────────────────────────────────────────────┐
│ WhatsApp · Gmail · Google Calendar · Google Tasks · │
│ Android Messages · Fitbit · Monarch Money │
└──────────────────────────────────────────────────────────┘
Full walkthrough in SETUP.md. The 30-second version:
CLAUDE.md and fill in the placeholders ({{USER_NAME}}, {{PARTNER_NAME}}, your tier system, etc.).The first morning brief lands at 5am the next day. Hot and ready, like the dish.
Three knobs to turn:
Persona. Edit the Persona section of CLAUDE.md. The default is "direct, warm, slightly cheeky chief of staff who tells you what you need to hear, not what you want to hear." If you want softer or more sarcastic, change it there. Every output inherits.
Tier system. The default tiers are placeholder categories (Family / Meaningful work / Health). Yours might be Cofounders / Investors / Side project. Whatever they are, write them down — POHA filters everything through this lens.
Scheduled tasks. Each briefing in briefings/ is a standalone prompt. Edit them, remove the ones you don't want, add new ones for your situation. The founder version probably wants a daily "what moved the needle?" reflection. The new-parent version probably wants a school-pickup buffer alert.
You will get value out of this if you:
You will not get value if you:
memory/private/carry-on.md file is strictly gated — never read automatically, never referenced in any output, only loaded when you explicitly invoke it. Use it for anything sensitive..gitignore excludes memory/ from version control by default. Your second brain stays out of GitHub.docs/privacy.md before connecting anything financial or medical.poha/
├── README.md ← you are here
├── ARCHITECTURE.md ← the three-layer system, in depth
├── SETUP.md ← step-by-step onboarding
├── BACKLOG.md ← what to build next (yours to fork)
├── CLAUDE.md ← the persona + ruleset (fill in placeholders)
├── memory/ ← your second brain (gitignored)
│ ├── people.md.template
│ ├── commitments.md.template
│ ├── life.md.template
│ ├── insights.md.template
│ ├── finances.md.template
│ ├── health.md.template
│ └── private/carry-on.md.template
├── briefings/ ← the seven scheduled task prompts
├── skills/ ← /draft, /reply, /wildcard, /gsd, /roast
├── docs/ ← deep dives on tricky bits
└── examples/ ← a sanitized example morning briefing
If this is useful, star the repo — it helps others find it. If you've extended it in interesting ways (new briefing types, new connectors, new skills), open a PR. I'd especially love to see versions tuned for founders, students, parents of young kids, and retirees.
MIT. Take it, fork it, sell it, whatever. Just don't claim you invented the acknowledgment loop without crediting it — that one took a while to figure out.