Software Engineer

Arian Boukani

I build real-time backends and AI pipelines.

  1. 01
    SevenTask
    Real-time task app for teams
  2. 02
    OptiServe
    Tunes serverless ML pipelines
  3. 03
    Landline
    Voice agent for apartment hunting
  4. 04
    Guardian
    Health agents on a local model
  5. 05
    BakeryPilot
    AI assistant for bakery operations
MSc, Systems & Performance Engineering 2arian3.github.io github.com/2arian3

01Technical co-founder · 18 months live

SevenTask

A real-time task and project app for teams.

  • Boards update live when a teammate changes something
  • Time tracking on every task
  • Chat and calendar are built in
  • Each task keeps its full edit history
200+
monthly active users
AngularASP.NET CoreSignalRSQL ServerEF CorePrometheus
A board with one team's own columns.
The board view, from the product.
SevenTask · System design

How edits reach every open board

flowchart TB
  subgraph CL["Clients"]
    direction LR
    W["Angular SPA · SSR"]
    A["Admin app"]
  end
  subgraph API["ASP.NET Core"]
    direction LR
    R["REST · field-level writes"]
    H["SignalR hub · typed events"]
  end
  subgraph DATA["Data"]
    direction LR
    D["Domain package · EF Core"] --> DB[("SQL Server")]
  end
  CL --> API
  API --> DATA
  • Fields save separately, so two people can edit one task.
  • SignalR pushes each change to every open tab.
  • Cards move right away, and move back if saving fails.
SevenTask · Workflow engine

Each team sets up its own columns

flowchart TB
  subgraph G["Guards, in order"]
    direction LR
    G1["Task exists"] --> G2["Caller has access"] --> G3["Column is on this board"]
  end
  subgraph W["One transaction"]
    direction LR
    W1["Update the task"] --> W2["Record the move"] --> W3["Log the event"]
  end
  G --> W
  • Pilot teams all wanted different columns, so they're stored as data.
  • Each project or team can have its own set.
  • The server rejects a move into another board's column.
  • Every move is logged with who made it and when.
SevenTask · Demo

A tour of the live product

Demo Tasks, teams, chat, calendar docs/seventask-demo.gif
  1. My tasks, as a list and as a board.
  2. Team pages with departments and project dependencies.
  3. Direct messages and the shared calendar.

02MSc thesis · solo

OptiServe

Chooses memory size and model for serverless ML pipelines.

  • Runs your Lambda functions at different memory sizes
  • Handles pipelines with branches and retries
  • You pick the goal: speed, cost or accuracy
103,680
possible setups; the search tries under 200 of them
PythonAWS LambdaStep FunctionsCloudWatchSciPymoto
Sweet spot Memory → Cost per run
Cost per run falls, then rises, with memory.
The chosen setup, checked against brute force.
OptiServe · System design

How OptiServe picks a setup

flowchart LR
  subgraph ON["Online · real AWS"]
    direction TB
    L["Live Lambda"] --> P["Profiler"] --> F["Curve fit"]
  end
  subgraph OFF["Offline · pure math"]
    direction TB
    W["Workflow model"] --> O["Greedy optimizer"] --> R["Best config"]
  end
  ON -->|"lookup table"| OFF
  • It runs the real function at several memory sizes.
  • Fitted curves predict latency and cost for the whole pipeline.
  • A greedy search then follows the critical path.
  • Only the first step calls AWS. The rest runs offline.
OptiServe · Demo

The search, scored against brute force

Demo Pipeline, trade-off, search, brute-force check docs/optiserve-demo.gif
  1. The pipeline: six Lambda steps with branches and retries.
  2. Set a budget and a quality floor.
  3. Watch the search pick a setup, then the brute-force score.

03Boson AI hackathon · data, ranking, orchestration

Landline

A voice agent that phones listing agents for renters.

  • Call it in any language and say what you want
  • A live map of Toronto listings re-ranks as you talk
  • After you hang up, it phones every place you picked
  • Every fact on the map shows who said it
3rd
place out of 30 teams
Higgs RealtimePythonFastAPIPostGISTwilioNext.js
A listing card after the agent called.
Call results landing on the live map.
Landline · System design

Two flows, joined by one frozen call plan

flowchart TB
  subgraph F1["Flow 1 · the renter's call"]
    direction LR
    R["Renter · phone or browser"] --> CO["Concierge · Higgs Realtime"]
  end
  subgraph MINE["Plain code · my part"]
    direction LR
    O["Orchestrator · one writer per session"] --> M["Matcher · ranks listings"]
    M --> DB[("Postgres + PostGIS")]
  end
  subgraph F2["Flow 2 · the listing calls"]
    direction LR
    D["Dispatcher"] --> CA["Callers x N · Higgs Realtime"] --> AU["Auditor · quoted facts only"]
  end
  F1 -->|"tool calls"| MINE
  MINE -->|"frozen call plan"| F2
  • Models handle speech. Code ranks, dials and books.
  • The renter's call ends with one frozen call plan.
  • Ranking 4,000 listings takes about 2 milliseconds.
  • A fact shows only with the agent's exact words.
Landline · Demo

The live map while the calls run

Demo Map re-ranks, calls go out, results land docs/landline-demo.mp4
  1. A lower budget re-ranks the numbered pins.
  2. After the hang-up, the picked places are called at once.
  3. Results land: a hidden fee, a scam flag, a booking.

04NVIDIA Spark Hack Toronto · model layer

Guardian

Moved a six-agent health app onto one desktop GPU.

  • A watch tracks heart rate and detects falls
  • Agents talk to the patient through the watch
  • No patient data goes to the cloud
30B
parameters, about 3B active per token
TensorRT-LLMNVFP4Nemotron NanoFastAPILangGraphDocker
Each token uses only a few experts.
The dashboard as it calls 911.
Guardian · System design

All model calls go through one interface

flowchart TB
  C["Watch · phone · web"] --> APP
  subgraph APP["App · built by the team"]
    direction LR
    A["FastAPI + router"] --> G["6 agents"]
  end
  subgraph MINE["Model layer · my part"]
    direction LR
    S["LLM interface"] --> T["TensorRT-LLM · NVFP4"]
    S -.-> O["Cloud API"]
  end
  APP --> MINE
  • No agent imports a vendor's library.
  • 4-bit weights: ~16 GB instead of ~60 GB.
  • Moving from cloud to local was a config change.
  • The memory budget leaves room for a second model.
Guardian · Demo

A fall on the watch becomes a 911 call

Demo Vitals, a fall, a check-in, a 911 call docs/guardian-demo.gif
  1. The watch streams heart rate, and risk rises.
  2. After a fall it asks "Are you okay?"
  3. No answer, so it calls 911 and the family.

05TMLS Hackathon · data, proxy, deploys

BakeryPilot

An AI assistant for a bakery supply chain.

  • Ask about stock and orders in plain English
  • Agent changes wait for someone to approve them
FastAPILangGraphPostgreSQLNginxNext.jsGitHub Actions
An agent's change, waiting for approval.
Orders flowing across the supply map.
BakeryPilot · System design

The agent uses the same API as people

flowchart TB
  subgraph REQ["Ask"]
    direction LR
    U["Operator"] --> N["Nginx"] --> B["FastAPI"]
    B <--> A["LangGraph agents"]
  end
  subgraph GATE["Approve"]
    direction LR
    C["Action card · pending"] --> H["Person approves"] --> D[("PostgreSQL")]
  end
  REQ --> GATE
  • Agents get no direct database access.
  • A change the agent wants waits as a pending card.
  • Approving saves the change and its audit record together.
  • Postgres triggers stop anyone editing history.
BakeryPilot · Demo

The supply map and the copilot

Demo Supply map, copilot, order flows docs/bakerypilot-demo.gif
  1. The supply map flags a supplier at risk.
  2. One copilot request creates sample orders and schedules.
  3. Expiring lots show up as alerts.

Questions?

Happy to go deeper on any project.