Projects
Technical registry: problem, system, outcome.
Each entry follows the same structure — Problem, System, Outcome — so you can scan or read deep without relearning the page.
In build
Stiri (A)prinse din Romania
Most news products confuse volume for value. This one is engineered not to.
Problem
Romanian news moves fast and noisily — content is published at high velocity with minimal curation, creating a landscape where the same story appears ten times in ten slightly different forms. The engineering problem isn't acquiring content. It's deciding what clears the bar, then delivering it cleanly.
System
The platform is built around a multi-stage processing pipeline: sources are ingested continuously by BullMQ workers, passed through deduplication and domain-specific quality filters, then queued for an AI rewrite stage before reaching the publish layer. Each stage is discrete and has one responsibility. The Next.js frontend stays deliberately thin — it reads from the Fastify API and does nothing else.
Outcome
A media backend built to handle high-volume content ingestion without letting noise through — infrastructure that can power a product which reads like it was curated, because the pipeline ensures it was.
Stack
Next.js 16 App Router · React 19 + TypeScript · Tailwind CSS v4 · Fastify REST API · PostgreSQL + Redis · BullMQ workers
Architecture
- Continuous multi-source ingestion via background BullMQ workers
- Deduplication and quality filtering as discrete pipeline stages
- AI rewrite layer runs before content enters the publish queue
- Raw source content strictly separated from published output
- Frontend reads only from the Fastify API — no direct data access
Prototype
Avatar Chatbot Platform
Most chat widgets either look generic or behave like needy interns.
Problem
Clients want something embeddable, branded, and safe without forcing their site into a framework migration or an LLM bill they do not control.
System
I built the widget as a single-script, zero-dependency frontend with tenant-level theming, optional video mode, and deterministic chat logic behind Firebase Functions and Firestore. That keeps deployment light and behavior predictable.
Outcome
It behaves like a real platform instead of a one-off embed: multi-tenant, themeable, mobile-aware, and ready to drop into client sites without drama.
Stack
Node.js + TypeScript · Firebase Functions v2 + Express · Cloud Firestore · Firebase Admin SDK · Vanilla JS widget · HeyGen video cache
Architecture
- Single script embed for client sites
- Multi-tenant Firestore schema
- Deterministic keyword scoring with guardrails
- Runtime theming via CSS vars and derived shades
MVP
QR voting app for events
At live events, friction is not a bug. It is the whole failure mode.
Problem
Voting systems break when the entrance flow is slow, the permissions are fuzzy, or duplicate scans ruin trust in the result. Event products need speed and control at the same time.
System
I designed the app around role-based entry points, Firestore-backed realtime state, and a clean split between presence, unlock, and vote data. QR scanning, deduplication, and volunteer/admin logic were treated as first-class product requirements, not edge cases.
Outcome
The app works like an event tool, not a hackathon toy: scan, unlock, vote, track live progress, and keep the workflow understandable for the people actually running the room.
Stack
React 19 + TypeScript · Vite 7 + React Router · Firebase SDK v12 · Cloud Firestore + Hosting · @zxing/browser QR scanning · PWA + service worker
Architecture
- Role-based access with route guards
- Multi-step event flow for scan, unlock, admin vote
- Duplicate prevention and domain-specific validation
- Presence, unlock, and vote data separated in Firestore
Exploring
Future finance news site
Finance news has an attention problem disguised as an information problem.
Problem
Readers get a flood of headlines, recycled takes, and weak interfaces. What is missing is a product that turns speed into clarity instead of panic.
System
This concept starts from editorial positioning and product shape first: faster context, better visual hierarchy, and a trust layer that treats credibility as a feature.
Outcome
The goal is a finance media surface that feels sharper, calmer, and more useful than the usual hype conveyor belt.
Stack
Concept and research phase · Media product strategy · Future extensible pipeline
Architecture
- Planned for signal-first content packaging
- Designed to support future media workflows
- Built around credibility and repeat visits