Commits
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
The SSR mapping was missing publishedDate so cards never got it.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- Enrichment prompt now asks for publishedDate in YYYY-MM-DD format
- Cards show date (month+day when available, year otherwise)
- publishedDate derived from URL patterns and LLM inference
- All 26 records now have publishedDate
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
Was sequential (26 records × 30s = 14min). Now batches of 5
concurrent calls — should be ~3min for 26 records.
Applies to poll endpoint, cron handler, and /api/enrich.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- Year now extracted from URL (venue-specific patterns) and LLM enrichment
- Card meta shows: year · authors · poster handle
- Removed raw paperUrl from card meta (cleaner)
- Enrich endpoint also updates records missing year
- All 26 records now have year populated
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
New papers now get Letta API enrichment immediately when ingested,
no separate /api/enrich step needed. Falls back to heuristic summary
if Letta is unavailable.
Both poll endpoint and cron handler enriched.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- pollFollowedAccounts() fetches recent posts from all 39 followed accounts
- Extracts paper URLs from post text and embeds
- Merges with Paper Skygest feed results (deduped)
- Fixed contrail.notify error (replaced with direct D1 insert)
- Fixed </script> in JSON breaking SSR
- Enriched all 18 new records via Letta API
- 26 total summaries now indexed
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- Remove poll feed button and status from landing page (cron handles it)
- Enrichment now also fixes "Untitled" titles via Letta API
- All 3 bioRxiv records now have real paper titles
- PDS records updated to match
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- enrichWithLetta() calls Letta REST API for LLM-generated summaries
- /api/enrich endpoint enriches records with placeholder/empty summaries
- Also enriches records missing takeaway field
- Produces structured JSON: summary, domains, takeaway
- LETTA_API_KEY and LETTA_AGENT_ID as Cloudflare secrets
- All 8 existing records enriched with real takeaways
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
Contrail appview that watches the Paper Skygest preprint digest feed,
detects linked papers, generates OXA-backed summaries, and writes
org.latha.papers.summary records to researcher.pds.latha.org via DPoP auth.
- Feed watcher polls Paper Skygest feed via public API
- Paper URL extraction from embeds and post text (arxiv, doi, nber, etc.)
- Heuristic summarizer with OpenGraph enrichment
- OXA document generation via @nandithebull/myst-oxa
- PDS write-back via Welcome Mat v1.0 DPoP auth
- Landing page and summary detail page at papers.latha.org
- Contrail XRPC endpoints for querying summaries
- Cron trigger every 5 minutes for automated feed polling
- CLI script for manual poll-and-summarize
Hosted at papers.latha.org on Cloudflare Workers + D1.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- Enrichment prompt now asks for publishedDate in YYYY-MM-DD format
- Cards show date (month+day when available, year otherwise)
- publishedDate derived from URL patterns and LLM inference
- All 26 records now have publishedDate
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- Year now extracted from URL (venue-specific patterns) and LLM enrichment
- Card meta shows: year · authors · poster handle
- Removed raw paperUrl from card meta (cleaner)
- Enrich endpoint also updates records missing year
- All 26 records now have year populated
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- pollFollowedAccounts() fetches recent posts from all 39 followed accounts
- Extracts paper URLs from post text and embeds
- Merges with Paper Skygest feed results (deduped)
- Fixed contrail.notify error (replaced with direct D1 insert)
- Fixed </script> in JSON breaking SSR
- Enriched all 18 new records via Letta API
- 26 total summaries now indexed
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- Remove poll feed button and status from landing page (cron handles it)
- Enrichment now also fixes "Untitled" titles via Letta API
- All 3 bioRxiv records now have real paper titles
- PDS records updated to match
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- enrichWithLetta() calls Letta REST API for LLM-generated summaries
- /api/enrich endpoint enriches records with placeholder/empty summaries
- Also enriches records missing takeaway field
- Produces structured JSON: summary, domains, takeaway
- LETTA_API_KEY and LETTA_AGENT_ID as Cloudflare secrets
- All 8 existing records enriched with real takeaways
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
Contrail appview that watches the Paper Skygest preprint digest feed,
detects linked papers, generates OXA-backed summaries, and writes
org.latha.papers.summary records to researcher.pds.latha.org via DPoP auth.
- Feed watcher polls Paper Skygest feed via public API
- Paper URL extraction from embeds and post text (arxiv, doi, nber, etc.)
- Heuristic summarizer with OpenGraph enrichment
- OXA document generation via @nandithebull/myst-oxa
- PDS write-back via Welcome Mat v1.0 DPoP auth
- Landing page and summary detail page at papers.latha.org
- Contrail XRPC endpoints for querying summaries
- Cron trigger every 5 minutes for automated feed polling
- CLI script for manual poll-and-summarize
Hosted at papers.latha.org on Cloudflare Workers + D1.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>