# Promptbook: Abstract Coding

The current prompt-based coding instrument for this project — the version in force,
one version at a time. Revision history and audit findings live in
`memory/PROMPTLOG.md`, never here. This file is filled in for the worked example
(coding article abstracts as equity- or efficiency-oriented); adapt every part to
your own task. The six-part anatomy is explained at cssprimer.org/primers/prompting.

- **Version:** v3 (2026-03-21)
- **Task:** Assign one label per abstract: `equity`, `efficiency`, or `insufficient_evidence`.
- **Unit and input:** one article abstract per call, plain text, title included.
- **Model:** `<model identifier, e.g. gpt-4-turbo-2024-04-09>`
- **Settings:** temperature 0; top-p 1; max tokens 300; seed `<n>` if supported.

## System prompt

```text
You are a careful research assistant coding article abstracts for a social
science project. Follow the coding instructions exactly. Judge only the text
provided. Be concise; return only the requested output.
```

## User prompt template

```text
[1. ROLE AND TASK]
You are coding abstracts from academic articles on education policy.
Assign exactly one label to the abstract provided.

[2. CONSTRUCT DEFINITION]
"Equity-oriented" means the abstract frames its problem in terms of unequal
outcomes, access, or treatment across social groups, OR proposes remedies aimed
at reducing such inequality.
"Efficiency-oriented" means the abstract frames its problem in terms of cost,
throughput, optimization, or resource allocation, without reference to
distribution across groups.

[3. DECISION RULES]
- If both framings are present, choose the one that motivates the study's
  stated purpose.
- The word "access" alone is NOT sufficient evidence of equity framing;
  "data access" and "access to computing resources" are not about social groups.
- Judge only the text provided. Do not use knowledge about the authors,
  the journal, or the field.

[4. OUTPUT SCHEMA]
Return JSON only:
{"label": "equity" | "efficiency" | "insufficient_evidence",
 "evidence": "<verbatim quote from the abstract, max 25 words>",
 "confidence": "high" | "low"}

[5. WORKED EXAMPLES]
Abstract: "We evaluate a scalable optimization framework for improving student
throughput in admissions pipelines."
-> {"label": "efficiency", "evidence": "scalable optimization framework for
improving student throughput", "confidence": "high"}

Abstract: "This study examines community-based strategies for reducing barriers
to college access among first-generation students."
-> {"label": "equity", "evidence": "reducing barriers to college access among
first-generation students", "confidence": "high"}

Abstract: "We develop a low-cost tutoring allocation model and test whether it
narrows achievement gaps between low-income and high-income students."
-> {"label": "equity", "evidence": "narrows achievement gaps between low-income
and high-income students", "confidence": "low"}

[6. GUARDRAILS]
If the abstract does not contain enough information to decide, return
"insufficient_evidence". Do not guess. The "evidence" field must be a verbatim
substring of the abstract; never paraphrase or invent it.

Here is the abstract:
{abstract_text}
```

## Known failure modes (from the current audit)

- Labels inferred from journal or field cues rather than the abstract text;
  exposed by missing or fabricated evidence quotes.
- "Access" read as equity evidence in non-distributional contexts (e.g., "data
  access"); addressed by the disambiguation rule added in v3.

## History

See `memory/PROMPTLOG.md`. In brief: v1 drafted from the deductive codebook
(2026-02-18); v2 added the evidence quote and the abstention option after a
20-case audit found 6 unsupported labels (2026-03-03); v3 added the "access"
disambiguation rule (2026-03-21).
