Commit History

  1. fix:fetch-page-image-urls-for-existing-records

    ccaa906
  2. fix:populate-page-image-urls-in-fetch-latest-endpoint

    a3a2425
  3. fix:add-OCR-deps-and-Dockerfile-system-libs

    781c298
  4. feat: scrape all cities every 2h add /api/scrape-all cron endpoint enable Sulphur Springs

    74a944c

  1. fix: add asyncio timeouts to prevent Vercel 502 on slow Laserfiche fetches

    3890aa9
  2. fix: replace paid Google Vision with free Hugging Face OCR (TrOCR + Nougat)

    98be750
  3. fix: 502/503 errors, add Google Vision OCR, improve geo-locate robustness

    a3716c2
  4. fix: complete OCR pipeline rewrite - 3-tier, all pages, all engines

    210a6bf
  5. fix: OCR async, connector fetch_page_images, lambda closures, parsers init

    36f705a
  6. fix: force re-summarize with force parameter, remove broken _execute import

    22e3f53
  7. feat: add force parameter to fetch-latest to clear cached summaries

    b4ac2b4
  8. fix: OCR.space during document fetch (not summarization) to stay within Vercel 10s timeout

    3027ea9
  9. fix: prefer existing raw_text over OCR to avoid Vercel 10s timeout

    953436d
  10. fix: reduce OCR.space to 1 page to fit within Vercel free plan 10s timeout

    a24463b
  11. fix: add traceback logging for Groq httpx calls to debug deployment failure

    3b5f1e6
  12. fix: replace OpenAI SDK with direct httpx calls to Groq API to avoid SDK compatibility issues on Vercel

    04a041b
  13. fix: use AsyncOpenAI consistently with await for all Groq API calls

    e51ca76
  14. fix: wrap Groq API call in try/except to catch async exceptions and surface error reason

    566bc9a
  15. fix: use AsyncOpenAI with await for non-blocking Groq API calls in async context

    fce292b
  16. fix: sync Groq call directly in async context, removed asyncio.to_thread that was causing silent failures

    f64e1e0
  17. fix: run Groq API call in thread via asyncio.to_thread to avoid blocking event loop

    629252a
  18. fix: remove failing Groq Vision API, use only free OCR.space API for scanned document OCR

    03edaaf
  19. fix: reuse event loop across requests in ASGI bridge, make OCR.space sync to avoid loop issues

    ad6b9b4
  20. fix: use Groq Vision API (llama 3.2 11B) to read text from scanned images, fallback to OCR.space, then text

    5188afe
  21. fix: use free OCR.space API as primary OCR on Vercel Lambda, Groq Vision removed to avoid circular import

    9b8828f
  22. fix: Vision API now extracts text first (no JSON mode), falls back to free OCR.space API, added httpx dep

    19d4905
  23. fix: always try free Groq Vision API for OCR first on Vercel Lambda, fallback to local OCR only if Vision fails

    a134d66
  24. feat: add server-side Groq Vision API for OCR on Vercel Lambda — reads text from images directly, no local OCR needed

    8f26d9d
  25. fix: combine ASGI-to-WSGI bridge with direct lifespan init for connectors/DB/summarizer

    6d83c40
  26. fix: use Mangum lifespan=auto so DB, connectors, and summarizer initialize on first request

    a52678f
  27. fix: replace Mangum with custom ASGI-to-WSGI bridge for Vercel experimentalServices

    af12bff
  28. fix: set Mangum handler to Handler.HTTP explicitly for Vercel experimentalServices

    7df68d3
  29. fix: add cryptography to requirements - missing Fernet import

    826c4b5
  30. fix: add back numpy and Pillow deps required by social card generation

    7335778
  31. fix: remove uvicorn[standard] native deps - use bare uvicorn for Lambda compatibility

    cfc8130
  32. fix: absolute minimal WSGI entry point - imports only inside handler

    9c10afa
  33. fix: replace psycopg2-binary with pg8000 (pure Python) to avoid Vercel Lambda 250MB native dep crash

    65d006f
  34. fix: make Vercel entry point lazy-load FastAPI on first request to prevent cold-start crash

    39db043
  35. fix: wrap lifespan startup in try/except so health endpoint works even if DB init fails

    21bb921
  36. fix: lazy import psycopg2 inside _get_pg_conn() to prevent Vercel Lambda crash on module load

    8cd9061
  37. fix: remove stale backend/vercel.json that was conflicting with top-level experimentalServices

    c0f069c

  1. feat: Vercel-ready OpenCouncil with 3 cities connected (Paris, Sulphur Springs, Frisco)

    6ce841a

  1. Add PG migration for big_picture and what_you_can_do columns

    8b0bf2b
  2. Implement Three P's framework: Life-Centric categories, Big Picture TL;DR, What You Can Do

    ec586f2
  3. fix: align DeepSeek JSON output schema with frontend TypeScript interfaces

    8afcaa0
  4. feat: improve OCR preprocessing pipeline with upscaling, deskew, Otsu threshold, morphology, and multi-PSM Tesseract strategy

    6c3e68f

  1. Add /api/minutes/seed endpoint for pushing pre-computed OCR data to HF Space PostgreSQL

    a40a869
  2. Add pre-computed OCR database for Paris city council minutes

    ba1c420
  3. Fix: detect stub text in _summarize_with_text and return _build_unreadable_response before calling DeepSeek (prevents LLM from echoing 'not available' message as summary)

    812fab8
  4. Fix HF deployment: handle missing OCR engines + stub text detection

    2433aa4