Peter Angeli
Senior full-stack engineer · React, TypeScript, Node.js
Budapest, Hungary · Remote, CET · EU citizen
I’ve spent six years building the learning platform of one of Europe’s largest educational publishers, which around 60,000 teachers use every month. I work across the stack, with Next.js on the front end and Node.js and ts-rest on the back end. I also build LLM agents in production: I built the agents behind a pipeline that has turned 80+ print textbooks into interactive exercises. Outside work I build and run my own products end to end, from a Google Play app on my own Kubernetes cluster to MCP tooling for coding agents.
work@angeli.appGitHub (opens in a new tab)LinkedIn (opens in a new tab)Resume (PDF, opens in a new tab)
Experience
> Senior Software Engineer · Through Danubius IT Solutions
Product team building the digital learning platform for primary schools in three European markets, used by around 60,000 teachers a month.
- Full-stack platform: Work on both sides of the primary-education teacher and pupil platform, the Next.js front end and the Node.js and ts-rest back end with typed SQL on PostgreSQL. Led its ClickHouse integration, from technical discovery to the views behind a fast class overview dashboard.
- Exercise engine: Built the second generation of the exercise engine from scratch, UX included, then rebuilt its exercise flow for the third generation.
- AI pipeline: Built the agents at the core of an LLM pipeline that turns print textbooks into exercises: generation from page images, reviewer agents and answer keys. It has been used for 80+ books.
- Evals: Checked agent output with reviewer passes, visual diffs against the source pages and before/after runs on content subsets. Used them to pick Sonnet after Opus invented new types and Haiku lost context.
- Monitoring: Built the shared frontend monitoring module (Elastic RUM) that 20+ internal apps use, and wrote its guide. Added guards so the apps stopped reporting expected API responses as errors.
- Product call: Usage data showed an exercise component planned for a rebuild was barely used. Migrated its content into a widely used component and dropped the rebuild.
- Team: Started and lead our knowledge sharing on AI coding agents. Mentor a junior engineer. Take a weekly first-line support shift. Wrote the content schema docs other teams build against.
- React
- TypeScript
- Next.js
- Node.js
- ts-rest/Zod
- PostgreSQL
- ClickHouse
- LLM agents
- Elastic RUM
> Senior Software Engineer
Budapest software consultancy. Most of my time goes to Infinitas Learning. Besides that, I deliver client projects end to end.
- Language-school LMS: Designed and built an LMS for a Swiss language school as the only engineer, from the UI design to the backend: courses, interactive exercises, tests with teacher review and a live shared whiteboard. Its AI assistant edits lesson content through schema-validated tool calls.
- Requirements and demos: Sat in every client interview, worked out the requirements with their mostly non-technical team and demoed each version. Also ran pre-sales demos for a UK prospect.
- TypeScript
- Next.js
- React
- LLM tool calling
- Real-time
- UI design
Projects
AI PDF-to-courseware pipeline
> LLM agents that turn print textbooks into interactive exercises
Co-built for a European EdTech publisher. My part is the agents. They generate schema-validated exercises from page images, then reviewer agents check them over several passes against the source page. The pipeline also writes the answer keys. I compared models per step and picked Sonnet, after Opus invented new content types and Haiku lost context. It has been used for 80+ books.
- TypeScript
- Fastify
- PostgreSQL
- pgvector
- LLM agents
- Zod
Exercise rendering engine
> Interactive exercise engine for digital textbooks
The npm library that renders a European EdTech publisher’s digital textbooks and drives the exercise flow pupils work through. I built its second generation from scratch, UX included, then rebuilt its exercise flow for the third. Accessibility and visual-regression checks run before every release.
- React
- TypeScript
- Zustand
- Storybook
enbrain
> Local-first search for AI coding agents
An MCP server I built alone. It started as local code search over a repository: ONNX embeddings, tree-sitter chunking and sqlite-vec. Version 0.5 moved to the GitHub history around a codebase, meaning issues, pull requests, review comments and commits, embedded locally through Ollama.
- MCP
- TypeScript
- sqlite-vec
- ONNX
- Ollama
> Consumer mobile app on Google Play, built and shipped solo
Social mobile app with maps and a home-screen widget, on Google Play. React Native client on my own Node.js and MongoDB API, on a Kubernetes cluster I run myself: deployments, pods, rollouts and debugging.
- React Native
- Node.js
- MongoDB
- Kubernetes
> Sports prediction dashboard
Driven by Polymarket odds. Bilingual, with an SEO page per match and generated OG images, server-rendered on Cloudflare Workers. I built and ran it alone, and wrote its FAQ pages from Search Console and PostHog data.
- React
- TypeScript
- Cloudflare Workers
- PostHog
> Tech-news site with a popularity-ranked feed
A time-decayed popularity ranking over prerendered articles, with edge view-counting on Cloudflare D1, engineered to run entirely on the free tier.
- Astro
- Cloudflare D1
- TypeScript
Education
> Master's, Computer Software Engineering
Applied Informatics, Data Science and Media Informatics
> Exchange semester, Computer Engineering
Erasmus+ Programme
> Bachelor's, Computer Software Engineering
Software Engineering