Prior art scanner — search GitHub and HN for existing solutions to an idea.
Project description
priorart
Prior art scanner for ideas. Searches GitHub repositories and Hacker News discussions to assess how crowded a space is, then produces a Reality Signal score (0–100).
Installation
pip install priorart
Or with uv:
uv add priorart
Usage
# Basic scan (table output)
priorart scan 'AI personal finance tracker'
# JSON output
priorart scan 'AI personal finance tracker' --format json
# Markdown output (same format as GitHub Action comment)
priorart scan 'AI personal finance tracker' --format markdown
# Limit to specific sources
priorart scan 'AI personal finance tracker' --sources hn
priorart scan 'AI personal finance tracker' --sources github,hn
# With explicit GitHub token
priorart scan 'AI personal finance tracker' --github-token ghp_...
The GITHUB_TOKEN environment variable is used automatically if set:
export GITHUB_TOKEN=ghp_...
priorart scan 'AI personal finance tracker' --format json
Output formats
JSON (--format json)
{
"query": "AI personal finance tracker",
"queries": ["AI personal finance tracker", "AI personal finance"],
"sources": [
{
"type": "github",
"results": [
{
"name": "org/repo",
"stars": 1234,
"description": "...",
"url": "https://github.com/org/repo",
"updated": "2024-01-01",
"language": "Python"
}
]
},
{
"type": "hn",
"results": [
{
"title": "...",
"points": 42,
"comments": 17,
"url": "https://news.ycombinator.com/item?id=...",
"date": "2024-03-01"
}
]
}
],
"signal": {
"score": 45,
"verdict": "MODERATE",
"breakdown": {
"github": 30,
"hn": 15
}
},
"meta": {
"timestamp": "2026-03-07T00:00:00+00:00",
"version": "0.1.0"
}
}
Markdown (--format markdown)
Produces the same Markdown comment format used by the prior-art-scan GitHub Action.
Table (--format table)
Plain-text table for terminal output (default).
Reality Signal
The Reality Signal (0–100) reflects how crowded the solution space is:
| Score | Verdict | Meaning |
|---|---|---|
| 0–29 | 🟢 LOW | Greenfield opportunity or underserved niche |
| 30–60 | 🟡 MODERATE | Some existing solutions, differentiation needed |
| 61–100 | 🔴 HIGH | Crowded space, needs strong differentiator |
The score is composed of:
- GitHub component (0–60): number of repos found + max star count
- HN component (0–40): number of discussions found + max point count
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check src tests
Package structure
src/priorart/
├── __init__.py # version
├── scanner.py # orchestrator + query builder
├── scoring.py # reality signal computation
├── formatters.py # JSON, markdown, table output
├── cli.py # typer CLI entry point
└── sources/
├── __init__.py
├── github.py # GitHub repository search
└── hn.py # Hacker News search (Algolia API)
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 priorart-0.1.1.tar.gz.
File metadata
- Download URL: priorart-0.1.1.tar.gz
- Upload date:
- Size: 36.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6527a55f578dd5005637851875f25e92ba90d1d8273931e87825ff599412add7
|
|
| MD5 |
f6442b8fb67f415a5f584f68802ebf07
|
|
| BLAKE2b-256 |
0e36520aa9c8f897dc32c43281cbe9fda24bc380745e6f7e342a45b370bba958
|
Provenance
The following attestation bundles were made for priorart-0.1.1.tar.gz:
Publisher:
publish.yml on chillkimtest-oss/priorart
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
priorart-0.1.1.tar.gz -
Subject digest:
6527a55f578dd5005637851875f25e92ba90d1d8273931e87825ff599412add7 - Sigstore transparency entry: 1060139781
- Sigstore integration time:
-
Permalink:
chillkimtest-oss/priorart@490191506a8843eb61adbbf1caaaa6660f8484ae -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/chillkimtest-oss
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@490191506a8843eb61adbbf1caaaa6660f8484ae -
Trigger Event:
push
-
Statement type:
File details
Details for the file priorart-0.1.1-py3-none-any.whl.
File metadata
- Download URL: priorart-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8956721f3a15f67016ba8db3fa44649281a1a424f8df41fa95748526290121ec
|
|
| MD5 |
5ac7417e57dbe5eebe44bcfe67f2924f
|
|
| BLAKE2b-256 |
8220af00e5fd07874fd1a02775a295744a3e7e2491961b6682c80f79215d9c79
|
Provenance
The following attestation bundles were made for priorart-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on chillkimtest-oss/priorart
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
priorart-0.1.1-py3-none-any.whl -
Subject digest:
8956721f3a15f67016ba8db3fa44649281a1a424f8df41fa95748526290121ec - Sigstore transparency entry: 1060139795
- Sigstore integration time:
-
Permalink:
chillkimtest-oss/priorart@490191506a8843eb61adbbf1caaaa6660f8484ae -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/chillkimtest-oss
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@490191506a8843eb61adbbf1caaaa6660f8484ae -
Trigger Event:
push
-
Statement type: