WorkSpringhouseDraft, not yet approved

Agent runtime and long-term memory for Springhouse's AI meal planner

We rebuilt the agent runtime behind Springhouse's LLM meal planner so turns stay fast, and designed the three-tier memory system that lets the agent remember a household across conversations.

Memory tiers on pgvector, each with its own flag and spend ceiling
3
Tools loaded per turn
Only the ones it needs

Challenge

Springhouse is a meal planner you talk to. Users tell an AI agent about their dietary constraints, preferences, pantry and schedule. The agent plans meals around all of that, sources ingredients, adapts recipes and keeps track of nutrition goals over time.

Two parts of that job are hard. Long conversations get slow, because the history keeps growing and loading every tool on every turn adds weight. And the agent has to remember things between sessions. If someone mentions a dietary restriction once, the agent should still know it next month.

What we built

We work on Springhouse's backend and agent runtime, and two pieces stand out.

The first is a faster turn. We reshaped the conversation history pipeline so old history gets trimmed and tool results are compressed into a structured form before they go back to the model. We also added keyword-driven tool groups, so each turn loads only the tools it actually needs instead of the whole catalogue.

The second is Springhouse's persistent memory system, which we designed.

How

Memory has three tiers on PostgreSQL and pgvector: the raw conversation log, structured user memories, and semantic recall. The agent has an in-band save tool, so it can store a memory in the middle of a conversation. Constraints like dietary restrictions go through a confirmation flow with the user before they stick.

Each tier has its own feature flag and spend ceiling, so tiers can be switched on one at a time and costs stay bounded. We also mapped privacy and consent across the whole memory system.

The stack is Python on AWS. Our lead runs a team of two.

Results

Springhouse's agent now trims its own history, compresses tool results and loads only the tools each turn needs. We also designed its long-term memory: three tiers on pgvector, an in-band save tool, a confirmation step for dietary constraints, and per-tier flags and spend ceilings, with privacy and consent mapped across all of it.

Got something that needs to ship?

Yes

Book a call and bring the messy version. We’ll tell you what the first sprint would cover.

Not yet

Email vaibhav@esarc.dev with where you’re stuck. You’ll get a straight answer, not a pitch.