Project: AI Research Firm

Analyst agents scrape and summarize sources on a topic → Synthesis agent writes a structured report → Distribution agent emails it to a subscriber list on schedule.

Project: AI Research Firm

What you'll build

A Paperclip company that produces weekly research reports on a defined topic area, accumulating knowledge in a company memory store over time.

Company Blueprint

Company: Deep Research Inc
Monthly budget: $80

Agents:
1. Horizon Scanner  ($10) — weekly trend sweep across arXiv, GitHub, news
2. Deep Diver × 3   ($15×3) — parallel deep research on top 3 topics
3. Analyst          ($12) — synthesises across all three deep-dive reports
4. Report Writer    ($8)  — produces the weekly PDF-ready report
5. Memory Keeper    ($5)  — updates the long-term knowledge store

Long-Term Memory Design

The Memory Keeper agent maintains a company_memory table with accumulated knowledge:

CREATE TABLE company_memory (
  id         uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  company_id uuid NOT NULL,
  key        text NOT NULL,
  value      jsonb NOT NULL,
  updated_at timestamptz DEFAULT now(),
  UNIQUE (company_id, key)
);

Memory Keeper system prompt:

You are a Memory Keeper. Given a new research report, update the knowledge base.

For each technology or organisation mentioned:
- Update its entry with new facts
- Note changes from prior week (if known)
- Flag emerging trends

Output JSON:
{
  "memory_updates": [
    {"key": "entity:OpenAI", "facts": ["released GPT-5 on X date", ...], "trend": "accelerating"},
    {"key": "trend:multimodal", "summary": "...", "last_updated": "2024-01-15"}
  ]
}

Using Memory in Subsequent Reports

When the Analyst runs, its task description includes the current memory store:

-- Inject memory context into analyst's issue description
UPDATE issues
SET description = description || E'\n\n## Knowledge Base (prior weeks)\n' ||
  (SELECT string_agg(key || ': ' || (value->>'summary')::text, E'\n')
   FROM company_memory
   WHERE company_id = i.company_id
   LIMIT 20)
WHERE title LIKE 'Synthesise research%'
  AND status = 'open';

The Weekly Report Schedule

-- Every Monday 06:00 UTC: create Horizon Scanner issue
INSERT INTO issues (company_id, title, assigned_agent_id, due_at, priority, status)
SELECT
  id,
  'Horizon scan: week of ' || to_char(now(), 'YYYY-MM-DD'),
  (SELECT id FROM agents WHERE name = 'Horizon Scanner' AND company_id = companies.id),
  date_trunc('week', now() + interval '1 week') + interval '6 hours',
  'high',
  'open'
FROM companies WHERE slug = 'deep-research-inc';

Quality Gate: Analyst Confidence Score

The Analyst includes a confidence score in its output:

{
  "synthesis": "...",
  "confidence": 0.82,
  "gaps": ["No data on Anthropic's Q4 training runs", "GPT-5 pricing not yet public"]
}

If confidence < 0.7, the Analyst creates additional Deep Diver issues to fill the gaps.

Cost per Weekly Report

Agent Cost
Horizon Scanner $0.30
Deep Diver × 3 $0.90
Analyst $0.25
Report Writer $0.20
Memory Keeper $0.10
Total ~$1.75/week

Checkpoint ✓

Sign in for progress tracking & Q&A →