DEV Community

Cover image for Milo: An AI Agent for a Living Developer Portfolio
Michael Odhiambo
Michael Odhiambo

Posted on

Milo: An AI Agent for a Living Developer Portfolio

Milo is an AI agent built around my developer portfolio, designed to turn a traditionally static portfolio into an interactive and programmable system.

Instead of storing portfolio information directly inside frontend components or relying on manually maintained documents, the portfolio uses PostgreSQL as its source of truth for projects, experience, skills, articles, hackathons, certificates, links, and CV data. A FastAPI backend exposes controlled operations over this data, while the React frontend consumes the same backend at runtime.

Milo sits on top of this architecture as the conversational interface. Rather than giving the language model unrestricted access to the database, Milo uses backend-defined tools to retrieve information and perform permitted actions. This creates a separation between the reasoning layer and the application's data and business logic.

The system is also connected to Telegram, allowing the portfolio owner to interact with Milo remotely. Owner-specific operations are protected separately from visitor interactions, with potentially destructive actions requiring confirmation before execution.

One of the more advanced workflows is CV curation. Given a job description, Milo can retrieve the structured portfolio and experience data, identify relevant evidence from the existing information, and produce a tailored CV without inventing qualifications or experience. The workflow separates the immutable base CV data from job-specific curation, allowing generated versions to remain grounded in the underlying portfolio.

The stack includes React and TypeScript on the frontend, FastAPI and Python on the backend, PostgreSQL for persistent data, Telegram for remote interaction, and Groq-powered language models for the AI layer. The system is designed so that AI capabilities are added on top of a conventional application architecture rather than replacing the application's backend.

Milo represents the direction I have been exploring with AI applications: not simply building chatbots, but connecting language models to real application capabilities through controlled tools, structured data, APIs, and explicit permissions.

Github repo

Top comments (0)