Skip to main content
NB

6 products · designed, built & shipped end-to-end

Projects

Production-deployed agentic AI, ML and full-stack applications.

Periplo logo

Periplo

Live

Solo-built AI trip planner — ~500 monthly users on Web, iOS, Android and MCP

Visit site
Periplo — trip overview with day-by-day itinerary and map

Periplo — trip overview with day-by-day itinerary and map

Periplo is the production evolution of TripGen — the same agentic travel-planning concept rebuilt as a cross-platform suite spanning web, native iOS (App Store), and Android (Google Play), all on a shared FastAPI backend on Google Cloud Run with SSE sync. The backend orchestrates 5 orchestrators coordinating 10+ specialized agents — chat, itinerary, modification, day-split, enrichment, and others — running on Gemini 3.1 Flash with an OpenAI fallback through the OpenAI Agents SDK, and streams the itinerary to clients over Server-Sent Events as each phase completes. Cost is engineered in from the start: multi-layer caching, token-budgeted MCP responses, deterministic day-splitting, and a 4-stage photo lookup keep per-trip generation cheap. The mobile app is offline-first: edits are written through a local MMKV-backed mutation queue and conflict-resolved on sync, so users can plan trips on a plane and pick up later. A 23-dimensional content-based recommendation engine personalizes activity and restaurant ranking from saves, likes, swipes, and prior trip choices. The freemium model is enforced through a credit system (free tier: 3-credit regeneration bank with 4h refill; Pro: unlimited via RevenueCat) with 12 tiers of rate limiting in MongoDB. Authentication is handled by Clerk, which also signs the OAuth-secured MCP tools so Claude, ChatGPT, and any MCP host can call them safely. Bookable tours come from the Viator API and live events from Ticketmaster. Multi-format export ships to iCalendar, PDF, Google Calendar, and Notion. Observability is wired end-to-end: Langfuse for LLM traces, Sentry for errors, PostHog for product analytics — across web, mobile, backend, and MCP surfaces.

Problem

TripGen proved the multi-agent travel-planning concept on the web, but a real travel app needs to work in someone's pocket on a plane, send notifications, accept App Store payments, and integrate with the AI tools people already use. A web-only product also can't be invoked from inside Claude or ChatGPT, where many users now do their planning. The challenge was to take an agentic backend designed for a web UI and rebuild the surrounding product as a native, offline-first mobile app plus an MCP integration — without losing the conversational, streamed, multi-agent experience that made TripGen work.

Approach

Rewrote the frontend as an Expo / React Native app with an offline-first architecture: every mutation goes through a local MMKV-backed queue that reconciles on reconnection, so the app feels instant and survives flaky travel networks. Re-architected the backend around the OpenAI Agents SDK as 5 orchestrators coordinating 10+ specialized agents on Gemini 3.1 Flash with an OpenAI fallback, with proper tool calling, handoffs, and Langfuse-traced spans. Engineered cost in from day one — multi-layer caching, token-budgeted MCP responses, deterministic day-splitting, and a 4-stage photo lookup keep generation cheap at scale. Added real-time SSE streaming so users see the itinerary build progressively rather than waiting for a single blocking response. Stood up an OAuth-secured MCP server (Clerk) on top of the same agent stack, exposing two tools and two single-file UI bundles so Claude and ChatGPT can render rich, interactive trip widgets without iframe gymnastics. Layered in a 23-dim ML personalization model, a credit-based freemium economy with RevenueCat, V2 delta mutations for efficient edits, and collaboration via signed invite links. Shipped iOS to the App Store and Android to Google Play through EAS Build / EAS Submit, alongside the Next.js web build.

Architecture

Three-tier system on a shared FastAPI/GCP backend. (1) Clients — Expo SDK 55 / React Native 0.83 mobile (iOS on the App Store, Android on Google Play) with Expo Router, React Query + MMKV for cached and offline state, an SSE parser for streamed itineraries, react-native-maps with native Google / Apple Maps; a parallel Next.js web build; Clerk for auth; RevenueCat for subscriptions; EAS for iOS / Android builds. (2) Backend — FastAPI on Google Cloud Run (Docker, uv-managed Python 3.12), 24 routers, 5 orchestrators coordinating 10+ specialized agents through the OpenAI Agents SDK with tool calling and handoffs on Gemini 3.1 Flash with OpenAI fallback, a 23-dim cosine-similarity recommender, credit-aware rate limiting in MongoDB, 15-second SSE keepalives for long generation streams, and a V2 delta-mutation editor for atomic trip edits. Cost controls — multi-layer caching, token-budgeted MCP responses, deterministic day-splitting, 4-stage photo lookup — run across the pipeline. (3) MCP server — FastMCP-mounted on the same backend, OAuth-secured through Clerk, exposing two tools (explore_destination, build_itinerary) plus two single-file Vite + React + MapLibre GL UI bundles (~340 KB gzipped each) that MCP hosts can render in-line. MongoDB Atlas is the primary store. Langfuse, Sentry, and PostHog instrument every layer.

Results

Live as a solo-built cross-platform suite with ~500 monthly users: iOS on the App Store, Android on Google Play, and the web build — all on a shared FastAPI/GCP backend with SSE sync. Generates streamed multi-day itineraries with bookable Viator tours, Ticketmaster events, weather, maps, and per-activity deep context. Offline-first sync lets users edit without connectivity. OAuth-secured MCP tools let Claude and ChatGPT plan trips directly without leaving the chat. Cost controls (caching, token-budgeted MCP responses, deterministic day-splitting, 4-stage photo lookup) keep per-trip economics tight. Production observability — Langfuse for every LLM call, Sentry across web / mobile / backend / MCP, PostHog product analytics — keeps the agent pipeline debuggable end-to-end.

Highlights

  • Continuation of TripGen — same agentic concept, rebuilt as a cross-platform web + mobile + MCP suite
  • Solo-built and live with ~500 monthly users: iOS App Store, Google Play and web on a shared FastAPI/GCP backend with SSE sync
  • OAuth-secured MCP server (Clerk) lets Claude, ChatGPT, and any MCP host plan trips with rich in-line UI widgets
  • 5 orchestrators coordinating 10+ specialized agents on Gemini 3.1 Flash with OpenAI fallback, via the OpenAI Agents SDK
  • Cost controls baked in: multi-layer caching, token-budgeted MCP responses, deterministic day-splitting, 4-stage photo lookup
  • Offline-first mobile: local MMKV mutation queue with conflict-resolved sync
  • 23-dimensional content-based recommendation engine personalizing activities and restaurants
  • Credit-based freemium economy enforced via Clerk + RevenueCat across 12 rate-limit tiers
  • End-to-end observability: Langfuse LLM traces, Sentry errors, PostHog analytics on every surface
  • Bookable Viator tours, Ticketmaster events, multi-format export (ICS, PDF, Google Calendar, Notion)

Tech stack

Mobile
ExpoReact NativeTypeScriptReact QueryMMKVZodEAS Build
Backend
PythonFastAPIPydanticMongoDBSSE
AI / ML
Google GeminiOpenAI APIOpenAI Agents SDKMCP ProtocolFastMCPLangfuse
MCP UI
ViteReactMapLibre GL
Infrastructure
GCP Cloud RunDockerEAS BuildApp Store
Auth & Payments
ClerkRevenueCat
Observability
LangfuseSentryPostHog
PolicyArena.dev logo

PolicyArena.dev

Live

Open-Source Agent Evaluation Engine

Visit site

PolicyArena live demo

PolicyArena is an open-source simulation engine that lets you pit rule-based, reinforcement learning, and LLM-powered agents against each other in game-theoretic environments. It features live-streamed simulations with real-time visualization, per-agent analytics dashboards, multi-run statistical comparisons, and full data export capabilities. Available on PyPI via pip install policy-arena, it provides a unified interface across five major LLM providers. The plugin architecture makes it straightforward to define custom agent behaviors and new game scenarios.

Problem

Researchers and developers studying multi-agent systems lacked a unified platform to compare different agent architectures (rule-based, RL, LLM) under controlled game-theoretic conditions. Existing tools were either too academic (no visualization) or too narrow (single agent type).

Approach

Built an event-driven simulation engine in Python with a plugin architecture allowing any agent type to be registered. Added real-time WebSocket streaming so simulations can be watched live. Created a React frontend with D3.js for interactive visualization of agent behaviors, payoffs, and strategy evolution across runs.

Architecture

Event-driven simulation engine with a Python backend serving WebSocket connections for real-time streaming. React frontend with D3.js visualizations renders live agent interactions and analytics dashboards. Plugin architecture allows custom agent types (rule-based, RL, LLM) with a unified interface across 5+ LLM providers. Simulation state is managed server-side with event sourcing for replay capability.

Results

Published as open-source on PyPI with 15+ built-in game scenarios. Supports OpenAI, Anthropic, Gemini, DeepSeek, and Ollama as LLM backends. Used for research comparisons and educational demonstrations of game theory concepts.

Highlights

  • 15+ game-theoretic scenarios built in
  • Open-source on PyPI (pip install policy-arena)
  • Live-streamed simulations with real-time D3.js visualization
  • Per-agent analytics and multi-run statistical comparisons
  • Plugin architecture for custom agent types
  • Supports 5+ LLM providers through unified interface
  • Full data export for research analysis
  • Event sourcing for simulation replay

Tech stack

Frontend
ReactD3.jsWebSockets
Backend
PythonFastAPI
AI / ML
OpenAI APIAnthropic APIGoogle GeminiDeepSeekOllama
Infrastructure
PyPIDockerGitHub Actions
PasteReady logo

PasteReady

Beta

Agentic Document Assistant

PasteReady is an agentic document assistant: it reads email and documents, turns them into structured information and triggers workflows such as hotel and flight check-ins or ID renewals. Users photograph a passport, ID card, insurance policy, lease or bank document; the backend classifies it, extracts every number, date and name into structured fields, validates them and returns a clean, searchable card with expiry alerts. The extracted data — not the photo — is the product. Built for expats and frequent travellers juggling 15–25 critical documents across bureaucracies, with privacy designed in: an on-device gatekeeper parses payment cards and MRZ documents locally so they never leave the phone, and cloud extraction is opt-in.

Problem

Critical personal information is trapped in physical cards, photo galleries and email attachments. Every form, bank visit or immigration desk means hunting for one number. Existing apps are digital filing cabinets that store the photo, not the information.

Approach

Split the AI work into stages instead of one generic prompt: a cheap classification call routes each document to a type-specific extraction prompt with expected fields and format hints, and a deterministic validator catches errors before the user sees them, retrying once with the error as context. Graceful degradation at every stage — per-image fallback classification, model escalation, and repair of malformed groupings — keeps the pipeline reliable on messy real-world photos.

Architecture

Expo / React Native iOS app (Expo Router, Zustand with MMKV persistence, expo-sqlite FTS5 search) plus a hosted Vite + React web vault, both on a shared FastAPI backend on GCP with Clerk JWT auth and MongoDB Atlas. The extraction pipeline is a 4-stage batch processor with per-group parallelism: preprocess → multi-document classification in one Gemini call (which also groups front/back and multi-page scans) → type-specific extraction prompts → deterministic validation with error-aware retry. Gemini Flash-Lite handles classification and first-pass extraction; failed validations escalate to Gemini Flash. Tesseract OCR runs concurrently to power full-text search. Pydantic schemas enforce structured outputs end to end.

Results

Working iOS beta and web vault: documents are scanned, grouped, extracted and validated in seconds, auto-categorised, searchable, and scheduled for expiry reminders. Sensitive document types stay on-device by design.

Highlights

  • Agentic workflows: reads email and documents and triggers actions such as hotel and flight check-ins or ID renewals
  • Staged Gemini pipeline: multi-document classification, type-specific extraction, deterministic validation with retry
  • One classification call also groups front/back sides and multi-page documents
  • Model escalation from Gemini Flash-Lite to Flash only when validation fails — cheap by default
  • Structured outputs enforced with Pydantic schemas end to end
  • On-device gatekeeper keeps payment cards and MRZ documents off the network
  • Concurrent Tesseract OCR for full-text search; expiry alerts scheduled automatically
  • iOS app and web vault sharing one FastAPI backend with Clerk auth

Tech stack

Mobile & Web
ExpoReact NativeTypeScriptMMKVViteReact
Backend
PythonFastAPIPydanticMongoDB
AI / ML
Google GeminiVertex AITesseract OCR
Infrastructure
GCP Cloud RunDocker
Auth & Payments
ClerkRevenueCat
TripGen.org logo

TripGen.org

Evolved into Periplo

Agentic AI Travel Planner

Visit site

TripGen live demo

TripGen is an agentic AI travel planner that orchestrates 10+ specialized agents running in parallel to generate comprehensive trip itineraries. Each agent handles a specific aspect — flights, hotels, activities, dining, logistics — coordinated through MCP tool integration. The conversational chat interface allows users to refine plans iteratively, while the system generates day-by-day itineraries with activities, photos, interactive maps, and estimated budgets. Built with observability-first design using Langfuse for full agent trace visibility.

Problem

Travel planning involves coordinating dozens of decisions across flights, accommodations, activities, dining, and logistics. Existing AI travel tools either produced generic suggestions or couldn't handle the complexity of multi-day, multi-city itineraries with real constraints like budgets and preferences.

Approach

Designed a multi-agent system where specialized agents each own a domain (flights, hotels, activities, dining). Agents run in parallel via async Python and coordinate through a central orchestrator. MCP tool integration enables agents to query real services. A conversational interface lets users iteratively refine the plan.

Architecture

Multi-agent orchestration system where 10+ specialized agents run in parallel via async Python. FastAPI backend on GCP Cloud Run handles agent coordination and MCP tool integration for external service calls. React frontend provides conversational chat with streaming responses, interactive map rendering via Google Maps API, and itinerary visualization. Langfuse integration provides full observability into agent decisions and tool usage.

Results

Generates complete day-by-day itineraries with activities, photos, maps, and budgets. Conversational refinement allows natural back-and-forth. Full agent observability through Langfuse traces every decision and tool call.

Highlights

  • 10+ parallelized AI agents with domain specialization
  • MCP tool integration for external service calls
  • Conversational chat interface with streaming responses
  • Day-by-day itineraries with activities, photos, and maps
  • Full observability with Langfuse agent tracing
  • Iterative refinement through natural conversation
  • Budget estimation and constraint handling
  • Multi-city and multi-day trip support

Tech stack

Frontend
ReactTypeScriptGoogle Maps API
Backend
PythonFastAPIPydantic
AI / ML
OpenAI APIMCP ProtocolLangfuse
Infrastructure
GCP Cloud RunDocker
Hoodwise.net logo

Hoodwise.net

Live

AI-Powered Neighborhood Finder

Visit site

Hoodwise live demo

Hoodwise is an AI-powered neighborhood finder that scores areas worldwide across multiple dimensions: safety, affordability, commute time, nightlife, family-friendliness, and more. Users can explore interactive maps with filterable overlays, compare neighborhoods side by side, and switch between long-term and short-term rental modes. The platform features SEO-optimized city pages for 100+ cities, driving organic discovery. Built with a focus on data accuracy and user experience.

Problem

People relocating to a new city struggle to evaluate neighborhoods objectively. Information is scattered across forums, real estate sites, and local knowledge. There was no tool that scored neighborhoods across multiple lifestyle dimensions with a consistent methodology worldwide.

Approach

Built an AI scoring pipeline that aggregates data from multiple sources and applies weighted scoring across dimensions (safety, affordability, commute, lifestyle). Created interactive maps with filterable overlays so users can visually explore results. Added SEO-optimized city pages to capture organic search traffic from people researching relocations.

Architecture

AI scoring pipeline that aggregates neighborhood data from multiple sources, processes it through weighted scoring models, and serves results via FastAPI. React frontend renders interactive maps with filterable overlays using Google Maps API. PostgreSQL stores neighborhood scores and metadata. SEO-optimized static pages are generated for 100+ cities with structured data markup. Langfuse provides observability into AI scoring decisions.

Results

Covers 100+ cities worldwide with neighborhood-level scoring. Interactive maps allow filtering by any combination of lifestyle factors. SEO-optimized pages rank for neighborhood-related search queries. Supports both long-term and short-term rental perspectives.

Highlights

  • Worldwide neighborhood scoring across 100+ cities
  • Interactive maps with filterable overlays
  • Multi-dimensional scoring: safety, affordability, commute, lifestyle
  • Long-term vs. short-term rental modes
  • SEO-optimized city pages with structured data
  • Side-by-side neighborhood comparison
  • AI-powered recommendations based on preferences
  • PostgreSQL-backed data with real-time updates

Tech stack

Frontend
ReactTypeScriptGoogle Maps API
Backend
PythonFastAPIPydantic
Data
PostgreSQL
AI / ML
Langfuse
Infrastructure
GCP Cloud RunDockerSEO
ROIInvest.net logo

ROIInvest.net

Live

Real Estate Investment Analytics

Visit site

ROIInvest live demo

ROIInvest is a free financial analytics platform that helps property investors evaluate rental investments through data-driven calculations. It features a ROI calculator with cash-on-cash return, cap rate, net yield, and break-even analysis for both long-term and short-term (Airbnb) rentals. The mortgage calculator provides what-if rate comparisons, LTV ratios, and principal vs interest breakdowns. A rent vs buy analyzer compares buying with a mortgage against renting and investing the difference over time. Investment scenario modeling stress-tests optimistic, realistic, and pessimistic projections. The market section covers 30+ countries with an interactive Leaflet bubble map, price positioning charts, and per-city rental yield data. A city comparison tool visualizes key returns, purchase prices, and investment profiles via radar charts. Includes educational resources with a step-by-step ROI guide and investment glossary.

Problem

Real estate investment decisions require complex financial analysis across multiple variables — mortgage terms, operating expenses, vacancy rates, appreciation, and tax implications. Investors were either relying on error-prone spreadsheets or paying for overpriced tools that didn't support international markets or short-term rental scenarios.

Approach

Built a suite of 6 interconnected financial tools that share property parameters: ROI calculator, mortgage calculator, rent vs buy analyzer, scenario modeler, market explorer, and city comparison. Added localized market data for 30+ countries with auto-populated tax and mortgage rates. Interactive Leaflet maps and charts make data visually explorable. Included educational content so users understand the financial concepts behind the numbers.

Architecture

Next.js application with server-side rendered pages for SEO performance across 30+ country market pages. Client-side financial calculation engine handles mortgage amortization schedules, ROI projections, rent vs buy modeling, and scenario stress-testing without server round-trips. Interactive Leaflet maps with bubble overlays for market visualization. Responsive React frontend with charts for cash flow, equity buildup, principal vs interest splits, and net wealth projections. Country-specific tax rates and mortgage rates auto-populate from a built-in dataset. Dark mode support with persistent localStorage preferences.

Results

Covers 30+ real estate markets worldwide with localized tax and mortgage rates. Provides instant ROI calculations with break-even timelines, mortgage amortization schedules, rent vs buy projections, and side-by-side city comparisons. Supports both long-term and short-term (Airbnb) rental analysis. Free and accessible to all investors regardless of experience level.

Highlights

  • ROI calculator with cash-on-cash return, cap rate, and break-even analysis
  • Long-term and short-term (Airbnb) rental mode support
  • Mortgage calculator with what-if rate comparison and LTV ratios
  • Rent vs Buy analyzer with net wealth projections over time
  • Scenario modeling: optimistic, realistic, and pessimistic stress testing
  • Interactive Leaflet market map across 30+ countries
  • City comparison with radar charts and investment profiles
  • Educational ROI guide and investment glossary

Tech stack

Frontend
ReactNext.jsTypeScriptTailwind CSSLeaflet
Infrastructure
VercelSEO