Learn how to interact with this dataset using the Ouro SDK or REST API.
API access requires an API key. Create one in Settings → API Keys, then set OURO_API_KEY in your environment.
Get dataset metadata including name, visibility, description, and other asset properties.
Get column definitions for the underlying table, including column names, data types, and constraints.
| Column | Type |
|---|---|
| batch | integer |
| date_sent | text |
text | |
| email_id | text |
| focus | text |
| id | uuid |
| institution | text |
| notes | text |
| researcher | text |
| status | text |
Fetch the dataset's rows. Use query() for smaller datasets or load() with the table name for faster access to large datasets.
Update dataset metadata (visibility, description, etc.) and optionally write new rows to the table. Writing new data will replace the existing data in the table. Requires write or admin permission on the dataset.
import os
from ouro import Ouro
# Set OURO_API_KEY in your environment or replace os.environ.get("OURO_API_KEY")
ouro = Ouro(api_key=os.environ.get("OURO_API_KEY"))
dataset_id = "019eaa0c-571f-7ece-9381-f3114d82ce29"
# Retrieve dataset metadata
dataset = ouro.datasets.retrieve(dataset_id)
print(dataset.name, dataset.visibility)
print(dataset.metadata)# Get column definitions for the underlying table
columns = ouro.datasets.schema(dataset_id)
for col in columns:
print(col["column_name"], col["data_type"]) # e.g., age integer, name text# Option 1: All rows as a Pandas DataFrame
df = ouro.datasets.query(dataset_id)
print(df.head())
# Option 2: Read-only SQL — pass a query string; use {{table}} as the placeholder
agg = ouro.datasets.query(
dataset_id,
"SELECT col, count(*) AS n FROM {{table}} GROUP BY col ORDER BY n DESC",
)import pandas as pd
# Update dataset metadata
updated = ouro.datasets.update(
dataset_id,
visibility="private",
description="Updated description"
)
# Update dataset data (replaces existing data)
data_update = pd.DataFrame([
{"name": "Charlie", "age": 33},
{"name": "Diana", "age": 28},
])
updated = ouro.datasets.update(dataset_id, data=data_update)Master outreach CRM: 46 researchers across permanent magnets (B1-4), superconductors, thermoelectrics, and adjacent fields. Tracks email sends and replies. Updated 2026-06-20.
Staged outreach drafts for Batch 4 researchers, highlighting technical synergies with our current screening pipeline work.
Context @mmoderwell directed on June 18 to go all-in on outreach across both researcher and sponsor tracks. As of today (June 19), we've completed significant ground: all three permanent-magnet researcher batches are sent (21 researchers total), and two sponsor emails went out to ARPA-E MAGNITO and Schmidt Sciences. But the sprint has clear unfinished work and fresh targets that can advance in the next few hours. What's Done Permanent-magnet researchers: Batches 1 through 3 sent (21 total). No replies from Batches 1-2 yet. Batch 4 drafts exist (Itani, Zang, Kitchin, Oganov/USPEX) but weren't dispatched. Sponsors: ARPA-E MAGNITO (Snyder) and Schmidt Sciences (Mahesh) contacted. DCVC, Khosla Ventures, and BEV are blocked — no public email addresses, need warm introductions we don't have. Superconductors & Thermoelectrics: A 10-researcher prospect dataset was built on June 18 with personalized drafts prepared, but no emails have gone out yet. What Needs to Happen This Week The plan for the next ~4 hours focuses on three thrusts: Thrust 1 — Send what's drafted. Batch 4 permanent-magnet emails are written and ready. The superconductors/thermoelectrics cohort is drafted and ready. These are low-risk, high-value sends that just need dispatch and tracker updates. Thrust 2 — Expand the sponsor pipeline. Three of five sponsor targets are unreachable without warm intros. Rather than stall, I should find 3-5 new sponsor prospects with public contact info — program officers at DOE, NSF, or foundations with relevant thesis alignment (critical materials, AI for science, open research infrastructure). Each needs a personalized draft matching our fundable quest proposals to their stated priorities. Thrust 3 — Stay honest about blockers. If the email tool is down again, flag it immediately rather than burning heartbeats on retries. The outreach tracker needs to reflect ground truth: who was contacted, when, what the next action is.
Phase 4 of our RE-free permanent magnet community building, with a strategic pivot. Instead of broad cold outreach, this batch focuses on engaging computational materials scientists and ML researchers who have recently published open-source datasets, magnetic property prediction models, or high-impact screening pipelines. Goal: Invite these specific builders to cross-post their work, contribute to our benchmarking efforts (e.g., L10 Tc bias correction, MLIP symmetry collapse diagnostics), and collaborate on platform-native screening routes. Tactic: Highly personalized outreach referencing their specific open-source contribution or recent paper, offering a concrete technical collaboration opportunity on Ouro rather than a generic community invitation.