Pre-scrub intelligence API

Every address tells a story. Read it before bureau.

AQS turns every address into a risk intelligence node — application velocity, identity patterns, and applicant history in one API call. Your LOS sees a form field. AQS sees the full picture.

POST/api/v1/score — 42 fields, 6 blocks
{
  "address_quality": {
    "total_score": 72, "risk_tier": "MEDIUM_CONFIDENCE",
    "component_scores": { "pincode": 20, "locality": 15,
      "specificity": 12, "nominatim": 15, "gibberish": 10 }
  },
  "identity_signals": {
    "match_type": "pan_hash_exact",
    "match_confidence": 0.95
  },
  "address_risk_graph": {
    "velocity_score": 0.6,
    "velocity_trend": { "acceleration_flag": true }
  },
  "applicant_history": {
    "ghost_risk_score": 0.25,
    "repeat_applicant": true
  },
  "combined_signals": {
    "combined_risk_score": 0.35,
    "signal_severity": "medium"
  },
  "locus": { "household_confidence": 0.85 }
}
We compute. You decide.
Facts, scores, reason codes. No recommended actions. Your policy engine owns the playbook.
Zero PII — keyed hashes only
<200ms latency
One endpoint
DPDPA-safe
Score any Indian address in under 200ms.
Request a live demo — we'll score your real addresses against the AQS engine and walk you through the response. No integration needed to see it work.
Request a live demo
The AQS Address Capture Widget.
Replace your free-text address field with a structured, validated entry flow. Better input means higher geocode confidence, which means more reliable risk signals downstream.
Widget flow:
Pin code → auto-fills city, state, district
Locality → dropdown from 155K+ verified localities
Street → dropdown from OSM street index
Building / flat → free text
Landmark → optional, verified for distance
→ capture_quality_score included in API response

Why it matters

"Near big tree, opposite pink building" scores low because the geocoder can't resolve it. A structured address with validated pin code + known locality + OSM street scores high — before AQS even runs.

The widget is a JavaScript embed — one script tag in your application form. It validates each layer in real-time and emits a structured address object your LOS sends to AQS.

Optional. AQS works with free-text addresses too. The widget just makes the scores more reliable.

Your origination pipeline is blind to three things that cost real money.
60%+

Applicants abandon mid-flow

They trigger your bureau pull, consume KYC resources, then vanish. Sunk scrub cost with zero recovery.

2-3×

Household exposure is invisible

Husband applies on Flipkart, wife applies on Amazon. Both are legitimate — but the NBFC doesn't know the household now has 2× the EMI burden. Each application arrives as an isolated event.

6+

Identities at one address

Multiple PANs at the same geocoded address in 90 days. Joint family or synthetic cluster? Without address intelligence, you can't tell.

Not just "how many applications" — is this address getting hotter?
Applications at address locus
Monthly — last 6 months
1
Oct
1
Nov
2
Dec
3
Jan
5
Feb
11
Mar

Snapshot counts miss the pattern

"11 applications in 90 days" looks the same whether it's steady or a sudden spike. The acceleration is the real signal.

if velocity_trend.acceleration_ratio > 2.0
  and unique_identities_90d > 4
  → flag for review
Structured signals your policy engine can consume.
You already send AQS the address. Add keyed-hashed PII to the same call — unlock three additional signal layers.
📍

Address + locus

  • Quality score (0-100) with 5 components
  • Velocity at address (30/90d) + acceleration trend
  • Dealer-to-address distance (pincode centroid)
  • Household confidence + premise type flags
👥

Identity + risk graph

  • Graph-style identity (PAN strong, phone moderate)
  • Unique identities count at address locus
  • PII rotation detection across attempts
  • Dealer concentration + cross-profile overlap
🔄

Applicant history

  • Repeat applicant detection
  • Prior attempt stage + outcome
  • Ghost risk score (0.0 - 1.0)
  • Categorized reason codes by signal class
Patterns only visible when the layers talk to each other.
SignalWhat AQS detectsSeverity
Velocity acceleration1 app/month → 11. Acceleration ratio 2.93×. Dormant-to-active.High
Identity concentration6 different PANs at same address in 90 days. Score discounted for multi-unit.High
Address quality jumpSame PAN seen before at score 35. Now back at 82.Elevated
PII rotationHusband PAN + wife phone → abandoned. Now wife PAN + husband phone.Medium
Dealer geo-mismatchDealer in Pune, 4 of 10 apps 300km+ away. Pincode-to-pincode distance.High
42 fields. 6 blocks. One endpoint.
One POST endpoint. Add hashed identity fields alongside the address — the response includes the address score plus all premium signal layers.
POST/api/v1/score — full response
{
  "address_quality": {
    "total_score": 72,
    "risk_tier": "MEDIUM_CONFIDENCE",
    "component_scores": {
      "pincode_city_state": 20, "locality": 15,
      "specificity": 12, "nominatim": 15, "gibberish": 10
    },
    "flags": ["LOCALITY_FUZZY_MATCH"]
  },
  "identity_signals": {
    "match_type": "pan_hash_exact", "match_confidence": 0.95,
    "linked_keys": { "pan": 1, "phone": 2, "email": 1 },
    "address_loci_linked": 3
  },
  "address_risk_graph": {
    "facts": { "applications_90d": 5, "unique_profiles_90d": 2 },
    "scores": { "velocity": 0.6, "identity_rotation": 0.3 },
    "velocity_trend": { "trend_direction": "accelerating", "acceleration_flag": true }
  },
  "applicant_history": {
    "prior_checks": 2, "ghost_risk_score": 0.25,
    "repeat_applicant": true, "days_since_last_check": 15
  },
  "combined_signals": {
    "combined_risk_score": 0.35, "signal_severity": "medium",
    "process_signals": ["repeat_applicant"],
    "address_signals": ["high_identity_count_at_address"]
  },
  "locus": {
    "household_confidence": 0.85,
    "multi_unit_flag": false, "commercial_flag": false
  }
}
Where AQS sits in your borrower's journey.
AQS fires the moment your application form captures the address. Before bureau. Before KYC. The response informs every downstream decision.
01

Borrower enters address

Free-text in your existing form, or via the optional AQS Address Capture Widget for structured, validated input.

02

Your LOS calls AQS

POST /api/v1/score with address + HMAC-hashed PAN/phone. Raw PII never leaves your systems. One call.

03

AQS returns 42 fields

Address quality, identity signals, risk graph, applicant history, combined signals, locus — all in <200ms.

04

Your policy engine decides

Proceed to bureau? Step-up verification? Flag for review? Your rules, your playbook. AQS provides the evidence.

PII-blind by design. Evidence-only by principle.
🔒

Zero PII on our servers

HMAC-keyed hashes only. The NBFC controls the key. We are architecturally unable to identify your customers.

📋

DPDPA-safe by default

Keyed-hashed identifiers with lender-managed keys. Geocoordinates from pincode centroids. Compliance review in minutes.

⚖️

You own the decisions

Facts, scores, reason codes — never recommended actions. Your policy engine maps signals to decisions.

🔍

Fully auditable

Every response carries rules_version, scoring_version, and feature flags. Governance metadata answers "why did this score change?"

🏢

Tenant-isolated

Each lender's data strictly isolated. No cross-lender signals unless consortium agreement.

🏗️

Backward compatible

No identity block? Same response as today. Premium layers activate only when hashed PII is provided.

Every address tells a story.
Your LOS only reads the first page.

30-day pilot. Observation mode first. We show you what your origination pipeline is missing — then you decide.

We'll reach out within 24 hours.