Two systems, one bridge. Joe's RAG + harness + knowledge graph on Made's side. BioCreative's data pipes on ours. Connected by sync functions, built on request.
What Joe has built — independently, on Made's infrastructure, using Made's architectural decisions. BioCreative didn't build it. We provide data pipes and reference patterns. Joe decides what plugs in and when.
Joe's approach is 80% design-first — architecture before execution. Deliberate engineering for a system handling multiple clients, data sources, and team members simultaneously.
Syncs built and managed on Made's infrastructure, against Made's API keys, into Made's databases.
| Sync | Schedule | Scale |
|---|---|---|
| Salesforce (opps/leads/quotes) | 2–3× daily | 792 records/run |
| HubSpot contacts | Nightly | 17,631 contacts |
| Monday.com | 3× daily | 467 boards, 8,421 items |
| PandaDoc | 3× daily | 83 docs |
| Salesforce proposal tri-sync | 3× daily | 207 records/run |
Made's internal state — sales pipeline, contact database, project management, proposals — all flows in automatically. BioCreative's data layer sits alongside this, not on top of it.
| Data Pipe | Direction | Schedule | Status |
|---|---|---|---|
News Intelligence (made_sci) | BC Hub → Transfer DB | 2× daily | Live |
| Social Listening (Trigify) | BC Hub → Transfer DB | Every 4h | Live |
| Data Domain | Scale | Requires |
|---|---|---|
| Clinical trials | 7,840 trials | Sync function + target tables |
| Principal investigators | 14,019 PIs | Same |
| NIH grants | 2,946 ($757M+) | Same |
| Patents | 2,919 | Same |
| Contact enrichment | 265,000+ | Scoping conversation |
Each new data domain needs a small sync function. We write it, Made approves the tables, we enable the cron. No forced model.
| Project | BC's Role | Made's Role | Status |
|---|---|---|---|
| Dustin's proposal generator | DB access patterns + harness reference | Design, review output | Design phase |
| SharePoint ingestion | Content prep (if useful) | Define content scope | Planning |
| VPS setup (Made's Hostinger) | Configure (SSH, Docker, N8N, Traefik) | Decide timing | Standing offer (2–3h) |
| Project tracker visibility | Register BC-side projects | Host tracker, define schema | Active |
The Friday-call agenda item that hasn't been solved yet — one of the most important architectural decisions ahead.
The problem: The same contact can have 5+ identifiers across Salesforce, HubSpot, Supabase, EmailBison, and HeyReach. Cross-platform contact resolution. The Transfer DB as master, with foreign keys to every external system.
Honest assessment: Matching by email is easy. Matching by name across systems with different formatting and update cadences is a fuzzy matching problem. We've started the work; it's not done.
We're both building in a Karpathy-aligned LLM-OS pattern — the model as CPU, value in memory hierarchy, I/O, and orchestration.
| Level | What It Is | Who Has It |
|---|---|---|
| L1 Context window | What's in the prompt now | Both |
| L2 Session memory | Per-user conversation state | Joe (multi-user profiles) |
| L3 Agent memory | Persistent per-agent state | Both (different approaches) |
| L4 RAG knowledge base | Embedded chunks, KG relationships | Both (different embeddings) |
| L5 Structured databases | SQL tables | Transfer DB + Hub DB |