Builds.Syed Tasavour
Builds
Experimentactive2026

finance-api

finance-api sits behind an email to bills automation: n8n calls POST /v1/ingest once per message and every decision, keep or discard, which service, which parser, whether a transaction already exists, is made here so the workflows stay thin and the logic stays in one testable place. A cheapest-stage-first pipeline keeps around 10k messages a month inexpensive on modest hardware.

Started
2026
Stack
TypeScript, Node.js, PostgreSQL, Docker, n8n, Coolify
Kind
Experiment
Source
Private

Why I built it

An email-to-bills automation needs all of its keep/discard, classify and parse decisions in one testable place rather than scattered across workflows.

What it does

  • Runs a normalize to prefilter to persist to classify to parse to transaction pipeline
  • Deterministic and idempotent on (provider, message_id), so reprocessing after a parser fix is safe
  • Stores no raw bodies: only headers, a short snippet and extracted fields are kept
  • Keeps a database-driven service registry, so adding a vendor is an INSERT, not a deploy

How it is built

A TypeScript/Node service with a Postgres store (money as numeric, not float), reachable only on the private Docker network, deployed by Coolify and driven by n8n.

How it evolved

  1. 2026
    Scoped

    An email-to-bills automation needs all of its keep/discard, classify and parse decisions in one testable place rather than scattered across workflows.

  2. 2026
    Built

    A TypeScript/Node service with a Postgres store (money as numeric, not float), reachable only on the private Docker network, deployed by Coolify and driven by n8n.

  3. 2026
    Live

    Shipped and still improving it.

Built by Syed Tasavour. More at syedtasavour.com.