NaviGo

AI-powered career navigation platform for Myanmar youth, delivered as a Telegram bot with a web landing page and Payload CMS admin panel. Features an AI career coach with tool calling, dual matching system (3072-dim embeddings + 7-dim custom dimensions), pgvector semantic search, auto-tagging hooks, and a hybrid recommendation engine with zero AI calls.

VisitVisit
Fullstack
Next.jsNext.jsTypeScriptTypeScriptTailwind CSSTailwind CSSPayloadPayloadPostgreSQLPostgreSQLDrizzle ORMDrizzle ORMGemini AIGemini AICloudflareCloudflare
Screenshot of NaviGo

NaviGo — AI Career Navigator for Myanmar Youth

A Telegram bot and web platform that helps Myanmar youth discover careers, find training centers, and get personalized learning recommendations through an AI career coach.

Overview

NaviGo addresses the career guidance gap for young people in Myanmar by combining a Telegram bot interface with AI-powered coaching and semantic search. Users chat with an AI career coach that understands their interests, saves career profiles, and recommends relevant training centers, online courses, and blog posts — all in Burmese or English. The platform is managed through a Payload CMS admin panel with automated content tagging and metadata fetching.

Key Features

  • AI Career Coach — Multi-turn conversational AI with 4 tools: profile extraction, resource discovery, career profiling with 7-dimension scoring, and mental health signal detection. The coach silently builds user profiles from natural conversation
  • 109 Interest Taxonomy — A flat, type-safe interest system spanning 16 groups (Tech, Design, Creative, Language, etc.) shared across bot navigation, vector search, and admin tagging
  • Dual Matching System — 3072-dim embeddings (Gemini Embedding 001) for free-text semantic search, plus 7 custom dimensions (technical, creative, physical, digital, analytical, entrepreneurial, social) for instant profile-based recommendations with zero AI calls
  • Hybrid Recommendation Engine — Tag matching for training centers and learning resources (exact, instant) combined with pre-computed user embeddings for blog posts (semantic, instant). /recommend uses zero AI calls
  • 3D Interest Star Map — Interactive Three.js visualization of 109 interests in 7-dimensional space using PCA reduction to 3D. Hover shows radar chart with all 7 dimensions, click zooms with nearest-neighbor connections
  • Auto-Tagging Hook — Resources added by admins are automatically classified using vector similarity against the interest taxonomy — no manual tagging required
  • Auto-Fetch Metadata — Learning resources only need a URL. A hook fetches the page title and OG description on save, reducing admin data-entry effort
  • Burmese + English — Full i18n support with automatic translation for search queries
  • Telegram WebApp — Mini app for browsing all resources within Telegram

Architecture

Unified Next.js Application

The Telegram webhook handler, Payload CMS admin panel, and public landing page all run as a single Next.js application deployed on serverless infrastructure. The bot receives updates via HTTPS webhook, processes commands and free-text messages, and responds with inline keyboards and resource cards.

Three Embedding Tables

pgvector tables operate outside Payload's ORM via raw SQL, each serving a distinct purpose:

  • Interest Embeddings — 109 pre-seeded interest vectors (3072-dim) plus 7 custom dimension scores for query-to-interest matching and profile-based recommendations
  • Resource Embeddings — Learning resources and published blog posts, generated on save via fire-and-forget hooks with content hashing to skip redundant re-embeddings
  • User Embeddings — Pre-computed career profile vectors updated when the AI coach saves a profile, enabling instant personalized recommendations

Dual Matching: Embeddings vs Dimensions

Two complementary systems handle different scenarios. Embedding search (3072-dim) handles free-text queries where semantic understanding is needed — the query is embedded and compared via cosine similarity against stored vectors. Dimension matching (7-dim) handles profile-based recommendations where the user already has scored dimensions — pure in-memory cosine similarity with no API calls, under 1ms, and fully explainable (shows which dimensions contributed to each match).

Smart Content Pipeline

Three Payload hooks automate the content lifecycle: autoFetchMeta populates resource metadata from URLs, autoTagInterests classifies content via LLM analysis, and embedResource generates searchable vectors on save without blocking the admin UI.

Key Technical Decisions

  • Embeddings for focused content, tags for multi-interest resources — Training centers can teach cooking and programming simultaneously; a single embedding vector averages them into a meaningless middle point. Tag matching handles multi-interest resources perfectly, while single-topic learning resources and blog posts get accurate vector representations
  • Pre-computed user embeddings — User profile vectors are saved when the AI coach extracts career data, so /recommend never needs an AI call. Instant personalized feed at zero inference cost
  • 7 custom dimensions over raw embeddings for recommendations — 3072-dim embeddings are opaque. 7 human-interpretable dimensions (technical, creative, physical, etc.) enable explainable recommendations: users can see why an interest was suggested
  • Fire-and-forget hooks — Embedding generation runs in afterChange hooks without blocking admin saves, keeping the CMS responsive
  • Interest taxonomy over relational categories — A flat const tuple of 109 values generates a TypeScript union type, works as a Payload select field, and eliminates join queries

Tech Stack

Frontend: Next.js 15 (App Router), React 19, Tailwind CSS 4, Three.js (3D visualization)

CMS / Backend: Payload CMS 3.85, Drizzle ORM, Neon Postgres + pgvector (3072 dimensions)

Bot: grammY (Telegram Bot API), inline keyboards, callback queries, Telegram WebApp, Burmese + English i18n

AI: Vercel AI SDK 6.x with tool calling, Gemini Embedding 001 (3072 dimensions), Gemini 3.1 Flash Lite

Infra: Serverless deployment with CI/CD, S3-compatible object storage for media

Role

Full-Stack Developer — End-to-end design and implementation of the Telegram bot, AI career coach, embedding pipeline, dual matching system, 3D visualization, Payload CMS collections and hooks, landing page, and deployment infrastructure.