diff --git a/homework.md b/homework.md new file mode 100644 index 0000000..b6b5998 --- /dev/null +++ b/homework.md @@ -0,0 +1,7 @@ +The homework only you can do — before Tuesday + + 1. A real "said no on security grounds" story, or accept you don't have one and say so + 2. What you actually did about salary-data access control at EDGE Empower + 3. The real Swisscom CVE dashboard details — source, audience, what it changed + 4. Your genuine "why security, why now" — the one answer that can't be scaffolded + 5. One hour on CIS Controls / ISO 27001 / NIST CSF diff --git a/motivation-adobe.md b/motivation-adobe.md new file mode 100644 index 0000000..8601995 --- /dev/null +++ b/motivation-adobe.md @@ -0,0 +1,20 @@ +Dear Adobe Hiring Team, + +I am excited to apply for the Senior Software Engineer position (R170402) with the Brand Visibility team here in Basel. Building the systems that determine how enterprise brands appear in ChatGPT, Gemini, and the next generation of AI agents sits exactly at the intersection of my +20y background in full-stack software engineering and my recent work on AI-native platforms, LLM integrations, and web-scale content analysis. + +A representative example is my independent project, Rodado, the biggest Brazilian data platform maintaining and exposing ~730 Brazilian public datasets for analytics and AI. It manages approximately 1TB of Parquet data on S3-compatible storage, integrates DuckDB for analytics, provides REST APIs and semantic search, and includes an LLM-powered natural-language-to-SQL interface exposed through MCP tooling — making the entire platform directly consumable by AI agents. Building it required scalable ETL pipelines, robust metadata management, secure APIs, query optimization, and designing for exactly the kind of AI-driven discovery that brand visibility in AI experiences demands. + +I work AI-natively day to day: AI coding agents such as Claude Code are a core part of my development workflow, and I have built agentic systems end-to-end, including an autonomous framework that closes the loop between knowledge, hypothesis, experiment, and analysis. On the visibility side, my HelvetiScan project scanned and mapped 2.5M+ Swiss .ch domains — HTTP, DNS, TLS, WHOIS, and content — with sector classification and scoring, which is web presence analysis at national scale and the same class of problem as reasoning about brand visibility data across SEO/GEO platforms. + +Throughout my career, I have designed and delivered production systems using Python, TypeScript, Ruby, SQL/NoSQL databases, REST APIs, cloud infrastructure, CI/CD, and modern software engineering practices. At Swisscom, I helped modernize mission-critical internal platforms and CI/CD pipelines supporting high-availability telecommunications infrastructure. Previously, at EDGE Empower, I led a multidisciplinary engineering team, redesigned a Python monolith into a parallelized TypeScript architecture that reduced processing time by 98%, and shortened CI/CD pipelines from 14 minutes to 4 minutes — automated quality gates that scale without relying on individual discipline. + +I enjoy operating in ambiguity: as an independent consultant I drove 40+ projects from unclear briefs to shipped products, and I like sharing what I learn through mentoring, documentation, and teaching. I hold a Bachelor's degree in Computer Science, a Master's degree in Information Systems focused on knowledge representation and reasoning — a foundation that maps naturally onto how LLMs represent and retrieve knowledge about brands — and additional postgraduate studies in Data Science. + +I am based in Basel, immediately available, hold a Swiss B permit and a Portuguese passport. + +Thank you for your consideration. + +Kind regards, +Rafael Polo +14-July-2026 +extrapolo.com / linkedin.com/in/rafaelpolo / github.com/rafapolo diff --git a/motivation1.md b/motivation1.md new file mode 100644 index 0000000..07dbe01 --- /dev/null +++ b/motivation1.md @@ -0,0 +1,21 @@ +Dear Roche hiring team, + +I am applying for the Principal Software/Data Engineer position in Basel because the role fits the work I do best: designing secure, scalable production systems that connect data, software architecture, AI-enabled workflows, and product delivery. I am based in Basel, hold EU citizenship, do not require a work permit, and bring more than 20 years of software engineering experience across Switzerland, Germany, Greece, Brazil, and Portugal. + +My background combines platform engineering, data pipelines, front-end interfaces, back-end APIs, CI/CD, and production operations. Most of my systems have used PostgreSQL or compatible relational database patterns, and I am comfortable designing schemas, query paths, APIs, and operational safeguards around live data. I have built React/TypeScript interfaces, Python/Ruby/TypeScript back ends, Docker-based deployments, AWS services, Kubernetes environments, and CI/CD workflows. + +A strong example is my independent project rodado/baseldosdados: a production data platform around one of the largest Brazilian public-data mirrors exposed through MCP-style tooling. It covers hundreds of public datasets, approximately 675 GB of Parquet+zstd data, DuckDB, S3-compatible object storage, semantic table search, an LLM natural-language-to-SQL workflow, a programmatic SQL API, and read-only access controls. The system handles domains such as health, education, elections, companies, public contracts, employment, and demographic indicators. Building it required partition-aware query design, join-key modelling, result validation, credentials isolation, logging, reproducible schema metadata, and careful handling of personal identifiers such as CPF/CNPJ. + +This is the same engineering pattern I would bring to Roche: robust software architecture for data- and ML-driven products, reliable APIs and pipelines, usable interfaces for complex outputs, and disciplined production practices. I understand the difference between a promising prototype and a system that teams can trust, operate, monitor, and extend. I also enjoy the product side of that work: balancing technical trade-offs with user impact, business value, maintainability, and delivery speed. + +At Swisscom, I worked on modernization of mission-critical internal platforms and CI/CD pipelines for high-availability telecom infrastructure. At EDGE Empower, I led a small engineering and UX team, built a PayTool that reduced processing time by 98%, and shortened a CI/CD pipeline from 14 minutes to 4 minutes. Across consulting work, fintech/KYC systems, civic data platforms, and investigative data tools, I have collaborated with UX designers, product managers, researchers, journalists, and technical teams to translate ambiguous needs into working software. + +I also match the academic and communication requirements: I hold a Bachelor in Computer Science, a Master in Information Systems focused on knowledge representation and reasoning, and a postgraduate degree in Data Science for Finance. I am used to explaining complex systems clearly, mentoring others, documenting reusable patterns, and working across cultures in English, Portuguese, Spanish, and German B1. + +While I have not worked directly inside clinical development, I have worked in regulated and sensitive-data contexts including Swiss data protection, fintech/KYC, telecom infrastructure, and public-sector data. I understand the importance of auditability, reproducibility, access control, privacy, and conservative engineering when software supports important decisions. I would bring that mindset to Roche's Product Development Data Sciences environment and learn the clinical and GxP-specific context with discipline. + +What attracts me most is the Innovation Accelerator's position between strategy, experimentation, and production. I enjoy exploring emerging technologies, validating them through real use cases, and making the engineering decisions that allow pilots and MVPs to become secure, maintainable products. + +Sincerely, + +Rafael Polo diff --git a/tasks/to-update.md b/tasks/to-update.md new file mode 100644 index 0000000..d10656d --- /dev/null +++ b/tasks/to-update.md @@ -0,0 +1,108 @@ +# CV & application materials — to update + +Audit date: 2026-07-27. Scope: `linkme/cv/`, `linkme/motivation*.md`, `rafapolo/` portfolio + `rafapolo/job/`. + +## Why + +~270 applications over 18 months (≈15/month, mostly LinkedIn Easy Apply) with no offers. +Volume was never the problem. Three causes found: + +1. **The CV omits the entire target stack.** Keyword audit of `Rafael_Polo_CV_EN_2026.pdf`: + + | Keyword | Count | + |---|---| + | TypeScript | 0 | + | React | 0 | + | Rails | 0 | + | PostgreSQL | 0 | + | LLM / RAG / LangChain | 0 | + | Rodado | 0 | + | Staff / Principal | 0 | + | `98%` (best metric) | 0 | + + Skills line says "Javascript Frameworks" instead of `React` / `TypeScript` — no ATS or + recruiter searches that string. Space is spent on `Slack`, `UX`, `UML`, `MVC`. + +2. **The CV pitches a security-ops job.** Profile paragraph leads with *"operating production + infrastructure … security patching, vulnerability remediation, and system hardening under + strict SLAs"* — likely written for `job/applications/helvetia/` (Cyber Hire). Every + Staff/Principal software, AI and platform application since has carried that framing. + Tell: the HCLTech *Application Support Engineer* posting is a good match for this CV. + +3. **Two different CVs are in circulation, with conflicting employment dates.** + + | Source | Swisscom start | Date | + |---|---|---| + | `rafapolo/rafael-polo-cv.pdf` (served at extrapolo.com) | 02/2024 | May 13 | + | `rafapolo/job/cv/Rafael_Polo_CV_EN_2026.pdf` (what gets sent) | 03/2024 | Jul 24 | + | `linkme/cv/polo.md` | 2024, no month | — | + +Secondary: LinkedIn Easy Apply is the lowest-conversion channel for Staff/Principal roles +(300–1000 applicants/posting; recruiters review the first ~20–30). Swiss senior roles fill +via company portals, recruiters and referrals. + +--- + +## Priority 1 — the CV + +- [ ] **new** `rafapolo/job/cv/cv-source.md` — single canonical source; both PDF and HTML + generated from it. No source of truth today, which is how three versions drifted. +- [ ] `rafapolo/job/cv/Rafael_Polo_CV_EN_2026.pdf` — rebuild: + - [ ] New profile line: platform / data / AI engineering. Drop the security-ops framing. + - [ ] Skills as literal searchable strings: + `Python · TypeScript · React · Node.js · Ruby on Rails · PostgreSQL · Docker · + Kubernetes · AWS · Terraform · CI/CD · LLM · RAG · LangChain` + - [ ] Remove `Slack`, `UX`, `Modeling with UML`, `MVC system architecture`, + `Javascript Frameworks` + - [ ] Restore metrics: 98% processing reduction, CI/CD 14 → 4 min + - [ ] Add **Rodado** (~730 datasets, 1TB Parquet, DuckDB, NL-to-SQL over MCP) — currently + absent. Keep HelvetiScan (already appears 3×). + - [ ] `Swiss B-Visa` → `Swiss B permit` (correct term: *Aufenthaltsbewilligung B*) + - [ ] Compress ExtraPolo `01/2008–01/2023` — a 15-yr freelance block overlapping two + employed roles reads as unverifiable to Swiss HR. One line: "Independent consulting + (40+ projects)". + - [ ] Keep single-column layout so ATS text extraction stays clean (verify with + `pdftotext file.pdf -` — name and contact block currently land mid-document). +- [ ] `rafapolo/rafael-polo-cv.pdf` — replace with a copy of the rebuilt PDF. Currently a + stale May 13 file with a different Swisscom start date. +- [ ] `rafapolo/curriculum.html` — same profile/skills/keyword fixes so the web CV matches + the PDF. Header/`