diff --git a/plans/featured.md b/plans/featured.md new file mode 100644 index 0000000..70d6b3c --- /dev/null +++ b/plans/featured.md @@ -0,0 +1,36 @@ +# LinkedIn Featured + +Order matters: the carousel shows the first 2–3. Add each as **Add a link**, then edit the title and description LinkedIn pulls from the page. + +Audience: the targets in `applied.md`, which fall into three groups: data/AI platform (MDPI, Adobe, Swisscom), security (Swiss Re, Swissgrid, Helvetia, Isovalent, Kaduu) and Basel/Zug finance (Partners Group, Julius Baer, J. Safra Sarasin, BIS). + +| # | Project | Link | Speaks to | +|---|---------|------|-----------| +| 1 | Rodado | https://rodado.xyz | data/AI platform | +| 2 | HelvetiScan | https://github.com/rafapolo/helvetiscan | security, Swiss | +| 3 | FinCrime | https://rafapolo.github.io/fincrime/ | finance, AML | +| 4 | swissviz | https://rafapolo.github.io/swissviz/ | Swiss, visual | +| 5 | brasilume | https://rafapolo.github.io/brasilume/ | data quality, visual | + +## Copy + +**1 · Rodado: Brazilian public data for AI agents** +1,050 official tables in a DuckDB/Parquet mirror, exposed as an MCP server, with the column bridges and metric definitions an agent needs to join them correctly. + +**2 · HelvetiScan: Switzerland's digital surface** +A scan of ~2.5M .ch domains (HTTP, DNS, TLS, WHOIS, CVE) with sector classification and risk benchmarking. Written in Rust. + +**3 · Redes Obscuras: ownership graphs for financial-crime investigation** +An interactive company↔partner network around an asset manager in a Brazilian money-laundering investigation, built from public registry data. + +**4 · swissviz: every company in Switzerland on one map** +Swiss commercial-register entities geocoded and rendered on the GPU, in the browser, with no backend. + +**5 · brasilume: 21 million businesses, matched address by address** +Brazil's active establishments placed by exact address match against the 2022 Census, with no postcode centroids, rendered in the browser. + +## Left out on purpose + +- Eleições 2026, Pulso da Imprensa, Templos, religioes: strong, but Brazilian political/religious topics read as noise or friction to a Swiss recruiter. They stay on extrapolo.com. +- Old client sites (Etaoin, Av. Atlântica, Victor Haim): career depth, not a differentiator for these roles. +- Alternative for slot 4: link extrapolo.com instead of swissviz, so the whole portfolio is one click away. diff --git a/plans/post-3-rodado-datative.md b/plans/post-3-rodado-datative.md deleted file mode 100644 index d6f2da0..0000000 --- a/plans/post-3-rodado-datative.md +++ /dev/null @@ -1,18 +0,0 @@ -# Post 3 — Jun 17 · Rodado + datative - -**Angle:** Data engineering at scale, pipeline story - ---- - -675 GB. 533 datasets. One question: what do you actually do with Brazilian open data? - -The government publishes it. The files exist. But they're scattered across formats, encodings, and schemas that change without notice. Most of it is effectively inaccessible to anyone who isn't willing to spend weeks just cleaning. - -**Rodado** is my answer to that: a pipeline that organizes, normalizes, and indexes the full archive of Brazilian public datasets — census data, company registries, electoral records, public spending — into something you can actually query. - -On top of that I built **datative**, an investigation platform that turns any of those datasets into interactive force-graphs. It was designed for journalists and researchers who need to follow connections, not just rows. - -Both open source. The pipeline patterns transfer directly to any domain — scientific data, financial records, public health. - -🔗 Rodado: git.extrapolo.com/polo/baseldosdados -🔗 datative: github.com/rafapolo/datative diff --git a/plans/post-3-rodado.md b/plans/post-3-rodado.md new file mode 100644 index 0000000..7115d6f --- /dev/null +++ b/plans/post-3-rodado.md @@ -0,0 +1,23 @@ +# Post 3 — Oct 14 · Rodado + +**Angle:** AI agents over a real data platform; the hard part is the joins, not the data + +--- + +In my first two posts I mapped every company in Switzerland and every .ch domain. This one goes back to where I come from: Brazilian public data. + +**Rodado** is a mirror of 1,050 official Brazilian tables (238 datasets: employment records, death certificates, elections, public contracts, census) plus 77+ sources I scrape myself, like international sanctions lists and the ICIJ Offshore Leaks. All in Parquet, all queryable with DuckDB, and exposed as an MCP server so an AI agent can explore it directly. + +Getting the data was the easy part. The hard part is that nothing has a foreign key. A municipality is `id_municipio` in one table, `codIBGE` in another, and sometimes arrives as a number with the leading zero gone. A column called `valor` appears in 91 tables and means something different in most of them; join on it and you get a big, plausible, wrong answer. + +So the platform ships its own context for the agent: 54 bridges between equivalent columns, each with the SQL that converts one side into the other, plus single definitions for the recurring metrics. That context is what turns "an LLM with database access" into something that gives answers you can check. + +The site also has 43 themes that read the tables side by side, on inequality, labour, health and power. + +🔗 rodado.xyz + +--- + +**Before posting:** +- [ ] Check the numbers against rodado.xyz on the day (tables, datasets, scraped sources, bridges) +- [ ] MCP access is restricted to selected members; say "access on request" in the comments if anyone asks diff --git a/plans/post-4-brasilume.md b/plans/post-4-brasilume.md new file mode 100644 index 0000000..713104e --- /dev/null +++ b/plans/post-4-brasilume.md @@ -0,0 +1,23 @@ +# Post 4 — Oct 21 · brasilume + +**Angle:** entity resolution and data quality, shown as a map + +--- + +Brazil has 26.9 million active business establishments. Each one has an address in the federal company registry. Putting them on a map sounds trivial until you try. + +The registry addresses are typed by hand over decades: abbreviations, missing street titles ("Professora", "Coronel"), postcodes that are wrong or out of date. The usual shortcut is to drop every company on the centre of its postcode or street, which produces a nice-looking map that is mostly invented. + +**brasilume** does it the slow way: it matches each address against the 2022 Census address registry (IBGE's CNEFE) and only places a point when the street and the exact number or lot match. No postcode centroids, no street centroids. 21.4 million establishments made it, 80% of the active ones. The rest stay off the map instead of being guessed. + +Everything runs in the browser, with no server and no tile service: points stored as delta-encoded varints in Morton order, about 2.7× smaller than raw floats, a 2-million-point sample for the national view, and the full state loading when you zoom in. You can filter by economic sector or watch the country fill up by opening year. + +The matching rules are the part I'd reuse anywhere addresses, names or IDs don't line up — which is most real data. + +🔗 rafapolo.github.io/brasilume + +--- + +**Before posting:** +- [ ] Confirm the active/mapped totals on the live Brazil view (26,865,736 active · 21,400,627 mapped on 2026-10-06) +- [ ] Attach a screen recording: zoom from Brazil into São Paulo, then scrub the opening-year timeline diff --git a/plans/post-4-tocador.md b/plans/post-4-tocador.md deleted file mode 100644 index 0affebb..0000000 --- a/plans/post-4-tocador.md +++ /dev/null @@ -1,20 +0,0 @@ -# Post 4 — Jun 24 · Tocador - -**Angle:** Product + design + cultural identity - ---- - -I moved from Brazil to Berlin to Basel. The music came with me — but Spotify's algorithm never quite figured out what I was actually listening to. - -So I built my own player. - -**Tocador** is a Spotify-alternative with a catalogue of 7,000+ Brazilian artists, curated and indexed by hand. No recommendation algorithm, no ads, no "because you listened to X." Just artists, genres, and a search that works. - -It's live at **tocador.cc** — and it still runs, four years later. - -I built it in a weekend because I was frustrated. It ended up teaching me more about product design, music metadata, and what "simple" actually requires than most client projects I've taken on. - -Sometimes the side projects that start from irritation are the ones that last. - -🔗 tocador.cc -🔗 github.com/rafapolo/tocador diff --git a/plans/post-5-fincrime.md b/plans/post-5-fincrime.md new file mode 100644 index 0000000..f535b73 --- /dev/null +++ b/plans/post-5-fincrime.md @@ -0,0 +1,21 @@ +# Post 5 — Oct 28 · FinCrime (Redes Obscuras) + +**Angle:** ownership graphs for financial-crime and AML investigation + +--- + +In 2025 Brazil's Federal Revenue reported that organised crime controlled at least 40 investment funds with more than R$30 billion in assets. The funds were legal. What hid them was the structure: companies owning companies, partners repeating across dozens of them, layers that look like nothing in a spreadsheet. + +**Redes Obscuras** is the tool I built to look at one of those structures: the asset manager REAG, its companies, their partners, and the companies those partners also hold. Every entity is a node; every shareholding is an edge. Search a name and the graph centres on it; click any node and you can walk its connections one hop at a time. Colour does the first pass of analysis: the core companies, the people, the extended network, all visible at a glance. + +It's built on public company-registry data and runs entirely in the browser. + +The same approach works anywhere beneficial ownership matters — KYC, sanctions screening, due diligence. The tables are usually already there. What is missing is a way to see three hops away. + +🔗 rafapolo.github.io/fincrime + +--- + +**Before posting:** +- [ ] Fact-check the opening: the Receita Federal figure (40+ funds, R$30bn+) and REAG's link to the investigation, with a news source to add in the comments +- [ ] Keep the wording to what the public data shows; no claims about individuals diff --git a/plans/post-5-viso.md b/plans/post-5-viso.md deleted file mode 100644 index 5b0fe5f..0000000 --- a/plans/post-5-viso.md +++ /dev/null @@ -1,17 +0,0 @@ -# Post 5 — Jul 1 · VISO - -**Angle:** Civic accountability, live SQL, dataviz with substance - ---- - -Parliamentary expenses are public. They're also 400,000 rows of CSV that nobody reads. - -**VISO** is a dashboard I built to change that — not just charts, but a live SQL interface that lets anyone query the raw data directly from the browser. No download, no Excel, no waiting for a journalist to summarize it for you. - -The design question was: what does transparency actually look like when you respect the user's intelligence? The answer I landed on was: give them the data and the tool to interrogate it, not just the conclusions. - -Built with Python on the backend, React on the front, and a query engine that runs directly against the normalized dataset. Open source. - -Civic tech is some of the most technically interesting work I've done — the constraint that the data is messy and the user is real makes everything harder and more honest. - -🔗 github.com/rafapolo/viso diff --git a/plans/posts.md b/plans/posts.md index 059fac6..46f795c 100644 --- a/plans/posts.md +++ b/plans/posts.md @@ -1,17 +1,28 @@ -# LinkedIn Posts — June/July 2026 +# LinkedIn Posts -5 posts, every Wednesday. First post ever on LinkedIn. +Every Wednesday. The series and the Featured section ([featured.md](featured.md)) tell the same story: **Platform, Data & AI**, with security and financial-crime work for the Basel/Zürich/Zug targets in `applied.md`. + +## Published | # | File | Date | Project | |---|------|------|---------| -| 1 | [post-1-swissviz.md](post-1-swissviz.md) | Jun 3 | swissviz | -| 2 | [post-2-helvetiscan.md](post-2-helvetiscan.md) | Jun 10 | helvetiscan | -| 3 | [post-3-rodado-datative.md](post-3-rodado-datative.md) | Jun 17 | Rodado + datative | -| 4 | [post-4-tocador.md](post-4-tocador.md) | Jun 24 | Tocador | -| 5 | [post-5-viso.md](post-5-viso.md) | Jul 1 | VISO | +| 1 | [post-1-swissviz.md](published/post-1-swissviz.md) | Jun 3 | swissviz | +| 2 | [post-2-helvetiscan.md](published/post-2-helvetiscan.md) | Jun 10 | helvetiscan | -## Backlog (next candidates) +## Next -- **sumaria** — YouTube transcript summarizer with LLM. AI tooling angle. -- **VERAΞFIKO** — Awarded Web3 SmartContracts bridging fees into carbon credits. Swiss sustainability resonance. -- **Pegadas Tigrinho** — Corporate network of Brazilian gaming scam. Investigative dataviz storytelling. +| # | File | Date | Project | Angle | +|---|------|------|---------|-------| +| 3 | [post-3-rodado.md](post-3-rodado.md) | Oct 14 | Rodado | AI agents over 1,050 public tables via MCP | +| 4 | [post-4-brasilume.md](post-4-brasilume.md) | Oct 21 | brasilume | entity resolution: 21M addresses matched, in the browser | +| 5 | [post-5-fincrime.md](post-5-fincrime.md) | Oct 28 | FinCrime | ownership graphs for financial-crime investigation | + +Posts 1 and 2 were Swiss data; 3–5 move to the data platform, the data-quality work under it, and what it is used for. + +## Backlog + +- **Vorcaros** — 263 partners → 8,088 companies they also control. Follow-up to FinCrime if it lands with finance/compliance people. +- **VISO** — federal deputies' expenses as a deputy↔company graph plus an in-browser SQL explorer (DuckDB WASM, Monaco). Civic-tech angle. +- **Tocador** — a static web player for music collections, pointed at any `.json.gz` catalogue, with a radio mode. Product angle. +- **VERAΞFIKO** — awarded Web3 smart contracts bridging fees into carbon credits. Swiss sustainability resonance. +- **Pegadas Tigrinho** — corporate network behind a Brazilian online-gambling scam. Investigative storytelling. diff --git a/plans/post-1-swissviz.md b/plans/published/post-1-swissviz.md similarity index 100% rename from plans/post-1-swissviz.md rename to plans/published/post-1-swissviz.md diff --git a/plans/post-2-helvetiscan.md b/plans/published/post-2-helvetiscan.md similarity index 100% rename from plans/post-2-helvetiscan.md rename to plans/published/post-2-helvetiscan.md