Skip to main content

Introduction

The A-MINT API (Automatic Model INTerpreter) is a Python-based service that extracts structured pricing data from SaaS websites and transforms it into the standardized Pricing2YAML format. It leverages Large Language Models (LLMs) to intelligently parse HTML content and identify pricing plans, features, usage limits, and add-ons.
A-MINT is a core component of the Pricing Intelligence platform, serving as the data extraction layer that feeds the Analysis API and Harvey agent.

What A-MINT Does

A-MINT automates the complex process of extracting pricing information from web pages:
  1. Fetches HTML Content - Uses Selenium WebDriver to load and render pricing pages
  2. Converts to Markdown - Transforms HTML into clean, structured Markdown format
  3. Extracts Pricing Components - Uses LLM-powered prompts to identify:
    • Pricing plans with monthly/annual costs
    • Features (domain, integration, support, etc.)
    • Usage limits (numeric quotas, time limits, etc.)
    • Add-ons and extensions
  4. Validates & Aligns - Ensures extracted data is consistent with the source
  5. Outputs YAML - Serializes data into the Pricing2YAML specification

Key Features

AI-Powered Extraction

Uses OpenAI models to intelligently parse and understand pricing structures from HTML content

Markdown Conversion

Converts complex HTML tables and layouts into clean Markdown for easier processing

Iterative Validation

Automatically validates and fixes extracted YAML through multiple refinement iterations

Standardized Output

Produces consistent Pricing2YAML format compatible with Analysis API and CSP solver

Architecture

A-MINT is deployed as a FastAPI service that runs on port 8001 (mapped from internal port 8000):

Service Configuration

From docker-compose.yml:
a-mint-api:
  ports:
    - "8001:8000"
  environment:
    - OPENAI_API_KEY=${AMINT_API_KEY}
    - ANALYSIS_API=http://analysis-api:3000/api/v1
    - LOG_LEVEL=INFO

API Endpoints

The A-MINT API exposes the following endpoints:

POST /api/v1/transform

Extract pricing data from a URL and convert to YAML

GET /api/v1/transform/status/:task_id

Check the status of a transformation task

POST /api/v1/fix

Fix and validate an existing YAML file

GET /health

Health check endpoint

Pricing2YAML Format

A-MINT outputs data in the Pricing2YAML specification, which includes:
  • Metadata: saasName, version, createdAt, currency, url
  • Features: Boolean, numeric, or text features with type classifications
  • Usage Limits: Renewable or non-renewable quotas linked to features
  • Plans: Named tiers with pricing and feature/limit overrides
  • Add-ons: Extensions available for specific plans with pricing

Example Output Structure

saasName: slack
syntaxVersion: '2.1'
version: '2024-07-02'
currency: USD
url: https://slack.com/pricing

features:
  singleSignOn:
    description: SAML-based single sign-on (SSO)
    valueType: BOOLEAN
    defaultValue: false
    type: INTEGRATION
    integrationType: IDENTITY_PROVIDER

usageLimits:
  useMessagesAccess:
    description: Days you can access message history
    valueType: NUMERIC
    defaultValue: 90
    unit: message
    type: NON_RENEWABLE
    linkedFeatures:
      - messagesAccess

plans:
  FREE:
    price: 0
    unit: user/month
    features: null
    usageLimits: null
  PRO:
    price: 8.75
    unit: user/month
    features:
      singleSignOn:
        value: true
    usageLimits:
      useMessagesAccess:
        value: 10000000000000

addOns:
  slackAI:
    availableFor:
      - PRO
    price: Contact Sales
    unit: USD/user

Integration with Pricing Intelligence

A-MINT works as part of the larger ecosystem:
  1. Harvey Agent calls the MCP Server’s iPricing tool
  2. MCP Server forwards the request to A-MINT API
  3. A-MINT extracts and validates the pricing data
  4. Analysis API receives the YAML for validation and analysis
  5. Harvey uses the structured data to answer user queries

Configuration Options

When calling the A-MINT API, you can configure:
model
string
default:"gpt-5.2"
The OpenAI model to use for extraction
temperature
float
default:"0.7"
Temperature for LLM responses (0.0 = deterministic, 1.0 = creative)
max_tries
integer
default:"50"
Maximum validation iterations before giving up
base_url
string
default:"https://api.openai.com/v1"
Custom endpoint URL for OpenAI-compatible APIs

Next Steps

Extraction Endpoint

Learn how to extract pricing data from URLs

Analysis API

Process extracted YAML with the Analysis API

Build docs developers (and LLMs) love