Metadata-Version: 2.3
Name: credit-card-agent-recommender
Version: 0.1.1
Summary: Analyze and compare credit cards from their product pages, then recommend one card.
Author: AJoelCastro
Author-email: AJoelCastro <arturocastro.re@gmail.com>
Requires-Dist: dataclasses>=0.8
Requires-Dist: openai-agents>=0.24.0
Requires-Dist: pydantic>=2.14.1
Requires-Dist: playwright>=1.51.0
Requires-Dist: python-dotenv>=1.2.4
Requires-Dist: requests>=2.32.3
Requires-Dist: typesafe-sdk>=0.7.5
Requires-Python: >=3.13
Description-Content-Type: text/markdown

# Credit Card Recommender

Compara tarjetas de crédito usando sus páginas oficiales y recomienda una opción.

## Requisitos

- Python 3.13+
- [uv](https://docs.astral.sh/uv/)
- Una clave de API de OpenAI con saldo disponible

## Instalación

```bash
uv sync
cp .env.example .env
```

Agrega tu clave en `.env`:

```env
OPENAI_API_KEY=openai_api_key
TYPESAFE_API_KEY=typesafe_api_key
OPENAI_DEFAULT_MODEL=gpt-5.6-luna
OPENAI_AGENTS_DONT_LOG_MODEL_DATA=1
OPENAI_AGENTS_DONT_LOG_TOOL_DATA=1
```

## Ejecutar

Configura las URLs que quieras comparar en `harness/cards_analyzer.py` y ejecuta:

```bash
uv run python harness/cards_analyzer.py
```

El programa extrae los datos de cada tarjeta, las compara y recomienda una. Los logs muestran el uso de tokens por llamada.

## Uso como librería

```python
import asyncio
from credit_card_agent_recommender import CreditCardAnalyzer, CreditCardRecommender


async def main():
    analyzer = CreditCardAnalyzer()
    analysis = await analyzer.analyze_cards([
        "https://www.viabcp.com/tarjetas/american-express-platinum",
        "https://www.bbva.pe/personas/productos/tarjetas/credito/tarjeta-platinum.html",
    ])

    recommender = CreditCardRecommender()
    recommendation = await recommender.recommend(analysis)
    print(recommendation)


asyncio.run(main())
```

## Consideraciones

- Cada tarjeta requiere una llamada de extracción al modelo; luego hay una llamada de análisis y otra de recomendación. El consumo depende del contenido enviado y del modelo configurado.
- El acceso depende del sitio. El programa no elude bloqueos ni verificaciones anti-bot.
- No compartas ni subas `.env` al repositorio.