agentleFS
CodeAlive-AICodeAlive-AI/ceo-ai-os/skills/feedback-tracker/SKILL.md

feedback-tracker

Skill9 starsChanged 6 months agoMITView on GitHub

Track outreach outcomes: sent → replied → meeting → learning. Runs via cron to check 48h and 7d marks. Feeds data back into channel-scores and hypothesis-tracker. For sending outreach, see outreach-sender.

The file

Show its rules and text

We split this skill into the rules it gives an agent

15 rules. About 0 are common, 10 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read memory/outreach-feedback.jsonl for tracking state.

    line 9
  2. Very specific:

    Read memory/pipeline.json for prospect context.

    line 10
  3. Distinctive:

    Follow output preferences from USER.md.

    line 11
  4. Very specific:

    If sent_at > 48h ago AND checked_48h == false:

    line 32
  5. Distinctive:

    Check via Composio/Gmail if reply received

    line 33
  6. Distinctive:

    If reply → update status to "replied", set reply_at

    line 34
  7. Distinctive:

    If no reply → update status to "no_reply_48h", set checked_48h = true

    line 35
  8. Very specific:

    If sent_at > 7d ago AND checked_7d == false:

    line 36
  9. Distinctive:

    If still no reply → update status to "no_reply_7d", set checked_7d = true

    line 38
  10. Distinctive:

    If any new replies detected → include in next Evening Recap

    line 41
  11. Distinctive:

    When CEO says "check outreach" or "any replies?":

    line 46
  12. Distinctive:

    Run full check immediately

    line 47
  13. Distinctive:

    When outreach-sender or CEO sends outreach, append to outreach-feedback.jsonl:

    line 63
  14. Distinctive:

    When a reply leads to a meeting or insight, update the entry:

    line 70
  15. Very specific:

    Update memory/channel-scores.json after each check:

    line 79

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

[YOUR_PRODUCT] Context

Read memory/outreach-feedback.jsonl for tracking state. Read memory/pipeline.json for prospect context. Follow output preferences from USER.md. Telegram: max 10 lines.

Feedback Tracker

Closes the learning loop: tracks what happened AFTER outreach was sent.

State File: memory/outreach-feedback.jsonl

Each line is one outreach event:

{"id":"uuid","ts":"ISO","prospect":"Name (Company)","channel":"email|linkedin|reddit|hn|devto","type":"cold|warm|community_reply|follow_up","status":"sent|replied|meeting_booked|no_reply_48h|no_reply_7d|closed_won|closed_lost","sent_at":"ISO","checked_48h":false,"checked_7d":false,"reply_at":null,"meeting_at":null,"learning":null}

Cron Mode (automatic, twice daily)

Runs at 10:00 and 16:00 via feedback-checker-001 cron.

Algorithm

  1. Read outreach-feedback.jsonl
  2. For each entry where status == "sent":
    • If sent_at > 48h ago AND checked_48h == false:
      • Check via Composio/Gmail if reply received
      • If reply → update status to "replied", set reply_at
      • If no reply → update status to "no_reply_48h", set checked_48h = true
    • If sent_at > 7d ago AND checked_7d == false:
      • Final check for reply
      • If still no reply → update status to "no_reply_7d", set checked_7d = true
  3. Update memory/channel-scores.json:
    • Track per-channel: sent_count, reply_count, reply_rate, meeting_count
  4. If any new replies detected → include in next Evening Recap
  5. Output: HEARTBEAT_OK (silent) unless new reply detected → alert CEO

On-Demand Mode

When CEO says "check outreach" or "any replies?":

  1. Run full check immediately
  2. Report all pending outreach with status
  3. Format:
Outreach Status:
- [Name] (email, 3d ago): no reply
- [Name] (reddit, 1d ago): replied! [snippet]
- [Name] (linkedin, 5d ago): no reply (7d mark)

Reply rate (30d): N/M = X%
Best channel: [channel] (Y% reply rate)

Adding New Outreach

When outreach-sender or CEO sends outreach, append to outreach-feedback.jsonl:

{"id":"uuid","ts":"now","prospect":"Name","channel":"email","type":"cold","status":"sent","sent_at":"now","checked_48h":false,"checked_7d":false}

Learning Capture

When a reply leads to a meeting or insight, update the entry:

{"learning": "Prospect interested in MCP integration, wants demo next week"}

Feed learnings into hypothesis-tracker if they validate/invalidate active hypotheses.

Channel Scoring

Update memory/channel-scores.json after each check:

{
  "channels": {
    "email": {"sent": 10, "replied": 2, "meetings": 1, "rate": 0.2},
    "reddit": {"sent": 5, "replied": 3, "meetings": 0, "rate": 0.6},
    "linkedin": {"sent": 8, "replied": 0, "meetings": 0, "rate": 0.0}
  },
  "last_updated": "ISO"
}

Related Skills

  • outreach-sender — sends outreach (creates entries here)
  • pipeline-manager — prospect data
  • morning-brief — surfaces new replies
  • evening-recap — includes reply stats
  • hypothesis-tracker — receives learnings

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.