Amir TabatabaeiWork with me
JWTSESSIONGATEHTTPSSQLS3APPENDDEPLOYAgency PanelSession boundaryRole + plan gateCore APIPostgresObject StorageAudit LogCI
İzmir — open to work

Amir Tabatabaei

Backend & Full-Stack Engineer · İzmir / remote

I build backend systems, full-stack products, and practical AI/ML automation.

Stack

Backend

  • Python
  • FastAPI
  • Django
  • PostgreSQL
  • SQLAlchemy
  • Pydantic
  • JWT / OAuth2

Frontend

  • TypeScript
  • React
  • Next.js
  • Jinja2
  • Tailwind CSS

Also

  • C# / .NET 10
  • SQL Server
  • OpenAPI contract-first

AI / ML

  • PyTorch
  • OpenCV
  • CNN / ResNet
  • RAG
  • Diffusion Models
  • ControlNet

DevOps

  • Docker
  • GitHub Actions
  • Linux
  • AWS (S3, EC2)
  • MinIO
  • Sentry

Testing

  • pytest
  • xUnit
  • Vitest
  • Playwright

Selected work

Click to open
the projects

Shipped & runningLive appHemaStoreA Telegram Mini App and an admin panel over one APICheckout snapshots price and decrements access slots inside the same order transaction.FastifyReactPrismaPostgreSQLRead the case study
Completed, cancelled before launchInteractive demoEVOField Merchandising Route PlannerSchedules are computed from a baseline plus expiring patches instead of mutating the baseline..NET 10ReactTypeScriptSQL ServerRead the case study
DeliveredInteractive demoSadafB2B Visa Capacity PlatformPer-viewer agency visibility is derived from routing path position, not stored as a column.FastAPIJinja2PostgreSQLJWTRead the case study
Shipped & runningLive siteЯB WrapPersian RTL site, built to be found from inside IranOne services constant renders both the page copy and the JSON-LD, so the two cannot disagree.Next.jsTypeScriptGSAPTailwindRead the case study
Study project, never deployedEDIPHybrid retrieval with permissions in the queryPermission predicates are composed into retrieval queries before chunks reach the model.FastAPIpgvectorCeleryRedisRead the case study
Study project, never deployedShelf ScannerCounting objects that keep flickeringCounting happens on a band with a dwell, not a line, so a jittering box is not counted twice.SwiftCoreMLYOLOByteTrackRead the case study
Study project, never deployedSignature VerificationWhat the evaluation was hidingSplits are writer-disjoint, so the reported number is not memorised handwriting.PyTorchResNet18Grad-CAMscikit-learnRead the case study
Study project, never deployedCIFAR-10 ClassifiersAn 86× larger network that lostThe ImageNet stem throws away a 32×32 image before the first residual block; the CIFAR stem keeps it.PyTorchtorchvisionResNet18scikit-learnRead the case study
Study project, never deployedNotebookSmart PDF AssistantWhere the retrieval quietly stopped answeringRetrieval was capped at the top three of fifteen documents, which is where the answers stopped.GeminiPyMuPDFChromaDBPythonRead the case study

Experience — Freelance Backend Engineer, İzmir

Aug 2026 — present

HemaStore — Digital Goods Commerce Platform

Replatformed my own Telegram shop as a TypeScript monorepo: Mini App, RTL admin, Fastify API, bots, one Postgres. Checkout snapshots the price, decrements a capacity slot and writes the notification to an outbox, all in one transaction.

FastifyPrismaPostgreSQLReactgrammY
Jul 2026 — present

EVO — Field Merchandising Route Planner

Schedules are a stable baseline plus expiring patches, so a temporary change reverts itself instead of waiting for someone to undo it. Contract-first: the backend emits the OpenAPI spec that generates the typed client.

.NET 10ReactTypeScriptPlaywright
Oct 2024 — Dec 2025

KohaApp — Tournament Management Platform

Paid engagement. Bulk ID-card generation replaced the manual card-making step for organisers. Maintained through December 2025.

FastAPIDockerGitHub ActionsSentry
Mar 2025 — Aug 2025

Sadaf — B2B Visa Capacity Platform

Built the agency-facing service against a second team's backend. The sending agency is derived from the viewer's index in the routing path rather than stored, so one row renders a limited view per agency.

FastAPIJinja2JWTPostgreSQL
Sep 2024 — Mar 2025

RashApp — Product Warranty & Customer Platform

Owned the backend end to end — accounts, sign-up and login verification over SMS, user CRUD. Reached completion, then cancelled by the client before launch.

FastAPISQLAlchemyPydantic

What I own

DER

Derived state

Per-viewer visibility from a routing path, schedules as baseline plus expiring patches. Computed at read time, so there is no stored copy to drift.

TX

Transaction boundaries

Two credit deductions and two status changes in one commit; capacity slots decremented inside the order, so concurrent checkouts cannot take the same seat.

BOX

Transactional outbox

Notifications written in the same transaction as the order, then drained with claim, retry and reclaim of rows stranded by a dead worker.

SEAM

Service seams

OpenAPI-generated clients, so a change to a response shape fails the build rather than the browser. Plus a complete fake of a backend that did not exist yet, deleted once it did.

ENT

Layered entitlement

Subscription tier, then feature rows carrying a minimum tier in the database, then role and page permission. Selling a feature is a row, not a deploy.

EVAL

Measurement that holds up

Writer-disjoint splits, held-out numbers, and retrieval that admits what it missed, even when the honest number is lower.

Work with me

Tell me what's still manual.

Repetitive, hard to track, done by hand — I want to hear about it. Takes two minutes. No pitch, nothing to buy.

Start hereEnglish · Türkçe · فارسی