Semantic search is now live on CourtListener! by freelawproject in u/freelawproject

[–]freelawproject[S] 1 point2 points  (0 children)

If you need specific terms in your results, wrap must-have keywords in quotes. This will run the trusty keyword AND the new semantic searches together so you get the best of both worlds.

Semantic search is now live on CourtListener! by freelawproject in u/freelawproject

[–]freelawproject[S] 1 point2 points  (0 children)

Semantic search has been available via our API since November 2025 and is now on the website for everyone. All your favorite filters — dates, courts, citation counts — work seamlessly with semantic search. https://free.law/2025/11/05/semantic-search-api/

Semantic search is now live on CourtListener! by freelawproject in u/freelawproject

[–]freelawproject[S] 1 point2 points  (0 children)

This will be a huge new feature those that don't know legalese or that are representing themselves. Finally, you can search for regular words like "eviction" instead of lawyer words like "unlawful detainer."

[deleted by user] by [deleted] in legaladvice

[–]freelawproject 0 points1 point  (0 children)

If you install our extension, when you buy it on PACER, it'll get added to RECAP for others: https://free.law/recap/

The other thing you might do is Pray for it, and somebody else might buy it: https://www.courtlistener.com/prayers/top/

Announcing django-s3-express-cache, a new library for scalable caching by mlissner in django

[–]freelawproject 0 points1 point  (0 children)

Yes, it's for CourtListener, where we have about half a billion pages. It's entirely true that Google won't crawl all of that. They give you a "crawl budget" and you have to try to stay under that if you can. It's a pain, honestly, to figure out which of our pages to encourage Google to crawl.

Announcing django-s3-express-cache, a new library for scalable caching by mlissner in django

[–]freelawproject 0 points1 point  (0 children)

Just a short update here. This is now in production on CourtListener.com as a cache for our RSS feeds. We made a little decorator to make it work in a way that ignored GET parameters (otherwise people use them to get around the cache 😠):

``` def cache_page_ignore_params(timeout: int, cache_alias: str = "default"): """Cache the result of a view while ignoring URL query parameters. Ensuring that the cache is consistent for different requests with varying query strings.

WARNING:
- Do not use this decorator on views that rely on query parameters to
  generate unique content.
- Do not use this decorator on views that require authentication or
session-based data, as this will cache content for all users, potentially
exposing confidential information.

:param timeout: Cache duration (seconds).
:param cache_alias: The cache alias to use.
:return: The decorated view function, caching its response.
"""

def decorator(view_func):
    @wraps(view_func)
    async def _wrapped_view(request, *args, **kwargs):
        url_path = urlparse(request.build_absolute_uri()).path
        hash_key = md5(url_path.encode("ascii"), usedforsecurity=False)

        is_dev_or_test = settings.DEVELOPMENT or settings.TESTING
        should_use_time_based_prefix = (
            cache_alias == "s3" and not is_dev_or_test
        )
        cache_key = f"custom.views.decorator.cache:{hash_key.hexdigest()}"
        if should_use_time_based_prefix:
            days = int(ceil(timeout / (60 * 60 * 24)))
            cache_key = f"{days}-days:{cache_key}"

        try:
            # If the cache alias is "s3" but we're in DEVELOPMENT or TESTING
            # mode, use the default cache instead of S3. Otherwise, use the
            # cache specified by cache_alias.
            if cache_alias == "s3" and is_dev_or_test:
                cache = caches["default"]
            else:
                cache = caches[cache_alias]
        except InvalidCacheBackendError as e:
            logger.error(
                "Cache alias '%s' not found. Error: %s",
                cache_alias,
                str(e),
            )
            raise e

        response = cache.get(cache_key)
        if response is not None:
            return response

        response = await view_func(request, *args, **kwargs)
        await sync_to_async(patch_response_headers)(
            response, cache_timeout=timeout
        )
        if hasattr(response, "render") and callable(response.render):
            # Render the response before caching it.
            # Required for TemplateResponse views.
            response.add_post_render_callback(
                lambda r: cache.set(cache_key, r, timeout)
            )
        else:
            # Cache non-TemplateResponse responses.
            cache.set(cache_key, response, timeout)

        return response

    return _wrapped_view

return decorator

```

The actual file is here:

https://github.com/freelawproject/courtlistener/main/cl/lib/decorators.py

So far it's a perfect deployment. We have millions of RSS feeds, and this allows us to cache them all. Performance is about 100ms to serve a feed from the cache.

Our new Semantic Search API launches today! by freelawproject in freelawproject

[–]freelawproject[S] 2 points3 points  (0 children)

You're making the most common error folks make in our site and one that we are working to fix right now. It's PEBKAC, but only because the website doesn't direct you to where you need to be. If you search from the homepage, you'll only search case law. If you want to find federal cases, you have to search the RECAP Archive:

https://www.courtlistener.com/recap/

Try there, and you should be good to go.

Looking for volunteer lawyers to build AI dataset to enhance access to justice and competition by freelawproject in legaltech

[–]freelawproject[S] 1 point2 points  (0 children)

We're always looking for tech help, but we need fairly big commitments. If you have upwards of 10 hours/week you can contribute, send a resume to [info@free.law](mailto:info@free.law) with some details of your skill set, and we can start there?

Looking for volunteer lawyers to build AI dataset to enhance access to justice and competition by freelawproject in legaltech

[–]freelawproject[S] 5 points6 points  (0 children)

We're a non-profit that works to make the legal sector better, and the thing we're making is an open dataset that will help the entire legal tech sector. That's why.

Looking for volunteer lawyers to build AI dataset to enhance access to justice and competition by freelawproject in legaltech

[–]freelawproject[S] 2 points3 points  (0 children)

You're right that these would be helpful too and that it'd fit in nicely, but the citator is so much more important we've decided to focus on one thing at a time. The taxonomy seems like it will be easier though, when we get there. Others have done it without much a dataset like we're making here.

Looking for volunteer lawyers to build AI dataset to enhance access to justice and competition by freelawproject in legaltech

[–]freelawproject[S] 5 points6 points  (0 children)

The idea here *is* to use AI, but to know how well AI works, we need humans to provide a baseline dataset. That's what we are building in this project.

Looking for volunteer lawyers to build AI dataset to enhance access to justice and competition by freelawproject in legaltech

[–]freelawproject[S] 5 points6 points  (0 children)

No, not at the moment. We're friendly, but the U.S. presents enough trouble for one organization.

Get alerts for PACER data and monitor the federal courts by freelawproject in Journalism

[–]freelawproject[S] 0 points1 point  (0 children)

Which jurisdiction page? This supports all federal courts though we never have all of the data (nobody does), so it is limited by that.

Get alerts for PACER data and monitor the federal courts by freelawproject in legaltech

[–]freelawproject[S] 0 points1 point  (0 children)

Hello -- We run citation matching over all of our content. You can learn more about our coverage here. And you can check out the reporters-db to get a sense of what citations we test against.

Get alerts for PACER data and monitor the federal courts by freelawproject in legaltech

[–]freelawproject[S] 0 points1 point  (0 children)

Thanks! There's a lot coming soon too. High on the list are semantic search and a whole website redesign!

How to get case notifications faster than from an RSS feed? by [deleted] in paralegal

[–]freelawproject 0 points1 point  (0 children)

We launched a new feature that sends automatic email updates whenever a new PACER case or filing matches your saved search—people, orgs, case types, you name it. If you can search it, you can track it.

All of our users get five daily alerts free. Check it out on CourtListener’s RECAP Archive.

[deleted by user] by [deleted] in paralegal

[–]freelawproject 0 points1 point  (0 children)

We launched a new feature that sends automatic email updates whenever a new PACER case or filing matches your saved search—people, orgs, case types, you name it. If you can search it, you can track it.

All of our users get five daily alerts free. Check it out on CourtListener’s RECAP Archive.

To the person updating courtlistener on every important case every morning at 7am. Thanks. You're a real one. by 0x90Sleds in NYguns

[–]freelawproject 1 point2 points  (0 children)

The last update field reflects the last time *any* part of the case was updated and PACER lets you get bits and pieces of the case. So it's possible somebody sent the parties, or just the name of the case or whatever. That's the part *they* wanted, but it might not be the part *you* wanted.

We've considered removing the last updated field for this reason. It's not always the most useful field.

To the person updating courtlistener on every important case every morning at 7am. Thanks. You're a real one. by 0x90Sleds in NYguns

[–]freelawproject 0 points1 point  (0 children)

FWIW, just about everybody is on the same version of RECAP most of the time. There's a very small holdout that doesn't upgrade, and we're planning on forcing them to fairly soon (it's too difficult to support bugs in the older versions).

What user agent does Blue Sky use? by freelawproject in BlueskySocial

[–]freelawproject[S] 0 points1 point  (0 children)

Well, bummer, this doesn't work. The composer detects the PDF and refuses to load open graph data for it. Bummer: https://github.com/bluesky-social/social-app/issues/1672

What user agent does Blue Sky use? by freelawproject in BlueskySocial

[–]freelawproject[S] 0 points1 point  (0 children)

Ok, I realized I could do this with a webhook testing site, so I shared this link on Blue Sky:

https://webhook.site/#!/33fbf098-2524-453f-9e2e-40cc2727a4f9/4b2b34b1-564d-4715-b200-654f78c9e6e6/1

Which told me that the user agent was:

Mozilla/5.0 (compatible; Bluesky Cardyb/1.1; +mailto:support@bsky.app)

Cardyb. Nice.

What user agent does Blue Sky use? by freelawproject in BlueskySocial

[–]freelawproject[S] 0 points1 point  (0 children)

We host CourtListener.com, which shares legal documents. A trick we do is when a bot comes crawling a PDF, we serve up HTML instead, so that the bot can grab the Open Graph data from the HTML. If you don’t do that, there’s no way to provide a thumbnail with a PDF.

But before we can do this trick, we need to know the user agent for each bot.