Loading pubs…
| Pub | Postcode | Area | Type | Status | Managed by | Ownership | Data quality | Actions |
|---|
No pubs match the current filters.
1
Paste JSON2
Review matches3
Resolve conflicts4
ApplyPaste a JSON array of pub objects. Each object should follow the clockapub extended schema. A single object is also accepted.
| Incoming name | Match | Matched pub | Confidence | Fields to update | Action |
|---|
Review field-level conflicts below. Green = incoming wins (higher confidence or new data). Amber = conflict — choose which value to keep. New pubs have no conflicts.
Open backlog
filtered
click a cell to filter the table below
| Theme | High | Medium | Low | Total |
|---|
Loading portal feedback…
| Date | Category | Message | From | Priority | Component | Status | Pub | Actions |
|---|
Page
No feedback matches current filters.
Loading user suggestions…
| Date | Type | Summary | Submitted By | Priority | Component | Status | Pub | Actions |
|---|
Page
No suggestions match current filters.
Status:
Loading claims…
No claims match the filter.
| Pub | Claimant email | Requested | Status | Decided | Actions |
|---|
Status:
● live
Loading invitations…
No invitations match the filter.
| Pub | Kind | Invitee | Inviter | Sent | Expires | Status | Actions |
|---|
Self-claims raised against a pub that's already managed by a landlord. Approve transfers ownership to the challenger (the current owner is removed); Reject dismisses it; Request proof keeps it open with a note.
Loading disputes…
No open disputes.
| Pub | Challenger | Raised | Actions |
|---|
The weekly sweep scans stale curated pubs for new events and queues them here as pending proposals — nothing goes live until you approve. Run it on demand below.
No pending proposals. Run the sweep to populate the queue.
| Pub | Proposed | Source |
|---|
Enrich one pub
Enrich one pub from multiple sources, review every proposed change, and submit only what you approve. Base data uses Google Places (you can accept a value that replaces an existing one here); events are scanned from the pub's website / Lemon Rock and reviewed before import. Needs
GOOGLE_PLACES_API_KEY + ANTHROPIC_API_KEY.Base data — Google Places
| Field | Current | Proposed | Source |
|---|
Events — website / Lemon Rock
| When | Title | Type | Notes |
|---|
Situation — local news & records
Researches who currently runs the pub and its recent situation (change of hands, refurb, closure, awards) from local news + the FSA register. Intelligence for outreach / data quality — it writes nothing to the pub. Needs
ANTHROPIC_API_KEY.
Persists to the pub's admin notes.
Bulk autofill
Fill empty phone / website / location from Google Places. Existing landlord values are never overwritten. Set filters, Preview matches to see exactly which pubs (and the est. cost) — then Run. Needs
GOOGLE_PLACES_API_KEY on the admin Worker.| Pub | Postcode | Will try to fill |
|---|
| Pub | Result | Details |
|---|
Sport:
Country:
Querying TheSportsDB…
No leagues match. Try a different sport / country combination.
| League | Country | Season | Sport (clockapub) | Status | Action |
|---|
Adding a league here writes a row to
competitions with the TheSportsDB id in external_codes. The next time the importer Worker runs (cron Sunday 03:00 UTC, or on demand via /run), fixtures for the new league populate automatically.
Recent imports
Loading…
No
import_runs rows yet.| Started (UTC) | Duration | Status | Fetched | +Add | ~Upd | Skip | Errors | Trigger |
|---|
Competition images
Optional logo per competition — overrides the generic sport glyph on the In-Pub Display, the dashboard Sport page, the finder and microsites. PNG/JPG/WebP/SVG, max 3MB.
Import fixtures from ICS
For team-less sports where TheSportsDB is too session-noisy (F1 returns FP1/quali/sprint, not just races). Upload a race/event-day
.ics (e.g. f1calendar.com → "Grand Prix" calendar) and it creates fixtures for the chosen competition. Re-importing updates in place.
| Event | When (UTC) | Result |
|---|
Scans existing pub data for evidence of amenities not yet tagged on
pubs.amenities. Tier 1 (free) reads menu data only. Each proposal lists the evidence — you review and apply per-row or in bulk.
Scanning menus…
No proposals — all eligible pubs already tagged, or no menu evidence found.
| Pub | Source | Evidence | Status |
|---|
Bio + amenity synthesis
Reads each pub's website with Haiku 4.5 and proposes a punter-facing bio plus structured amenity / policy claims with evidence quotes. Only suggests positive claims — never denies. Review per-row, then Apply to write to
pubs.bio and pubs.amenities. Pubs without a website URL or with thin homepages are flagged for manual.
Click Synthesize gaps to start. Each pub takes ~3 seconds.
| Pub | Quality | Bio preview | Amenities | Policies | Actions |
|---|
Pick a pub to synthesise
Broadcasts
One-off operator nudges to all active pubs. Shows on every landlord's dashboard as a banner + inbox card until they ack or snooze.
New broadcast
Title
Body
Priority
Starts
Ends
Audience
All active pubs (only option for now)
CTA label (optional)
CTA destination (optional)
Active
Loading…
No active broadcasts.
Past (last 20)
Loading…
No past broadcasts.
Post Templates
Curated social-post captions, shared across every pub. Rows without a ride-along key show in each dashboard's "Ready-made posts" gallery. Rows with one supply the caption for the operational "Share this?" prompt (e.g. kitchen closed) — edit here and it changes on every dashboard, no deploy.
New template
Title
Key (slug)
Caption
Suggested images
Category
Scope (optional)
Post type
Source type
Channels
Default CTA
Ride-along key (optional)
Sort order
Active
Loading…
No templates yet.
System Health
Live probe of every clockapub service — the Workers, Supabase (read + write), the Anthropic AI dependency, and TheSportsDB. Re-runs each time you open this tab.
Loading contacts…
| Name | Role(s) | Pub(s) | Last interaction | Source |
|---|
No contacts match the current filters.
Funnel — all pubs (click a stage to filter)
What each stage means
Loading pipeline…
No pubs match the current filters.
Loading coverage…
● present
○ missing
· not applicable
Marketing campaigns
Click a campaign row to drill in.
Loading scans…
By campaign
| Campaign | Scans | Resolved | Rate | Mats | Res/mat | Last |
|---|
Where it's working
| Pub | Resolved | Mats | Res/mat |
|---|
Recent activity
No scans yet. Print collateral with a
/locate/<code> URL and scans will appear here.No placements logged yet. Record where collateral went — it's the denominator that turns scans into a resolves-per-mat rate.
| Pub | Postcode | Campaign | Qty | Placed | Note |
|---|
Log placement
Placement
✓ Saved
Finder golden-test lab — New case
Running the finder pipeline…
Craft a (when, where, query) scenario → set Expectations → Run → read Results / Diagnostics → Save. Promote good cases into the AI suite from the Test Suite tab.
Results are day- and time-sensitive — kitchen hours, events and fixtures vary by weekday (e.g. a pub with a 21:00 kitchen Fri/Sat closes at 20:30 on a Tue). Leaving this blank uses "now", which drifts day to day; pin a date + time so a saved case reproduces and lab/finder comparisons line up.
Run a case to see the AI interpretation, your-vs-AI comparison, and the ranked results.
Run a case to see the worker's per-pub match diagnostics.
Saved cases
Loading…
Landmarks — finder place registry
Positions punters' "near the cathedral / clock tower / station" queries. Drag the pin to place a point landmark precisely — edits go live on the finder without a redeploy. Aliases are the phrasings that resolve to this landmark.
All landmarks
New landmark — kind: point
The route line is shown read-only; re-tracing waypoints isn't supported in this editor yet.
Finder NL queries — what punters ask, and what's failing
Captured from the finder's natural-language planner (last 30 days). Top asks = demand by frequency (with each query's zero-result rate). Themes = what they want, broken down. Failing = queries that returned zero matches — demand the data can't yet answer.
Most-asked queries (last 30 days)
Loading…
| Query | Times | Sessions | Zero-result | Last seen |
|---|
Loading…
Top failing queries (last 30 days)
Loading…
| Query | Times | Sessions | Top fail reason | Last seen |
|---|
Operators — the clockapub crew
Who's who, what they look after, and their latest footprint. "Seen" is the last Supabase sign-in; "last edit" is the most recent change attributed to their own account (admin-panel edits log as a shared
admin actor and aren't counted). Click a responsibilities line to edit it.Loading operators…
No operators found.
🏆 Add competition to clockapub
Auto-derived from TheSportsDB. Tweak before adding if needed.
TheSportsDB id
Name
Short name
Sport key
Country (2-letter)
Season