← Home

ReadWren

Active

An adaptive multi-agent system that extracts your literary DNA through conversation and generates actionable reading profiles.

Overview

ReadWren addresses a specific problem: you know what you like to read, but explaining your literary taste to an LLM is hard. Vague prompts produce generic results.

Architecture

The system runs a 12-turn conversational interview that extracts your “literary DNA” — taste anchors, style signatures, narrative desires, and implicit signals — and converts them into a structured, machine-readable profile. Give that profile to any LLM and you get content closer to your actual preferences.

Built with LangGraph, LangChain, and Moonshot AI’s Kimi K2 Thinking models.

Architecture

Architecture

WREN uses a multi-agent architecture orchestrated through LangGraph’s StateGraph:

  • InterviewAgent (kimi-k2-thinking-turbo): Conducts the conversational interview, adapting questions based on real-time analysis of your responses. Runs 12 fast, conversational turns with tools that measure vocabulary richness, response brevity, and engagement level.
  • ProfileGeneratorAgent (kimi-k2-thinking): Deep analyzer that processes the full conversation once, extracting reasoning and generating a structured JSON profile with 40+ data points, style scores (0-100 scales), and human-readable explanations.
  • Supporting Tools: ProfileAnalyzer, ConversationAnalyzer (tracks coverage across 5 dimensions), ProfileFormatter (JSON → Markdown), and ProfileSaver.
  • State Management: Custom Redis checkpointer persists session state after each turn, enabling resumable interviews with 24-hour TTL. LangGraph handles sequencing, error recovery, and type-safe state transitions. The coordinator pattern ensures clean separation: fast model for conversation, expensive thinking model for final analysis, tool-based signals driving adaptive questioning.

Key Learnings

  1. Same-model extraction and generation produces coherent output. Using Kimi K2 for both adaptive interviewing and profile application keeps reasoning patterns consistent. Preferences extracted by Kimi apply cleanly when Kimi generates content. No cross-model translation step required.
  2. Tool-driven adaptation works. Real-time analysis of vocabulary richness, response length, and engagement level lets the interviewer reference previous answers and adjust depth on the fly. Improves data quality.
  3. State persistence matters. A Redis checkpointer with pickle serialization handles Python objects that JSON cannot, which is what makes the session resumable across server restarts.
  4. Single-source dynamic prompt loading. Scoring guidelines live in PROFILE_RUBRIC.md and load into the generation prompt at runtime. Updating the rubric propagates to all future profiles without code changes.

Writing Sample with the ReadWren Prompt

Architecture

Status

Launched November 8, 2025. Currently runs live interviews via CLI. In progress: web UI and additional prompt optimization with DSPy and GEPA.