Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

All notable changes to Data Vizard will be documented here.

## Unreleased

- Tightened orchestrator-to-curator handoff: orchestrator now passes dataset directly to Curator without asking posture or direction first.
- Curator now asks posture and analytical direction as one combined interaction after reporting data fitness, informed by what the data can actually support.
- Added Stage Transition Commentary to orchestrator: after each user decision, the orchestrator briefly states what the previous skill produced, what was decided, and what goes forward.
- Added banned words/phrases operational checklist to Narrator's anti-AI-tropes reference, with reason and alternative columns.
- Applied deletion test to project ledger guidance in orchestrator — rows with no decision or caveat worth preserving should be omitted.
- Added evaluation rubric and sunset tracking conventions to data-curator's open data sources reference.
- Added `RELEASE.md` with step-by-step release checklist covering version refs, doc review across all surfaces, and npm publish smoke test.
- Planned `data-vizard uninstall` CLI subcommand (not yet implemented).

## 0.1.5 - 2026-07-13

- Added the `de-slop` skill across root, packaged plugin, and Gemini extension surfaces for repairing bad or misleading charts without changing the evidence.
Expand Down
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
www.data-vizard.com
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Code of Conduct

## Northwestern Agentic AI Investigative Journalism Challenge

This competition produces investigative claims about real individuals and organizations using AI-assisted tooling. Participants come from newsrooms, universities, and civic tech, and bring a range of training. This Code of Conduct sets shared expectations for editorial judgment, responsible use of AI, data handling, and community behavior. Registering a team constitutes agreement by all team members.

**Editorial and investigative conduct.** Apply newsroom standards of verification throughout. Every factual claim in a findings report must be traceable to specific records in the provided corpus and spot-checked by a human team member before submission. Do not fabricate, synthesize, or illustratively invent documents, quotes, or records presented as if drawn from the corpus. Characterize what the data shows without asserting motive, wrongdoing, or legal violations unless the evidence genuinely supports that framing. If your findings suggest possible legal violations, flag them to the evaluation panel in your report. Inclusion in the skills catalog or a GAIN blog post is not equivalent to publishing an investigation; teams that later pursue external publication are expected to follow standard pre-publication practices, including right of reply. If you discover a factual error after submitting, notify the panel; catalog entries will be corrected or withdrawn as warranted.

**Prior work and publication checks.** Before submitting findings, teams must make a good-faith effort to determine whether the same factual claim, pattern, or allegation has already been reported, published, or otherwise made public. AI tools may assist with this check, but teams are responsible for verifying whether prior reporting exists. If a finding builds on, confirms, extends, or overlaps with prior work, the submission must clearly attribute that work and distinguish what the team independently verified in the provided corpus from what was learned from outside reporting. Teams must not present previously published reporting, analysis, language, framing, or conclusions as their own original discovery. Close paraphrase of outside work without attribution is not acceptable, even if produced by an AI system.

**Responsible use of AI tooling.** Human oversight is required on consequential claims. Agent outputs that name specific individuals or organizations as subjects of findings must be reviewed by a human team member, and interaction traces should show where that review occurred. Provenance is non-negotiable: outputs without traceable sourcing will not meet the competition's bar. Teams agree that their skills, prompts, and interaction traces will be reviewable by the panel and, for catalog entries, publishable—do not include anything in a submission you are not comfortable being public. Use of competition tooling to investigate or target private individuals (e.g., doxxing) outside the provided corpus is out of scope.

**Data handling.** Use the provided corpus as provided. Do not augment with outside data about named individuals without disclosing it in the findings report. Do not attempt to re-identify, contact, or surveil individuals named in filings as part of the competition work, and do not incorporate confidential or non-public data into your investigation. Respect the source terms of use for the underlying datasets.

**Attribution and originality.** Teams may build on existing open-source journalism skills and must attribute them clearly in `SKILL.md` and the findings report. AI-assisted development is expected and encouraged; wholesale submission of another team's or project's work is not. Teams agree to publish catalog-included submissions under the [MIT license](https://opensource.org/license/mit).

**Conflicts of interest.** If any team member has a professional or financial relationship with an entity that appears prominently in their findings, disclose it as part of the submission.

**Community conduct.** Interact respectfully in all competition venues, including shared channels and presentations. Harassment, discrimination, and targeted hostility are not tolerated. Raising a concern in good faith will not affect competition judging.

55 changes: 55 additions & 0 deletions data/gen-ai-newsroom/Challenge Details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
Challenge Details

Dataset, submission, and evaluation

Everything you need to decide whether to compete


The dataset
We’re providing a federal-government corpus centered on who is paying whom to shape policy, and how those efforts are described in public. It covers 2022 through March 2026 and combines two complementary record types:

Congressional lobbying filings from both chambers: registrants, clients, issue areas, and the staff moving between private firms and government offices.
Congressional press releases from the Congress Press corpus.
Registered teams receive the prepared corpus along with a manual describing its structure and contents.

What teams submit
We want teams to put in their best effort at uncovering genuinely newsworthy findings using AI agents. Dig into the provided corpus, bring in outside sources, pursue whatever seems interesting or important to you. Then — and this is the part that makes the competition matter beyond your own story — package up the workflows, prompts, and tools you built along the way into an Agent Skill that someone else could pick up and use on a different investigation.

An Agent Skill is a directory of instructions, scripts, and reference material that extends what a coding agent can do. The format is defined by the Agent Skills specification: a SKILL.md with YAML frontmatter and instructions, plus optional scripts/, references/, and assets/. Skills are more powerful than they look — if you haven’t built one before, these collections of journalism-oriented examples are a good starting point:

Florent Daudens — AI Journalism Skills
Joe Amditis — claude-skills-journalism
The skill you submit should capture things that would generalize past this particular investigation: a pattern for resolving messy entities, a review interface that makes provenance easy to check, a workflow that keeps a long-running investigation oriented across sessions. The specifics are up to you.

Each submission package contains four things:

Agent Skill(s). The primary artifact — the reusable workflow you built. You can bundle multiple skills that compose together. Skills should be self-contained and validate cleanly against the specification.
Findings report. A written summary of the newsworthy discoveries you produced by running the skill(s) on the corpus (and any outside material you brought in).
Interaction traces. Full logs of the model sessions, either as raw JSON or as a rendered page, including inputs, tool calls, outputs, and the moments where human judgment intervened. Traces should be keyed to the skill invocations they came from.
README.md. A brief map of the submission: included skills, which findings they support, where the relevant traces are located, any outside data used, any conflicts of interest, and whether findings suggest possible legal violations that should be flagged to the evaluation panel.
How we evaluate
A panel of journalists and technologists reviews each submission. There are two things they’re looking at: whether your findings hold up as journalism, and whether your skill is something another team could actually pick up and use.

Are the findings real?
Before anything else, panelists spot-check your findings report. Claims need to be accurate, sourced back to specific records, and of genuine public interest — undisclosed relationships, timing anomalies, spending patterns, that sort of thing. A polished summary of what the dataset contains isn’t a finding; something a reporter would chase is. Submissions that don’t clear this bar aren’t ranked further.

Is the skill useful?
Once findings clear that bar, the panel scores your skill on four dimensions. Panelists score each of the four technical dimensions independently on a 0-3 rubric, and the four dimensions are weighted equally by default. Reproducibility is assumed throughout: if an evaluator can’t re-run your skill, it cannot score above 1 on any dimension, regardless of how impressive it looks on paper.

Does it keep the investigation organized?
Investigations span days, sessions, and new leads that arrive mid-stream. A strong skill keeps track of what’s been checked, what’s still open, which entities matter, and which threads went cold, so the journalist doesn’t have to re-brief the agent every time they come back to it.

Is it efficient with the corpus?
Feeding thousands of documents through a model is expensive and slow. A strong skill pushes the heavy lifting — extraction, filtering, indexing, aggregation — to deterministic tools and cheaper models, so the main agent spends its budget on reasoning rather than scanning.

Can a human verify the work?
A reporter has to be able to stand behind what the agent produced. A strong skill ties every claim back to a specific source, presents evidence in a form that’s fast to review, and leaves a trace an editor could audit without re-doing the work.

Does it extend what an agent can do for investigations?
The most interesting skills provide real, novel capabilities: entity resolvers, cross-reference utilities, document-network traversal, domain-specific parsers. Tools that handle the messy, investigation-specific problems a generic coding agent can’t solve on its own, and that other teams could lift into their own work.

What gets published
Top submissions win cash prizes, get individual writeups on the GAIN blog, and may be invited to present their work at the Computation + Journalism Symposium. Any submission that clears the findings bar, validates against the Agent Skills specification, and shows real effort on all four dimensions above is included in a public, open source skills catalog.

Ethical considerations
Investigative findings may implicate real individuals and organizations. Teams should exercise the same editorial judgment they would apply in a newsroom context. If findings suggest potential legal violations, note that in the findings report and flag it to the evaluation panel. All participants agree to the code of conduct on registration.
24 changes: 24 additions & 0 deletions data/gutenberg-adaptation/curated/book_adaptation.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
book_title,author,publication_year,genre,Retain,Condense,Reorder,Omit,Merge,total,retain_pct,omit_pct,cut_rate
Pride and Prejudice,Jane Austen,1813,Romance,190,286,178,125,92,871,21.8,14.4,47.2
Frankenstein,Mary Shelley,1818,Gothic_SciFi,168,244,182,150,95,839,20.0,17.9,47.0
A Christmas Carol,Charles Dickens,1843,Drama,278,216,141,104,81,820,33.9,12.7,39.0
The Count of Monte Cristo,Alexandre Dumas,1844,Adventure,174,287,182,134,73,850,20.5,15.8,49.5
Moby Dick,Herman Melville,1851,Adventure,152,268,181,200,83,884,17.2,22.6,52.9
A Tale of Two Cities,Charles Dickens,1859,Historical,209,270,156,147,81,863,24.2,17.0,48.3
Great Expectations,Charles Dickens,1861,Drama,183,273,173,151,75,855,21.4,17.7,49.6
Alice's Adventures in Wonderland,Lewis Carroll,1865,Fantasy,42,80,44,41,16,223,18.8,18.4,54.3
Crime and Punishment,Fyodor Dostoevsky,1866,Psychological,214,220,175,134,105,848,25.2,15.8,41.7
Little Women,Louisa May Alcott,1868,Drama,206,279,158,132,79,854,24.1,15.5,48.1
War and Peace,Leo Tolstoy,1869,Historical,212,295,168,127,91,893,23.7,14.2,47.3
The Adventures of Tom Sawyer,Mark Twain,1876,Adventure,225,204,171,132,96,828,27.2,15.9,40.6
Anna Karenina,Leo Tolstoy,1877,Romance,208,268,155,149,76,856,24.3,17.4,48.7
Treasure Island,Robert Louis Stevenson,1883,Adventure,184,291,151,159,72,857,21.5,18.6,52.5
Adventures of Huckleberry Finn,Mark Twain,1884,Adventure,211,236,174,152,81,854,24.7,17.8,45.4
The Strange Case of Dr. Jekyll and Mr. Hyde,Robert Louis Stevenson,1886,Horror,106,187,83,105,49,530,20.0,19.8,55.1
The Picture of Dorian Gray,Oscar Wilde,1890,Gothic,212,205,199,130,103,849,25.0,15.3,39.5
The Adventures of Sherlock Holmes,Arthur Conan Doyle,1892,Mystery,204,264,182,125,79,854,23.9,14.6,45.6
The Jungle Book,Rudyard Kipling,1894,Adventure,219,279,159,116,87,860,25.5,13.5,45.9
The Time Machine,H.G. Wells,1895,SciFi,177,211,219,129,80,816,21.7,15.8,41.7
Dracula,Bram Stoker,1897,Horror,184,247,193,127,103,854,21.5,14.9,43.8
The Wonderful Wizard of Oz,L. Frank Baum,1900,Fantasy,134,241,140,111,80,706,19.0,15.7,49.9
Peter Pan,J.M. Barrie,1911,Fantasy,178,274,177,119,88,836,21.3,14.2,47.0
11 changes: 11 additions & 0 deletions data/gutenberg-adaptation/curated/event_adaptation.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
event_type,Retain,Condense,Reorder,Omit,Merge,total,retain_pct,omit_pct
Dialogue,357,986,597,369,292,2601,13.7,14.2
Confrontation,974,718,397,266,179,2534,38.4,10.5
Revelation,1037,711,371,245,161,2525,41.1,9.7
Conflict,433,745,460,453,219,2310,18.7,19.6
Romance,317,680,383,375,223,1978,16.0,19.0
Arrival,223,387,306,253,176,1345,16.6,18.8
Journey,232,364,301,268,150,1315,17.6,20.4
Betrayal,247,346,303,247,165,1308,18.9,18.9
Climax,222,362,322,244,150,1300,17.1,18.8
Discovery,228,326,301,279,150,1284,17.8,21.7
12 changes: 12 additions & 0 deletions data/gutenberg-adaptation/curated/genre_adaptation.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
genre,Retain,Condense,Reorder,Omit,Merge,total,retain_pct,omit_pct,condense_pct
Adventure,1165,1565,1018,893,492,5133,22.7,17.4,30.5
Drama,667,768,472,387,235,2529,26.4,15.3,30.4
Fantasy,354,595,361,271,184,1765,20.1,15.4,33.7
Gothic,212,205,199,130,103,849,25.0,15.3,24.1
Gothic_SciFi,168,244,182,150,95,839,20.0,17.9,29.1
Historical,421,565,324,274,172,1756,24.0,15.6,32.2
Horror,290,434,276,232,152,1384,21.0,16.8,31.4
Mystery,204,264,182,125,79,854,23.9,14.6,30.9
Psychological,214,220,175,134,105,848,25.2,15.8,25.9
Romance,398,554,333,274,168,1727,23.0,15.9,32.1
SciFi,177,211,219,129,80,816,21.7,15.8,25.9
21 changes: 17 additions & 4 deletions extensions/data-vizard/skills/data-analyst/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,24 @@ Use no more than four options unless the user asks for a broader menu. When usef
- archive-style navigation
- guided discovery instead of one top-line aggregate claim

6. Ask the user to choose.
Present the candidates as button-ready choices. Let the user select one direction, combine directions, or request deeper analysis.
6. Ask the user to choose a single direction, or receive the arc intent from Curator.
If Curator's handoff includes `narrative_intent: single`, present story candidates as button-ready choices and wait for the user to select one.

7. Handoff to Narrator.
Provide the chosen insight, supporting evidence, counterpoints, caveats, suggested sequence of facts, and whether the intended output should behave more like an aggregate analysis piece, a browseable archive, or a hybrid.
If Curator's handoff includes `narrative_intent: multi-tier arc` with a confirmed tier sequence, do not re-propose directions. The decision is already made. Proceed to step 7 to structure the arc.

7. Structure the arc when intent is multi-tier.
Using the tier sequence confirmed by Curator as the frame, build out each tier with evidence from the data. For each tier produce:

- `tier` — position number
- `claim` — the specific evidence-backed assertion for this tier
- `evidence` — the data points that support it
- `chart_form` — the likely visual form
- `transition_to_next` — one sentence explaining what question or tension this tier opens that the next tier resolves

A good arc has forward momentum: each tier should make the next tier feel necessary, not optional. Confirm the structured arc with the user before handing to Narrator. If the evidence does not support a proposed tier, say so and ask whether to drop that tier or replace it.

8. Handoff to Narrator.
Provide the chosen insight or confirmed arc, supporting evidence, counterpoints, caveats, suggested sequence of facts, confirmed artifact mode, and confirmed posture. For multi-tier work, hand off the full arc structure so Narrator can assign language load and connective copy per tier.

## Boundaries

Expand Down
15 changes: 11 additions & 4 deletions extensions/data-vizard/skills/data-curator/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,12 @@ Use no more than four options unless the user asks for a broader menu. Include `
5. Report data fitness.
Summarize what the data can support, what it cannot support, and what claims would be risky.

6. Propose cleaning and shaping actions.
6. Ask about narrative posture and analytical direction.
Based on what the data can support, present posture options and 2–3 concrete analytical directions as button-ready choices. Do not ask posture and direction as separate questions — combine them into one interaction so the user makes one decision that unblocks both. Let the data shape which postures are realistic: aggregate-structured data suggests `Explanatory` or `Balanced`; record-level or collection data suggests `Balanced explorer` or `Data-art-led`. Wait for the user to decide before proceeding to cleaning and shaping.

If the data has multiple natural dimensions that stack — where one cut answers the question opened by the previous cut — include a multi-tier arc as one of the direction options. Name the proposed tier sequence explicitly (e.g. "books → scene types" or "city → neighbourhood → building") and explain what each tier reveals that the previous one cannot. Ask whether the user wants a layered arc or a single-tier story. This decision must be made here, not discovered mid-analysis by Analyst.

7. Propose cleaning and shaping actions.
Suggest transformations such as type fixes, normalization, pivoting, aggregation, deduplication, derived fields, and joins. Use button-ready choices for actions that affect meaning.

For API sources, also consider extraction and shaping actions such as:
Expand All @@ -57,15 +62,17 @@ Use no more than four options unless the user asks for a broader menu. Include `
- caching raw responses before aggregation
- separating entity tables, relationship tables, and display-ready summaries

7. Supplement if useful.
8. Supplement if useful.
If the analysis would be weak without context, propose enrichment datasets. Explain why each source helps and how it would join.

8. Produce handoff notes.
Give Data Analyst a concise data dictionary, transformation log, acquisition notes, caveats, recommended analytical questions, and the likely artifact mode:
9. Produce handoff notes.
Give Data Analyst a concise data dictionary, transformation log, acquisition notes, caveats, confirmed posture, confirmed analytical direction, confirmed narrative intent, and the likely artifact mode:
- `aggregate analysis`
- `record-by-record exploration`
- `hybrid`

`narrative_intent` should be either `single` (one analytical direction, one story) or `multi-tier arc` with the confirmed tier sequence listed in order. Analyst uses this to know upfront whether to build a single story or structure an arc.

## API Source Rules

When the source is an API:
Expand Down
Loading