Back to Work

Droplet Learn

Goal-driven learning, with safety built in.

Droplet Learn is a live AI learning product that turns a concrete goal into a focused path, short daily lessons, and reflection, with a five-layer safety system around generated content.

Role
Founder
Organisation
Maple Spark Labs
Timeframe
2026–present
Status
Live
Kind
Product
Technology and standards
  • Generative AI
  • Large language models
  • Anthropic Claude
  • Next.js
  • TypeScript
  • Supabase
  • PostgreSQL
  • Prisma
  • AI-assisted development
Focus
  • AI product design
  • Safety guardrails
  • Human review
  • Traceability
  • Cost controls
  • Learning design
Droplet’s generated Advanced Negotiation learning path, organised into Explore, Practice, Connect, and Create phases with a first six-minute Drop.
Droplet turns a specific learning goal into a phased curriculum and a practical next step. This public demo shows the generated roadmap and first Drop. It does not represent measured learning outcomes. dropletlearn.com

Problem

An LLM can produce more information than anyone can use. The harder product problem is helping someone accomplish something specific, such as preparing to negotiate a raise, without burying them in content or losing track of what they have learned.

Constraints

The product had to turn an open-ended goal into a path that fit a real day. Because every lesson is generated, it also needed controls before and after generation, a review loop for questionable output, and a cost model the product could sustain.

Inside the AI system

Because every lesson is generated, the product puts five separate checks around it.

  1. Classify the requestScreen the learner’s goal before generation.
  2. Constrain generationSet scope and refusal behaviour in the generation instructions.
  3. Validate the outputCheck generated content before it reaches the learner.
  4. Set a public policyMake the product’s boundaries visible to users.
  5. Log and reviewRecord safety events and feed questionable output into an administrative review loop.
Five layers catch different failure modes. They reduce risk without making a claim of perfect safety.

Evaluation statusThe controls are live. A publishable evaluation set and effectiveness results are still in progress, so this case does not claim that the system has reached a measured safety or learning benchmark.

Under the hood: how the safety layers are built

Excerpts from the Droplet Learn codebase, lightly trimmed. The repository is private.

LayerWhat runsWhenApprox. cost
Keyword pre-filterWord-boundary blocklistBefore any model call$0
Input classifierLightweight model: SAFE, FLAG or BLOCKBefore generation~$0.001 per check
Prompt guardrailsSafety rules in every generation prompt; the model can declineDuring generation$0
Output scannerLightweight model: SAFE or UNSAFE per lesson, unsafe lessons quarantinedBefore storage~$0.002 per path
Logging and reviewSafety events, admin review queue, user reportsContinuousStorage

Together the checks add roughly half a percent to the cost of generating a path. A blocked request skips the generation call entirely.

Some topics are legitimate or harmful depending on intent. Instead of blocking them, the classifier can return FLAG, which asks the learner one clarifying question.

if (classification.classification === "FLAG") {
  if (clarification) {
    // Dual-use topics (e.g. "penetration testing") will always FLAG on the
    // topic name alone; the clarification shows good-faith intent.
    // Only an explicit BLOCK stops generation after clarification.
    logger.info("FLAG accepted after clarification", { traceId, reason });
  } else {
    return NextResponse.json(
      { flag: true, clarifying_question: classification.clarifying_question },
      { status: 200 }
    );
  }
}

Quarantining a lesson is half the job. The other half is making sure the learner isn't left facing a locked path.

// The serving query filters out quarantined drops, so `current` must land
// on the first non-quarantined drop or the user sees an entirely locked
// path. If every Phase 1 drop is quarantined, there is no safe target:
// abort before persisting so the user can retry.
const firstCurrentIndex = dropScanResults.findIndex((r) => r.status !== "UNSAFE");
if (firstCurrentIndex === -1) {
  await prisma.path.delete({ where: { id: path.id } });
  return NextResponse.json(
    { error: SAFETY_MESSAGES.PATH_BLOCKED, reason: "safety_block" },
    { status: 422 }
  );
}

A zero-latency keyword pass catches the obvious cases before any model call. Word boundaries keep it from blocking innocent words.

// Word boundaries prevent false positives
// (e.g. "therapist" won't match "the rapist").
const BLOCKED_PATTERNS = Object.values(blocklist.categories)
  .flat()
  .map((term) => ({
    term,
    regex: new RegExp(`\\b${escapeRegex(term)}\\b`, "i"),
  }));

Both model-based checks wrap the untrusted text in delimiters and treat it strictly as data. The input classifier goes one step further: an attempt to override its rules is classified as BLOCK. The exact prompts and the blocklist aren't published, because they would make the checks easier to get around.

Approach

I first framed Droplet as a tool that broke a subject into bite-sized lessons. Building and testing it changed the problem. People were not trying to study a subject in the abstract. They were trying to accomplish a goal. I reoriented the product around that job, then rebuilt the curriculum, data model, and user flow around a four-phase path: Explore, Practice, Connect, and Create.

Each Drop gives the learner one focused idea, why it matters, an optional exercise, and a chance to record takeaways and reflection. The product keeps the goal visible while the path and progress make the learning manageable.

I later stopped feature work to add a five-layer safety system: a pre-classifier before generation, generation guardrails, post-generation validation, a public content policy, and safety-event logging connected to an administrative review loop. The point was not to claim perfect safety. It was to put several different checks around a system that can fail in different ways.

A Droplet lesson showing a core idea, why it matters, and a comparison between adversarial and collaborative negotiation approaches.
Each Drop turns generated material into a short, structured lesson with a core idea, context, and a practical mental model. dropletlearn.com

Current state

Droplet Learn is live. A learner can enter a goal, receive a four-phase path, complete short Drops, record takeaways, and reflect on progress. Safety effectiveness and learning outcomes are still being evaluated.

Droplet’s learner view with phase progress, completed key takeaways, a reflection prompt, and the Complete Drop action.
Learners confirm key takeaways and reflect before completing a Drop, connecting generated content to continued practice. dropletlearn.com

Evidence

What I learned

AI makes content abundant. Product judgment decides what should reach a user, how it supports the job they came to do, and what the system must refuse.

Related work