OPEN TO WORK SÃO PAULOSAN DIEGO MATHIAS TUCUNDUVA

MARKETING ENGINEER.

I treat audiences as data structures and growth as a thing you build, wire up, and leave running.

DAY JOB: I RUN PETCO'S RETAIL MEDIA PROGRAM, ABOUT $110M A YEAR, AND BUILD THE AD-TECH IT RUNS ON.

I BUILD THE SYSTEMS OTHERS OPERATE · AUDIENCE INTELLIGENCE · MARKETING · AI SCROLL FOR PROOF
SNAPSHOT · JUL 2026 uptime 99.9% · 74/76 containers healthy · 2 nodes

RETIRED 1 INDUSTRY VENDOR. SHIPPED THE REST.

[ 02 / RECEIPTS ]
01
1
industry vendor retired
LiveRamp, gone in production. Saves Petco about $550K a year REPORTED
02
313.8M
audience reach managed
across 32 brand partners
03
$148.6M
media revenue analyzed
whole portfolio, in the live analytics suite
04
8
ad platforms activated
one audience definition, eight outputs
05
~35
audience filter types
typed DSL, compiled to one Snowflake SELECT
06
>90%
match rate in <48h REPORTED
brief to activation
03 / WHAT IS A MARKETING ENGINEER

A marketing engineer
builds the machine.

I run the playbook, then I build the machine that runs it. There are three parts: audience intelligence, marketing strategy, and AI & systems. One part makes you a specialist. All three wired together is the part nobody can buy off the shelf. Not a full-stack marketer. Not a growth hacker.

Circle 01

Audience Intelligence

Audiences are data structures. You define them and build them. You don't guess.

identity · segmentation · activation
Circle 02

Marketing Strategy

The persuasion side. Positioning, attribution, lifecycle, and the experiments that keep tuning it.

positioning · attribution · lifecycle
Circle 03

AI & Systems

The plumbing that keeps it running while I'm asleep. LLMs, pipelines, the boxes it all lives in.

LLMs · pipelines · infrastructure
04 / CASE 01 · FLAGSHIP · PETCO RMN

AudienceBuilder
for Petco

A self-serve audience platform for Petco's retail media network. A marketer builds an audience in a guided UI, watches the live Snowflake count come back, clears compliance, and pushes it to eight ad platforms. It replaced a slow, manual LiveRamp workflow, and it saves Petco about $550K a year. REPORTED

STATUS
IN PRODUCTION
OWNER: M. TUCUNDUVA
01 Problem

Audiences meant hand-written SQL.

To get a targetable audience you wrote SQL by hand or handed it off to LiveRamp. It was slow, easy to get wrong, and out of reach for the marketers who run the campaigns.

02 Constraints

Preview size has to equal activation size.

People had to trust it in production. The size you preview has to be the size that activates, identity-sensitive filters can't leak, and the existing ad-platform integrations have to keep working. It had to hold up in production, not in a demo.

03 The system I built

One declarative audience definition, compiled to Snowflake.

One declarative JSON audience definition (a typed Pydantic DSL with ~35 filter types) compiles down to a single Snowflake SELECT. The same definition drives the previewed count and the membership that gets pushed to platforms.

It handles include/exclude per dimension, per-filter date windows, a lapsed-buyer EXCEPT, a vet-Rx INTERSECT, and a cross-purchase tri-state matrix. From there a Define, Materialize, Distribute pipeline pushes the resolved set to eight ad platforms.

04 The AI layer

Three LLM surfaces that can't make the numbers up.

Three LLM surfaces (a full-page AI Advisor, a brief-first Explore, and a draft-aware Create assistant) sit on one provider abstraction: Claude via AnthropicVertex in prod, an OpenAI-compatible proxy in dev. One streaming tool-call loop, capped at 8 iterations, runs its tools at the same time, so the wait is the slowest tool, not all of them added up.

Grounding is the part that matters. Audience sizes always come from a real SQL COUNT, never the model. Brand and category get matched against live Snowflake vocabularies, so a "dog" request can't slide into a cat department. Proposed filters are checked against Pydantic and dropped with a note if they don't validate. The Create assistant streams fenced JSON suggestions that turn into one-click "Apply to filters" actions.

05 Compliance as a product guardrail

Identity-sensitive filters fail closed.

Credit, net-worth, and household-income filters are fail-closed on every Meta write path. The UI gets a clear 422 with a reason instead of having the filter dropped without warning. Three restricted filters, blocked by default.

LiveRamp
// I replaced this.
A third-party identity vendor, pulled in-house and turned into a platform the org owns.
FIG.01 · AUDIENCEBUILDER · DATA-FLOW NODES ACTIVE
AI RECOMMENDATION LAYER suggests next audience DEFINE first-party signals → audience spec MATERIALIZE resolve identity → addressable set DISTRIBUTE push to platforms → activation AD PLATFORMS
06  Scale · numbers off the live app, checked against the code
Library
500+
audiences in the library
Reach
313.8M
total reach · 32 brand partners
Classified
331/338
auto-classified audiences
Activated
242
platform audiences in the guarded cleanup
Advisor
7
Snowflake-backed Advisor tools
Floor
20,000
minimum activation floor
Guardrail
3
restricted filters, fail-closed
Tool loop
8
concurrent tool-call iterations, capped
FIG.03  The product · live capture
LIVE CAPTURE · Create → Preview · set ~35 filters, watch the live Snowflake count come back.
AudienceBuilder Create page with the full ~35-filter taxonomy expanded
01Create · the ~35-filter declarative DSL, include or exclude per dimension.
AudienceBuilder Preview screen showing audience size, drop-off funnel and demographics
02Preview · size, drop-off funnel, overlap and demographics, all from real SQL.
AudienceBuilder Explore showing a brief turned into a built audience
03Explore · a brief turned into a built audience, grounded in real data.
AudienceBuilder AI Advisor returning grounded media-strategy recommendations
04AI Advisor · recommendations backed by 7 Snowflake tools, not guesswork.
AUDIENCEBUILDER · PIPELINE WALKTHROUGH SCROLL TO ADVANCE ↓
STAGE 01 / 03

Define.

Turn first-party signals into a precise audience spec. The audience is a data structure here, versioned and easy to read, before a single record gets resolved.

STAGE 02 / 03

Materialize.

Resolve identity and turn the spec into an addressable set. This is the step LiveRamp used to own. Now it runs in-house and you can watch every part of it.

STAGE 03 / 03

Distribute.

Push the resolved set to every connected ad platform and activate. That closes the loop the AI layer reads to suggest what to build next.

FIG.02 · DEFINE → MATERIALIZE → DISTRIBUTE 0%
FIG.02 / PIPELINE WALKTHROUGH
STAGE 01 / 03

Define.

Turn first-party signals into a precise audience spec. The audience is a data structure here, versioned and easy to read, before a single record gets resolved.

audience.spec { signal: purchase_90d · AND }
STAGE 02 / 03

Materialize.

Resolve identity and turn the spec into an addressable set. This is the step LiveRamp used to own. Now it runs in-house and you can watch every part of it.

identity graph → resolved set
STAGE 03 / 03

Distribute.

Push the resolved set to every connected ad platform and activate. That closes the loop the AI layer reads to suggest what to build next.

activate · measure · feed AI layer
05 / CASE 02 · ANALYTICS PLATFORM · PETCO RMN

Marketing
Analytics

A performance-analytics suite sitting on ~20 Snowflake tables. Drill from the whole portfolio down to one campaign, watch budget pacing, put together a brand QBR, and have it write the weekly performance review. A FastAPI backend serves it. The AI insights layer only works from context the server hands it, so it can't invent numbers.

STATUS
IN PRODUCTION
OWNER: M. TUCUNDUVA
01 Problem

~20 tables, no fast way down.

RMN performance data lived across ~20 tables with no single fast way to drill down, watch pacing, or get the weekly review out. Analysts wrote SQL by hand and stitched the results together themselves.

02 Approach

Fan many queries into one screen.

A parameterized query compiler over a star-schema fact table, sitting behind backend-for-frontend composite endpoints. A pile of aggregations land on one screen. The 9-tab Brand Deep Dive fires ~13 independent queries at once on a thread pool.

03 The system I built

A drill-down suite that writes its own weekly review.

The suite drills from portfolio to a single campaign, watches pacing and trafficking variance, puts together a brand QBR, and writes the weekly performance review itself, flagging the anomalies. Under the hood it leans on TTL caching of pre-encoded JSON, connection pooling, and concurrent fan-out. It sorts everything into a SCALE / HEADROOM / FIX / WATCH quadrant and calls the one move worth making first.

04  Portfolio KPIs · numbers off the live app
$20.9M
media spend
$148.6M
revenue analyzed
7.10x
ROAS
31.9M
clicks
17
analytics views
FIG.04  The product · live capture
LIVE CAPTURE · Overview + AI insights · the SCALE / HEADROOM / FIX / WATCH quadrant, plus the one move worth making first.
Marketing Analytics Campaign Explorer drilling into a single campaign
01Campaign Explorer · the whole portfolio drilled down to one campaign.
Marketing Analytics 9-tab Brand Deep Dive
02Brand Deep Dive · 9 tabs, ~13 queries firing at once.
Marketing Analytics budget pacing and trafficking-variance monitor
03Pacing · keeps an eye on budget pacing and trafficking variance.
Marketing Analytics year-over-year performance view
04YoY Performance · year-over-year trends across the portfolio.
06 / THE BREADTH WALL

The rest of the range

Past the two flagships, ~29 more systems I shipped inside Petco's retail-media network. Activation, analytics, AI content, data ops, prototypes, and a few one-off analyses for leadership.

01 /

Audience activation

1 system

Building Petco's first-party audiences and pushing them straight into every ad platform.

First-party audience sync job to Meta, one of six offsite activation platforms
AUDIENCE ACTIVATION

Offsite Media Direct Activation Pipeline

One Snowflake audience config fans out to six ad platforms, swapping third-party identity middleware for a direct path we own.

6 ad platforms · 100K IDs/chunk
02 /

RMN analytics & performance reporting

9 systems

Turning ~20 Snowflake tables into self-serve performance answers for a $110M media program.

Weekly brand performance review with branded header, watchlist, AI exec summary and KPI tiles
RMN ANALYTICS

Brand Performance Review

Every Monday one command turns the whole 13-brand RMN book into a client-ready review, with one ACTION verb per brand.

5 AI passes · ~8,200 LOC
WBR Prep landing page showing all RMN channels at a glance
RMN ANALYTICS

WBR Prep Generator

The weekly Business Review prep runs as one command now and ships a shareable, Petco-branded site the meeting opens together.

5 RMN channels · 7 tables
RMN ANALYTICS

Brand Benchmark Report Generator

One command turns a brand's category into a client-ready RMN investment pitch, backed by live Snowflake numbers. The real reports stay internal.

3 budget tiers · 24 tactic maps
B&M Weakness Brief headline finding and key findings, generated from code
RMN ANALYTICS

B&M Weakness Brief + Customer Intelligence

One command turns raw sales and competitive-pricing tables into a brief on where in-store revenue leaks, and why.

5 datasets · volume/price/mix
Omniture clickstream dashboard with traffic overview and KPI strip
RMN ANALYTICS

App Traffic + Promo Analytics Workbench

Dug through Petco's 3-billion-row Adobe clickstream and shipped a VP-facing dashboard tying app behavior to coupon and promo spend.

~3.07B rows · ~30 charts
Snowpark targeting-performance dashboard comparing keyword and category ROAS
RMN ANALYTICS

Targeting Performance Dashboard

A self-serve dashboard that ranks keyword, category-path and creative targeting by ROAS, CTR and spend. No SQL needed.

3 targeting dimensions
In-Snowflake creative fatigue and budget-reallocation dashboard
RMN ANALYTICS

Creative Performance Analytics

One screen scores every RMN creative, flags the tired ones, and tags each with a scale, refresh or pause call.

Stars/Cash Cows quadrant
Keyword vs category performance rolled up across roughly 175 RMN brands
RMN ANALYTICS

Keyword vs. Category Targeting Analysis

Answers whether keyword or category targeting buys more efficiency, straight from the ad server's own data, not an Excel pivot.

8,912 rows · ~175 brands
Site-served booking pattern normalizer built as Streamlit in Snowflake
RMN ANALYTICS

Site-Served Booking Insights

Normalizes site-served bookings into comparable package and category keys, the groundwork for catching two advertisers double-booking one shelf.

2 tables · exclusive PDP inventory
03 /

AI for content, SEO & analysis

6 systems

LLM systems that write, grade and govern content and analysis at retail scale, grounded against real data so the output ties back to a source.

SEO metadata character-count compliance across generated pages
AI · CONTENT & SEO

Content SEO/AI Toolkit

An LLM pipeline that rewrites, re-titles, tags and re-slugs 100K+ Petco pet-care pages, with side-by-side review before anything ships.

~102,600 slugs · 8+ models
25-article A/B test comparing conservative versus rich AI rewrites head to head
AI · CONTENT & SEO

Petco.com Site Review + Content-Refresh Pipeline

Works out why Petco doesn't rank for "dog food", then runs the AI pipeline that fixes the content at scale and pushes it live.

31 modules · 971 pages mapped
100 top-volume articles enriched and staged for human review
AI · CONTENT & SEO

Petco Content Engine

A human-in-the-loop content supply chain with a hard safety floor, so a pet-health page can't ship a made-up medical claim.

643-article corpus · 6-cite cap
The RECOMMEND_KEYWORDS_FOR_SKU stored procedure with candidate pools and weighted scoring
AI · CONTENT & SEO

Snowflake-Native Keyword Recommender

Feed it a SKU, get 20 ranked search-ad keywords that blend onsite-search volume, past ad ROAS and LLM candidates.

5 fused signals · 20 keywords
Onsite RMN report with exec summary, KPI highlights and a KPI trends chart
AI · CONTENT & SEO

AI RMN Performance Analyst

Drop in a month of RMN report PDFs and get back a narrative locked to a 28-term whitelist, so every metric and channel traces to the source.

28-term whitelist · 422 on leak
Model leaderboard ranking eight models on intelligence, cost, speed and overall
AI · CONTENT & SEO

RMN Model Evaluation Engine

An "LMArena for Petco RMN": a harness and leaderboard that grade every proxy model on the team's real retail-media tasks.

9 models · 6 judge dimensions
04 /

Booking, inventory & data ops

5 systems

Swapping spreadsheets and manual pulls for databases, ETL and tooling the media operation actually runs on.

BOOKING & DATA OPS

RMN Inventory Manager + Media-Plan Pipeline

A booking platform where the database itself won't let you double-book, plus 200+ briefs turned into media-plan training data.

Postgres GiST exclude constraint
Interactive Mediatool/RMN API documentation report with sidebar navigation
BOOKING & DATA OPS

Camphouse: Media Plan Sync & Change Alerting

Every morning a per-brand card shows exactly what moved in the media plans overnight and whether it still ties out.

120+ brands · daily 07:00 PT
Snowflake RMN schema explorer for read-only table discovery
BOOKING & DATA OPS

RMN Schema Explorer

A self-serve catalog that lets the RMN team search, tag and join Snowflake tables without writing information_schema queries by hand.

5 auto tags · join builder
Brand planning calendar showing 220 brands by archetype with start-planning-by dates
BOOKING & DATA OPS

Launch Timeline: an SLA engine for go-lives

Type a launch date, get every drop-dead handoff date plus a live view of which booked campaigns are already slipping.

220 brands · 59 unit tests
BOOKING & DATA OPS

Store Address Geocoder

A messy spreadsheet of 777 store addresses goes in; clean city/state/ZIP with a match-confidence score comes out.

776/777 geocoded · stdlib only
05 /

Product & innovation prototypes

4 systems

Fast prototypes that pressure-test a product idea before it costs real budget.

The associate's tablet brief with talking points, safety flag, actions and bundle
PRODUCT PROTOTYPE

Pal Pilot: One AI Brain, Every Petco Surface

Closes the gap between what the warehouse knows and what a floor associate knows, in one tablet-sized brief that sticks to the facts.

14 tables · 4 Zod-schema tools
AI product render asset used in the Product Pulse catalog
PRODUCT PROTOTYPE

Petco Product Pulse

An internal storefront where employees shop with virtual Petco Bucks, so the company can rehearse price A/B tests without real risk.

3 A/B variants · SHA-256 buckets
Petco Bucks storefront, a play-money share-of-wallet MVP built in Streamlit
PRODUCT PROTOTYPE

Petco Bucks Pop-Up Market

A play-money fake store that turns a brand-strategy question (how shoppers split a fixed budget) into a controlled experiment.

10 tables · share-of-wallet view
Engine output showing a full Gold-tier brand-page recommendation
PRODUCT PROTOTYPE

E-PLP Brand Page Creative-Brief Intake

Turns a vendor's vague "make us a brand page" into a tiered, priced, position-ordered brief in the strategy queue.

3 tiers · ~9-module catalog
06 /

Ad-hoc strategic analyses

4 systems

One-off deep analyses that answered a specific high-stakes question for leadership.

Executive summary and top findings of the Core Customer report
AD-HOC ANALYSIS

High-Value Customer Intel & Identity Recovery

Segments 1.5M+ high-value loyalty customers and proves a way to recover 3.6M "invisible" guest-checkout customers hiding behind one catch-all ID.

1.54M core · 26 queries / 7 gates
Pulse home screen with the full executive summary and KPIs from live Snowflake
AD-HOC ANALYSIS

Petco Pulse: Executive eCommerce Dashboard

One branded screen joins revenue, funnel, RMN media, fulfillment and inventory for the VP of Digital.

20 DASH_ tables · 18 routes
Promo review masthead, thesis and bottom-line-up-front recommendation
AD-HOC ANALYSIS

Promo Performance Review: MDW vs President's Day

A margin-first, like-for-like read on two sitewide promos that shows "10% vs 20% off" isn't a topline call.

10 sections · 13 SQL files
Ranked private-label SKU selection for PDP imagery refresh
AD-HOC ANALYSIS

Global Image Factory SKU Selection

A reproducible model picking which 330 of ~1,130 private-label SKUs get the next creative-imagery refresh.

330 of ~1,130 · 47 tests
07 / SELECTED WORK

Selected
Work

Four builds of my own, same engine as the Petco work. Build the entities, embed them, segment, keep the AI honest, ship it. Different problems, same way of working.

WORK 01 · PRIVATE BUILD

vox.

Jellyseerr, but for audiobooks. A Next.js discovery front-end and a FastAPI pipeline turn one Request click into a quality-scored, multi-source acquisition hunt, then drop a finished .m4b straight into Audiobookshelf.

01 Problem → system

Movies and TV have Jellyseerr. Audiobooks had no nice front door. vox mirrors an Audiobookshelf library, builds recommendation rows from real listening history, and runs download, convert, organize, import with a live timeline per request.

A tiered routing engine fans out to per-source workers. After the download it runs auto-m4b, then an LLM organizer, then an ABS rescan, then an import watcher that flips the request to complete.

02 What's clever
  • Tiered parallel routing. Fast sources (LibriVox and indexers) come back first via asyncio.gather. The slow 11-site scraper fan-out waits for tier 2, so preview time tracks the slowest single source instead of all of them added up (~90s, bounded).
  • Quality-score ladder. abs_existing 100 > librivox 90 > indexer 80+seeders > scraper 50 > TTS 40, so a TTS fallback never outranks a real commercial source.
  • Exact-edition token matching. Every "(Full-Cast)" or "[Unabridged]" modifier has to be there before a match counts. Broadening the search is opt-in. It never happens on its own.
  • Ebook-format guard, which came straight out of a real prod bug. An ebook-token blocklist plus a 5 MB audio floor, so a request can't land as a 176 KB .epub and call itself complete.
  • Append-only event log drives the live timeline. Zero exact matches gives you an honest "needs your call" state instead of a silent fallback.
SCALE ~14,400lines Python · 84 files· ~5,360lines TS/TSX · 49 files· 35Playwright specs · Chromium + iPhone-13 WebKit· 5-source routing ladder· 11routers· ~38services· 7scheduled jobs· v0.8.0in production
STACK // Next.js 14React 18TypeScriptTailwind FastAPIasync SQLAlchemy 2SQLite WALAPScheduler httpxPlaywrightDocker
FIG.05  The product · live capture
vox discovery home · Jellyseerr-style recommendation rows built from real listening history
LIVE CAPTURE · Discovery home · Jellyseerr-style rows built from real listening history. One Request fans out across sources and drops a finished .m4b into Audiobookshelf.
vox cross-source search across the library, Audible, 11 audiobook sites and torrent indexers
01Cross-source search · one query across the library, Audible, 11 sites and indexers.
vox book detail with one-click request and a multi-source picker listing live torrent candidates and seeders
02Book detail · one-click request, then a multi-source picker ranking live candidates by quality.
vox live acquisition timeline: created, routed, qBittorrent with 14 seeders, organized 11 files into Audiobookshelf
03Live timeline · created, routed, downloaded, 11 files organized into ABS.
vox requests queue showing per-source status for each in-flight request
04Requests queue · per-source status for every request still in flight.
WORK 02 · PRIVATE BUILD

leilão.

An arbitrage engine for Brazilian federal auctions. It scrapes the Receita Federal portal, reads the product off the auction photos with Gemini Vision, then runs a separate verifier that throws out made-up IDs before it works out a profit window.

01 Problem → system

The government sells off seized goods through a search-less SPA. That's 5,000+ lots per cycle, half of them with junk descriptions where the real product only shows up in the photos.

A loop runs every 6 hours on its own: scrape, AI enrichment (with the verifier), profit-window evaluator, editorial dashboard.

02 What's clever
  • Adversarial LLM verifierthe keystone. Two independent Gemini Vision passes. Pass 1 pulls out strict JSON. Pass 2 is a separate call with a different prompt that sees ONLY the proposed answer, not pass 1's reasoning, so you can't prime it. In practice ~75% of pass-1 enrichments hold up. The 25% it rejected were genuine false positives, and it caught a Denon model mismatch a human had missed. When it rejects, it covers everything downstream: it clamps confidence, falls back to regex, and shows a red DESCRIÇÃO NÃO VERIFICADA badge.
  • Profit-window evaluator. Recomputes margin at the marketplace MIN, MEDIAN and MAX instead of trusting one brittle number, winsorizes the upside after a real outlier, and puts the worst-case net in red.
  • Reverse-engineered the SPA's 3 undocumented JSON endpoints. MIME-repair (magic-number sniffing) for a CDN that served images as octet-stream, and an image reorder by classification so the product photo ends up as the cover.
LIVE DASHBOARD 95editais· 12,759lots· 420.5%avg margin· ~75%verifier survival· 78tests passing· ~$10to enrich the full ~10k dataset once (Gemini 2.5 Flash)
STACK // Python 3.11FastAPIPydantic v2SQLAlchemy 2 Playwright + httpxgoogle-genai · gemini-2.5-flashCelery + Redis sentence-transformersDocker
FIG.06  The adversarial verifier, on screen
leilão lot detail marked VERIFIED with a green VERIFICADO POR IA badge, the product photo promoted to cover, and a three-column profit window
AVERIFIED · green "VERIFICADO POR IA", product photo promoted, 3-column profit window.
leilão lot detail marked REJECTED · the verifier's veto shown as a red DESCRIÇÃO NÃO VERIFICADA badge
BREJECTED · the verifier's veto on screen: red "DESCRIÇÃO NÃO VERIFICADA".
VERIFIEDREJECTED ·The adversarial verifier, on screen. Two independent passes decide whether a lot is worth trusting.
leilão editorial dashboard: masthead, live stats (12,759 lots, 420.5% average margin), a FORTE-rated featured MacBook Air lot with its R$3,894 to R$17,182 profit window, and a varied lot feed
LIVE CAPTURE · Editorial dashboard · live stats, a FORTE-rated featured lot with its profit window, and the daily feed tagged FORTE / COMPRAR / TALVEZ.
WORK 03 · PRIVATE BUILD

Taste Observatory.

One palate read across every kind of media. It pulls in books, music, notes, browsing and video, has an LLM boil each item down to topics in one shared vector space, and draws the shape of my taste across an Atlas, trend shifts, a streamgraph, a flow map, and an AI sommelier.

01 Why it matters

This is the same muscle as the Petco audience work: build entities, embed them, score and segment. Here it's pointed at one person instead of a brand.

It pulls in 8 sources, has an LLM enrich each item, and lands everything in one shared vector space, so taste can be measured across media types instead of stopping at the edge of each one.

02 What's clever
  • One shared vector space across every medium (ChromaDB). A book topic and a YouTube topic land next to each other, so the Atlas and Cross-Media Flow turn up real jumps between media instead of recommendations stuck in one silo.
  • A whole observatory of views. Taste Atlas (clustered topic bars), YouTube Lens (553 watched / 267 enriched / 440 channels), an interest-evolution streamgraph, a Cross-Media Flow Sankey, and Cortex Intelligence wiring it back to a second-brain.
  • Depth-weighted, time-decayed taste with rising and fading trend detection: a 30-day half-life, a boost for active sources, and cross-source amplification.
  • Local semantic search on my own GPU. One query runs across screenshots, audiobooks, notes and sessions at once, because they all sit in the same embedding space.
03 How the data capture works

Ingest. 8 source connectors pull my real activity: Audiobookshelf (audiobook listening), Kavita (manga and light-novels), TriliumNext (notes), Work Notes, browser sessions, Brave history, YouTube (watch history), and Spotify. A scheduled APScheduler cron fleet pulls on a cadence into one SQLite store.

Enrich. An LLM tags each new item through a LiteLLM proxy: 3 to 5 lowercase topics plus a cluster per item, batched and cached. YouTube history gets its own pass, the YouTube Lens: 553 watched · 267 enriched · 440 channels.

04 From items to a taste profile
  • Embed. Everything lands in one shared ChromaDB vector space, so a book topic and a YouTube topic sit near each other. That closeness is what makes the cross-media jumps work, and what lets a local semantic search run on my own GPU.
  • Derive. A depth-weighted, time-decayed taste profile with rising and fading trend detection, a topic co-occurrence graph, and a "Cortex" psyche model (correlation and lag structure) that ties taste back to a second-brain.
  • Seen at real scale. ~10k items unified across 8 sources, 449 cross-source topics, and 553 YouTube videos / 440 channels enriched. Real numbers off a live store, not a demo seed.
SCALE 8source connectors· ~10kitems unified· 449cross-source topics· 553videos / 440 channels enriched· 8live views
STACK // PythonFastAPIChromaDBLiteLLM SQLiteAPSchedulerPWADocker
FIG.07  The product · live capture
Taste Observatory Overview tab: a Taste Atlas of clustered topics, the YouTube Lens, trend shifts, an interest-evolution streamgraph, and a Cross-Media Flow map over roughly 10,000 real items
LIVE CAPTURE · Overview · the Taste Atlas of clustered topics, YouTube Lens, trend shifts, an interest-evolution streamgraph, and a Cross-Media Flow map.
FIG.07b  All eight views · a walkthrough
Taste Observatory Build tab: a playlist builder with mood presets (Rising topics, Deep cuts, Comfort zone) and an energy-arc slider
01Build · a playlist builder with mood presets (Rising topics, Deep cuts, Comfort zone…) and an energy-arc slider.
Taste Observatory Discover tab: time-aware recommendations and a live Taste Drift of rising and fading interests
02Discover · time-aware recommendations and a live Taste Drift of rising and fading interests.
Taste Observatory Reflect tab: Cortex Intelligence, a psyche model reading the correlation and lag structure of media behavior
03Reflect · Cortex Intelligence, a psyche model that reads the correlation and lag structure of my media behavior.
Taste Observatory Watch Later tab: an AI-triaged backlog of 535 videos sorted into Watch, Skim and Skip, with about 266 hours saved
04Watch Later · an AI-triaged backlog. 535 videos sorted into Watch / Skim / Skip, ~266h saved if I trust the calls.
Taste Observatory Search tab: local semantic search across screenshots, audiobooks, notes and sessions, running on the owner's own GPU
05Search · local semantic search across screenshots, audiobooks, notes and sessions, all on my own GPU.
Taste Observatory Wrapped tab: a year-in-review showing 507 hours listened and 77 books finished across 80 days
06Wrapped · a year-in-review. 507 hours listened, 77 books finished across 80 days.
Taste Observatory Sommelier tab: a what-to-read-next view with 20 series mid-flight and guidance on what to finish, resume or start, from real progress
07Sommelier · "what to read next". 20 series mid-flight, and what to finish, resume or start, off my real progress.
WORK 04 · OPEN SOURCE · CIVIC

sponsored.

Who Bought Your Politicians? A campaign-finance transparency engine that joins FEC contributions, lobbying disclosures and congressional votes into a "Pay to Play" alignment score, drawn as D3 money-flow diagrams for every member of Congress.

01 Problem → system

Campaign-finance, lobbying and roll-call data are all public, but they sit in separate systems with IDs that don't line up.

A 3-tier stack (PostgreSQL, async Python ETL, Next.js/D3) stitches them together on a BioGuide-ID crosswalk to answer one question: when an industry that funds a legislator lobbies a bill, how often does that legislator vote its way?

02 What's clever
  • A NASCAR-style donor card drawn as a D3 treemap on a jersey, where each sponsor patch is sized to the dollars donated, plus a D3-Sankey money-flow (industry to PAC to politician to vote).
  • The alignment engine, a 5-step SQL pipeline that computes raw and dollar-weighted alignment %, with confidence tiers, ranked across all 535 members.
  • Honest on purpose. A loud correlation-not-causation disclaimer built into the data model, and auto-generated shareable OG cards.
SCALE 535members of Congress· 16,904bills· 5public data sources · OpenFEC, Congress.gov, OpenSecrets· ~7,900LOC· 75tests· CI+ Dependabot
STACK // Python 3.12FastAPIasyncpgPostgreSQL 16 Next.js 16React 19D3 + d3-sankey @vercel/ogDocker
FIG.08  The product · live capture
sponsored editorial landing page · the auction-block framing for Who Bought Your Politicians
LIVE CAPTURE · Editorial landing · the auction-block framing. The NASCAR donor card and the industry to PAC to politician to vote D3-Sankey draw per member off the alignment pipeline.
Straight talk: this capture has 535 members and 16,904 bills loaded, but the FEC dollar pipeline isn't loaded yet, so the donor cards and Sankey are empty here.
08 / HOMELAB AS R&D ENVIRONMENT

A private R&D setup built to run without me.

This is where the systems thinking gets beaten up before it ships at work. It's a proving ground. Two mini-PCs run the whole estate on their own, fully observable, and they ping me when something drifts. Same instincts as the enterprise builds, minus the budget and the team. It either runs without me or it doesn't. So far it does.

76 containers· 34 workflows· 1,254 Home Assistant entities· 2 nodes
SNAPSHOT · JUL 2026 uptime 99.9% · 13 of 76 services shown
AI4
AI Hub52-tool agent console
BrainTrilium → vector memory
KNOWknowledge retrieval layer
VoiceSTT + TTS relay
MEDIA3
Audienceaudiobook pipeline
Medialibrary + transcode
NotesTriliumNext notebook
HOME3
Home1,254 HA entities
Inventorystock tracking · degraded
TasksVikunja queue
INFRA3
n8n34 workflows
Budgetfinance automations
Sertãoscheduling service
09 / THE ARC

São Paulo systems.

Q1 Where did it start?
São Paulo. Brazilian upbringing, a family that prized curiosity and getting things to actually work. I was always pulling stuff apart to see how it ran.
Q2 What did you study?
Political science at UC San Diego. Basically how power, persuasion and organization actually work. It's been the operating model under everything since.
Q3 What came next?
Political campaigns, up to the national level. Running a campaign is systems engineering in a different costume: data pipelines, audience segmentation, message tuning, fast calls under pressure. I was already doing the work. I just didn't have the words for it yet.
Q4 Why marketing?
I left campaigns before the burnout took the thing I loved about politics with it. Marketing runs on the same engine, audience intelligence, persuasion systems, data-driven strategy, just without the existential weight.
Q5 What do you actually run today?
Petco's retail media program, about $110M a year across onsite, offsite and in-store. Everything on this page exists because I got tired of how slowly that program ran on other people's tools.
Q6 What happened at Petco?
I shipped AudienceBuilder and retired LiveRamp. Somewhere in that build, making the tools became the job.
Q7 When did the infrastructure take off?
Once LLMs made it possible to build without a formal CS background, by thinking in systems instead of syntax. Now: 76 containers, 34 workflows, 1,254 entities, two small machines.
Q8 What are you building toward?
Practical autonomous systems. They watch a process, learn the shape of it, and act without me babysitting. Not AGI. Just tools that get sharper the longer they run.
10 / STACK

What I build with.

Cluster A
Audience & Data
segmentation identity / activation Snowflake JSON→SQL compiler Pydantic DSL HyperLogLog counts star-schema modeling
Cluster B
Product & Frontend
React (Vite) TanStack Query shadcn/ui campaign / pacing analytics attribution ad-platform activation
Cluster C
AI & Infra
Claude / AnthropicVertex FastAPI · SSE streaming grounded tool-calling GCP Cloud Run Docker n8n Home Assistant
STACK // React (Vite)·TanStack Query·shadcn/ui·FastAPI·Snowflake·Claude / AnthropicVertex·GCP Cloud Run·Docker
11 / CONTACT

let's build something.

Open to senior retail-media, marketing-engineering and AI-systems roles. I usually reply within a day.

EMAIL ME open to the right role