Skip to content

Conversation

@JesperDramsch
Copy link
Owner

No description provided.

Instead of passing a simple message as the diff payload, the scheduled
extension checker now uses lynx to fetch the actual content from both
the main conference website and the CFP link page. This provides Claude
with real website content to analyze for deadline extensions rather than
just receiving an internal trigger message.
The content_contains_cfp_info() function now properly distinguishes
between main CFP pages (talks/papers/proposals) and other "Call for X"
pages like sponsors, volunteers, reviewers, specialist tracks, etc.

Added:
- Negative indicators for non-CFP pages (sponsors, volunteers, etc.)
- Positive indicators for main CFP pages (call for papers, submit a talk, etc.)
- Logic to reject pages where non-CFP indicators dominate without any
  main CFP indicators present

This prevents cfp_link from being incorrectly populated with links to
sponsor pages, volunteer sign-ups, or sub-track CFPs.
Instead of using brittle rule-based validation for CFP links in
deterministic mode, cfp_link extraction is now handled by Claude
in full mode where it can properly understand context.

Changes:
- Remove content_contains_cfp_info() function (rule-based validation)
- Remove cfp_link extraction from run_deterministic_extraction()
- Add cfp_link to fields extracted by Claude in build_enrichment_prompt()
- Update prompt to instruct Claude to validate cfp_link is main CFP page

This ensures cfp_link is only added when AI can confirm it's the main
CFP submission page, not sponsors/volunteers/specialist tracks/etc.
Instead of asking Claude to extract cfp_link URLs (which it can't
reliably do from content), we now:

1. Find potential cfp_link URLs via pattern matching (deterministic)
2. Fetch content from those URLs
3. Send combined content to Claude for CFP deadline extraction
4. If Claude finds a valid CFP deadline, the cfp_link is validated

This means cfp_link is only added when:
- We found a potential CFP URL via pattern matching
- We successfully fetched its content
- Claude confirmed there's a main CFP in that content

The cfp_link tracks which URL was fetched so we can add it after
Claude validates the content contains CFP info.
The multi-line string with === headers was confusing the YAML parser.
Using printf avoids the YAML parsing issue while producing the same output.
@JesperDramsch JesperDramsch merged commit 555ebda into main Jan 23, 2026
11 checks passed
@JesperDramsch JesperDramsch deleted the claude/fix-extension-checker-IU6Ik branch January 23, 2026 00:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants