Aline's AI reports can extract terms and insights across hundreds or thousands of agreements at once — but the accuracy and efficiency of a report come down to how you run it. This article collects the best practices our team uses to get clean, trustworthy results the first time, while keeping token usage low. Follow these and your reports stay accurate no matter how large your portfolio gets.
If you're new to reports, start with Building AI Reports in Aline, then come back here.
1. Add Your Columns Before You Filter
Build the report in the right order: add every data column (property) you need first, let the AI extract across the full document set, then filter and sort. If you filter first and add columns afterward, the AI may not run across all your documents, and you'll end up with missing or blank values.
💡 The order that works: columns → run → filter → sort. Not the other way around.
2. Don't Run Everything on Everything at Once
The most important habit for both accuracy and cost: work in stages instead of running every detailed prompt across your entire repository.
A proven pattern:
Screen first with a simple prompt. Run a broad yes/no property — for example, "Is this a BAA? (yes/no)" — across the set.
Filter out what doesn't apply. Remove the "no" results so you're left only with the relevant contracts.
Run detailed prompts only on the remainder. Now run your in-depth extraction (specific BAA terms, provisions, dates) against the smaller, relevant subset.
This staged approach is faster, far more accurate, and uses a fraction of the tokens of running every prompt against every document.
3. Test on a Small, Known Subset First
Before running a prompt across thousands of documents, validate it on a handful of contracts you already know the answers to. Confirm the AI is returning what you expect, then scale up. Testing small catches a mis-worded prompt before it costs you a large run — and saves you from having to redo the whole report.
4. Lock Results Once You've Validated Them
This is one of the most useful and least-known features. Once you've run a prompt and confirmed the results are correct, lock them.
Here's what locking does:
It freezes the responses so they won't change, even if you or a teammate later edits the prompt.
Anything locked won't be run on again — so re-running the report skips it.
It lets you re-run only on what's left. When some results come back ambiguous, lock everything that's already correct, then run again on just the ambiguous rows.
You don't have to lock cells one at a time — you can lock everything that's been run so far in one action, then continue refining only the pieces that still need work.
💡 Best Practice: Get into the rhythm of validate → lock. Every time you confirm a batch of results is correct, lock it. It protects your validated data, keeps your report stable while you tweak prompts, and dramatically cuts token usage on re-runs.
5. Refine Prompts to Cut Ambiguity and False Positives
Accuracy starts with the prompt. Be specific about what you're looking for and how to recognize it — for example, spelling out how to tell a BAA from a DPA and what each must contain. When you need language pulled exactly, use the keyword "verbatim" so the AI extracts word-for-word instead of paraphrasing. When a result is wrong, read the AI's reasoning to see why, then adjust. You can iterate on wording in AI chat before committing a prompt to the report. See Refining AI Prompts for Reports, Playbooks & Chat for the full technique.
6. Keep Filters Simple
When you're excluding several contract types, don't stack a separate filter for each — collapse them into a single "is none of" filter listing everything to leave out. Fewer, cleaner filters are easier to read, easier to adjust, and less likely to hide a mistake.
7. Use the Right Property Type
Give each custom property the correct output type — text, Boolean (yes/no), date, or number — rather than leaving everything as text. Typed fields are what let you sort by value, filter by date range, and feed data into reminders. A contract-amount field set as a number lets you surface every agreement over a threshold; a date field lets you drive expiration tracking.
8. Clean the Data Before You Rely on It
A report is only as good as the documents under it:
Filter out expired contracts before running — especially if the report will drive reminders, so you don't notify people about dead agreements.
Merge overlapping categories. If the AI returns near-duplicate values (for example, "processor" and "service provider," or "business" and "controller"), consolidate them into unified dropdown options so your grouping stays clean.
Spot-check accuracy on a sample of results before trusting the full set, and manually confirm any relationships the AI can't reliably infer (such as linking parent and child contracts).
9. Group to See the Patterns
Use grouping — most often by contract type — to break your portfolio into meaningful segments and surface outliers. Combined with filters, grouping answers real questions: "all vendor agreements expiring next year, grouped by renewal type."
10. Save Views and Export Clean Data
Once a report is filtered and grouped the way you want, save the view so you don't rebuild it each time. When you need the data elsewhere, export to CSV or Excel — this is also a handy intermediate step for building a Playbook from a report's outputs.
The through-line across all of these: work deliberately, not all at once. Add your columns first, screen before you drill in, test on a small set, lock what you've validated, and keep your prompts and data clean. Do that and your reports come back accurate the first time — while using a fraction of the tokens.
Related articles: Building AI Reports in Aline · Report Filtering, Grouping & Custom Properties · Refining AI Prompts for Reports, Playbooks & Chat · Understanding Token Usage in Aline · Setting Up AI Reminders for Contract Expirations & Renewals