-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsample_report.html
More file actions
182 lines (182 loc) · 20 KB
/
Copy pathsample_report.html
File metadata and controls
182 lines (182 loc) · 20 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Business Intelligence Report — Sample</title>
<style>
:root {
--bg: #ffffff;
--bg-subtle: #fafafa;
--bg-card: #ffffff;
--bg-card-emphasis: #f4f6f8;
--border: #e5e7eb;
--text: #111827;
--text-secondary: #4b5563;
--text-muted: #6b7280;
--accent: #1e40af;
--accent-soft: #eff6ff;
--positive: #047857;
--negative: #b91c1c;
--font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
background: var(--bg);
color: var(--text);
font-family: var(--font);
font-size: 15px;
line-height: 1.55;
padding: 56px 24px;
}
.container { max-width: 1100px; margin: 0 auto; }
header { margin-bottom: 56px; padding-bottom: 28px; border-bottom: 1px solid var(--border); }
h1 { font-size: 32px; font-weight: 600; margin: 4px 0 6px; letter-spacing: -0.01em; }
.subtitle { color: var(--text-secondary); font-size: 14px; }
.mode-badge {
display: inline-block; background: var(--accent-soft); color: var(--accent);
font-size: 11px; font-weight: 600; letter-spacing: 0.08em;
padding: 3px 9px; border-radius: 4px; margin-left: 8px;
vertical-align: middle; text-transform: uppercase;
}
.hero-grid {
display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 28px;
}
.hero {
background: var(--bg-card); border: 1px solid var(--border);
border-radius: 6px; padding: 18px;
}
.hero-num { font-size: 26px; font-weight: 600; color: var(--text); }
.hero-lbl { color: var(--text-muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; margin-top: 4px; }
.hero-trend { font-size: 12px; margin-top: 8px; color: var(--text-secondary); }
section.category { margin: 56px 0 24px; }
section.category h2 {
font-size: 12px; font-weight: 600; text-transform: uppercase;
letter-spacing: 0.12em; color: var(--text-secondary); margin-bottom: 20px;
border-top: 1px solid var(--border); padding-top: 24px;
}
.analysis { background: var(--bg-card); border: 1px solid var(--border); border-radius: 6px; padding: 24px; margin-bottom: 14px; }
.analysis h3 { font-size: 18px; font-weight: 600; margin-bottom: 14px; color: var(--text); }
.analysis h3 .num { color: var(--text-muted); margin-right: 8px; font-weight: 400; }
.kpi-row { color: var(--text-secondary); font-size: 14px; margin-bottom: 10px; }
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin: 14px 0; }
.stat { background: var(--bg-card-emphasis); border: 1px solid var(--border); border-radius: 4px; padding: 12px; }
.stat-num { font-size: 20px; font-weight: 600; color: var(--text); }
.stat-lbl { color: var(--text-muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; margin-top: 4px; }
table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 14px; }
th, td { text-align: left; padding: 9px 12px; border-bottom: 1px solid var(--border); }
th { color: var(--text-muted); font-weight: 500; text-transform: uppercase; font-size: 11px; letter-spacing: 0.08em; }
td b { color: var(--text); font-weight: 600; }
.insight {
background: var(--bg-card-emphasis); border-left: 3px solid var(--accent);
padding: 12px 16px; margin-top: 14px; color: var(--text); font-size: 14px; line-height: 1.55;
}
footer { text-align: center; color: var(--text-muted); font-size: 12px; padding: 36px 0 0; border-top: 1px solid var(--border); margin-top: 56px; }
footer a { color: var(--text-secondary); text-decoration: none; }
footer a:hover { color: var(--accent); text-decoration: underline; }
</style>
</head>
<body>
<div class="container">
<header>
<h1>Business Intelligence Report <span class="mode-badge">LITE</span></h1>
<p class="subtitle">Tienda sintética · 2025-05-17 → 2026-05-03 · Plataforma: tiendanube</p>
<div class="hero-grid">
<div class="hero"><div class="hero-num">$2.646.813</div>
<div class="hero-lbl">Revenue</div>
<div class="hero-trend"><span style="color:var(--negative);font-weight:600;">↓ 33.0%</span> vs 3M anteriores</div></div>
<div class="hero"><div class="hero-num">80</div>
<div class="hero-lbl">Órdenes</div>
<div class="hero-trend"><span style="color:var(--negative);font-weight:600;">↓ 16.7%</span> vs 3M anteriores</div></div>
<div class="hero"><div class="hero-num">22</div>
<div class="hero-lbl">Clientes únicos</div>
<div class="hero-trend"><span style="color:var(--negative);font-weight:600;">↓ 15.4%</span> vs 3M anteriores</div></div>
<div class="hero"><div class="hero-num">$33.085</div>
<div class="hero-lbl">Ticket promedio</div>
<div class="hero-trend"><span style="color:var(--negative);font-weight:600;">↓ 19.6%</span> vs 3M anteriores</div></div>
</div>
</header>
<section class="category"><h2>Producto</h2><div class="analysis"><h3><span class="num">#1</span>Market Basket Analysis</h3>
<p class="kpi-row">
<span><b>35</b> órdenes multi-producto (43.8% del total)</span>
</p>
<table>
<thead><tr><th>Combo</th><th>Veces</th><th>Support</th><th>Confidence</th><th>Lift</th></tr></thead>
<tbody><tr><td>Short Surf Verde + Sticker Pack</td><td>1</td><td>1.2%</td><td>25.0%</td><td><b>5.00×</b></td></tr><tr><td>Gorra Trucker Beige + Sticker Pack</td><td>1</td><td>1.2%</td><td>25.0%</td><td><b>4.00×</b></td></tr><tr><td>Gorra Trucker Negra + Remera Básica Blanca</td><td>2</td><td>2.5%</td><td>40.0%</td><td><b>3.20×</b></td></tr><tr><td>Gorra Trucker Negra + Riñonera Crossbody Negra</td><td>2</td><td>2.5%</td><td>40.0%</td><td><b>3.20×</b></td></tr><tr><td>Medias Logo + Short Surf Negro</td><td>2</td><td>2.5%</td><td>28.6%</td><td><b>2.54×</b></td></tr><tr><td>Buzo Oversize Gris + Pantalón Jogger Gris</td><td>3</td><td>3.8%</td><td>50.0%</td><td><b>2.35×</b></td></tr><tr><td>Gorra Trucker Beige + Short Surf Negro</td><td>1</td><td>1.2%</td><td>20.0%</td><td><b>2.29×</b></td></tr><tr><td>Camisa Lino Blanca + Pantalón Jogger Gris</td><td>2</td><td>2.5%</td><td>33.3%</td><td><b>2.22×</b></td></tr><tr><td>Medias Logo + Short Surf Verde</td><td>1</td><td>1.2%</td><td>25.0%</td><td><b>2.22×</b></td></tr><tr><td>Riñonera Crossbody Negra + Sticker Pack</td><td>1</td><td>1.2%</td><td>25.0%</td><td><b>2.00×</b></td></tr></tbody>
</table>
<p class="insight">Bundles con lift > 2 son candidatos naturales a packs o cross-sell en PDP.</p>
</div><div class="analysis"><h3><span class="num">#2</span>Afinidad entre categorías</h3><p class="kpi-row">Error al renderizar: 'items'</p></div><div class="analysis"><h3><span class="num">#3</span>Ranking de productos</h3><table>
<thead><tr><th>Producto</th><th>Revenue</th><th>Unidades</th><th>Precio prom.</th><th>Tendencia</th></tr></thead>
<tbody><tr><td>Campera Puffer Negra - M</td><td>$405.000</td><td>9</td><td>$45.000</td><td><span style="color:var(--negative);font-weight:600;">↓ 50.0%</span></td></tr><tr><td>Buzo Oversize Gris - M</td><td>$198.000</td><td>9</td><td>$22.000</td><td><span style="color:var(--positive);font-weight:600;">↑ 100.0%</span></td></tr><tr><td>Pantalón Jogger Negro - M</td><td>$185.000</td><td>10</td><td>$18.500</td><td><span style="color:var(--negative);font-weight:600;">↓ 20.0%</span></td></tr><tr><td>Buzo Oversize Gris - L</td><td>$176.000</td><td>8</td><td>$22.000</td><td><span style="color:var(--negative);font-weight:600;">↓ 50.0%</span></td></tr><tr><td>Buzo Oversize Negro - M</td><td>$176.000</td><td>8</td><td>$22.000</td><td><span style="color:var(--negative);font-weight:600;">↓ 50.0%</span></td></tr><tr><td>Camisa Lino Blanca - M</td><td>$175.500</td><td>9</td><td>$19.500</td><td><span style="color:var(--negative);font-weight:600;">↓ 75.0%</span></td></tr><tr><td>Riñonera Crossbody Negra</td><td>$150.000</td><td>12</td><td>$12.500</td><td><span style="color:var(--positive);font-weight:600;">↑ 200.0%</span></td></tr><tr><td>Camisa Lino Blanca - L</td><td>$136.500</td><td>7</td><td>$19.500</td><td><span style="color:var(--negative);font-weight:600;">↓ 100.0%</span></td></tr><tr><td>Short Surf Negro - M</td><td>$130.500</td><td>9</td><td>$14.500</td><td><span style="color:var(--positive);font-weight:600;">↑ 200.0%</span></td></tr><tr><td>Pantalón Jogger Negro - L</td><td>$111.000</td><td>6</td><td>$18.500</td><td><span style="color:var(--negative);font-weight:600;">↓ 100.0%</span></td></tr></tbody>
</table>
<p class="insight">Detectar héroes (top revenue) y estrellas emergentes (top tendencia) — push diferenciado.</p></div><div class="analysis"><h3><span class="num">#4</span>Productos ancla</h3><table>
<thead><tr><th>Producto ancla</th><th>Apariciones en multi-orden</th><th>Mejor co-compra</th></tr></thead>
<tbody><tr><td colspan="3">Datos insuficientes</td></tr></tbody>
</table>
<p class="insight">Productos ancla son drivers de cross-sell — exhibirlos primero acelera el AOV.</p></div><div class="analysis"><h3><span class="num">#5</span>Long tail 80/20</h3><div class="stat-grid">
<div class="stat"><div class="stat-num">11</div><div class="stat-lbl">SKUs hacen el 80% del revenue</div></div>
<div class="stat"><div class="stat-num">55.0%</div><div class="stat-lbl">del catálogo</div></div>
<div class="stat"><div class="stat-num">20</div><div class="stat-lbl">SKUs totales</div></div>
</div>
<p class="insight">Concentración Pareto. Si pocos SKUs hacen casi todo el revenue, revisar inversión de stock en el long tail.</p></div><div class="analysis"><h3><span class="num">#6</span>Productos con alta tasa de cancelación</h3><p>Tasa global de cancelación: <b>7.0%</b></p>
<table>
<thead><tr><th>Producto</th><th>Órdenes</th><th>Tasa cancel.</th><th>vs media</th></tr></thead>
<tbody><tr><td>Remera Básica Negra - L</td><td>8</td><td>0.2%</td><td><span style="color:var(--negative);font-weight:600;">↓ 6.8%</span></td></tr><tr><td>Gorra Trucker Negra</td><td>5</td><td>0.2%</td><td><span style="color:var(--negative);font-weight:600;">↓ 6.8%</span></td></tr><tr><td>Pantalón Jogger Negro - L</td><td>5</td><td>0.2%</td><td><span style="color:var(--negative);font-weight:600;">↓ 6.8%</span></td></tr><tr><td>Buzo Oversize Negro - M</td><td>7</td><td>0.1%</td><td><span style="color:var(--negative);font-weight:600;">↓ 6.9%</span></td></tr><tr><td>Pantalón Jogger Negro - M</td><td>7</td><td>0.1%</td><td><span style="color:var(--negative);font-weight:600;">↓ 6.9%</span></td></tr></tbody>
</table></div></section><section class="category"><h2>Cliente</h2><div class="analysis"><h3><span class="num">#7</span>Segmentación RFM</h3><p>Total clientes segmentados: <b>22</b></p>
<table>
<thead><tr><th>Segmento</th><th>Clientes</th><th>%</th><th>Revenue prom.</th></tr></thead>
<tbody><tr><td>Loyal</td><td>6</td><td>27.3%</td><td>$146.721</td></tr><tr><td>Hibernating</td><td>5</td><td>22.7%</td><td>$33.462</td></tr><tr><td>Champions</td><td>4</td><td>18.2%</td><td>$240.228</td></tr><tr><td>About to Sleep</td><td>2</td><td>9.1%</td><td>$41.395</td></tr><tr><td>Potential Loyal</td><td>2</td><td>9.1%</td><td>$45.044</td></tr><tr><td>At Risk</td><td>1</td><td>4.5%</td><td>$267.651</td></tr><tr><td>Need Attention</td><td>1</td><td>4.5%</td><td>$140.899</td></tr><tr><td>Other</td><td>1</td><td>4.5%</td><td>$56.841</td></tr></tbody>
</table>
<p class="insight">Champions y Loyal sostienen el negocio. At Risk y About to Sleep son ventana de reactivación.</p></div><div class="analysis"><h3><span class="num">#8</span>Customer Lifetime Value</h3><div class="stat-grid">
<div class="stat"><div class="stat-num">$562.043</div><div class="stat-lbl">CLV promedio (3 años)</div></div>
<div class="stat"><div class="stat-num">$502.456</div><div class="stat-lbl">CLV mediano</div></div>
<div class="stat"><div class="stat-num">3.6</div><div class="stat-lbl">Órdenes prom. por cliente</div></div>
</div>
<p class="insight">El gap entre promedio y mediana indica concentración. Top 10% suele 3-5× la mediana.</p></div><div class="analysis"><h3><span class="num">#9</span>Análisis de cohortes</h3><p class="kpi-row">Error al renderizar: unsupported format string passed to dict.__format__</p></div><div class="analysis"><h3><span class="num">#10</span>Tasa de recompra</h3><div class="stat-grid">
<div class="stat"><div class="stat-num">81.8%</div><div class="stat-lbl">Tasa de recompra</div></div>
<div class="stat"><div class="stat-num">—</div><div class="stat-lbl">Días entre compras (mediana)</div></div>
<div class="stat"><div class="stat-num">18</div><div class="stat-lbl">Clientes recurrentes</div></div>
</div>
<p class="insight">Si la mediana entre compras > 90 días, las automations de retención no se están disparando bien.</p></div><div class="analysis"><h3><span class="num">#39</span>Producto gateway de retención</h3><p class="kpi-row">Baseline global de recompra: <b>81.8%</b> · Muestra mínima por producto: 3 clientes · Productos calificados: 7</p>
<table>
<thead><tr><th>Producto</th><th>Clientes 1ra compra</th><th>Volvieron</th><th>Tasa retención</th><th>Lift vs baseline</th></tr></thead>
<tbody><tr><td>Buzo Oversize Gris - L</td><td>4</td><td>4</td><td><b>100.0%</b></td><td>1.22×</td></tr><tr><td>Buzo Oversize Gris - M</td><td>3</td><td>3</td><td><b>100.0%</b></td><td>1.22×</td></tr><tr><td>Campera Puffer Negra - M</td><td>3</td><td>3</td><td><b>100.0%</b></td><td>1.22×</td></tr><tr><td>Pantalón Jogger Gris - M</td><td>3</td><td>3</td><td><b>100.0%</b></td><td>1.22×</td></tr><tr><td>Pantalón Jogger Negro - L</td><td>3</td><td>3</td><td><b>100.0%</b></td><td>1.22×</td></tr><tr><td>Short Surf Negro - M</td><td>3</td><td>3</td><td><b>100.0%</b></td><td>1.22×</td></tr><tr><td>Remera Básica Blanca - L</td><td>3</td><td>2</td><td><b>66.7%</b></td><td>0.82×</td></tr></tbody>
</table>
<p class="insight">Mejor gateway: <b>Buzo Oversize Gris - L</b> — 100.0% de retención vs 81.8% global (lift 1.22×). Empujar los productos con lift > 1.3 en pauta de adquisición rinde más que el best-seller absoluto: capturan clientes que vuelven, no solo ventas one-shot.</p></div></section><section class="category"><h2>Revenue</h2><div class="analysis"><h3><span class="num">#11</span>Evolución revenue mensual</h3><p class="kpi-row">Error al renderizar: 'month'</p></div><div class="analysis"><h3><span class="num">#12</span>Ticket promedio</h3><div class="stat-grid">
<div class="stat"><div class="stat-num">$33.085</div><div class="stat-lbl">AOV global</div></div>
<div class="stat"><div class="stat-num">$26.390</div><div class="stat-lbl">AOV mediano</div></div>
</div>
<p class="insight">Si AOV mediano << AOV promedio hay órdenes outlier que distorsionan: limpiar antes de tomar decisiones de pricing.</p></div><div class="analysis"><h3><span class="num">#13</span>Revenue por categoría</h3><table>
<thead><tr><th>Categoría</th><th>Revenue</th><th>% Mix</th><th>Unidades</th></tr></thead>
<tbody><tr><td>Campera Puffer Negra</td><td>$405.000</td><td>17.4%</td><td>9</td></tr><tr><td>Buzo Oversize Gris</td><td>$374.000</td><td>16.0%</td><td>17</td></tr><tr><td>Camisa Lino Blanca</td><td>$312.000</td><td>13.4%</td><td>16</td></tr><tr><td>Pantalón Jogger Negro</td><td>$296.000</td><td>12.7%</td><td>16</td></tr><tr><td>Buzo Oversize Negro</td><td>$176.000</td><td>7.6%</td><td>8</td></tr><tr><td>Riñonera</td><td>$150.000</td><td>6.4%</td><td>12</td></tr><tr><td>Short Surf Negro</td><td>$130.500</td><td>5.6%</td><td>9</td></tr><tr><td>Pantalón Jogger Gris</td><td>$111.000</td><td>4.8%</td><td>6</td></tr><tr><td>Remera Básica Blanca</td><td>$102.000</td><td>4.4%</td><td>12</td></tr><tr><td>Remera Básica Negra</td><td>$93.500</td><td>4.0%</td><td>11</td></tr></tbody>
</table></div><div class="analysis"><h3><span class="num">#14</span>Impacto de descuentos</h3><div class="stat-grid">
<div class="stat"><div class="stat-num">0.0%</div><div class="stat-lbl">Órdenes con descuento</div></div>
<div class="stat"><div class="stat-num">$0</div><div class="stat-lbl">AOV con cupón</div></div>
<div class="stat"><div class="stat-num">$0</div><div class="stat-lbl">AOV sin cupón</div></div>
</div>
<p class="insight">Si AOV con cupón < AOV sin cupón, el descuento canibaliza margen sin aumentar valor.</p></div></section><section class="category"><h2>Geográfico</h2><div class="analysis"><h3><span class="num">#15</span>Heatmap por provincia</h3><table>
<thead><tr><th>Provincia</th><th>Revenue</th><th>Órdenes</th><th>AOV</th></tr></thead>
<tbody><tr><td>Buenos Aires</td><td>$839.387</td><td>30</td><td>$27.980</td></tr><tr><td>Tucumán</td><td>$329.557</td><td>6</td><td>$54.926</td></tr><tr><td>Santa Fe</td><td>$313.003</td><td>7</td><td>$44.715</td></tr><tr><td>Córdoba</td><td>$287.590</td><td>9</td><td>$31.954</td></tr><tr><td>Neuquén</td><td>$271.408</td><td>7</td><td>$38.773</td></tr><tr><td>Misiones</td><td>$128.820</td><td>4</td><td>$32.205</td></tr><tr><td>Mendoza</td><td>$126.150</td><td>4</td><td>$31.538</td></tr><tr><td>San Juan</td><td>$105.256</td><td>2</td><td>$52.628</td></tr><tr><td>Chubut</td><td>$82.983</td><td>4</td><td>$20.746</td></tr><tr><td>Entre Ríos</td><td>$79.913</td><td>3</td><td>$26.638</td></tr><tr><td>Río Negro</td><td>$42.143</td><td>2</td><td>$21.072</td></tr><tr><td>Salta</td><td>$40.603</td><td>2</td><td>$20.301</td></tr></tbody>
</table>
<p class="insight">Top provincias absorben pauta. Provincias con AOV alto y volumen bajo son targets a escalar.</p></div><div class="analysis"><h3><span class="num">#16</span>Costo de envío vs conversión</h3><p>Costo medio de envío: <b>$4.449</b></p>
<p>% órdenes con envío gratis: <b>13.8%</b></p>
<p class="insight">Costos de envío altos por provincia explican abandono geográfico.</p></div></section><section class="category"><h2>Operativo</h2><div class="analysis"><h3><span class="num">#17</span>Tasa de cancelación</h3><p class="kpi-row">Error al renderizar: 'pct'</p></div><div class="analysis"><h3><span class="num">#18</span>Mix de medios de pago</h3><p class="kpi-row">Error al renderizar: 'method'</p></div></section><section class="category"><h2>Estratégico</h2><div class="analysis"><h3><span class="num">#19</span>Oportunidades de bundling</h3><table>
<thead><tr><th>Bundle propuesto</th><th>Precio combinado</th><th>Lift</th></tr></thead>
<tbody><tr><td>Short Surf Verde + Sticker Pack</td><td>$0</td><td>5.00×</td></tr><tr><td>Gorra Trucker Beige + Sticker Pack</td><td>$0</td><td>4.00×</td></tr><tr><td>Gorra Trucker Negra + Remera Básica Blanca</td><td>$0</td><td>3.20×</td></tr><tr><td>Gorra Trucker Negra + Riñonera Crossbody Negra</td><td>$0</td><td>3.20×</td></tr><tr><td>Medias Logo + Short Surf Negro</td><td>$0</td><td>2.54×</td></tr><tr><td>Buzo Oversize Gris + Pantalón Jogger Gris</td><td>$0</td><td>2.35×</td></tr><tr><td>Gorra Trucker Beige + Short Surf Negro</td><td>$0</td><td>2.29×</td></tr><tr><td>Camisa Lino Blanca + Pantalón Jogger Gris</td><td>$0</td><td>2.22×</td></tr></tbody>
</table>
<p class="insight">Lift > 2 + precio combinado interesante = pack con descuento moderado.</p></div><div class="analysis"><h3><span class="num">#20</span>Estacionalidad</h3><p>Mes pico: <b>Ene</b> · Mes valle: <b>Nov</b></p>
<p>Día pico: <b>Jueves</b></p>
<table>
<thead><tr><th>Día semana</th><th>Revenue</th></tr></thead>
<tbody><tr><td>Lunes</td><td>$498.699</td></tr><tr><td>Martes</td><td>$278.433</td></tr><tr><td>Miércoles</td><td>$300.411</td></tr><tr><td>Jueves</td><td>$586.100</td></tr><tr><td>Viernes</td><td>$317.460</td></tr><tr><td>Sábado</td><td>$492.714</td></tr><tr><td>Domingo</td><td>$172.997</td></tr></tbody>
</table>
<p class="insight">Programar campañas en valles y pauta agresiva en picos.</p></div></section>
<footer>
Reporte generado con
<a href="https://github.com/mathiaschu/ecommerce-bi">ecommerce-bi</a>
· creado por
<a href="https://twitter.com/mathiaschu">@mathiaschu</a>
</footer>
</div>
</body>
</html>