# Vincenzo Imperati > Software Engineer based in Zurich, Switzerland. Software engineer in Zurich. I build data infrastructure for open protocols and operate what I build, alongside peer-reviewed measurement research at USENIX Security and IEEE Access. This file is a curated index of the whole site for language models and agents. The complete content of every page, inline and in one document, is at https://vincenzo.imperati.dev/llms-full.txt. Feeds: https://vincenzo.imperati.dev/all.xml. ## Profile - [About: full CV](https://vincenzo.imperati.dev/about): Complete professional history: experience, education, publications, awards, and skills. - [Links](https://vincenzo.imperati.dev/links): Every platform and profile. ## Projects - [sitesift](https://vincenzo.imperati.dev/projects/sitesift): Personal. A URL classification pipeline that splits deterministic evidence collection from LLM judgment, producing structured and reproducible records of what a site is, what it is about, and how confident the verdict was. - [academic-research-skills](https://vincenzo.imperati.dev/projects/academic-research-skills): Personal. Eight agent skills covering the research pipeline end to end: digest a paper, explore the state of the art, write the survey, build a contribution, package artifacts, manage a submission, and review it adversarially. - [create-academic-research](https://vincenzo.imperati.dev/projects/create-academic-research): Personal. An npm scaffolder for research repositories built around four entities – digested papers, one survey, self-contained contributions, and per-venue submissions – after a rewrite that deleted most of the first version. - [SkillGuard](https://vincenzo.imperati.dev/projects/skillguard): Hackathon. An approval step between a Solana AI agent and a wallet: the agent declares what it wants to do, policy decides whether a human must look, and the decision is recorded on-chain as a hash. - [nSealr](https://vincenzo.imperati.dev/projects/nsealr): Professional. Nostr signing devices in five form factors, held together by 220 conformance vectors and firmware that refuses to sign until twelve readiness gates pass; ten remain unmet on the ESP32 scaffold. - [Proxmox Desk Display](https://vincenzo.imperati.dev/projects/proxmox-desk-display): Personal. A physical desk display for a Proxmox homelab, split into a Go bridge that holds all the credentials and an ESP32 firmware that holds none: a product decision, not a technical limitation. - [Encrypted Local Tally Integrity](https://vincenzo.imperati.dev/projects/encrypted-local-tally-integrity): Hackathon. A protocol and reproducible artifact for federated elections in which each authority publishes an encrypted local tally and the aggregation stays verifiable on-chain. - [Entangle](https://vincenzo.imperati.dev/projects/entangle): Professional. A self-hosted federated runtime for organizations of coding agents: a permission graph, Nostr-signed coordination, git-backed artifacts, and deterministic tests that prove the plumbing without spending model API calls. - [nsec leak checker](https://vincenzo.imperati.dev/projects/nsec-leak-checker): Personal. A Nostr data-vending machine that tells you whether your private key has been published in a public event, using your own signature as the proof of ownership and returning the answer encrypted to you alone. - [nostr-linkr](https://vincenzo.imperati.dev/projects/nostr-linkr): Personal. A trustless bridge between a Nostr identity and an Ethereum address, with full BIP-340 Schnorr verification performed on-chain: no DNS, no platform post, no third party to believe. - [VendTON](https://vincenzo.imperati.dev/projects/vendton): Hackathon. A marketplace and payment gateway for paid APIs on TON: deploy an endpoint, price it per call, and let an autonomous agent discover and pay for it in USDT without an account. - [asciidoc-to-djot](https://vincenzo.imperati.dev/projects/asciidoc-to-djot): Personal. An AST-based converter from Asciidoc to Djot, written so that a format migration in the Nostr wiki specification did not require anyone to rewrite their articles by hand. - [nopayloaddb](https://vincenzo.imperati.dev/projects/nopayloaddb): Personal. A merged one-line correctness fix to the HEP Software Foundation reference conditions database: an ordering key computed from the wrong field, in a branch rare enough that nothing failed loudly. - [GSoC 2026 Explorer](https://vincenzo.imperati.dev/projects/gsoc-2026-explorer): Personal. Every Google Summer of Code 2026 organization and its project ideas in one searchable place, which meant writing eight different extractors, because every organization publishes its ideas somewhere else. - [Chain Lens](https://vincenzo.imperati.dev/projects/chain-lens): Hackathon. A Bitcoin transaction and block analyzer that parses raw Core data files, reconstructs the accounting, and classifies every script, with a CLI and a visual walkthrough sharing one engine. - [OmniCredit](https://vincenzo.imperati.dev/projects/omnicredit): Hackathon. An omnichain lending protocol where borrowing power is earned by paying interest rather than granted by depositing more collateral: a credit score that cannot be farmed for free. - [DotFusion](https://vincenzo.imperati.dev/projects/dot-fusion): Hackathon. Trustless ETH↔DOT atomic swaps between Ethereum and Polkadot using hash time-locked contracts, with Polkadot's XCM precompile propagating the secret across chains automatically. - [Bitcoin Full Node in Docker](https://vincenzo.imperati.dev/projects/bitcoin-fullnode-docker): Personal. A Bitcoin full node that reaches the network only over Tor and keeps the full transaction index, configured for asking questions about the chain rather than for validating one wallet. - [Job Search Tool](https://vincenzo.imperati.dev/projects/job-search-tool): Personal. A local-first job search system where the dashboard, REST API, and MCP tools share one application layer, so filtering and state changes behave identically on every surface. - [Relay Shadow](https://vincenzo.imperati.dev/projects/relay-shadow): Hackathon. A Nostr data vending machine that recommends relays against a stated threat model, scoring measured privacy, reliability, performance and social-graph data from the BigBrotr archive. - [nostr-tools](https://vincenzo.imperati.dev/projects/nostr-tools): Personal. An async Python library for the Nostr protocol that measures whether a relay can connect, read, and write instead of trusting what its NIP-11 document advertises. - [Nostreum](https://vincenzo.imperati.dev/projects/nostreum): Hackathon. A Nostr social client where a profile can carry a verified Ethereum address: the badge is backed by an on-chain proof the client checks, not by a claim a server repeats. - [URI Generic Regex](https://vincenzo.imperati.dev/projects/uri-generic-regex): Personal. A single Python regular expression that decomposes a URI into its RFC 3986 components as named capture groups: scheme, userinfo, host, port, path, query, fragment. - [BigBrotr](https://vincenzo.imperati.dev/projects/bigbrotr): Professional. An OpenSats-funded observatory for the Nostr network: eight independent Python services that discover relays across four transport networks, archive what they serve, and expose it through a read-only API and a paid data-vending machine. - [HR Management System](https://vincenzo.imperati.dev/projects/hr-management-system): Professional. Replaced an Italian industrial contractor's paper personnel files with a web application built around the question the office actually asks: who can weld this, and how well. - [eBay Sniper Bot](https://vincenzo.imperati.dev/projects/ebay-sniper-bot): Personal. A bidding bot whose entire job is one click, executed at a time typed by hand, and whose only real idea is parking the mouse on the button before the wait begins. - [Safeblow](https://vincenzo.imperati.dev/projects/safeblow): Hackathon. A privacy-preserving whistleblowing and sensitive-disclosure system built at ETHRome 2024. - [Cantina Royale Tools](https://vincenzo.imperati.dev/projects/cantina-royale-tools): Professional. A public explorer for a live blockchain game's 20,413 NFTs, built on an offline snapshot compiled into SQLite at build time, so the data is reviewed like code rather than fetched at request time. - [Gen4Olive Field App](https://vincenzo.imperati.dev/projects/gen4olive): Professional. The field application for an EU Horizon 2020 project on olive genetic resources: camera capture and model-assisted cultivar and disease recognition, for agronomists working in a grove. - [python-oced](https://vincenzo.imperati.dev/projects/python-oced): MSc. A reference implementation of the Object-Centric Event Data model in one module and, more usefully, the design journal of the eleven modelling problems it ran into. - [Lesson Booking System](https://vincenzo.imperati.dev/projects/lesson-booking-system): MSc. The object-oriented design of a university room-booking system, paired with an executable model that treats the booking load as a stochastic process and searches for how often the platform must refresh its view. - [Algorithms Course Exercises](https://vincenzo.imperati.dev/projects/algorithms-course-exercises): MSc. Twelve weeks of exercise sessions for an undergraduate algorithm-design course: problem statement, worked reasoning, Python, and the slides used to teach each one. - [NFT Collections Generator](https://vincenzo.imperati.dev/projects/nft-collections-generator): MSc. Training GANs on two real 10,000-image NFT collections to generate and upscale new artwork, including the attempt to blend the two, which did not work and is written up as not working. - [Peer Store](https://vincenzo.imperati.dev/projects/peer-store): MSc. An Android marketplace built on Firebase with on-device object detection and, in hindsight, a good example of how an async API returns a value that is always zero. - [MeltyFi](https://vincenzo.imperati.dev/projects/meltyfi): MSc. NFT-backed lending that replaces price-based liquidation with a lottery: the borrower is funded by ticket sales, and a default hands the NFT to a ticket holder rather than to a liquidator. - [Who Funds a Rug Pull](https://vincenzo.imperati.dev/projects/ethereum-address-clustering): MSc. A reverse funding graph over 16,584 Ethereum accounts that created a liquidity pool and drained it within a day, built to ask whether the people behind them share a source of money. - [SDN Performance Analysis](https://vincenzo.imperati.dev/projects/sdn-performance-analysis): MSc. Two software-defined network topologies differing by one link, measured across 303 traffic loads: the added link doubles the load before saturation and removes a 33% latency penalty. - [Bitcoin Address Clustering](https://vincenzo.imperati.dev/projects/bitcoin-address-clustering): MSc. Collapsing 334,177 Bitcoin addresses into 109,074 entities over the chain's first two years, using a heuristic chain tuned to avoid merging entities that are not the same one. - [Online News Popularity](https://vincenzo.imperati.dev/projects/online-news-popularity): MSc. A graded machine-learning challenge where every model scored 80% accuracy by predicting one class for every article, and the work was making that failure visible and then fixing it. - [Smart Houses](https://vincenzo.imperati.dev/projects/smart-houses): MSc. A reimplementation of a published demand-response system: an LSTM forecasting twelve hours of electricity prices, feeding reinforcement-learning agents that schedule electric-vehicle charging. - [Modelica Notes](https://vincenzo.imperati.dev/projects/modelica-notes): MSc. Six sessions of annotated Modelica examples that build up model-based control design: plant, controller, monitor, Monte Carlo verification, then synthesising the parameters that still satisfy the requirement. - [Parallel Sudoku solver](https://vincenzo.imperati.dev/projects/parallel-sudoku-solver): BSc. Two parallel Sudoku solvers in C, benchmarked honestly: the Pthread version gains 5% at two threads and then gets slower, and the OpenMP version never beats its own serial run. - [QuizArt](https://vincenzo.imperati.dev/projects/quizart-app-design): BSc. An HCI project for a cultural-heritage quiz app, where 23 interviews and 261 survey responses chose the feature list, including which idea to drop. - [Social Game System](https://vincenzo.imperati.dev/projects/social-game-system): BSc. A four-person Java simulation where agents with moods, inherited character traits and private vocabularies talk, befriend, reproduce and die, and where optimists take over until a performance fix causes a population crash. - [Bachelor thesis, scheduling EV charging with reinforcement learning](https://vincenzo.imperati.dev/projects/bachelor-thesis): BSc. My BSc thesis at Sapienza: four ways to model an electric car inside a home energy management system, simulated over a year, and the finding that the simplest of them beat both reinforcement-learning models. - [CatSScript Website](https://vincenzo.imperati.dev/projects/catsscript-website): BSc. A cat-themed site for learning HTML, CSS and JavaScript, with a timed quiz per topic, built with a classmate for a BSc exam, and ported to a second database when the free host turned out not to run PostgreSQL. ## Research - [The Conspiracy Money Machine: Uncovering Telegram's Conspiracy Channels and their Profit Model](https://vincenzo.imperati.dev/research/conspiracy-money-machine): USENIX Security 2025 (published). A Telegram-to-web measurement pipeline over 120K+ channels and 498M+ messages that traces how conspiracy communities are monetized, quantifying a USD 71M ecosystem. - [Hard to See, Harder to Block: Exploring the Challenges in Email Tracking Pixels Detection](https://vincenzo.imperati.dev/research/email-tracking-pixel-detection): IEEE Access (published). An evaluation of email tracking-pixel detection across 44,710 real-world emails from 620 sender domains and 22 commercial services, characterising how brittle deployed defenses are. ## Posts - [Changing a specification is mostly a migration problem](https://vincenzo.imperati.dev/posts/changing-a-specification): The Nostr wiki format change was agreed before I touched it. What kept it from merging was that nobody had written the converter, which is a different kind of work from being right. - [A duplicate can be an observation](https://vincenzo.imperati.dev/posts/the-duplicate-is-the-data): BigBrotr stores one Nostr event once and records every relay that served it, because repeated content is redundant while repeated observation is the measurement. - [An index must preserve the specification's distinctions](https://vincenzo.imperati.dev/posts/the-same-bug-in-the-spec-and-the-storage): A Nostr storage backend returned the wrong rows because its index kept tag values but discarded tag keys, collapsing a distinction required by the protocol. - [A failed crawl is not an empty result](https://vincenzo.imperati.dev/posts/measurement-infrastructure): A measurement pipeline has to preserve three different states: observed, absent, and unavailable. Collapsing them produces confident findings from data the collector never saw. ## Optional - [GitHub](https://github.com/VincenzoImp): VincenzoImp - [LinkedIn](https://linkedin.com/in/vincenzo-imperati): vincenzo-imperati - [ORCID](https://orcid.org/0009-0001-9437-1384): 0009-0001-9437-1384