Landline Scrubber core library - phone verification and DNC checking
Project description
ai-lls-lib
Core Python library for Landline Scrubber -- phone number verification, line-type detection, DNC registry checking, and bulk processing with caching.
Pipeline Artifacts
Reports are published to GitHub Pages on every push to the default branch.
| Report | Link |
|---|---|
| API Documentation | pdoc reference |
| Test Coverage | HTML coverage report |
| Test Results | Unit test results |
| Security Scans | Bandit, Safety, pip-audit |
| License Compliance | Dependency license report |
| PyPI Package | pypi.org/project/ai-lls-lib |
What This Does
- Phone number normalization (E.164 format)
- Line type detection (mobile/landline/VoIP) via landlineremover.com API
- DNC (Do Not Call) list checking
- DynamoDB caching with 90-day TTL
- Bulk CSV processing with streaming support
- Stripe payment integration (credits, subscriptions)
- Admin user management and API key operations
Getting Started
This project uses AI-assisted development. You do not need to memorize git commands or CI configuration -- your AI agent handles that.
Prerequisites
- Python 3.12+
- uv package manager
- AWS credentials (for integration tests)
First-time setup
git clone https://github.com/Augmenting-Integrations/ai-lls-lib.git
cd ai-lls-lib
uv sync --all-extras
Running locally
uv run pytest -m "not integration" -v # Unit tests
uv run pre-commit run --all-files # Lint + format + type check
uv run mypy src/ # Type checking
How to Contribute
Contributions are made through AI agents (Claude Code, Copilot, etc.). You describe what you want changed in plain language; the agent handles branching, coding, testing, and submitting a pull request.
- Open Claude Code (or your AI agent) in this repo.
- Describe the change you want -- a bug fix, a new feature, a doc update.
- The agent will:
- Create a feature branch
- Make the changes
- Run pre-commit checks and tests
- Open a pull request
- Review the PR when the agent is done. CI runs automatically.
- Merge once CI is green.
If you need to work manually, see the full contributor guide (if available).
Quick Start
Single Phone Verification
from ai_lls_lib import PhoneVerifier, DynamoDBCache
cache = DynamoDBCache(table_name="phone-cache")
verifier = PhoneVerifier(cache)
result = verifier.verify("+15551234567")
print(f"Line type: {result.line_type}") # mobile, landline, voip, unknown
print(f"DNC: {result.dnc}") # True/False
print(f"Cached: {result.cached}") # True/False
Bulk Processing
from ai_lls_lib import BulkProcessor, PhoneVerifier, DynamoDBCache
cache = DynamoDBCache(table_name="phone-cache")
verifier = PhoneVerifier(cache)
processor = BulkProcessor(verifier)
csv_text = "name,phone\nJohn,+15551234567\nJane,+15551234568"
results = processor.process_csv(csv_text)
results_csv = processor.generate_results_csv(csv_text, results)
CLI
ai-lls verify phone +15551234567 --stack landline-api
ai-lls verify bulk input.csv -o output.csv --stack landline-api
ai-lls cache stats --stack landline-api
ai-lls admin user-credits user123 --add 100
ai-lls admin api-keys --user user123
Configuration
| Variable | Description | Required |
|---|---|---|
LANDLINE_REMOVER_API_KEY |
API key for landlineremover.com | Yes (production) |
AWS_REGION |
AWS region for DynamoDB | No (default: us-east-1) |
Architecture
src/ai_lls_lib/
├── __init__.py # Public exports, version
├── core/ # PhoneVerifier, BulkProcessor, DynamoDBCache
├── auth/ # JWT/API key authentication
├── payment/ # StripeManager, CreditManager
├── admin/ # AdminService
├── providers/ # External API clients
├── cli/ # Command-line interface
└── testing/ # Test fixtures
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 ai_lls_lib-3.13.1.tar.gz.
File metadata
- Download URL: ai_lls_lib-3.13.1.tar.gz
- Upload date:
- Size: 47.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39cdb4204ee5ea26773ee0d4639ce413fc66daef22277f48d0f519a6bdb40111
|
|
| MD5 |
ec8b75f9ff3e7d7e5281da960735bf7d
|
|
| BLAKE2b-256 |
b75405322f21b197f38b452d2cc70cb961d1eccfcdfcefd9c974231d0f816cff
|
Provenance
The following attestation bundles were made for ai_lls_lib-3.13.1.tar.gz:
Publisher:
publish.yaml on Augmenting-Integrations/ai-lls-lib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_lls_lib-3.13.1.tar.gz -
Subject digest:
39cdb4204ee5ea26773ee0d4639ce413fc66daef22277f48d0f519a6bdb40111 - Sigstore transparency entry: 1455158269
- Sigstore integration time:
-
Permalink:
Augmenting-Integrations/ai-lls-lib@e9db4795be986ae57baf3f39ba42ba601bd989d0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Augmenting-Integrations
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@e9db4795be986ae57baf3f39ba42ba601bd989d0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_lls_lib-3.13.1-py3-none-any.whl.
File metadata
- Download URL: ai_lls_lib-3.13.1-py3-none-any.whl
- Upload date:
- Size: 62.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
270d8661bd2e481ab271901292686df22d74117823e23145ecdd75a1c57bf8f7
|
|
| MD5 |
b964ab5e4b1bce2c205cc82167f1a5cf
|
|
| BLAKE2b-256 |
880ceac9807835b77914e26b9efe59f2b8432bb1d1eab41fc73fc6865f15e016
|
Provenance
The following attestation bundles were made for ai_lls_lib-3.13.1-py3-none-any.whl:
Publisher:
publish.yaml on Augmenting-Integrations/ai-lls-lib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_lls_lib-3.13.1-py3-none-any.whl -
Subject digest:
270d8661bd2e481ab271901292686df22d74117823e23145ecdd75a1c57bf8f7 - Sigstore transparency entry: 1455158368
- Sigstore integration time:
-
Permalink:
Augmenting-Integrations/ai-lls-lib@e9db4795be986ae57baf3f39ba42ba601bd989d0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Augmenting-Integrations
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@e9db4795be986ae57baf3f39ba42ba601bd989d0 -
Trigger Event:
push
-
Statement type: