Go to file
0xWheatyz ead0867f4d
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 1m57s
feat: add Gitea Actions workflow for Docker builds
Add Gitea Actions workflow to automatically build and push Docker
images to Gitea container registry.

New files:
- .gitea/workflows/build.yaml: Automated Docker build workflow
  - Triggers on push to main, tags, and manual dispatch
  - Builds Docker image from Dockerfile
  - Tags appropriately (commit SHA, tags, latest)
  - Pushes to Gitea registry at 10.0.1.10

- CONTAINER_REGISTRY.md: Complete documentation for:
  - Enabling Gitea container registry
  - Setting up CI/CD with Gitea Actions
  - Creating and using personal access tokens
  - Pulling and pushing images
  - Troubleshooting common issues

The workflow is compatible with the existing Dockerfile and provides
automated builds similar to the GitLab CI pipeline.

Prerequisites:
- Gitea container registry enabled
- GITEA_TOKEN secret configured with write:package scope

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-04 02:59:53 +00:00
.gitea/workflows feat: add Gitea Actions workflow for Docker builds 2026-03-04 02:59:53 +00:00
SPARC feat: migrate from Anthropic API to OpenRouter 2026-02-22 12:26:56 -05:00
tests feat: migrate from Anthropic API to OpenRouter 2026-02-22 12:26:56 -05:00
.gitignore tests: testing modes have been added in an attempt to tune without wasting tokens. 2026-02-19 22:46:15 -05:00
.gitlab-ci.yml fix(ci): invaild syntax in ci 2026-02-22 12:45:12 -05:00
CONTAINER_REGISTRY.md feat: add Gitea Actions workflow for Docker builds 2026-03-04 02:59:53 +00:00
Dockerfile feat: Docker integration 2026-02-22 12:30:37 -05:00
flake.lock feat: patent retrival and semi-processed 2025-12-08 19:33:02 -05:00
flake.nix chore: update Nix shell prompt configuration 2026-02-22 12:27:16 -05:00
main.py docs: update documentation for OpenRouter migration 2026-02-22 12:27:06 -05:00
README.md docs: update documentation for OpenRouter migration 2026-02-22 12:27:06 -05:00
requirements.txt feat: migrate from Anthropic API to OpenRouter 2026-02-22 12:26:56 -05:00

SPARC

Semiconductor Patent & Analytics Report Core

A patent analysis system that estimates company performance by analyzing their patent portfolios using LLM-powered insights.

Overview

SPARC automatically collects, parses, and analyzes patents from companies to provide performance estimations. It uses Claude AI to evaluate innovation quality, strategic direction, and competitive positioning based on patent content.

Features

  • Patent Retrieval: Automated collection via SerpAPI's Google Patents engine
  • Intelligent Parsing: Extracts key sections (abstract, claims, summary) from patent PDFs
  • Content Minimization: Removes verbose descriptions to reduce LLM token usage
  • AI Analysis: Uses Claude 3.5 Sonnet via OpenRouter to analyze innovation quality and market potential
  • Portfolio Analysis: Evaluates multiple patents holistically for comprehensive insights
  • Robust Testing: 26 tests covering all major functionality

Architecture

SPARC/
├── serp_api.py       # Patent retrieval and PDF parsing
├── llm.py            # Claude AI integration via OpenRouter
├── analyzer.py       # High-level orchestration
├── types.py          # Data models
└── config.py         # Environment configuration

Installation

nix develop

This automatically creates a virtual environment and installs all dependencies.

Manual Installation

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Configuration

Create a .env file in the project root:

# SerpAPI key for patent search
API_KEY=your_serpapi_key_here

# OpenRouter API key for Claude AI analysis
OPENROUTER_API_KEY=your_openrouter_key_here

Get your API keys:

Usage

Basic Usage

from SPARC.analyzer import CompanyAnalyzer

# Initialize the analyzer
analyzer = CompanyAnalyzer()

# Analyze a company's patent portfolio
analysis = analyzer.analyze_company("nvidia")
print(analysis)

Run the Example

python main.py

This will:

  1. Retrieve recent NVIDIA patents
  2. Parse and minimize content
  3. Analyze with Claude AI
  4. Print comprehensive performance assessment

Single Patent Analysis

# Analyze a specific patent
result = analyzer.analyze_single_patent(
    patent_id="US11322171B1",
    company_name="nvidia"
)

Running Tests

# Run all tests
pytest tests/ -v

# Run specific test modules
pytest tests/test_analyzer.py -v
pytest tests/test_llm.py -v
pytest tests/test_serp_api.py -v

# Run with coverage
pytest tests/ --cov=SPARC --cov-report=term-missing

How It Works

  1. Patent Collection: Queries SerpAPI for company patents
  2. PDF Download: Retrieves patent PDF files
  3. Section Extraction: Parses abstract, claims, summary, and description
  4. Content Minimization: Keeps essential sections, removes bloated descriptions
  5. LLM Analysis: Sends minimized content to Claude for analysis
  6. Performance Estimation: Returns insights on innovation quality and outlook

Roadmap

  • Retrieve publicationID from SERP API
  • Parse patents from PDFs (no need for Google Patent API)
  • Extract and minimize patent content
  • LLM integration for analysis
  • Company performance estimation
  • Multi-company batch processing
  • FastAPI web service wrapper
  • Docker containerization
  • Results persistence (database)
  • Visualization dashboard

Development

Code Style

  • Type hints throughout
  • Comprehensive docstrings
  • Small, testable functions
  • Conventional commits

Testing Philosophy

  • Unit tests for core logic
  • Integration tests for orchestration
  • Mock external APIs
  • Aim for high coverage

Making Changes

  1. Write tests first
  2. Implement feature
  3. Verify all tests pass
  4. Commit with conventional format: type: description

Types: feat, fix, docs, test, refactor, chore

License

For open source projects, say how it is licensed.

Project Status

Core functionality complete. Ready for production use with API keys configured.

Next steps: API wrapper, containerization, and multi-company support.