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.7.131053.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.7.131053-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: findora-2025.7.131053.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.7.131053.tar.gz
Algorithm Hash digest
SHA256 fb79a9f5dea8b3b168d9741f617b88834a591bfbe06d56aa0f6ea962c15d1703
MD5 11a6e4f71c32566c2a84f5b3a93b4d6c
BLAKE2b-256 679dfb11ee263a6564004c9a4508020560b8358bebfb6969fd540e2c26ac50d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for findora-2025.7.131053-py3-none-any.whl
Algorithm Hash digest
SHA256 7a7e73cf1582c81441ab60e6355b6f1dc11970779a14dc785d97e53e5e9fa4d4
MD5 66482dd9ea65516c3f32010beb74abe7
BLAKE2b-256 8dc59ae6f35159e5036dd2cab5648679869efde37e5d4a17dd4ebb3bdab5bd6f

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