Skip to main content

PyPI version License: MIT Downloads LinkedIn

findora

findora is an LLM-assisted search utility.
Give it a plain-text query and it returns a curated list of links with titles and descriptions, after:

  • validating the query with a small language-model prompt
  • optionally enhancing that query for better recall/precision
  • running iterative searches while:
    • deduplicating URLs
    • honouring language & geo preferences
    • respecting result and iteration caps

It is ideal for chat-bots, data-gathering pipelines, academic tooling, or anywhere you need a “few good links” rather than an HTML page of unstructured results.


Installation

pip install findora

Python ≥ 3.8 is required.


Quick start

from findora import findora

results = findora(
    search_query="Eugene Evstafev",
    n=10,
    enhance=False,
    verbose=False,
    language="en-US",
    location="UK",
)

print(results)

Example output (truncated/pretty-printed):

[
    {
        "title": "Eugene Evstafev – Google Scholar",
        "url": "https://scholar.google.com/citations?user=cYLfW7QAAAAJ&hl=en",
        "desc": "Eugene Evstafev, University of Cambridge. Topics include computer science …",
    },
    {
        "title": "How A24 Changed Contemporary Cinema – Medium",
        "url": "https://medium.com/@chigwel/how-a24-changed-contemporary-cinema-5dc69c0b00c2",
        "desc": "Article discussing the impact of A24 films and the 2023 Oscars success …",
    },
    …
]

API

findora(
    search_query: str,
    llm: Optional[Any] = None,   # custom ChatLLM7-compatible object
    n: int = 10,                 # max results (1 – 10)
    enhance: bool = True,        # turn query rewriting on/off
    verbose: bool = False,       # print prompt/response trace
    max_retries: int = 15,       # LLM retry budget
    language: str = "en-US",     # BCP-47 tag passed to the search prompt
    location: str = "World",     # free-text geographical hint
    max_iterations: int = 55,    # safety stop for the search loop
) -> list[dict]

Raises ValueError for:

  • empty or > 1024-char queries
  • n > 10
  • invalid query as judged by the model.

Features

  • 🔍 LLM-powered query understanding – prevents garbage queries early.
  • ✨ Optional query enhancement – adds synonyms, context and localised terms.
  • 🗺 Language & region control – pass language/location and let the model obey.
  • 🚫 Deduplication & “exclude” list – zero duplicated links across iterations.
  • 🧪 Deterministic unit-tested core – 100 % tests pass with mocked LLMs.

Contributing

Bug reports, pull requests and feature ideas are welcome!
Head over to the issue tracker to get started.

  1. Fork the repository
  2. Create a feature branch
  3. Run the test suite with pytest
  4. Open a PR

Please run black and isort before submitting.


License

findora is distributed under the MIT License.


Metadata

Release files for findora 2025.7.131053

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for findora 2025.7.131053
File Size Uploaded Provenance Actions
findora-2025.7.131053.tar.gz 12.1 kB Without provenance Details for findora-2025.7.131053.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for findora 2025.7.131053
File Interpreter ABI Platform Actions
findora-2025.7.131053-py3-none-any.whl Python 3 none any Details for findora-2025.7.131053-py3-none-any.whl

Total release size: 25.3 kB

Release files / findora-2025.7.131053.tar.gz

Download URL findora-2025.7.131053.tar.gz
Size 12.1 kB
Tags Source
SHA-256 checksum
How to use checksums
fb79a9f5dea8b3b168d9741f617b88834a591bfbe06d56aa0f6ea962c15d1703
BLAKE2b-256 checksum
How to use checksums
679dfb11ee263a6564004c9a4508020560b8358bebfb6969fd540e2c26ac50d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.11

Release files / findora-2025.7.131053-py3-none-any.whl

Download URL findora-2025.7.131053-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7a7e73cf1582c81441ab60e6355b6f1dc11970779a14dc785d97e53e5e9fa4d4
BLAKE2b-256 checksum
How to use checksums
8dc59ae6f35159e5036dd2cab5648679869efde37e5d4a17dd4ebb3bdab5bd6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.11

Security for findora 2025.7.131053

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page