huereo / how-it-works

How huereo works for Indian data

You give huereo an input (one file or a folder) and a Privacy Contract that names the DPDP pack. Every release then runs the same eight steps on your own servers, and every step is recorded.

01 How a release works

Eight steps, the same every time.

Every step is recorded. Anything that needs a person stops the release instead of being guessed.

Step 1 of 8

Discover and profile

Every supported file is read in bounded memory: each sheet of a workbook, each page of a PDF, each part of an email. A file whose name holds personal data (for example PAN_ABCPS1234K.png) is released under a neutral name such as renamed-0001.png.

Produces

  • A profile of every file
  • Neutral file names

02 Results

Approved or blocked, never in between.

The same code comes back from the command line and the API, so a pipeline can act on it without anyone reading a report.

Exit codeResultWhat is in the output folder
0PASS Every check passed.release/ with the transformed copy, the RELEASE_APPROVED marker, the evidence
1FAIL A check failed.RELEASE_BLOCKED, the evidence, and the held-back copy in blocked/; nothing in release/
2UNRESOLVED A decision is needed (often the DPO’s legal decision).RELEASE_BLOCKED, the evidence, and the held-back copy in blocked/; nothing in release/
3INPUT OR CONTRACT An input or contract problem; the reason names it.Nothing is written
4RUNTIME ERROR The run stopped with an error.Nothing is released
5MISSING PACK A required pack or capability is missing.Nothing is released

Interrupted runs. After a power loss or a killed process, huereo recover marks the run and huereo resume finishes it with the plan it had frozen. An interrupted run never leaves an approved release behind, and its working copy of the data is deleted. A second release into a folder that already holds one is refused; earlier releases are never overwritten.

03 The Privacy Contract

Every release is planned from one file.

One YAML file, and every key in it is validated strictly: a typo stops the run before any data is read.

contracts/bank_loan_vendor_india.yamlrelease:
  purpose: external_analytics
  recipient_type: contracted_vendor
  industry: banking
  confirmed_jurisdictions: [INDIA_DPDP]

identity:
  prohibited_entity_types: [NATIONAL_ID, TAX_ID,
    PERSON_NAME, PHONE_NUMBER,
    BANK_ACCOUNT_NUMBER, ADDRESS]
  reversible_tokens_allowed: false
  cross_release_linkability_allowed: false

risk:
  max_residual_critical_identifiers: 0
  min_k: 3
  quasi_identifiers: [state, branch]

utility:
  preserve_fields: [loan_amount, emi, loan_status]
  preserve_relational_integrity: true

transforms:
  date_policy: SHIFT
  geography_level: STATE

detection:
  block_on_unresolved: true
PartWhat it declares
ReleasePurpose, recipient type and id; where the organisation, the data subjects, the processing and the recipient are; industry; confirmed jurisdictions.
IdentityFamilies never released raw (national IDs, PAN, names, phones, accounts and so on); whether reversible tokens and cross-release linking are allowed.
RiskMaximum residual critical and high identifiers; minimum k and l; quasi-identifiers; sensitive attributes; population size.
UtilityFields kept unchanged; relational integrity; time intervals; maximum distribution drift.
TransformsIdentity replacement: keyed tokens, or realistic stand-ins (REALISTIC); date policy (shift per person, keep month, keep year, or redact); geography level (country, state, district, postal code, locality); rules per field.
DetectionWhether unresolved findings block the release; the customer’s own rule pack.
ExceptionsDecisions by the customer’s Data Protection Officer, each with approver, date, expiry and rationale.
LawThe law packs the release must satisfy.

Where a contract comes from

huereo assess reads a sample and drafts a contract for it. Every identifier family it found is prohibited, fields with nothing personal are kept, and quasi-identifiers are grouped for k-anonymity. You review the draft with your privacy team.

Example contracts shipped with the product

  • Lending and collections vendor
  • Document sharing with a processing vendor
  • HR and payroll vendor
  • Education research
  • Telecom network vendor
  • Public scheme audit
  • General vendor release

The DPO decision

Whether a de-identified copy is still personal data under the DPDP Act is a legal decision. huereo does not make it. Until your DPO records it in the contract (an exception of kind ACCEPT_LEGAL_REVIEW), a release ends UNRESOLVED and nothing is shared.

04 Inputs

Tables, documents and scans, each released in its own format.

Outputs keep the input’s format. Nothing is silently converted, and nothing a reader did not read is copied into a release. A folder releases every supported file in it.

InputWhat is readReleased as
CSV, ParquetEvery row and column, in batchesThe same format; Parquet metadata is dropped
Excel (.xlsx)Every sheet, as its own tableA workbook; text never becomes a live formula
JSON, NDJSONNested objects and arrays, streamed; keys that hold data are tokenisedThe same structure
FHIR R4 (JSON, NDJSON, Bundles)Element meanings for 28 resources; general rules for the othersFHIR, with resource ids and references kept consistent
HL7 v2Every field component; delimiters taken from MSHHL7 v2
SQL dumpsINSERT and COPY valuesSQL
XMLText, attributes and comments; DTDs refusedXML
Plain text and logsThe whole textText
Word (.docx)Body, headers, footers, footnotes, comments, tracked deletions, document properties, data-bound fields, SmartArt and chart textWord with its formatting; embedded pictures replaced by a blank, embedded files and macros emptied
Email (.eml)Sender, recipients, subject, date, text and HTML bodiesEmail; attachments and routing headers removed
Outlook (.msg)Headers and bodyRedacted text
HTMLText, comments, scripts and attribute valuesHTML; embedded data: images removed
PDF, text or scannedPage text, and OCR for any page that holds an imageA PDF of page images with personal words painted out; no text layer, forms, attachments or metadata
PNG, JPEG, TIFF scansOCR in English and HindiThe same image format with personal words painted out; no EXIF
  • Anything removed instead of read is listed in the Passport as UNREAD_CONTENT_REMOVED, and the rest is released.
  • Damaged, empty and password-protected files stop with a reason that names the file (exit 3); nothing is released.
  • Rows that are not valid text are left out and counted in the Passport (RECORDS_NOT_DECODED).

05 What it finds

176 types of personal and sensitive data, in 42 families.

huereo recognises 176 types of personal and sensitive data in 42 families. Identifiers are matched with their official structure and checksum where one exists (Verhoeff for Aadhaar, Luhn for cards, ISO 13616 for IBAN), together with the labels around them in English, Hindi and European languages. Names, places and organisations in free text come from huereo’s own trained model.

India

  • Aadhaar
  • Aadhaar VID
  • Masked Aadhaar
  • Aadhaar Enrolment ID
  • PAN
  • UPI ID
  • Bank account
  • GSTIN
  • TAN
  • CIN
  • DIN
  • Udyam
  • Voter ID (EPIC)
  • Passport
  • Driving licence
  • Vehicle registration
  • UAN
  • e-Shram UAN
  • State Family ID (Samagra, Jan Aadhaar, Parivar Pehchan Patra)
  • OCI card
  • ITR acknowledgement
  • ESIC IP
  • ABHA number
  • ABHA address
  • PIN code
  • Caste

Banking and insurance

  • CKYC number
  • Account number
  • Loan account
  • Demat account
  • CIF
  • Card number
  • Card expiry
  • CVV
  • PIN and OTP
  • Insurance policy
  • Transaction reference
  • Merchant ID
  • Crypto wallet

Healthcare

  • Medical record number
  • Encounter ID
  • Lab accession
  • Prescription ID
  • Claim ID
  • Health plan member ID
  • Doctor registration number
  • Appointment ID

HR

  • Employee ID
  • EPF member ID
  • NPS PRAN
  • Salary

Education

  • Student ID
  • APAAR ID
  • ABC ID
  • Marks

Telecom

  • IMSI
  • IMEI
  • ICCID
  • Cell ID

Public sector

  • Ration card
  • NREGA job card
  • PM-KISAN ID
  • Land record number
  • Certificate number

Everywhere

  • Names
  • Addresses
  • Places
  • Organisations
  • Phone numbers
  • Emails
  • Dates of birth
  • Age
  • IP and MAC addresses
  • Device IDs
  • Geo coordinates
  • Usernames
  • URLs
  • Passwords
  • API keys
  • Tokens
  • Private keys
  • Unlabelled ID-shaped codes

International

  • US SSN, NPI, DEA, MBI
  • UK NHS number, NINO
  • Canada SIN
  • Singapore NRIC
  • Australia TFN, ABN, Medicare
  • Spain DNI/NIE
  • Italy codice fiscale
  • France NIR
  • Germany Steuer-ID
  • Netherlands BSN
  • Poland PESEL
  • Sweden personnummer
  • Finland HETU
  • Brazil CPF, CNPJ
  • Mexico CURP, RFC
  • China resident ID
  • Japan My Number
  • South Korea RRN
  • UAE Emirates ID
  • Saudi national ID
  • South Africa ID
  • IBAN
  • And 22 more countries and territories

Bank branch codes (IFSC, MICR, SWIFT/BIC) are recognised and kept by default: they identify a bank, not a person.

Languages

LanguageNames, places, organisationsIdentifier numbers
English, HinglishYesYes
Hindi and Marathi (Devanagari)YesYes, digits in any script
Bengali, Gujarati, Punjabi, Tamil, Telugu, Kannada, MalayalamYesYes, digits in any script
German, Spanish, ItalianYes, measured close to EnglishYes, with their local labels
Other scripts (Odia, Assamese, Urdu and others)Reported as a gap, never passed as cleanYes

06 How data is changed

One of thirteen operations for each field or text span.

What the evidence records

OperationWhat it does
REDACTReplaces the value with its type, for example [PERSON_NAME]
MASKHides the value, or all but its last characters
SUPPRESSRemoves the value
TOKENIZE, HMACReplaces it with a keyed token; the same input gives the same token within the contract’s linking scope
PSEUDONYMIZE, REPLACEReplaces it with a substitute value
DATE_SHIFTMoves dates by a per-person offset, so the intervals between one person’s events are kept
DATE_GENERALIZEKeeps only the month or the year
GEOGRAPHY_GENERALIZEKeeps only a postal-code prefix (Indian PIN, US ZIP), or the state or country of an Indian place; anything finer is removed
SURROGATEReplaces it with a realistic value of the same kind and shape; identifiers are drawn from ranges their issuer never uses
GENERALIZE, BUCKETTurns exact numbers into bands (salary, marks, age)

Keys

Generated and kept on your machine, in the state folder, with separate keys for tokens, date shifts and fingerprints. They can be rotated (huereo keys rotate) or replaced with your own key (huereo keys import). Every run pins the key ids it used, so a later rotation never changes how an old release verifies.

Reversible tokens

Off unless the contract allows them and you enable the local vault on your own machine.

Bring one data share you need to send.

Run huereo on one of your own files on a one-hour call, or start a 30-day pilot on your server (₹9,900, credited in full to your plan). Or write to hello@supermerco.com.