Version: 2.10.1
Acca Tracker is a standalone Hermes skill for read-only accumulator/parlay tracking — football, UFC fight winners, and basketball team markets, deepest on football.
It helps a Hermes agent parse a betting slip, confirm the legs with the user, optionally create a bounded tracking job, and report whether each leg is alive, dead, won, pending, void, or unverifiable.
- Parses acca/parlay slips from text or screenshots.
- Shows a parsed preview before any tracking starts.
- Asks the user to confirm or correct the legs.
- Creates optional bounded Hermes cron jobs for status checks.
- Checks public score/status sources with a conservative retrieval ladder and cites them in reports.
- Survives source outages: if ESPN is down, the pre-run script falls back to TheSportsDB for finished/scheduled legs (settle-gated: a finished result is trusted only ≥3 h after kickoff, so an in-play game cannot be settled), reports "no data" honestly instead of "no change", and sends a one-time degraded-tracking heads-up after ~1 hour of failed checks.
- Uses compact Telegram/mobile-friendly status updates — one line per leg, no boilerplate footer.
- Sends only on change: the pre-run script diffs each leg's state+score against the previous run, so unchanged runs (including live matches where only the clock moved) stay silent instead of spamming every interval.
- Sends recurring tracker updates as compact fenced
textcodeblocks for cleaner mobile scanning. - Reports each leg status and the overall acca status.
- Handles missing, ambiguous, or conflicting data as non-terminal
UNVERIFIABLEinstead of guessing. - Optional P&L ledger: when configured, a settled acca appends one row (stake, price, outcome, return, running P&L) to a markdown ledger file — record-only, conservative settlement, no advice (see
references/pnl-ledger.md).
- No betting advice.
- No predictions or guaranteed outcomes.
- No “sure win”, “lock”, or hype framing.
- No odds optimization, staking plans, hedging, or cash-out advice.
- No chasing-losses framing.
- No bookmaker login, account integration, bet placement, or scraping bypass.
- No private ticket/account verification.
Copy the entire skill directory, not just SKILL.md; the skill references docs/, knowledge/, workflows/, templates/, and examples/.
Install into your active profile's skills tree:
git clone https://github.com/banozz0/acca-tracker.git
cd acca-tracker
PROFILE=default # change to your Hermes profile name
mkdir -p ~/.hermes/profiles/"$PROFILE"/skills/acca-tracker
rsync -a --delete --exclude '.git' ./ \
~/.hermes/profiles/"$PROFILE"/skills/acca-tracker/Avoid installing into ~/.hermes/skills unless you intentionally want the default/shared profile skill location.
Then start a fresh Hermes session and load/use the skill by name; skill loading is session-cached.
python3 scripts/validate.py # frontmatter, links, version sync, script unit tests
python3 scripts/test_fetch_scores.py # score-fetcher unit tests only (offline)
python3 scripts/test_acca_ledger.py # P&L ledger unit tests only (offline)The same validation runs in CI on every push (.github/workflows/validate.yml).
PROFILE=default # same profile name you installed into above
test -f ~/.hermes/profiles/"$PROFILE"/skills/acca-tracker/SKILL.md
python3 - "$PROFILE" <<'PY'
from pathlib import Path
import re, sys
p = Path.home()/f'.hermes/profiles/{sys.argv[1]}/skills/acca-tracker/SKILL.md'
s = p.read_text()
assert s.startswith('---')
m = re.search(r'\n---\s*\n', s[3:])
assert m
frontmatter = s[3:m.start()+3]
assert 'name: acca-tracker' in frontmatter
assert 'description:' in frontmatter
assert s[m.end()+3:].strip()
print('OK', p)
PY
hermes --profile "$PROFILE" tools listRecommended toolsets:
vision— parse screenshots/photos when suppliedweb— check public score/status sourcescronjob— optional scheduled tracking jobs
Optional:
terminalor code execution — useful for structured public APIs when available
Best supported:
- Match result / 1X2
- Double chance
- Draw no bet
- Both teams to score: yes/no
- Total goals over/under
- Simple team goals over/under
- Basic handicap where the line and settlement rule are clear
- Corners, cards, and shots over/under — ESPN's feed carries live per-team stats for most fixtures; legs where the stat is missing are marked
UNVERIFIABLEinstead of guessed
Also supported:
- UFC fight winner — fights settle from ESPN's explicit winner flag; live fights stay pending (no fake "currently winning" mid-round)
Experimental:
- Basketball team markets (moneyline/totals) via the same ESPN feed (
basketball/nba,basketball/wnba)
Limited or unsupported unless reliable source data is available:
- Offsides, possession, player props
- First/anytime goalscorer
- UFC method/round props (KO, submission, round betting)
- Complex bet builders
- Team to qualify / lift trophy / aggregate markets
- Bookmaker bonuses, boosts, insurance, or settlement-specific offers
- F1 (different ESPN data shape — on the roadmap, not supported yet)
- User sends a slip screenshot or text.
- Hermes extracts only the tracking-relevant leg details and avoids repeating private identifiers.
- Hermes shows a parsed preview with unclear fields marked.
- User confirms or corrects the preview.
- Hermes optionally creates a bounded tracking job.
- Reports cite sources and mark uncertain data as
UNVERIFIABLE. - User can stop tracking at any time.
See:
See examples/sample-slip.md for a sample parsed slip and status reports, and examples/sample-slip.png — a synthetic slip image (no real bookmaker, no real bet) with its expected extraction, for testing the image-parse path.
Betting slips can contain sensitive data. Before sharing a screenshot, redact:
- account IDs
- QR/barcodes
- ticket/slip numbers
- full names
- payment details
- bookmaker balances
- any personal identifiers
Tracking jobs may persist confirmed match details in Hermes scheduler state/output until they expire or are removed. Use a private chat for sensitive betting information.
- Scheduled checks are not real-time alerts.
- Public score sources can lag, disagree, or omit lower leagues.
- Ambiguous team names may require user confirmation.
- Some markets cannot be verified from basic score data.
- Bookmaker settlement rules can differ from public match status.
- The skill does not verify actual bookmaker settlement.
See docs/runtime-notes.md, docs/compact-report-format.md, and knowledge/data-sources.md.
Use this skill only where gambling is legal for you and you meet local legal-age requirements. Do not use tracking updates to chase losses or increase stakes. If checking results feels stressful or compulsive, stop the tracking job and step away.
See docs/safety-and-responsible-use.md.
Working and in real personal use — this skill tracks the author's own slips. Solo project: the code was written by AI agents and is maintained by them best-effort. No support is promised; issues are read but responses and fixes are not guaranteed.
MIT. See LICENSE.