> ## Documentation Index
> Fetch the complete documentation index at: https://docs.triqai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Product updates and announcements for the Triqai enrichment API

<Update label="2026-08-22" description="v1.4.36" tags={["Enrichment"]}>
  ## Authentication reliability

  ### Fixed

  * Kept API authentication available during brief rate-limit coordination interruptions.
</Update>

<Update label="2026-08-19" description="v1.4.35" tags={["Enrichment"]}>
  ## Wallet and payment processor recognition

  ### Added

  * Recognized short-form Alipay transaction prefixes (`ALP*`, `ALP-`, `ALP/`, `ALP `) used by banks in Southeast Asia, the Middle East, and other regions.
  * Extended deterministic title matching to identify Alipay and other wallet-prefixed transactions regardless of country, reducing processing time for these transactions.
  * Added support for configuring known short-form wallet abbreviations that receive relaxed matching when they appear at the start of a transaction description.

  ### Fixed

  * Improved identification of wallet-only QR code payments that contain no merchant name, preventing generic reference numbers from being treated as merchants.
  * Corrected display name normalization for Alipay variants (`Ali Pay`, `ALP`, `ALIPAY`) to consistently resolve to the canonical name.
  * Prevented wallet abbreviations from being misidentified as merchant names or person-to-person recipients when a wallet intermediary is already detected.
</Update>

<Update label="2026-08-19" description="v1.4.34" tags={["Enrichment"]}>
  ## Enrichment reliability hotfix

  ### Fixed

  * Improved delivery of successful enrichment results during brief service congestion.
  * Prevented slow coordination checks from consuming the request's processing window.
  * Improved deadline handling for optional entity reuse and fallback categorization.
</Update>

<Update label="2026-08-18" description="v1.4.33" tags={["Enrichment"]}>
  ## Background processing

  ### Changed

  * Improved background handling after a successful enrichment.
</Update>

<Update label="2026-08-15" description="v1.4.32" tags={["Enrichment"]}>
  ## Enrichment freshness

  ### Fixed

  * Rechecks earlier unresolved merchant and location results when a newer API version retries a low-confidence transaction.
  * Continues reusing current and successful entity results to avoid unnecessary processing.
</Update>

<Update label="2026-08-15" description="v1.4.31" tags={["Enrichment"]}>
  ## Transaction description accuracy

  ### Fixed

  * Recovered merchant and address details when an address-shaped description previously returned no entities.
  * Applied the same safe recovery to earlier cached description analysis results.
</Update>

<Update label="2026-08-15" description="v1.4.30" tags={["Enrichment"]}>
  ## Transaction description accuracy

  ### Fixed

  * Improved merchant and location identification for descriptions containing a business name followed by a numbered address.
  * Prevented address text from being mistaken for a person-to-person recipient when no transfer or payment-platform signal is present.
</Update>

<Update label="2026-08-15" description="v1.4.29" tags={["Enrichment"]}>
  ## Enrichment freshness

  ### Fixed

  * Rechecks older low-confidence transaction results when newer enrichment capabilities may identify the merchant.
  * Keeps current and intentionally filtered results cached to avoid unnecessary processing.
</Update>

<Update label="2026-08-15" description="v1.4.28" tags={["Enrichment"]}>
  ## Merchant identification accuracy

  ### Changed

  * Improved merchant identification for compact transaction descriptions whose business names are commonly written as separate words.
  * Improved local business matching when independent web and location results consistently identify the same company.

  ### Fixed

  * Preserved valid merchant matches when an official website cannot be established.
</Update>

<Update label="2026-08-14" description="v1.4.27" tags={["Enrichment"]}>
  ## AI failure diagnostics hotfix

  ### Fixed

  * Prevented exhausted request deadlines from being reported as missing AI-provider configuration.
  * Removed duplicate merchant-enrichment alerts for AI availability failures already reported by the provider layer.
  * Preserved actionable error reporting when no AI-provider secret is actually configured.
</Update>

<Update label="2026-08-14" description="v1.4.26" tags={["Enrichment"]}>
  ## Search reliability

  ### Fixed

  * Improved enrichment continuity when search services take longer than usual to respond.
  * Prevented slow search requests from extending beyond their allotted response window.
  * Reduced duplicate recovery traffic during temporary search-service slowdowns.

  ### Changed

  * Added additional capacity protection for search traffic and improved reliability monitoring.
</Update>

<Update label="2026-08-12" description="v1.4.25" tags={["Enrichment"]}>
  ## Database and cache reliability hotfix

  ### Fixed

  * Prevented oversized transaction titles from exceeding Cloudflare KV's key-size limit.
  * Reduced database cache-read round trips and kept optional entity lookups inside their request deadline.
  * Gave deferred entity persistence its own background database lifecycle and connection budget.
</Update>

<Update label="2026-08-09" description="v1.4.24" tags={["Enrichment"]}>
  ## Enrichment deadline reliability

  ### Fixed

  * Prevented late enrichment retries from exceeding the request's remaining response budget.
  * Improved successful response delivery when entity storage is temporarily slow.
  * Reduced the time spent waiting for optional entity-cache lookups during database degradation.

  ### Changed

  * Improved failure diagnostics for correlating provider activity with affected enrichment requests.
</Update>

<Update label="2026-08-09" description="v1.4.23" tags={["Enrichment"]}>
  ## Service observability maintenance

  ### Changed

  * Expanded service monitoring for faster identification of API, enrichment-quality, and upstream-provider regressions.
  * Improved provider reliability reporting across successful attempts, timeouts, rate limits, and fallback recovery.
</Update>

<Update label="2026-08-09" description="v1.4.22" tags={["Enrichment"]}>
  ## Enrichment latency hotfix

  ### Fixed

  * Prevented optional search recovery from consuming the remaining response budget.
  * Improved graceful partial enrichment when search services remain slow.
</Update>

<Update label="2026-08-09" description="v1.4.21" tags={["Enrichment"]}>
  ## Search recovery hotfix

  ### Fixed

  * Improved recovery when both active search services time out during the same enrichment request.
  * Kept the additional recovery work bounded to protect response latency and service capacity.
</Update>

<Update label="2026-08-09" description="v1.4.20" tags={["Enrichment"]}>
  ## Search reliability hotfix

  ### Fixed

  * Improved recovery when preferred search services are simultaneously slow.
  * Kept search recovery bounded to protect response latency and service capacity.

  ### Changed

  * Search requests now use Serper and Autom; Exa is disabled.
  * Improved diagnostics to distinguish upstream timeouts from rate limiting and track successful recoveries.
</Update>

<Update label="2026-08-08" description="v1.4.19" tags={["Enrichment"]}>
  ## Enrichment reliability

  ### Fixed

  * Improved enrichment continuity when multiple search services respond slowly at the same time.
  * Preserved a complete response window for the final search fallback during temporary upstream delays.

  ### Changed

  * Improved search-fallback diagnostics for faster identification of isolated upstream timeouts.
</Update>

<Update label="2026-08-08" description="v1.4.18" tags={["Enrichment"]}>
  ## Service reliability

  ### Fixed

  * Improved continuity when external search services slow down or temporarily limit traffic.
  * Improved recovery checks so isolated upstream failures do not interrupt healthy provider traffic.
  * Improved processing-provider capacity selection using provider-specific limits.

  ### Changed

  * Expanded service telemetry for more accurate provider-capacity and reliability reporting.
  * Updated supporting dependencies to security-patched releases.
</Update>

<Update label="2026-08-06" description="v1.4.17" tags={["Enrichment"]}>
  ## Enrichment reliability

  ### Fixed

  * Prevented routine income enrichment safeguards from being reported as service errors when the final category is valid.
</Update>

<Update label="2026-08-06" description="v1.4.16" tags={["Enrichment"]}>
  ## Service continuity

  ### Fixed

  * Improved request recovery during routine service updates and temporary infrastructure moves.
</Update>

<Update label="2026-08-06" description="v1.4.15" tags={["Enrichment"]}>
  ## Service continuity

  ### Fixed

  * Improved request continuity during routine service updates.
</Update>

<Update label="2026-08-06" description="v1.4.14" tags={["Enrichment"]}>
  ## Maintenance reliability

  ### Fixed

  * Improved cache-cleanup safety checks before account data maintenance begins.
  * Avoided unnecessary cache deletion requests when no matching records are present.
</Update>

<Update label="2026-08-06" description="v1.4.13" tags={["Enrichment"]}>
  ## Categorization consistency

  ### Fixed

  * Prevented an earlier transaction direction from affecting categories returned for later transactions involving the same merchant.
  * Improved automatic recovery when a stored merchant category conflicts with the requested transaction direction.
  * Ensured related merchant profiles consistently use the published category hierarchy.
  * Clarified which transaction identifier to use when reporting an enrichment issue.
  * Updated supporting framework dependencies to security-patched releases.
</Update>

<Update label="2026-08-05" description="v1.4.12" tags={["Enrichment"]}>
  ## Enrichment reliability hotfix

  ### Fixed

  * Prevented slow entity lookups from exhausting the enrichment request budget.
  * Improved graceful fallback when optional AI analysis or validation retries are temporarily unavailable.
</Update>

<Update label="2026-07-27" description="v1.4.11" tags={["Enrichment"]}>
  ## Categorization improvements

  ### Fixed

  * Improved merchant matching for transactions involving delivery platforms and support URLs.
  * Ensured returned category hierarchies and names consistently follow the published categorization schema.
</Update>

<Update label="2026-07-25" description="v1.4.10" tags={["Enrichment"]}>
  ## Reliability improvements

  ### Fixed

  * Improved API reliability during temporary service interruptions and high-traffic periods.
</Update>

<Update label="2026-07-24" description="v1.4.9" tags={["Enrichment"]}>
  ## Reliability improvements

  ### Fixed

  * Improved API reliability and response times during temporary service interruptions and high-traffic periods.
</Update>

<Update label="2026-07-23" description="v1.4.8" tags={["Enrichment"]}>
  ## API stability improvements

  ### Fixed

  * Reduced intermittent slow responses when enrichment requires multiple data lookups.
  * Improved enrichment response times by more effectively selecting available processing providers.
  * Improved enrichment reliability by routing requests away from temporarily degraded providers.

  ### Changed

  * Improved recovery behavior during temporary database connectivity issues.
  * Improved fallback enrichment processing to maintain throughput during high-traffic periods.
</Update>

<Update label="2026-07-22" description="v1.4.6" tags={["Enrichment"]}>
  ## Enrichment reliability improvements

  ### Fixed

  * Improved API reliability when external enrichment services are slow or temporarily unavailable.
  * Reduced intermittent enrichment timeouts caused by incomplete provider responses.
  * Improved recovery from timed-out enrichment work to prevent follow-on request failures.

  ### Changed

  * Improved graceful recovery during temporary third-party service interruptions.
  * Expanded automatic fallback coverage for web searches.
</Update>

<Update label="2026-07-19" description="v1.4.5" tags={["Enrichment"]}>
  ## Reliability improvements

  ### Changed

  * Improved internal rate limit monitoring and database connection handling for more reliable API performance during high traffic.
</Update>

<Update label="2026-07-17" description="v1.4.4" tags={["Enrichment"]}>
  ## Reliability improvements

  ### Changed

  * Improved internal release validation and provider error monitoring for more reliable API updates.
</Update>

<Update label="2026-07-17" description="v1.4.3" tags={["Enrichment"]}>
  ## Reliability improvements

  ### Changed

  * Improved internal monitoring for requests.
</Update>

<Update label="2026-07-16" description="v1.4.2" tags={["Enrichment"]}>
  ## Reliability improvements

  ### Changed

  * Improved internal latency to database operations.
</Update>

<Update label="2026-07-15" description="v1.4.1" tags={["Enrichment"]}>
  ## Reliability improvements

  ### Fixed

  * Improved enrichment reliability under moderate load by reducing unnecessary AI provider timeouts.
  * Improved credit confirmation resilience during deployments, reducing the chance of unconfirmed billing reservations.
  * Fixed a connection pool leak that could occur during background parent-merchant resolution.
</Update>

<Update label="2026-07-14" description="v1.4.0" tags={["Enrichment"]}>
  ## High-traffic reliability and persistence improvements

  ### Fixed

  * Fixed intermittent enrichment failures and stalled requests that could occur when many organizations sent requests concurrently.
  * Improved transaction-history reliability by durably accepting completed enrichments before returning a successful response.
  * Improved automatic recovery from temporary database connectivity issues while preventing one request from affecting another request's processing.

  ### Changed

  * Failed transaction-history writes now retry automatically with duplicate protection, reducing the risk of missing or repeated activity records during infrastructure disruptions.
</Update>

<Update label="2026-07-10" description="v1.3.43" tags={["Enrichment"]}>
  ## Reliability maintenance

  ### Changed

  * Improved internal accuracy of AI with new model configuration.
</Update>

<Update label="2026-07-10" description="v1.3.42" tags={["Enrichment"]}>
  ## Reliability maintenance

  ### Changed

  * Improved internal latency to database operations.
</Update>

<Update label="2026-07-07" description="v1.3.41" tags={["Enrichment"]}>
  ## Reliability maintenance

  ### Changed

  * Improved internal database read/write performance and reliability.
</Update>

<Update label="2026-06-20" description="v1.3.40" tags={["Enrichment"]}>
  ## Reliability maintenance

  ### Changed

  * Improved internal database handling and request recovery for more reliable API processing during temporary service slowdowns.
</Update>

<Update label="2026-06-20" description="v1.3.39" tags={["Enrichment"]}>
  ## Reliability maintenance

  ### Changed

  * Improved internal request handling for better reliability during temporary infrastructure slowdowns.
</Update>

<Update label="2026-06-19" description="v1.3.38" tags={["Enrichment"]}>
  ## Maintenance update

  ### Changed

  * Improved internal service architecture for faster iteration on enrichment features and reliability improvements.
</Update>

<Update label="2026-06-18" description="v1.3.37" tags={["Enrichment"]}>
  ## Maintenance update

  ### Changed

  * Improved internal maintenance tooling for external dependencies.
</Update>

<Update label="2026-06-18" description="v1.3.36" tags={["Enrichment"]}>
  ## Enrichment reliability improvements

  ### Fixed

  * Improved enrichment reliability during high traffic and temporary database slowdowns, reducing avoidable timeouts and improving fallback behavior when upstream providers are slow.
</Update>

<Update label="2026-06-16" description="v1.3.35" tags={["Enrichment"]}>
  ## Enrichment stability and load balancing improvements

  ### Fixed

  * Fixed intermittent enrichment failures that could occur when multiple requests were processed concurrently within the same service instance, improving reliability under sustained traffic.

  ### Changed

  * Improved load balancing accuracy for providers that enforce concurrent request limits, reducing unnecessary failovers and improving throughput during high-traffic periods.
</Update>

<Update label="2026-06-16" description="v1.3.34" tags={["Enrichment"]}>
  ## New AI infrastructure improvements

  ### Fixed

  * Improved reliability in periods of high traffic for the AI infrastructure.
</Update>

<Update label="2026-06-13" description="v1.3.33" tags={["Enrichment"]}>
  ## Reliability monitoring improvements

  ### Fixed

  * Improved internal monitoring for rate limits and enrichment errors, helping the API team spot real reliability issues more quickly while reducing duplicate operational alerts.
</Update>

<Update label="2026-06-13" description="v1.3.32" tags={["Enrichment"]}>
  ## Maintenance update

  ### Changed

  * Improved internal maintenance tooling for database-backed checks, helping keep release validation and audits reliable without changing production API behavior.
</Update>

<Update label="2026-06-12" description="v1.3.31" tags={["Enrichment"]}>
  ## Place detection stability fixes

  ### Fixed

  * Resolved recurring place detection interruptions during traffic bursts. The place detection service no longer performs heavy warm-up work while serving live requests, removing the timeouts that intermittently disabled place detection for 30-second windows.
  * Place detection retries now get a fairer time budget, improving recovery when an initial attempt is slow during scale-out.
</Update>

<Update label="2026-06-12" description="v1.3.30" tags={["Enrichment"]}>
  ## Enrichment reliability and stability improvements

  ### Fixed

  * Enrichment requests no longer fail when a cached result is temporarily unavailable; processing continues normally and recovers automatically.
  * Improved place detection stability after brief service interruptions, reducing false detection outages.
  * Faster switchover to a fallback web search provider when the primary provider is slow, improving enrichment response times.
  * Improved resilience to brief database connection interruptions during enrichment lookups.
  * Slow cache lookups can no longer delay enrichment responses.
</Update>

<Update label="2026-06-12" description="v1.3.29" tags={["Enrichment"]}>
  ## Merchant confidence accuracy improvements

  ### Added

  * Merchant results are now corroborated against the independently found location for the same transaction: when both clearly agree on the same real-world business, merchant confidence reflects that verification instead of staying conservatively low.
  * New confidence reason codes (`location_corroborated`, `location_domain_corroborated`, `location_title_corroborated`) explain when and why a merchant was verified by its location result.

  ### Changed

  * Soft confidence penalties (such as broad or ambiguous merchant names) are lifted when the location result confirms the exact business, improving confidence accuracy for small local merchants.
  * Merchant websites surfaced by the location result can now be attached when verified as merchant-owned; booking-platform, directory, and venue-hosted pages are never attached.
</Update>

<Update label="2026-06-11" description="v1.3.28" tags={["Enrichment"]}>
  ## Enrichment reliability improvements

  ### Changed

  * Improved enrichment response times when an upstream search provider is slow or degraded.
  * Improved provider failover so enrichment can recover more reliably before timing out.
  * Added more detailed cache performance monitoring to help keep response times stable.
</Update>

<Update label="2026-06-10" description="v1.3.27" tags={["Enrichment"]}>
  ## Performance and reliability fixes

  ### Fixed

  * Improved enrichment response times by restoring the previous stable place detection route.
  * Reduced false cache write timeout alerts during periods of higher load.
  * Improved reliability for concurrent cached enrichment lookups, reducing unnecessary reprocessing.
  * Corrected production environment tagging in error monitoring.
  * Reduced duplicate upstream provider rate-limit alerts during provider incidents while still tracking suppressed events.
</Update>

<Update label="2026-06-10" description="v1.3.26" tags={["Enrichment"]}>
  ## Scaling and high-concurrency reliability improvements

  ### Changed

  * Improved enrichment capacity coordination across all running instances, allowing higher sustained request rates without upstream provider rate-limit errors.
  * Upstream provider backoffs are now shared instantly across all instances, reducing failed enrichment attempts during traffic spikes.
  * Request load is now spread across healthy AI capacity proactively instead of all at once after saturation.
  * Reduced authentication cache contention during request bursts for the same organization.
  * Faster and more reliable internal place detection calls during scale-out
</Update>

<Update label="2026-06-09" description="v1.3.25" tags={["Enrichment"]}>
  ## Enrichment stability and recognition improvements

  ### Changed

  * Improved enrichment reliability and throughput during higher traffic periods.
  * Reduced false internal service disruptions during transient upstream capacity limits.
</Update>

<Update label="2026-06-05" description="v1.3.24" tags={["Enrichment"]}>
  ## Merchant domain accuracy improvements

  ### Changed

  * Improved merchant website matching to reduce cases where third-party listing, directory, map, or profile pages are selected as merchant domains.
  * Added more consistent entity reasoning codes and explanations in enrichment responses, including cached and previously saved results.
</Update>

<Update label="2026-06-01" description="v1.3.23" tags={["Enrichment"]}>
  ## Enrichment stability and recognition improvements

  ### Changed

  * Improved enrichment reliability and throughput during higher traffic periods.
  * Improved handling of slower transaction-title analysis to reduce premature timeouts.

  ### Fixed

  * Improved recognition of Chinese payment references in transaction titles.
</Update>

<Update label="2026-05-30" description="v1.3.22" tags={["Enrichment"]}>
  ## Enrichment availability improvements

  ### Changed

  * Improved enrichment availability when individual processing providers are slow or temporarily limited.
  * Improved consistency of enrichment responses during short-lived upstream service issues.
</Update>

<Update label="2026-05-30" description="v1.3.21" tags={["Enrichment"]}>
  ## Load balancing improvements

  ### Fixed

  * Internal load balancing improvements to reduce the impact of temporary upstream capacity limits.
</Update>

<Update label="2026-05-28" description="v1.3.20" tags={["Enrichment"]}>
  ## Merchant accuracy and stability improvements

  ### Fixed

  * Improved merchant brand matching to reduce rare cases where unrelated businesses could be grouped together.
  * Improved enrichment stability during temporary upstream capacity limits.
</Update>

<Update label="2026-05-28" description="v1.3.19" tags={["Enrichment"]}>
  ## Minor stability improvements

  ### Fixed

  * Improved enrichment reliability during brief database slowdowns or high-load periods.
  * Reduced rare delays when using cached enrichment and entity results.
</Update>

<Update label="2026-05-28" description="v1.3.18" tags={["Enrichment"]}>
  ## Codebase optimization improvements

  ### Changed

  * Improved internal maintainability of the enrichment pipeline, cache handling, and internal service routes.
</Update>

<Update label="2026-05-26" description="v1.3.17" tags={["Enrichment"]}>
  ## Database query timeout improvements

  ### Changed

  * Improved enrichment response times during temporary database slowdowns.
  * Improved enrichment reliability under high traffic by reducing the impact of slow queries on unrelated requests.
</Update>

<Update label="2026-05-23" description="v1.3.16" tags={["Enrichment"]}>
  ## Enrichment persistence reliability improvements

  ### Fixed

  * Improved reliability of saved enrichment results during temporary database connectivity issues.
  * Improved consistency of cached enrichment results and activity history during short-lived traffic spikes.
  * Reduced rare cases where merchant resolution or enrichment follow-up processing could be delayed after a transient persistence failure.
</Update>

<Update label="2026-05-23" description="v1.3.15" tags={["Enrichment"]}>
  ## Reliability and location resilience improvements

  ### Changed

  * Improved enrichment reliability when location detection or coordinate-based place resolution is temporarily slow or unavailable.
  * Improved transaction dissection and AI-assisted enrichment completion rates for more complex or slower-to-resolve transaction titles.
  * Improved request handling during traffic bursts and temporary service slowdowns.

  ### Fixed

  * Reduced rare enrichment misses caused by transient location lookup failures.
  * Reduced occasional request delays or throttling inconsistencies during short-lived high-traffic periods.
</Update>

<Update label="2026-05-21" description="v1.3.14" tags={["Enrichment"]}>
  ## Enrichment response-time improvements

  ### Changed

  * Improved enrichment response times, especially for new transactions that require merchant matching.
  * Improved consistency when the same transaction is enriched multiple times at once.

  ### Fixed

  * Reduced rare delays for repeated enrichment requests during high-traffic periods.
</Update>

<Update label="2026-05-21" description="v1.3.13" tags={["Enrichment"]}>
  ## Enrichment response-time and high-traffic reliability improvements

  ### Changed

  * Improved response times for transaction enrichment, especially for repeated or concurrent requests with the same transaction details.
  * Improved enrichment latency for common Chinese payment titles, including Alipay, WeChat Pay, Tenpay, UnionPay, JD Pay, Huabei, and bank-transfer formats.
  * Improved enrichment reliability during high-traffic periods by reducing request-path waiting and cache/database contention.
</Update>

<Update label="2026-05-08" description="v1.3.12" tags={["Enrichment"]}>
  ## Parent-merchant resolution speed and identity-consistency improvements

  ### Changed

  * Improved enrichment response speed for transactions where a merchant brand is already known, by resolving parent-merchant identity earlier in the pipeline.
  * Improved merchant identity consistency in enrichment responses - parent-merchant name, logo, and category are now only applied when the association has been confirmed, reducing cases where an unverified brand identity could appear in results.
</Update>

<Update label="2026-04-29" description="v1.3.11" tags={["Enrichment"]}>
  ## Platform-derived category signals and pre-auth rate-limiting refinements

  ### Added

  * Known platform intermediaries such as Uber Eats, DoorDash, Deliveroo, Wolt, Instacart, Getir, Lazada, and Shopee can now contribute deterministic transaction categories such as Food Delivery, Groceries, and Online Marketplaces.
  * Added `platform_category_match` as a category confidence reason for platform-derived category results.

  ### Changed

  * Improved category accuracy for delivery, grocery, and marketplace platform transactions so known platform categories can outweigh weaker merchant-derived classifications.
  * Refined pre-auth rate limiting so missing or malformed API keys are handled separately from valid-format API key cache misses, reducing false positives for legitimate authenticated traffic while still protecting authentication lookups.

  ### Fixed

  * Prevented duplicate platform category signals from inflating category weighting when the same intermediary is encountered through both cached and newly enriched data.
</Update>

<Update label="2026-04-20" description="v1.3.10" tags={["Enrichment"]}>
  ## Upstream lookup reliability improvements

  ### Changed

  * Improved lookup reliability during upstream rate limits and temporary outages.
</Update>

<Update label="2026-04-16" description="v1.3.9" tags={["Enrichment"]}>
  ## P2P disambiguation and parent-merchant resolution reliability improvements

  ### Changed

  * Improved person-versus-merchant disambiguation for transfer-style transactions by adding P2P intermediary context (platform, wallet, and transfer-token signals) to merchant analysis.
  * Improved P2P routing so person-detected payees keep intermediary platform context, leading to more complete peer-to-peer enrichment results.
  * Improved parent-merchant resolution reliability during enrichment with a more resilient retry path.

  ### Fixed

  * Prevented merchant-stage P2P placeholders from overwriting valid intermediary-derived P2P recipient data.
  * Ensured merchant `entities[].data.id` remains canonical at the parent-merchant level when a parent profile is temporarily unavailable.
  * Fixed parent-merchant redirect lookups to apply consistently for merchants missing a stored parent ID.
</Update>

<Update label="2026-04-16" description="v1.3.8" tags={["Core API", "Enrichment"]}>
  ## Merchant category response field and enrichment quality improvements

  ### Added

  * `GET /v1/merchants/{id}` now includes the merchant's `category` field with primary, secondary, and tertiary classification (same `CategoryStructure` format as enrichment responses).

  ### Changed

  * Improved merchant name normalization internally in the enrichment pipeline.
  * Improved merchant confidence scoring for single-token acronyms and abbreviations by using fuzzy domain-anchor matching against search results and resolved domains.
  * Location enrichment now skips purely numeric store-ID hints because of misclassification of enrichment results.

  ### Fixed

  * Merchant logos are now more likely to show if existing entity internally has no logo.
</Update>

<Update label="2026-04-13" description="v1.3.7" tags={["Enrichment"]}>
  ## Enrichment responsiveness and merchant normalization performance improvements

  ### Changed

  * Faster response times for common enrichment traffic, especially when similar transaction patterns repeat.
  * Better responsiveness during high-traffic periods through more efficient capacity checks.
  * Faster merchant normalization for clear brand matches, with heavier reconciliation work moved to background processing.

  ### Fixed

  * Reduced response delays when merchant redirect lookups are slow.
  * Reduced repeated work for known unresolved redirect mappings with short-lived miss caching.
</Update>

<Update label="2026-04-12" description="v1.3.6" tags={["Enrichment"]}>
  ## Intermediary alias detection and location cross-checking reliability improvements

  ### Changed

  * Improved intermediary detection for short processor aliases in transaction titles, increasing recognition accuracy for delimiter-based formats.
  * Improved location cross-checking for store/branch-specific transactions to better validate that selected places match the transaction context.

  ### Fixed

  * Reduced incorrect location matches for store-ID and branch-hint transactions when geographic validation signals are missing or inconsistent.
</Update>

<Update label="2026-04-12" description="v1.3.5" tags={["Enrichment"]}>
  ## Enrichment throughput and parent-merchant consolidation performance improvements

  ### Changed

  * Improved enrichment throughput for concurrent requests, reducing end-to-end latency in high-traffic periods.
  * Improved parent-merchant consolidation flow so enrichment results are returned faster while keeping merchant identity consistency.
</Update>

<Update label="2026-04-11" description="v1.3.4" tags={["Enrichment"]}>
  ## Merchant/intermediary recognition and location extraction reliability improvements

  ### Changed

  * Improved merchant detection for noisy and reference-heavy transaction titles.
  * Improved intermediary and merchant brand recognition using broader keyword and domain matching.
  * Improved location extraction reliability when using selective entity filters.

  ### Fixed

  * Prevented location-only extraction paths from reusing merchant values as location fallbacks.
  * Reduced repeated warning noise for invalid AI model overrides in long-running environments.
</Update>

<Update label="2026-04-09" description="v1.3.3" tags={["Enrichment"]}>
  ## Parent merchant matching and confidence improvements

  ### Changed

  * Improved parent merchant matching accuracy for brands that appear on shared marketplace/portal domains.
  * More reliable merchant confidence scoring for ambiguous payment-style titles and legal-name search results.
  * Better consensus handling when search evidence consistently points to a single merchant brand.

  ### Fixed

  * Reduced incorrect parent-merchant merges for unrelated merchants sharing the same host domain.
</Update>

<Update label="2026-04-07" description="v1.3.2" tags={["Core API", "Enrichment"]}>
  ## Transaction lifecycle endpoints and classification improvements

  ### Added

  * `GET /v1/transactions/count` endpoint to retrieve the total number of stored transactions, with optional `afterDate` filter.
  * `DELETE /v1/transactions/batch` endpoint for bulk deletion by date range or list of IDs (max 1000). Associated cache and all internal organization related entries are purged automatically.
  * Per-organization transaction retention setting (`transaction_retention_days`, 1–90 days) to control how long enriched results are cached.

  ### Changed

  * Improved person vs. merchant classification: legal entity suffixes (LTD, LLC, GmbH, B.V., etc.) now strongly favor merchant classification in both title dissection and merchant analysis.
  * Improved P2P detection: transfer phrases followed by business names with legal suffixes are no longer misclassified as person-to-person transfers.
  * Improved merchant detection signals: company registries, commercial directories, and invoice/reference patterns now contribute to merchant classification confidence.
</Update>

<Update label="2026-04-06" description="v1.3.1" tags={["Enrichment"]}>
  ## Legal-name accuracy and IBAN anonymization improvements

  ### Changed

  * Accuracy improvements for legal names in transaction enrichment `POST /v1/transactions/enrich` pipeline.
  * Improved anonymization: IBANs are now always hidden in internal pipeline processing.
</Update>

<Update label="2026-04-04" description="v1.3.0" tags={["Enrichment"]}>
  ## Recurring-payment metadata removal from transaction responses

  ### Breaking

  * Removed the legacy recurring-payment object from enrichment transaction responses.
  * Removed recurring-payment enum/type surfaces from the public API contract.

  ### Migration Notes

  * **Action required** if your integration reads or validates the legacy recurring-payment object.
  * Update response parsing, DTOs, and schema validation to use `data.transaction.category` and `data.transaction.confidence` only.
  * This change does **not** affect billing plan flows in the dashboard and Stripe.

  ### Changed

  * Internal enrichment persistence no longer stores legacy recurring-payment classification fields for transactions and merchants.
</Update>

<Update label="2026-04-03" description="v1.2.2" tags={["Enrichment"]}>
  ## Coordinate-based location context and resolution improvements

  ### Added

  * Core API now accepts GPS coordinates in `options.location.coordinates` as location context for enrichment.
  * When coordinates are provided without a city name, the API now resolves them to a nearby place name.

  ### Changed

  * Location enrichment is now more accurate for transactions where the title has little or no clear location text.
  * If both coordinates and `cityName` are provided, `cityName` remains the source of truth.

  ### Fixed

  * Prevented country-level matches from being used as location results when resolving coordinates.
  * Ensured coordinate-based location hints are not applied when `options.filters.noLocation` is enabled.
</Update>

<Update label="2026-04-02" description="v1.2.1" tags={["Enrichment"]}>
  ## More conservative fallback categorization for IBAN-heavy transfer-like titles

  ### Changed

  * Fallback categorization is now more conservative for transfer-like titles that contain full IBAN-style account references.
  * For IBAN-heavy titles, you may see lower confidence and `reference_code` in confidence reasons, even if transfer wording is present.

  ### Fixed

  * Improved reliability of request gating under high-load/throttling scenarios.
  * Improved consistency of credit reservation handling when requests are denied by system-wide capacity protections.
</Update>

<Update label="2026-03-31" description="v1.2.0" tags={["Enrichment"]}>
  ## Canonical brand-level merchant IDs

  ### Breaking

  * Merchant `entities[].data.id` now returns the **canonical brand-level merchant ID** (parent merchant UUID), not a store-level/sub-merchant ID.
  * If your integration stores or joins on merchant IDs from previous versions, you should treat this as a new canonical ID space.

  ### Migration Notes

  * **Action required** if you persist merchant IDs in your database, analytics model, or downstream joins.
  * **No action required** if you only display merchant name/icon/category in responses.
  * Recommended approach:
    * Store the new `entities[].data.id` as your canonical merchant key.
    * Re-map historical references over time by re-enriching recent transactions or by backfilling your local mappings.

  ### Added

  * Parent merchant deduplication: location/store variants of the same brand are grouped under one canonical merchant.
  * Responses now return a consistent merchant identity (`id`) and canonical brand profile across transactions for the same brand.

  ### Changed

  * Merchant names and descriptions are now curated at the brand level when multiple merchant observations exist.
  * You may see cleaner brand naming (less branch/store-specific noise) while keeping relevant merchant metadata.
</Update>

<Update label="2026-03-30" description="v1.1.11" tags={["Enrichment"]}>
  ## Channel removal and merchant-detection improvements

  ### Breaking

  * Removed `data.transaction.channel` from enrichment responses.
  * Removed channel-related enums and shared types from the public API contract and SDK type surface.

  ### Added

  * Platform-domain validation for merchant enrichment. Social/content platform domains are no longer assigned as merchant domains unless the merchant is the platform itself.
  * URL-based merchant recovery in title dissection when a merchant is missing but a URL is present in the transaction title.
  * New `venue_or_attraction` confidence reason for non-traditional merchants such as venues, attractions, and transport operators.

  ### Changed

  * Improved merchant confidence scoring for abbreviated and concatenated merchant names.
  * Broadened merchant classification so payees that provide goods, services, entry, or transport are more consistently recognized as merchants.
  * Improved `broad_merchant_name` tagging so known brand names are less likely to be marked as broad/generic.
  * Improved merchant domain extraction to avoid selecting review sites, app stores, and social media pages as the merchant domain.
</Update>

<Update label="2026-03-29" description="v1.1.10" tags={["Enrichment"]}>
  ## Merchant-location cross-checking and fallback improvements

  ### Added

  * Post-enrichment merchant-location cross-checking on `POST /v1/transactions/enrich` to detect merchant/location mismatches and automatically re-select better location candidates when available.
  * Location recovery path for cases where location initially returns no match but a merchant-aligned place exists in search results.
  * New location confidence reasons in responses: `merchant_location_crosscheck_corrected`, `merchant_location_crosscheck_recovered`, `merchant_location_mismatch`, and `geo_mismatch`.

  ### Changed

  * Improved fallback routing for non-P2P transactions: fallback classification now runs when merchant extraction ends in no match, and income classification runs only when a merchant is confidently found.
  * More conservative fallback confidence calibration for ambiguous or reference-heavy titles, with stronger routing to `Uncategorized` or `Other Income` in low-confidence cases.
  * Improved title dissection for separator-heavy and URL-containing transaction strings.
  * Improved country handling with stricter ISO 3166-1 alpha-2 validation and broader country-name/address resolution for multilingual aliases.

  ### Fixed

  * Reduced wrong-branch location matches for similarly named merchants by cross-validating merchant identity against selected location evidence.
  * Fixed cases where weak fallback evidence could inflate confidence or produce over-specific categories.
</Update>

<Update label="2026-03-21" description="v1.1.9" tags={["Enrichment"]}>
  ## Intermediary alias inference improvements

  ### Added

  * Alias inference in intermediary post-processing to improve processor/platform recognition from variant names.

  ### Changed

  * Improved intermediary detection reliability for mixed and abbreviated transaction strings.
</Update>

<Update label="2026-03-19" description="v1.1.8" tags={["Enrichment"]}>
  ## Merchant disambiguation and fallback confidence updates

  ### Added

  * Expanded merchant analysis signals with country-aware disambiguation and legal-entity marker handling.
  * Expanded fallback confidence reason handling for ambiguous and reference-like titles.

  ### Changed

  * Improved title normalization for merchant analysis and fallback categorization.
  * Improved fallback confidence scoring to better reflect uncertainty.

  ### Fixed

  * Negative fallback reason tags now take precedence over positive tags during confidence calibration.
</Update>

<Update label="2026-03-16" description="v1.1.7" tags={["Enrichment"]}>
  ## Enrichment cache performance and observability updates

  ### Changed

  * Faster enrichment retrieval path with cache transaction lookups.
  * Improved entity-cache lookup/save performance for lower enrichment latency.
  * Added more granular cache phase tracking for enrichment observability.
</Update>

<Update label="2026-03-16" description="v1.1.6" tags={["Enrichment"]}>
  ## New `options` field for enrichment endpoint

  ### Added

  * **Enrichment options** on `POST /v1/transactions/enrich`: new optional `options` field in the request body.
    * **Filters** (`options.filters`): set `noMerchant`, `noIntermediary`, or `noLocation` to `true` to skip extraction of that entity type. Useful when you already have the data or want faster responses.
    * **Pre-filled merchant** (`options.merchant`): supply `id`, `name`, or `domain` when you know the merchant. The API will use it directly instead of extracting from the title. IDs must exist in our system (returns 422 if not found); names and domains use best-effort lookup.
    * **Pre-filled location** (`options.location`): supply `cityName`, `streetName`, `storeNumber`, `physicalLocation`, or `coordinates` to improve location accuracy.
    * **Pre-filled intermediaries** (`options.intermediaries`): supply up to 5 intermediaries by `id`, `name`, or `domain` when you know the payment processor(s).
    * You cannot combine a filter (e.g. `noMerchant`) with pre-filled data for the same entity type; the request will return 422.

  ### Changed

  * Improved extraction accuracy for transaction titles that include country codes (e.g. `NETFLIX NL`).
  * Improved handling of reference-like patterns (payment IDs, order numbers).
  * When you pre-fill merchant and skip intermediary + location, the API may bypass title dissection for lower latency.

  ### Fixed

  * Titles ending in a country code (e.g. `NETFLIX NL`) are now parsed correctly instead of being treated as merchant-only.
</Update>

<Update label="2026-03-12" description="v1.1.5" tags={["Enrichment"]}>
  ## Incremental accuracy and performance improvements

  ### Changed

  * Incremental accuracy and performance improvements across the enrichment pipeline.
  * Improved entity detection for noisy transaction strings, reducing merchant false negatives.
  * Faster cold-start behavior on `POST /v1/transactions/enrich`.
  * Tuned confidence reason-tagging to make confidence scores more reliable, especially for merchant and location entities.
  * Additional latency improvements in enrichment processing.
</Update>
