LVL 09  /  SR. ENGINEER
9 YRS EXP
PLAYER ONE  /  RIO DE JANEIRO, BRAZIL
MARLON JARDIM
Software Engineer — from product to production

I build things end-to-end — from blank canvas to shipped product. Full-cycle: architecture, code, UX, and the ruthless judgement of what's worth building at all. After all this time, the hard problems are still the interesting ones.

Senior engineer with 9+ years building products end-to-end — from architecture to the moment someone actually uses it, and everything in between. I work across the full stack, but my actual job is deciding what matters, then building it.

Led Parquet Digital to a national innovation award — 300% users 60% faster 30% less dev time. Now building Monopop — starts as inventory and shopping management, ends somewhere considerably more ambitious.

Six languages. CS at UFF, incomplete — four years, teaching assistant for Databases and Advanced Java. Plans to finish.

PT — NATIVE EN — FLUENT ES FR DE JA — 初心者
⚔
MONOPOP ▶ ACTIVE ◆ SOURCE ⬇ APK

Offline-first Android app for inventory and shopping management — built for one specific person who uses it every day at work and at the supermarket. No backend, no account, no internet required. Data belongs to the user by architecture, not by policy. The name comes from monopsônio popular — the consumer, collectively, as the dominant buyer. This is the first layer of that idea made functional.

  • Full product ownership — schema design (V1→V10 versioned migrations), UI architecture, UX driven by observed behavior. Real users, real feedback loop, real consequences when things break.
  • Performance engineering, three separate wins — New Architecture/JSI eliminated the JSON bridge (cold start 3s → 1s; ~90% of total gains from this alone); WAL mode + explicit PRAGMAs eliminated lock overhead (repeat-visit load 900ms → 33ms); profiling identified a single query as bottleneck (1287ms → 5ms after indexes in V8 migration).
  • Source of truth follows observation — during v1.7 development, caught a fundamental data model flaw: the app was storing a derived value (price per unit) as canonical. User typed R$14,00 and got R$14,0000000003 back. The rounding error was a symptom; the real fix was epistemics. Corrected before shipping.
  • Spec-driven AI-assisted development — complex features fully specced before implementation. AI proposes, human decides, human reviews every diff, human owns the architecture. Faster iteration without surrendering design ownership.
REACT NATIVE EXPO SDK 54 NEW ARCH / JSI SQLITE TYPESCRIPT REANIMATED V4
Monopop in action
🔍
MONOPOP INTEL ▶ LIVE ◆ SOURCE ◆ DEMO

End-to-end market price intelligence for Rio de Janeiro supermarkets — scraper → normalization → dual-layer storage → API → full product layer. Tracks 18,000+ prices daily. Built in two weeks during a financial crunch, then kept growing: generics, cross-store comparison, shopping lists, fuzzy paste import, Monopop export. The loop is closed — know your stock, know the market, build your list, buy smarter.

  • Per-store concurrency control — asyncio.Semaphore scoped per store independently, not globally. A global semaphore lets one slow store (VTEX averages 5–6s per call, spikes to 20–30s) consume all slots and starve the others. Per-store isolation contains the damage. Result: full scrape cycle 3 hours → 6 minutes (30×).
  • Dual-layer storage — reactive SQLite cache (4h TTL, low-latency search) + PostgreSQL time-series (90-day price history). Two different problems — search latency and trend data — each solved with the right tool. One database wouldn't handle both correctly.
  • Full product layer built on the data pipeline — normalized generic pages group cross-store variants by brand and package size with price-per-unit comparison. Shopping lists support paste-driven fuzzy import (bigram + Levenshtein scoring with a mid-confidence review step before committing), variant price pinning, and one-click export as Monopop-compatible JSON. Search is stateless SSR; lists are client-side — two different statefulness requirements handled separately rather than forcing a single model.
  • Self-healing retry pipeline — GitHub Actions cron logs every scrape result to a table. The hourly retry job queries for failures in the last 24h with no later success and re-enqueues only those (term, store) pairs. No dead-letter queue, no fixed retry counter. Idempotent writes throughout.
3 STORES LIVE 18,000+ PRICES TRACKED ZERO AUTH
NEXT.JS 15 SERVER COMPONENTS FASTAPI PYTHON ASYNCIO POSTGRESQL VERCEL RAILWAY
★
PARQUET DIGITAL — MPRJ GOV · 2020–2024 ◆ SOURCE

Internal platform used by prosecutors across Rio de Janeiro state. SPA awarded 2nd place — 2021 CNMP National Innovation Award. Led architecture, CI/CD, and a design system that scaled across teams.

300% USER GROWTH 60% FASTER LOAD 30% LESS DEV TIME
REACTDJANGODOCKER CI/CDSTORYBOOKOPENSHIFTFIGMA
◆
FREELANCE SINCE 2016

Client work running in parallel with institutional employment since 2016 — landing pages, internal tools, web applications. Full ownership at the sharp end: reading what the client actually needs, writing the spec they couldn't, delivering it, and making sure the thing still works six months later.

REACTNEXT.JSDJANGO POSTGRESQLNODE.JS
REACT / REACT NATIVE
TYPESCRIPT / JAVASCRIPT
DJANGO / PYTHON
SQL / POSTGRESQL / SQLITE
SYSTEM DESIGN
NODE.JS / NEXT.JS
DOCKER / CI/CD / AWS
PRODUCT THINKING