2026-04-23

I built a Discord bot that acts like a third cofounder

Always-on. Tracks commitments. Sends daily digests. Adapts when I'm slipping. Cost: about $0/month.

#discord#struvo#accountability#agents#gemma

The premise

Struvo is a two-person operation — me and my cofounder. We talk in Discord because Slack costs money and Discord is where the rest of the SD AI scene already is. The problem with two-person Discord: nobody catches your slips except the other person, and they're slipping too.

So I built a bot that acts like a third cofounder. Always on. Reads what we say. Tracks what we said we'd do. Sends a daily digest at 6 AM. Asks me at 5 PM if I shipped what I said I'd ship.

What it actually does

Commitment tracking: When either of us says "I'll have X done by Y" in a channel, the bot extracts the commitment and writes it to a markdown file. The next morning's digest lists every open commitment, sorted by deadline.

Daily digests: 6 AM, every day. Yesterday's commitments resolved, today's open, this week's drift. Posted to a channel both of us actually read.

Adaptive accountability: If I miss a commitment three days in a row on the same topic, the bot asks me — directly, by name — what's actually blocking it. Not in a "managers using AI for HR" way. In a "your buddy who notices you're stuck" way.

The model stack

  • Default: gemma4-obliterated (local, on the PC)
  • Fallback: Claude Haiku via API when the local model is unsure or the question needs reasoning beyond what 4B params can do

Total monthly cost: under $5. The local model handles 90%+ of inbound. The Claude fallback fires maybe 20 times a month — usually for context-heavy questions where local models hallucinate.

What broke

Gemma 4 9B and the obliterated variant disagree on what counts as a commitment. Standard 9B is too eager — every "I should probably..." gets logged. Obliterated 4B is too lax — explicit "I'll ship X by Friday" sometimes slips by.

Fixed it with a two-pass: obliterated 4B does the cheap first pass, anything ambiguous gets escalated to Haiku. Solved both directions.

What you can steal

If you're trying to build accountability without hiring:

  1. Pick a chat surface you already use. Don't make a new one.
  2. Run the bot on a box that's already on. Mine runs on the PC under my desk — power cost is sunk.
  3. Use a small local model as the cheap first filter. Escalate ambiguous cases to a paid API.
  4. Make the bot ASK when patterns appear. Don't lecture. Don't summarize. Ask the question a buddy would ask.

The thing that makes this work isn't the AI. It's the social pressure of knowing a third entity is reading the channel. That alone changes how I commit to deadlines.