This commit is contained in:
pablo 2025-08-13 17:40:21 +02:00
parent 0e7af36270
commit 9607c41b54
No known key found for this signature in database
GPG key ID: E074F7643C9F9CC7
3 changed files with 244 additions and 0 deletions

94
log.md
View file

@ -1,5 +1,99 @@
# Log # Log
## 2025-08-13
### Meeting with Luis
- We sit down to discuss UIF:
- Report docs: (https://drive.google.com/drive/folders/17dhJdF5cUDT50g4-FhAEaonqatH8SMzR)
- Law: https://drive.google.com/file/d/1gQ8F96C_kmJe7oLvXxML7CODjPE32zun/view
- Open topics
- Does the documentation in these files cover 100% of what we need to do, UIF wise? Or should we add anything in there?
- Are these docs up to date?
- What does "having" these reports mean? Is file generation good enough for an audit? Do we need to worry about integrating with UIF systems earlier than launch?
- Are there any XSD validation files somewhere, like the ones from the Central de Riesgos?
- No.
- We should build it.
- Confirm that the Excel templates and the PDF forms are just illutrative and not really relevant for our case
- Propose that I build an inventory of what needs to be built and how it could be reviewed before going crazy with implementing, and that we all agree on it (including Luis)
- best way to communicate
Also generate in Excel so they can be reviewed by Marcos
we are missing transfer365 report details, do we care
reportes de efectivo -> we don't need to do since we don't do cash
otros medios -> cheques, debitos, etc
otros medios electronicos is the only applicable
we need to clarify tipo de producto
Oficial Cumplimiento -> Marco (quien es Marco?)
- actividad economica -> uses a different catalogue than the one used for KYC, we need to develop a mapping
you usually need to report the teller's identity. In our case, we can add a generic "banca electronica" identity. Unless it's a "manual", accounting driven (not UI driven) operation, in which case we would need the "oficial del banco" identity. We will need to add a field for usernames, since we right now only have email.
Do we need to create the human readable forms?
Should we check absolutely any transaction above the thresholds
Reporting suerly applies to the current account transactions, but not to the collateral account. We should confirm with Marcos. Perhaps on liquidation?
#### Clean notes after meeting
- On which reports we need to do:
- We have confirmed with Luis that we need to generate the 5 reports here (https://github.com/GaloyMoney/knowledge-base/pull/14/files).
- Yet it seems only `07 UIF Método Reporte Diario de Otros Medios Electrónicos.pdf` applies to us given that all of our operations are digital.
- `03 UIF Método Reporte Diario de Efectivo` and `04 UIF Método Reporte Mensual de Efectivo` only apply to physical cash transactions, so they don't apply to Volcano since it doesn't handle cash.
- `05 UIF Método Reporte Diario de Otros Medios` and `06 UIF Método Reporte Mensual de Otros Medios` apply to other bank methods such as checks.
- He also mentioned that there is a sixth report, not listed there, related to the transfer365 payment rail. He doesn't have details on that report at the moment, but thinks it doesn't apply to us since we don't do transfer365 transactions.
- On how we need to deliver it:
- The end stage in production is to integrate with the UIF systems via XML delivery, but this will only happen when we're actually launching.
- For the current stage and to satisfy the audit, we will simply produce files.
- Technically, we need to produce XML files as described by the UIF documentation. But we will also produce CSV-structured exports that are easy to consume by humans so that auditors and regulators can easily check the info (this has been explicitly recommended by Luis).
- On validation:
- We are not aware of the existence of any `xsd` files that we can use to validate the XML files that we must deliver to the UIF. I would propose building them ourselves according to their spec so we have something to validate against.
- On the applicability to collateral accounts:
- Luis considers that the transactions on the collateral account don't need to be reported, since they are not really change of ownership but rather just the delivery of a collateral. He equates it to how setting a house as collateral for a mortgage doesn't trigger any reporting to the UIF.
- On identifiying parties:
- When reporting a transaction, the details of everyone involved must be reported. This means that if a Volcano client receives a bank transfer of some third party to his USD account, we would need to have the personal details of that third party.
- Given that we don't currently have any way to collect that, we need to either:
- Expand `lana-bank` features to be able to do that.
- Or simply have the convention that customers can only send/receive USD from other accounts under their name.
- On identifying tellers:
- The reports expect us to inform who in the bank handles the transaction.
- Given that our operations are driven by a digital app, Luis suggests that we simply use some "Electronic Banking" generic identity, since generally there is no human at the wheel.
- But if we make transactions manually, for instance by having a Volcano employee do a transfer between different customer accounts in the bank manually via accounting, then we would be expected to inform the identity of the particular employee who did that.
- On the professional activity mapping:
- The UIF has a different taxonomy for customer profession that the one used in KYC. This needs to be added to the customer data in the transaction reports.
- We need a mapping between the KYC taxonomy and the UIF one so we can translate that in our reports and send the UIF the codes they expect. Either Luis gets it from somewhere or we painfully build it ourselves.
Open actions:
- Confirm to a 100% that we only need to do report `07 UIF Método Reporte Diario de Otros Medios Electrónicos.pdf`.
- Confirm if other reports need to simply be delivered empty, or not at all.
- Discuss with the team if we're comfortable with restricting USD transactioning with other accounts to accounts under the name of the same customer.
- Clarify where do we get the profession code mapping between KYC codes and UIF codes.
- Build the reports.
## 2025-08-08
### Feedback with Justin
Stuff I'm enjoying:
- Great engineering practices and culture
- First row seat on Bitcoin adoption
- International team
Stuff that feels sour:
- Confusion with urgency but not rushing?
- Timezones are a challenge
- For now I've been cautiously backing off, but I'll probably become a bit more noisy
- I would love to interact directly with the client when it makes sense
## 2025-07-30 ## 2025-07-30

27
open-data-arch-topics.md Normal file
View file

@ -0,0 +1,27 @@
- Supported SQL Engine
- One or more?
- If one, which? Postgres? Snowflake? BQ?
- App to DW EL
- Push all tables by default? Or craft them?
- Activate incremental loading for all tables?
- Include some kind of data contract/test to detect breaking changes? In prod? In CI? In both?
- Current lack of visibility on state of the sync
- dbt project
- conventions
- code style
- stricter definitions on things allowed/forbidden in each layer
- add docs in staging and output?
- translations only happen in output?
- usage of exposures
- testing
- unit testing for logic models?
- how thorough should be testing that a report "is valid"?
- do we need a richer sim-bootstrap?
- e2e testing for reports along with app?
- file transformation service
- how much more mature/flexible/robust do we need this to be?
- how thorough should testing be here since it's mostly glue?
- are we happy with just incrementally growing this python script? should we switch to a different approach already?

View file

@ -0,0 +1,123 @@
Current issues
- [ ] Coupled to Airflow
- [ ] Can only use env vars to set where to read/point to, no other config
- [ ] Infer what reports to generate and their format from crappy name parsing instead of proper declarative definition
- [ ] Lots of hardcodes
- [ ] Validation not in place
List of reports that are currenlty being filed:
[
"report_nrp_41_01_persona",
"report_nrp_41_02_referencia",
"report_nrp_41_03_referencia_garantia",
"report_nrp_41_04_garantia_hipotecaria",
"report_nrp_41_05_garantia_fiduciaria",
"report_nrp_41_06_garantia_aval",
"report_nrp_41_07_garantia_pignorada",
"report_nrp_41_08_garantia_prenda",
"report_nrp_41_09_garantia_bono",
"report_nrp_41_10_garantia_poliza",
"report_nrp_41_11_garantia_fondo",
"report_nrp_41_12_referencia_gasto",
"report_nrp_41_13_referencia_unidad",
"report_nrp_41_14_referencia_cancelada",
"report_nrp_41_15_socios_sociedades",
"report_nrp_41_16_junta_directiva",
"report_nrp_41_17_garantia_prendaria",
"report_nrp_51_01_saldo_cuenta",
"report_nrp_51_02_deposito_extranjero",
"report_nrp_51_03_dato_extracontable",
"report_nrp_51_04_titulo_valor_extranjero",
"report_nrp_51_05_prestamo_garantizado",
"report_nrp_51_06_aval_garantizado",
"report_nrp_51_07_deuda_subordinada",
"report_nrp_51_08_balance_proyectado",
"report_nrsf_03_01_cliente",
"report_nrsf_03_02_depósitos",
"report_nrsf_03_03_documentos_clientes",
"report_nrsf_03_04_titulares",
"report_nrsf_03_05_agencias",
"report_nrsf_03_06_productos",
"report_nrsf_03_07_funcionarios_y_empleados",
"report_nrsf_03_08_resumen_de_depósitos_garantizados",
"report_nrsf_03_09_ajustes",
]
||||||| Print summary hash
find report_files/ -type f -print0 | sort -z | xargs -0 sha256sum | sha256sum | awk '{print $1}'
||||||| Print individual name and hash
find report_files/ -type f -print0 | sort -z | xargs -0 sha256sum
||||||| hash before starting to fuck around with declarative approach:
67b9a95ef945b8b194bdf01ecae2f82fe040c1af583c3a30766bac0b7c2b2c3b
and individual ones
9883dd64373c7dba4812aaca2075b7e90c4a8774724bcc3e70086926bc946499 report_files/reports/dev/nrp_41/garantia_aval.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_aval.xml
9adb935ca335dcab64bed8c6d6f661f3b8081cfb2484e323f4995d5f24647708 report_files/reports/dev/nrp_41/garantia_bono.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_bono.xml
db68a6bc8f083287d1a7f19555b6b9ed5514c6070e9f0b65869232cada3b1f09 report_files/reports/dev/nrp_41/garantia_fiduciaria.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_fiduciaria.xml
e3219507569666f7b461c9c643556501081b275ef67062bb850583a2eb98c2ff report_files/reports/dev/nrp_41/garantia_fondo.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_fondo.xml
2e03bef6b5dda570d918e1124d8f7b0bde39dd9af191982a9a3f8bd0688c451c report_files/reports/dev/nrp_41/garantia_hipotecaria.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_hipotecaria.xml
4e5f0ff464abeae63cca4b7b9b464a54c35f0ff77a526ca347fb98304c7beea3 report_files/reports/dev/nrp_41/garantia_pignorada.csv
f33a8e7c5ca652432c10c794b57faf8692dc9cf604aab602b644292d3702fd2d report_files/reports/dev/nrp_41/garantia_pignorada.xml
064728714c01e84cf92967a03061dc659fb5a4080de4a15959c8659e5e79c4c2 report_files/reports/dev/nrp_41/garantia_poliza.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_poliza.xml
59c37b77da9754b4c05bf9d15b60f459b75c9a53a3ecf83df3260ec8c5cfb696 report_files/reports/dev/nrp_41/garantia_prenda.csv
2e03bef6b5dda570d918e1124d8f7b0bde39dd9af191982a9a3f8bd0688c451c report_files/reports/dev/nrp_41/garantia_prendaria.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_prendaria.xml
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/garantia_prenda.xml
9461e97b72d8c69fea39a9d4b18dbe97ff482d4a186c8370a08bcc4b94a4e772 report_files/reports/dev/nrp_41/junta_directiva.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/junta_directiva.xml
446520a75f7125eefbe1d7f251f2dab2640772aec04340af7feb4d88f4fba866 report_files/reports/dev/nrp_41/referencia_cancelada.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/referencia_cancelada.xml
a36c439dd3af4639c4ccc61933b7287e5b681303632df1309eb21932750256c9 report_files/reports/dev/nrp_41/referencia.csv
420d5e09dfa6cb1948cf74b613acfb98dcfa13d8c2b1233267842fe8e679ae31 report_files/reports/dev/nrp_41/referencia_garantia.csv
9306d4aa86a21793da257e93040a5fe4c5728f2a11dd926919d1f153ec89b62b report_files/reports/dev/nrp_41/referencia_garantia.xml
79af4ab08a8ad9dcb9887b6f51fba385e9b5a01c5a115ee263d637bfc93dec3f report_files/reports/dev/nrp_41/referencia_gasto.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/referencia_gasto.xml
087bc1df7473d208ebe4d5435ae1de6d69a58d76c7fbea3932d18b15421ccd48 report_files/reports/dev/nrp_41/referencia_unidad.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/referencia_unidad.xml
005a8425ecc4c0b4e9e57e5def1268f80b143373a63c15fa964a9ace69264614 report_files/reports/dev/nrp_41/referencia.xml
6ff88a8e5271e0c61431b060897ee9b81079a87d007c601f973eca1284b7d585 report_files/reports/dev/nrp_41/socios_sociedades.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_41/socios_sociedades.xml
bff301f0df802d4e3ef865b21fce80af90f3d26fa5495c2a443960b28da2cffa report_files/reports/dev/nrp_51/aval_garantizado.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_51/aval_garantizado.xml
130721155258d34b7027c3a12d7b4c2ea0243caaa8a1426fa6d6f12d54f0323d report_files/reports/dev/nrp_51/balance_proyectado.csv
1155f9b04752707180c396f7f6862a8d2010658f662d512bbdb2476a51e44b92 report_files/reports/dev/nrp_51/balance_proyectado.xml
228e5425d25f67303fdd63bb0cfc798dcbca1446dc01c72ccf7c1144c2e5cf7f report_files/reports/dev/nrp_51/dato_extracontable.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_51/dato_extracontable.xml
e20faeaad13cfb88a9d11ac5ac72ef3b917e121bec0dd29d397f472acfd65a12 report_files/reports/dev/nrp_51/deposito_extranjero.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_51/deposito_extranjero.xml
f0bba23a129f8b62de86b8010e09af5e1ea5bbe76e1e958bcd38e035b54aa74e report_files/reports/dev/nrp_51/deuda_subordinada.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_51/deuda_subordinada.xml
d8bd2753cf6e306499040266f96c3e1af9b8c9be34a03d53e2a2424a7f7245b8 report_files/reports/dev/nrp_51/prestamo_garantizado.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_51/prestamo_garantizado.xml
7fdd162497baa61decbd2f9637db3769521479b0092efe4ed457d95fd944a36c report_files/reports/dev/nrp_51/saldo_cuenta.csv
24148e2cfa3cea6fc3799f721a413f4d8351aceb5f18215912b0f5a4129ad1d6 report_files/reports/dev/nrp_51/saldo_cuenta.xml
d79f6ff228cbdc75504544e0a3a4e17e6c84d36f76c795eca86214558a82d2e7 report_files/reports/dev/nrp_51/titulo_valor_extranjero.csv
179ff63cd6f143ca832710180a9b8f0dc27b7c46ffb117c5e3fd775de41b0f85 report_files/reports/dev/nrp_51/titulo_valor_extranjero.xml
5c8ba503ccf2cae1439f4e14512c636eb3371ba268fc978a922df8f6eda69b10 report_files/reports/dev/nrsf_03/ajustes.csv
a51ee5cdea1a34278e7b325a4daf274ae83ecff3b7d5b50094461bbf3b914660 report_files/reports/dev/nrsf_03/ajustes.txt
625924bfe6b5a886e9ae877a0596682e3aa7614c1e78bc1db0c8a86edc8d9f1e report_files/reports/dev/nrsf_03/productos.csv
ff44a4dabc6beabd4572a115997b0231c26a57995aaedd229b7f967e092b5e10 report_files/reports/dev/nrsf_03/productos.txt
ada8a8651b8ce7294e553102761cc9772883d44d8ed23c27b67a624134622f3a report_files/reports/dev/nrsf_03/titulares.csv
7c6483c48fa0e963609575682537418db0e79920a37f4851dc07ff940f3e4abe report_files/reports/dev/nrsf_03/titulares.txt
f6db153d045af9637883ab12d97efdb7b4d678b98257259f8d560f86d7875132