Skip to content

Latest commit

 

History

History
102 lines (62 loc) · 7.08 KB

File metadata and controls

102 lines (62 loc) · 7.08 KB

04 · The daily loop

Goal of this doc: one session, small, in a fixed order, that ends with an honest report. The order is not cosmetic — every step exists because skipping it cost something.

Step 0 · Harvest, before anything else

Read the full inbox, not the comment-replies tab. Replies to your own posts live under post replies, so an engine that only checks comment replies is blind exactly where it's the author — the situation where not replying is most visible.

General rule worth stealing: every time you open a new channel, ask where its feedback arrives. The answer is rarely where you assume.

Then, by API:

  • Inventory by sub — comments and sub-karma, both figures, exact. No approximations.
  • Removalsbanned_by and removed_by_category across your history.
  • Duplicates — same link_id, same opening text.
  • Reconcile yesterday's total plus yesterday's publications against today's total.

And feed the research bank (see 06-measurement.md): verbatim quotes with handle, sub and date; recurring problems in their words with a counter; content ideas. Include at least one active search for evidence that contradicts your thesis — a bank that only collects agreement is a file of favourable quotes, not research.

Hard no: never profile individuals or cross-reference sources about one person. The handle is stored only so you can return to the thread and verify. This is market research, not a CRM of people.

Step 1 · Answer the debt, before hunting anything new

Replies come before new threads and they have no quota. They cost zero hunting and arrive with context and trust already built. A person who replied to you is worth more than a new thread.

Debt over 24h is a lost conversation. Rescue it even if it breaks the day's ceiling by one — by one, not two, and report the overage.

Inventory before declaring debt at zero

List open interlocutors one by one — who, which sub, how old, answered yes/no — before writing that it's closed. Check three ways:

  1. The full inbox
  2. The comment tree of your own posts, walked by API
  3. Direct replies to your most recent comments

"I answered the ones I saw" has a way of coming out as "I answered everyone." A close with no inventory is not a close.

Don't mark anyone as lost before 72 hours. A 24h window declares live interlocutors dead, biases your conversation metric down, and makes you abandon threads that are still breathing.

Step 2 · New threads

  • Attempt the signer pond first. If it's empty today, the slot stays empty (01-icp-and-ponds.md).
  • Max 2-3 actions per sub per day. Spread across subs where there's genuine fit.
  • Open the body of every thread before deciding. Never the listing alone.
  • If your angle is already in the thread, don't comment.

Step 3 · Self-review

Run the publication checklist item by item (../checklists/per-publication.md). If something fails and you can't fix it, discard the piece. Better no comment than a generic one.

Step 4 · Publish, then verify

Method, in this order — every step here was paid for:

  1. Go to the permalink of the comment you're replying to. The "reply" link in the inbox doesn't always open the form.
  2. Click the field by coordinate.
  3. Verify focus before typing. A typing action can be lost entirely without raising an error.
  4. Type.
  5. Verify the text in the visible textarea. Pages carry hidden textareas; filter by whether the element is actually rendered.
  6. Submit.
  7. Confirm by API that it exists — exactly once (02-gates.md).

A hung spinner or a "Leave site?" dialog does not mean it failed. Check before touching anything; re-sending duplicates. If a post-submit screenshot times out, verify by text or API — never retry blind. And a stray keypress with no focus triggers Reddit's keyboard shortcuts, which can hide a post.

Step 5 · Close the session honestly

  • Update the scoreboard: counter per sub with both figures, score and ratio for posts, removals.
  • Write tomorrow's marching orders.
  • Report what you didn't do and why. Slots left empty, threads discarded, rules you couldn't comply with.
  • Prune. A lesson that has become a rule gets deleted from the log; a day that falls out of the window gets archived.

Pacing — and the fix, which is structural

Space actions out, vary the hour, respect your audience's timezone, never burst.

⚠️ If your engine runs in an automation harness that blocks foreground waits, you cannot space actions within one session. Measure it before you assume otherwise: in one real engine, cutting from seven actions to five made the burst tighter, not wider (1.9 → 1.5 → 1.4 minutes between publications). Doing less shortens the burst; it does not separate it. Fewer actions is still worth doing — less exposure, more care per piece — but not as a dispersion measure, and saying so is part of the job.

The fix is to split the scheduled run into two executions, hours apart. Three things make that work, and all three were learned the hard way:

1 · Split by STEP, not by action count

Give each run whole steps, never "half the actions each". If both runs can publish the same kind of thing, sooner or later both will — and a word-for-word duplicate is the most mechanical artifact an account can leave.

Run Owns
Morning harvest · pay the reply debt · attempt the signer pond and the slow-burn pond
Afternoon new threads in the permission pond · the post, when one is due · close the day

Each run's slots are exclusive. The afternoon does not rescue the slots the morning left empty — recovering them re-creates the burst the split exists to break.

2 · A written handoff, and one owner for the close

The morning writes a short handoff block into the scoreboard: inventory, reconciliation, live posts, debt status, what it published, which rung the signer slot reached, candidates spotted for later, and actions consumed out of the daily ceiling. The afternoon reads it, and deletes it when it closes the day so tomorrow's run can't mistake it for today's.

Only one run closes the day — writes the day block, the marching orders, prunes the archive. Two closers means two versions of the truth.

And the fallback matters: if there's no handoff, or it's dated wrong, the morning run didn't happen. The afternoon must then do a minimal harvest and pay the debt before publishing anything — and say in its report that it did.

3 · An end-of-day guard on every run

Before publishing anything, check whether the day is already closed — a day block with marching orders written, or simply "have N pieces already gone out today?". If so, report and exit.

This is not paranoia. Scheduled tasks re-fire when an app reopens, humans trigger manual runs on top of automatic ones, and the day you migrate from one schedule to two, the old job has already done the whole day. Without the guard, all three publish twice.