Ehsan Barzamini — builder of software systems

I build systems; not slides, not slogans.

A bot whose message is not lost even when the workshop internet drops. An engine that writes the date of a price beside that price. A medium that publishes every day at a fixed hour. An assistant that, when it does not have the answer, says plainly that it does not.

Here every project is a system at work — with a specific technology, a specific status, and a specific publication record.


At a glance

Portfolio

01

Iranoban — Iranoban's narrative engine

A data-driven economic and construction medium with 17 workflows: the construction board, materials prices, a daily infographic, a historical series, the market pulse, and the digest. Twice a day, at a fixed hour, the reader sees the day's price with its date, understands the day's most complex number in one minimal image, and receives the day's selected summary. A low-cost question-and-answer layer: an in-memory cache, a 6-hour cache, a daily cap of 200 model calls, and injection of 10 key prices of the day from our own database. Status: version 16.10.1, active through today.

  • in-memory cache
  • 6-hour cache
  • database

Status: version 16.10.1, active through today.

Details
  • 17 workflows
  • 6-hour cache
  • daily cap of 200 model calls
  • Status: version 16.10.1, active through today.
02

Official websites

Five sites on one consistent stack (Next.js 15 and TypeScript): the holding site, the information-technology unit site, the engineering-company site (68 pages, including 58 project records with filter and live search), the Farabi product site, and the Iranoban site. Forms, full SEO, 24 passing test scenarios for Farabi. Not a ready-made template.

  • Next.js 15
  • TypeScript

Not a ready-made template.

Details
  • Next.js 15
  • TypeScript
  • 68 pages, including 58 project records
  • 24 passing test scenarios
  • Not a ready-made template.
03

Farabi / the intelligent assistant of the engineering organization

A member asks the regulations, calculates a tariff, and uses 30 engineering tools — from the seismic separation joint to the ramp slope. A four-stage question engine: topic detection, a 6-hour cache, retrieval over 23 regulation chapters and 194 verified questions, and a guard below the score threshold that says it does not have the answer. Only the Python standard library and SQLite. Status: live, versions 7.1 through 7.7.7, a daily question cap of 50, an audience of more than 13,000 member engineers. Role: designer and technical advisor.

  • Python
  • SQLite

Status: live, versions 7.1 through 7.7.7, a daily question cap of 50, an audience of more than 13,000 member engineers. Role: designer and technical advisor.

Details
  • 30 engineering tools
  • 23 regulation chapters
  • 194 verified questions
  • Python standard library and SQLite
  • Status: live, versions 7.1 through 7.7.7, a daily question cap of 50, an audience of more than 13,000 member engineers. Role: designer and technical advisor.
04

The contracting intelligent assistant

A daily supply report for each site, with the obstacle ahead and tomorrow's plan; due dates and amounts in toman and rial; a board report with the sum of checks and installments; letters, legal review, and tender. «The group is a signal, the PV is a panel», locked on the server; a durable outbound queue with retry; the only runtime dependency is pg. Status: version 4.9.12 in production.

  • pg

Status: version 4.9.12 in production.

Details
  • the only runtime dependency is pg
  • Status: version 4.9.12 in production.
05

The price engine — a team project

The construction board, twice a day, from three Iranian sites — 13 products and 57 services — with the date of that price taken from the source itself. Run figures: 1,238 prices read, 70 products and services, about 15 seconds, zero errors, 404 passing tests. Error behavior: stop publishing suspect data, a staleness label when a price is taken from the last healthy price, and a development module that does not wait for the final connection to be finished. The final connection to the parent bank is still under construction.

The final connection to the parent bank is still under construction.

Details
  • 1,238 prices read
  • zero errors
  • 404 passing tests
  • The final connection to the parent bank is still under construction.
06

The organizational calendar — a team project

An organizational calendar and events system with the roles of chief executive, manager, and member. Reminders are not lost when the app is removed, because the data stays on the organization's server. It installs like a real app without an app store: a dedicated icon, full screen, and a Persian “the internet is down” page with a try-again button. A demo from one Docker command and five services: the site, the server, Redis, the reminder queue, and the Bale bot. Status: final version R4 with 169 green tests, in demo and deployment.

  • Docker
  • Redis
  • Bale bot

Status: final version R4 with 169 green tests, in demo and deployment.

Details
  • Redis
  • 169 green tests
  • Status: final version R4 with 169 green tests, in demo and deployment.