Observability

Cycle 2026-06-30T12:46:46Z · data/observability.json

Watcher Fresh
Last cycle 1m ago
Poll interval 300s
Configured towns 7
Stored posts 625
New in 24h 46
Notify topic Enabled
Notify filter OFFER
Notify sent 4809
Notify skipped 2062
Notify failures 0
Classifier runs 2832
Classifier matched 201
Classifier skipped 9659
Classifier failures 27
Last cycle new 1

Runtime Summary

Normal flow health
Last cycle new posts
1
Last cycle failures
0
Output path
data/posts.jsonl
State path
data/state.json
Watch log path
data/watch.log

Notification Summary

ntfy delivery
Topic
https://ntfy.sh/freecycle-alert
Configured filter
OFFER
Observed filter
OFFER
Last success
2026-06-23T09:13:26Z
Last failure
Never
Failure reason
None

Last payload preview

OFFER | Wichenford | Small coffee or bedside table | IKEA furniture 85%

Classifier Summary

AI gate activity
Last run
2026-06-30T12:46:45Z
Model
gpt-4.1-nano
Active rules
Appliences that I can resell
Last failure
2026-05-14T09:33:55Z
Failure reason
[Errno 13] Permission denied: '/nonexistent'

Latest Classification Results

Per-post scores from the last classifier run
{'typeId': 3, 'const': 'FC_POST_WANTED', 'name': 'WANTED'} CheltenhamUK · ID 102365804

Moving boxes

Did not pass

Appliences that I can resell: 0% (skip)

Per-town Status

Watermark and last poll
Town Status # Last polled Error
BirminghamUK ok 0 2026-04-01T22:14:49Z
CheltenhamUK ok 1 2026-06-30T12:46:45Z
DroitwichSpaUK ok 0 2026-06-30T12:46:46Z
EveshamUK ok 0 2026-06-30T12:46:43Z
RedditchUK ok 0 2026-06-30T12:46:46Z
StratforduponAvonUK ok 0 2026-06-30T12:46:44Z
WorcesterUK ok 0 2026-06-30T12:46:46Z

Recent Events

Structured runtime trail
cycle_summary

Cycle completed: 1 new post(s), 0 failure(s) across 6 town(s)

town_poll

RedditchUK: poll ok, 0 new post(s)

town_poll

DroitwichSpaUK: poll ok, 0 new post(s)

town_poll

WorcesterUK: poll ok, 0 new post(s)

town_poll

CheltenhamUK: poll ok, 1 new post(s)

classifier_result

Classifier result: matched 0 of 1 post(s)

town_poll

StratforduponAvonUK: poll ok, 0 new post(s)

town_poll

EveshamUK: poll ok, 0 new post(s)

cycle_summary

Cycle completed: 0 new post(s), 0 failure(s) across 6 town(s)

town_poll

RedditchUK: poll ok, 0 new post(s)

Latest Stored Posts

Most recent extracted rows
WANTED CheltenhamUK

Moving boxes

Brockworth

OFFER WorcesterUK

Double divan silver crushed velvet bed with headboard board

Worcester

OFFER EveshamUK

Magazines

Wickhamford

OFFER EveshamUK

Magazines

Wickhamford

OFFER RedditchUK

Ladies Assorted Clothes

Redditch

Latest Notified Posts

Last successful ntfy payload
OFFER ID 102313004

Small coffee or bedside table

Wichenford

Watcher Log Tail

Open full logs
    from freecycle_alarm.cli import main
  File "/usr/local/lib/python3.12/site-packages/freecycle_alarm/cli.py", line 11, in <module>
    from .classifiers import (
ImportError: cannot import name 'ClassifierConfigError' from 'freecycle_alarm.classifiers' (/usr/local/lib/python3.12/site-packages/freecycle_alarm/classifiers.py)
Traceback (most recent call last):
  File "/usr/local/bin/freecycle-extract", line 3, in <module>
    from freecycle_alarm.cli import main
  File "/usr/local/lib/python3.12/site-packages/freecycle_alarm/cli.py", line 11, in <module>
    from .classifiers import (
ImportError: cannot import name 'ClassifierConfigError' from 'freecycle_alarm.classifiers' (/usr/local/lib/python3.12/site-packages/freecycle_alarm/classifiers.py)
Traceback (most recent call last):
  File "/usr/local/bin/freecycle-extract", line 3, in <module>
    from freecycle_alarm.cli import main
  File "/usr/local/lib/python3.12/site-packages/freecycle_alarm/cli.py", line 11, in <module>
    from .classifiers import (
ImportError: cannot import name 'ClassifierConfigError' from 'freecycle_alarm.classifiers' (/usr/local/lib/python3.12/site-packages/freecycle_alarm/classifiers.py)
Traceback (most recent call last):
  File "/usr/local/bin/freecycle-extract", line 3, in <module>
    from freecycle_alarm.cli import main
  File "/usr/local/lib/python3.12/site-packages/freecycle_alarm/cli.py", line 11, in <module>
    from .classifiers import (
ImportError: cannot import name 'ClassifierConfigError' from 'freecycle_alarm.classifiers' (/usr/local/lib/python3.12/site-packages/freecycle_alarm/classifiers.py)
Traceback (most recent call last):
  File "/usr/local/bin/freecycle-extract", line 3, in <module>
    from freecycle_alarm.cli import main
  File "/usr/local/lib/python3.12/site-packages/freecycle_alarm/cli.py", line 11, in <module>
    from .classifiers import (
ImportError: cannot import name 'ClassifierConfigError' from 'freecycle_alarm.classifiers' (/usr/local/lib/python3.12/site-packages/freecycle_alarm/classifiers.py)
Traceback (most recent call last):
  File "/usr/local/bin/freecycle-extract", line 3, in <module>
    from freecycle_alarm.cli import main
  File "/usr/local/lib/python3.12/site-packages/freecycle_alarm/cli.py", line 11, in <module>
    from .classifiers import (
ImportError: cannot import name 'ClassifierConfigError' from 'freecycle_alarm.classifiers' (/usr/local/lib/python3.12/site-packages/freecycle_alarm/classifiers.py)
Traceback (most recent call last):
  File "/usr/local/bin/freecycle-extract", line 3, in <module>
    from freecycle_alarm.cli import main
  File "/usr/local/lib/python3.12/site-packages/freecycle_alarm/cli.py", line 11, in <module>
    from .classifiers import (
ImportError: cannot import name 'ClassifierConfigError' from 'freecycle_alarm.classifiers' (/usr/local/lib/python3.12/site-packages/freecycle_alarm/classifiers.py)