Observability

Cycle 2026-06-30T13:37:33Z · data/observability.json

Watcher Fresh
Last cycle 3m ago
Poll interval 300s
Configured towns 7
Stored posts 631
New in 24h 48
Notify topic Enabled
Notify filter OFFER
Notify sent 4809
Notify skipped 2062
Notify failures 0
Classifier runs 2837
Classifier matched 201
Classifier skipped 9665
Classifier failures 27
Last cycle new 0

Runtime Summary

Normal flow health
Last cycle new posts
0
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-30T13:27:23Z
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': 1, 'const': 'FC_POST_OFFER', 'name': 'OFFER'} StratforduponAvonUK · ID 102366110

Drawer from a wooden filing cabinet + suspension files

Did not pass

Appliences that I can resell: 20% (skip)

Per-town Status

Watermark and last poll
Town Status # Last polled Error
BirminghamUK ok 0 2026-04-01T22:14:49Z
CheltenhamUK ok 0 2026-06-30T13:37:32Z
DroitwichSpaUK ok 0 2026-06-30T13:37:33Z
EveshamUK ok 0 2026-06-30T13:37:30Z
RedditchUK ok 0 2026-06-30T13:37:33Z
StratforduponAvonUK ok 0 2026-06-30T13:37:31Z
WorcesterUK ok 0 2026-06-30T13:37:33Z

Recent Events

Structured runtime trail
cycle_summary

Cycle completed: 0 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, 0 new 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)

town_poll

DroitwichSpaUK: poll ok, 0 new post(s)

Latest Stored Posts

Most recent extracted rows
OFFER StratforduponAvonUK

Drawer from a wooden filing cabinet + suspension files

Warwick, near the railway station

OFFER EveshamUK

Outdoor builders tools

Winchcombe GL545FG

OFFER CheltenhamUK

Bathroom wall tiles

Leckhampton

OFFER WorcesterUK

HEAVY DUTY PALLETS

CLAINES

WANTED WorcesterUK

Any garden furniture please?

Abberley

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)