Search engine
Project description
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/locationand 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.
- Fork the repository
- Create a feature branch
- Run the test suite with pytest
- Open a PR
Please run black and isort before submitting.
License
findora is distributed under the MIT License.
Links
- 🐙 GitHub → https://github.com/chigwell/findora
- 📦 PyPI → https://pypi.org/project/findora/
- 👤 Author → Eugene Evstafev
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb79a9f5dea8b3b168d9741f617b88834a591bfbe06d56aa0f6ea962c15d1703
|
|
| MD5 |
11a6e4f71c32566c2a84f5b3a93b4d6c
|
|
| BLAKE2b-256 |
679dfb11ee263a6564004c9a4508020560b8358bebfb6969fd540e2c26ac50d7
|
File details
Details for the file findora-2025.7.131053-py3-none-any.whl.
File metadata
- Download URL: findora-2025.7.131053-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a7e73cf1582c81441ab60e6355b6f1dc11970779a14dc785d97e53e5e9fa4d4
|
|
| MD5 |
66482dd9ea65516c3f32010beb74abe7
|
|
| BLAKE2b-256 |
8dc59ae6f35159e5036dd2cab5648679869efde37e5d4a17dd4ebb3bdab5bd6f
|