After a mandatory pause tied to my new and demanding role as Vice Dean of Academic Affairs at the Faculty of Educational Technologies of my university, I am resuming work on my independent IT projects, which I hope to channel institutionally before the end of the year to monetize the knowledge embedded in them. Some ideas aim to foster a better understanding of the complex and exhaustive regime of economic sanctions that the United States applies to Cuba, and the solution I want to present to you here points in that direction.
Cuban exports to the United States
Except as specifically authorized by the Secretary of the Treasury (or any person, agency, or instrumentality designated by him) by means of regulations, rulings, instructions, licenses, or otherwise, no person subject to the jurisdiction of the United States may purchase, transport, import, or otherwise deal in or engage in any transaction with respect to any merchandise outside the United States if such merchandise:
(1) Is of Cuban origin; or
(2) Is or has been located in or transported from or through Cuba; or
(3) Is made or derived in whole or in part of any article which is the growth, produce or manufacture of Cuba.
This is the wording of subsection 515.204 —Importation of and dealings in certain merchandise— of the Cuban Assets Control Regulations, whose text has not changed since July 9, 1963. Only during the so-called thaw in bilateral tensions, in the final two years of Obama's second term, were there favorable and significant changes, at least in regulatory terms. For example, if we go by what the regulation says —which is not as rich as what is actually put into practice—, Washington has since then allowed the importation of Cuban-origin pharmaceutical products. Americans were once again able to import Cuban rum and tobacco —since Kennedy, if I read the history correctly—, although Trump later reactivated the blockade of this dynamic. But the part that interests me today is the approval, in January 2015, of the importation of goods and services of Cuban origin produced by the private sector. This is set out in subsection 515.582 of the CACR:
Persons subject to U.S. jurisdiction are authorized to engage in all transactions, including payments, necessary to import certain goods and services produced by independent private sector entrepreneurs, as defined in § 515.340. The list of goods and services eligible for importation under this section is located at https://www.state.gov/the-state-departments-section-515-582-list/.
That list restricts a group of goods distributed across several sections and chapters of the United States Harmonized Tariff Schedule. For example, no product of animal or vegetable origin may be exported under subsection 515.582. But my focus is what can indeed be exported to the United States without a specific OFAC license. This is highly relevant in the current national scenario, characterized by the implementation of a broad economic reform that has unlocked import and export activities. Until now, Cuban international trade necessarily went through the state channel. When the United States opened the door to private-sector exports, the Cuban government rejected the move and imposed that decision, for example, on independent coffee producers. Now there is room for that non-state sector to seek partners proactively interested in the products authorized for export to North America.
The app
Assisted by Deepseek for code generation, I created a tool in Python that helps independent Cuban entrepreneurs determine whether a product can be exported to the U.S. under subsection 515.582 of the CACR. My intention is for this to be an initial informational input that is later complemented by a specialized consulting service that includes participation in negotiation processes. The fundamental problem with opportunities to concretize business between Cuba and the United States is the reluctance on both shores to believe that those opportunities exist, that they are real and can be taken advantage of. Although the main barrier is raised in the United States, and has a lot to do with the rhetoric and the understandable fear of operating with the Island, even though a certain rule makes it explicit that there is no problem.
Tkinter
This is a standard Python graphical interface library that does not come included by default in my MX-Linux setup. It is not the most modern, but it is quite functional. The design of the app is super simple with three tabs:
Evaluate product — the user types a product and, optionally, the section and chapter of the Harmonized Tariff Schedule to evaluate its export applicability to the U.S. market.
Verified products — a broad, independently curated list, with a search function.
Official rules — the interpreted regulatory text, with highlighting.
Architecture
project/
├── data/
│ └── datos_515_582.json # sections, rules, products, alias
└── src/
├── generar_json.py # generates the JSON from Python lists
└── guia_cuba.py # the Tkinter app
The heart of the system is a function that decides whether a product is exportable. It works in three layers: first it looks for known blocked items, then verified ones, and finally applies the rules by section/chapter.
def evaluar_flujo(nombre, seccion, capitulo):
"""
Orden de decisión:
1) Producto bloqueado conocido -> ❌ (excepto café)
2) Producto verificado permitido -> ✅
3) Motor de reglas por sección/capítulo
"""
advertencias = []
# --- 1) Bloqueados conocidos ---
bloq = buscar_producto_bloqueado(nombre)
if bloq["encontrado"]:
sec_b, cap_b, desc_b = bloq["seccion"], bloq["capitulo"], bloq["descripcion"]
# Excepción café
if sec_b == "II" and str(cap_b).startswith("0901"):
return "exportable", "...", {...}, advertencias
# Advertencia por inconsistencia
if seccion and seccion != sec_b:
advertencias.append(
f"⚠ INCONSISTENCIA DETECTADA\n"
f" El producto '{desc_b}' pertenece a la sección {sec_b}.\n"
f" Tú seleccionaste la sección {seccion}.\n"
)
return "bloqueado", "...", None, advertencias
# --- 2) Verificados permitidos ---
busq = buscar_producto(nombre)
if busq["encontrado"]:
...
return "exportable", "...", busq, advertencias
# --- 3) Motor de reglas ---
estado, mensaje = evaluar_producto(nombre, seccion, capitulo)
return estado, mensaje, None, advertencias
I generate the JSON with the critical data that feeds the application from commented Python lists:
PRODUCTOS_BLOQUEADOS_VERIFICADOS = {
"miel": ("I", "0409", "Miel de abeja", "origen animal"),
"carne": ("I", "0201", "Carne", "origen animal"),
"pescado": ("I", "0302", "Pescado fresco", "origen animal"),
"azucar": ("IV", "1701", "Azúcar", "alimento preparado"),
"ron": ("IV", "2208", "Ron", "bebida"),
"tabaco": ("IV", "2402", "Tabaco", "tabaco"),
"fertilizante": ("VI", "31", "Fertilizante", "químico bloqueado"),
"automovil": ("XVII", "87", "Automóvil", "vehículo bloqueado"),
# ...
}
def generar_json():
datos = {
"productos_verificados": {...},
"productos_bloqueados_verificados": {...},
"reglas": REGLAS,
# ...
}
with open(RUTA_OUT, "w", encoding="utf-8") as f:
json.dump(datos, f, ensure_ascii=False, indent=2)
Result
The app responds in milliseconds:
miel→ ❌ NO EXPORTABLE (Sección I, cap. 0409).carne→ ❌ NO EXPORTABLE (Sección I, cap. 0201).perfume/perfumes→ ✅ EXPORTABLE (cap. 33).
Next steps
I am preparing a training course for Cuban private entrepreneurs interested in mastering, with precision, the possibilities they have for positioning their products in the U.S. market. This solution, which I will continue to refine and enhance, represents an important added value for that effort.