I build and run SaaS products with LLM agents in production, solo: design, code, infrastructure and operations.
This repository is the map. The code lives in the open-source repos linked below.
hirjoaba-ioan.ro · CV · [email protected] · LinkedIn
- tool-calling-agent — tool registry with RBAC enforced at three points, writes as human-confirmed proposals, a multi-provider router with a circuit breaker, metering and an MCP server.
- 40 deterministic evals on 4 models: 88-98% overall, 100% RBAC refusal, $0.03-0.23 per full run.
- autonomy-levels-agent — a WhatsApp-style agent with off / suggest / auto autonomy. Writes need the customer's confirmation, identity comes from the channel, and dedup/loop guards run before any LLM call.
- 100% prompt-injection resistance across 4 models.
- Its evals caught a real double-confirmation bug.
- speech-pipeline-bench — a provider-agnostic STT/TTS layer with a transcript-based video editor, plus an honest Romanian/English benchmark: Whisper vs Scribe vs Gemini vs Google vs OpenAI.
- Finding: whisper-1 silently skips speech; it transcribed 186 of 271 words on one clip.
| Repo | What it demonstrates | Stack | Results |
|---|---|---|---|
| tool-calling-agent | Guarded tool use, proposals, router + breaker, MCP (stdio + HTTP, bearer/audience, RFC 9728 metadata) | TypeScript, Zod, SQLite, MCP SDK | Gemini 2.5 Flash 98% · Claude Haiku 4.5 95% · DeepSeek 93% · GPT-4.1 mini 88% |
| autonomy-levels-agent | Messaging agent safety: autonomy levels, customer-confirmed writes, server-side identity, dedup / self-echo / loop breaker / handoff | TypeScript, SQLite | Injection 100% on all 4 models; pipeline guarantees 9/9 |
| speech-pipeline-bench | Provider abstraction, async job pipeline, ffmpeg cutting + captions, WER benchmark on FLEURS | TypeScript, ffmpeg | RO WER: Gemini 3.8%, Scribe 4.3%, Groq Whisper 11.3% |
| world-pulse | Real-time global events map from free public sources | Node (zero deps), D3 | 657 RSS feeds + GDELT, USGS, GDACS, EONET |
All three agent repos have CI (lint, build, tests, offline eval replay) and README sections on design decisions and known limitations.
These run inside IFindSpec / Avocățescu, a practice-management SaaS. The code is private. The design is described below, with clean rewrites in the repos above and in snippets/.
| Agent | What it does | Autonomy | Guardrails | Numbers |
|---|---|---|---|---|
| In-app assistant | Acts on the user's CRM, calendar, finance, marketing and creative tools | Reads run immediately; every write is a confirm card | RBAC per audience + permission level, checked at exposure, in the loop and again at execution; max 10 steps | 62 tools (31 read / 31 write) |
| Messaging agent (WhatsApp/SMS) | Answers customers, books / reschedules / cancels | off / suggest / auto per business | Queue dedup, self-echo, sender identity resolved server-side, cancellations need two confirmations | 9 tools; per-iteration cost audit. Pilot on staging, not yet on production traffic. |
| Model router | One entry point for every AI feature | — | Retry with backoff on transient errors, no retry on quota errors, BYOK keys sealed with AES-256-GCM + HKDF | 29 AI purposes |
| Auto-heal agent | Fixes incidents found by a synthetic monitor | Bounded: TEST → re-verify → PROD → re-verify + watch | ≤ 3 files / 60 lines, no DB changes, path allow-list, daily budget, circuit breaker, auto-rollback — policy | Ticket-raised fixes become draft PRs for human review |
| Campaign planner | Drafts multi-step marketing campaigns | Proposal → user approval | The LLM plan is a graph that is validated, cycle-checked and repaired by code — snippet | — |
| Data import assistant | Maps messy spreadsheets from other tools | The model returns a spec, never code | It sees headers + masked samples only; transforms are whitelisted — snippet | — |
Metering: every AI call is logged with tokens, cost and latency. A daily rollup with p50/p95 per feature and model, plus an admin dashboard, is on staging and rolling out.
Development tooling: I also run my own agent infrastructure for building all of this:
- a router that dispatches tasks to orchestrator profiles;
- an orchestrator that goes investigate → plan → human checkpoint → phased execution, with lint/test/review gates and an escalation ladder across cheaper and stronger models;
- a paid-credit fallback with spend caps and reduced parallelism.
The healer part is published in ai-orchestration/.
| Product | What it is | Status |
|---|---|---|
| IFindSpec / Avocățescu | Practice-management SaaS: CRM, scheduling, payments, invoicing, AI assistants, video studio, social publishing. Dual-branded from one codebase. | Live · ifindspec.com · avocatescu.ro |
| StoryFuze | Content studio: edit video by transcript, AI creatives, multi-channel publishing | Launching |
| Event Creator Hub | Scored competitions: digital judging, live scoreboards, WhatsApp | Live · eventcreatorhub.com |
| WeddingPages | Wedding-site builder + venue partner portal with Stripe Connect | Live · weddingpages.ro |
| World Pulse | Global events map | Open source |
| Jobs Finder | Job search over 7 free sources with LLM query generation and fit scoring | Live demo |
- Routing: one purpose → provider/model map, so features don't hard-code models. → router + breaker
- Metering: every call is recorded with tokens, cost, latency and fallback reason; reports show p50/p95. → meter
- Autonomy boundary: models propose and code decides. Writes are proposals or pending actions, confirmed by a human or customer and re-validated at execution. → loop · pending actions
- Evals: deterministic scorers, live runs across providers, offline replay in CI, and deliberate failures to prove the scorers bite. → evals
- Prompt injection: tool output is wrapped as untrusted data; identity and authority never come from text the model reads. → eval cases
TypeScript / Node, PHP 8.2, MariaDB, SQLite · Claude, Gemini, OpenAI, DeepSeek, Groq, ElevenLabs · MCP · ffmpeg · nginx, pm2, systemd · GitHub Actions
Open to full-time remote roles (EU/CET) or B2B contracts in AI agent engineering. [email protected]
Screenshots are from demo/test accounts; no real customer data is shown. Code in ai-orchestration/ and snippets/ is MIT licensed.