Skip to main content

Search engine

Project description

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.


Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

findora-2025.5.11803.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

findora-2025.5.11803-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file findora-2025.5.11803.tar.gz.

File metadata

  • Download URL: findora-2025.5.11803.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for findora-2025.5.11803.tar.gz
Algorithm Hash digest
SHA256 0ea5df56ad4b2b276491afc30978a40163420fa3de0c562eb2bb4c3427d2d408
MD5 32f9ade84c4619d0f69dbe0e353edb60
BLAKE2b-256 538ab81224afb6c7e737e68e7bfeeedbc4ccb1b8b0a255439a633f60ea05cf25

See more details on using hashes here.

File details

Details for the file findora-2025.5.11803-py3-none-any.whl.

File metadata

  • Download URL: findora-2025.5.11803-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for findora-2025.5.11803-py3-none-any.whl
Algorithm Hash digest
SHA256 84a4d2fdb9a4d437cc81a830742cc0a32cff5feffee7ca2a018b1bca5da21225
MD5 f654a40b7b1853b519dd7750d93e6593
BLAKE2b-256 70954de00a3da81a53d582d303561f2317c4f802fb9159505d254a88c2146fe6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page