Generate Mexican Test Data
generate_test_dataGenerate structurally valid Mexican RFC, CURP, CLABE and NSS test data for fixtures, seeds and demos. Creates coherent people or companies without using real records.
Instructions
Generate structurally valid Mexican identifiers for fixtures, database seeds and demos — generated, not taken from any real record.
For a person each record carries a coherent set: the RFC and the CURP are derived from the same name, sex, birth date and state, the CLABE's bank code is a real Banxico participant, and the NSS satisfies its Luhn digit. For a company, a razón social with a matching persona-moral RFC and a CLABE.
Why generated instead of hand-written: an RFC or CURP typed by hand almost never satisfies its check digit, so it fails the first validation your own code runs, and a seed file full of 'AAAA010101AAA' teaches your tests nothing.
These pass validation but are nobody's on purpose. They are generated from common names, so a CURP or phone number can coincide with a real person's by chance; they are not looked up at the SAT, RENAPO, IMSS or Banxico — do not send them to the SAT's status service or to a PAC.
Args:
kind ('person' | 'company'): what to generate (default 'person').
count (integer 1-100): how many records (default 1).
response_format ('markdown' | 'json'): output format (default 'markdown').
Returns: { kind, count, people[{nombre, apellido_paterno, apellido_materno, sexo, fecha_nacimiento, entidad, entidad_nombre, rfc, curp, clabe, banco, nss, codigo_postal, telefono, email}], companies[{razon_social, rfc, clabe, banco, codigo_postal, fecha_constitucion}], findings[] }.
Example: "Give me 5 fake Mexican customers with valid RFC and CURP" -> generate_test_data(kind="person", count=5).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 'person' for individuals (RFC + CURP + CLABE + NSS), 'company' for personas morales. | person |
| count | No | How many records to generate, 1-100. | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| count | Yes | ||
| people | Yes | ||
| findings | Yes | ||
| companies | Yes |