Skip to content
View sdamianiw's full-sized avatar

Block or report sdamianiw

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sdamianiw/README.md

Sebastián Damiani Wolf

Applied AI engineer, chemical engineer by training. I build agentic systems, RAG pipelines and LLM automation for industry and energy, and I ship them myself, down to the parsers and the Docker files, into the environment where the data lives: the forward-deployed part of the job. Currently at Dominion Global in Essen, Germany, a Chilean in German industrial contexts.

Selected work

valid-evals: Checks whether an AI agent's eval run was valid before its score counts. The decision rule is hashed before any run, each Claude Code or Codex trace is checked without a model for a wrong model, a leaked answer key or a human turn, and two judges from different vendors must agree for a case to count.
Receipt: on 12 real Claude Code runs it flagged none of the 10 clean runs and caught both planted cheats with the right cause; in 6 of the 10 the agent's test command was denied, which a pass rate hides. A mutation corpus pins coverage per failure cause.
Stack: Python standard library only, CI on Linux, macOS and Windows with Python 3.10 to 3.13. MIT.

chemtrace: Local-first Scope 1-2 carbon accounting for German industrial SMEs facing CSRD reporting. It parses energy invoices and SAP CSV exports, computes CO2e, and answers questions over the data.
Receipt: runs with zero cloud dependencies and zero API keys; exports to the EFRAG VSME Digital Template v1.2.0; 155 tests gate every PR.
Stack: Python 3.11, Ollama (llama3.2:3b), ChromaDB, all-MiniLM-L6-v2 embeddings, Docker Compose. MIT.

pollagol-sim: Dixon-Coles bivariate Poisson forecaster for the 2026 World Cup. The optimizer maximizes expected points under the pool's scoring rubric instead of picking the modal scoreline.
Receipt: finished 1st of 27 in the pool, 410 points against 386 for second, over 104 predicted matches; backtest verdict PASS (delta +0.044, n=5402), and the ledger records that the frozen model alone would have placed 2nd, so the human-gated overrides made the difference.
Stack: Python, common-random-numbers Monte Carlo on a fixed seed, The Odds API ingest, 269 tests.

chilecompara: Cross-retailer smartphone price comparison for Chile. The scraping is the easy half. The real problem is deciding that two differently worded listings are the same phone, with rules general enough to match a model that does not exist yet.
Receipt: 3 retailers (Falabella, Paris, Ripley) unified into one catalog by 7 containers, rebuilt from raw offers on every event so partial-state bugs cannot exist; 978 Go LOC, 685 TypeScript LOC.
Stack: Go unifier and API, TypeScript + Playwright scrapers, Redis as the only datastore, nginx portal, Docker Compose.

greenreceipt: React Native app for the German market. Photograph product packaging, OCR it on-device, classify the environmental claims into Vague / Verifiable / Unsupported / Substantiated.
Receipt: OCR runs on-device via ML Kit, so no images leave the phone; the OpenAI key lives only in the Edge Function; the scans table is RLS deny-all for anon; 20 scans/device/24h enforced server-side.
Stack: Expo SDK 54, React Native 0.81.5, TypeScript, Supabase Edge Function calling gpt-5-nano through the Responses API with a strict JSON schema.

How I work

  • Numbers in my READMEs come with the command that produces them. chilecompara's catalog counts carry the date they were measured and a five-run spread, because the number moves between passes and a single figure would imply it does not.
  • pollagol-sim's out-of-domain backtest (n=5402, +0.044 points per match, 95% CI excludes zero) ran before the live season, not after.
  • I default to local and reproducible where the domain allows it: chemtrace runs entirely on the user's machine, with emission factors in a JSON file, one entry per energy type with its source and year.

Elsewhere

LinkedIn: Sebastián Damiani Wolf
Essen, Germany.

Pinned Loading

  1. valid-evals valid-evals Public

    Was the agent eval run valid before its score counts? Sealed rule, trace invalidity checks, two vendor jury. Python stdlib.

    Python

  2. chemtrace chemtrace Public

    Local-first Scope 1-2 carbon accounting for German industrial SMEs. Parses energy invoices and SAP CSV exports, exports the EFRAG VSME Digital Template. No cloud, no API keys.

    Python 1

  3. pollagol-sim pollagol-sim Public

    Deterministic Dixon-Coles score predictor that won a 27-person FIFA World Cup 2026 prediction pool, rank 1/27.

    Python 1

  4. chilecompara chilecompara Public

    Live price comparator for smartphones across Falabella, Paris and Ripley (Chile): scrapers, Go unifier, and portal

    Go

  5. greenreceipt greenreceipt Public

    Expo app that photographs packaging, OCRs it, and classifies sustainability claims via Supabase Edge Function + OpenAI.

    TypeScript 1