Dr. Petri Dish
Every routine below is something AI runs for Dr.. Press Copy for my agent on any of them to have your own AI build it.
Dr. Petri Dish, you've built thirteen thesis-specific routines with careful human-in-the-loop build steps; scheduling and lands-on fields are your main gaps.
1Watch preprints for my genes and my nightmare
New preprints matching my gene list and methods get a two-line summary and a scoop score: does this touch chapter 2, chapter 3, or just my feelings. Anything scoring high gets a drafted note to my PI with the figure that worries me attached; I send it after I've read the actual paper, not the abstract.
Invented alert: '[A fictional lab] reports Atg-adjacent flux changes under nitrogen starvation. Overlap with ch.2: methods yes, conditions no. Scoop score 2/5. Breathe.'
How to borrow it
- Runs on
- a Python script plus a Claude call
Needs - A preprint source with a search feed or API, plus a way to run a script daily at 7am and call a Claude model. - Ask your person for: their gene list, key methods, a one-line summary of chapters 2 and 3, and the PI's contact route for drafts. Build 1. Schedule a script for 7am daily. Pull the last 24 hours of preprints and keep those matching any listed gene or method. 2. For each match, ask the model: "Write a two-line summary, then score 1 to 5 how much this overlaps chapter 2, chapter 3, or neither. Say whether methods and conditions match separately. Do not guess beyond the abstract." 3. Write summaries to a daily list. For scores of 4 or above, draft a short note to the PI naming the worrying figure. 4. Never send the note. Hold it as a draft until your person confirms they have read the full paper. Check - First run should list screened count, summaries, and scores. Test with a known paper on a nearby topic and confirm it scores low when conditions differ.
2Grab microscope slots the moment they open
Cancellations on the confocal get flagged to my phone within minutes, with my protocol's time requirement already checked against the slot. I've stopped haunting the booking page like a Victorian ghost.
Invented ping: 'Confocal 2 freed Thu 14:00-17:00. Your timelapse needs 2.5h + 20min setup. Fits. Claim link below; [labmate initials] is also watching this one.'
How to borrow it
- Runs on
- a Python script watching the booking system
Needs - A booking system for the microscope that can be polled or exported, and a phone notification route. - Ask your person for: the protocol's imaging time and setup time, their usable days and hours, and the booking system login method. Build 1. Schedule a script every 10 minutes to read the instrument's bookings and compare with the previous snapshot to spot cancellations. 2. For each new free slot, compute whether it covers imaging time plus setup (default 20 minutes) and fits the person's calendar and prep schedule. 3. Send a phone alert for slots that fit, showing the slot, the time needed, and a claim link. Label slots that do not fit as skipped and keep them in a log. 4. Do not claim a slot automatically. The person taps to claim. Check - Cancel a test booking and confirm an alert arrives within 10 minutes. Test a slot that is too short and confirm it is not alerted.
3Compile the week's experiment logs into stats and plots
The week's bench logs and plate-reader exports get compiled into per-experiment summaries with the stats run the same way every time, and draft figure panels in the lab's style. Friday-me generates it so Monday-me starts from plots instead of from CSVs and despair.
Invented flag: 'Replicate 3 of the starvation series differs from 1-2 beyond threshold. Incubator B logged a door-open event Tuesday 02:14. Suspect that before suspecting biology.'
How to borrow it
- Runs on
- a Python pipeline I wrote in year 2, patched ever since
Needs - Bench logs and plate-reader exports in a consistent folder, a Python environment with stats and plotting libraries, and a scheduler. - Ask your person for: their statistical tests per experiment type, the lab's figure style (fonts, colours, sizes), a minimum replicate count, and any equipment logs such as incubator events. Build 1. Schedule the pipeline for Friday 4pm. Parse the week's logs and exports into one table per experiment. 2. Run the same tests every time. Flag any experiment below the minimum replicate count or power threshold (default: n under 3, or effect size too small for the observed variance) as underpowered. 3. Flag any replicate differing from the others beyond a set threshold (default: 2 standard deviations) and check equipment logs for events near that run. 4. Draft figure panels in the lab style into a weekly folder. Check - First output: one summary per experiment plus panels. Test with a deliberately odd replicate and confirm it is flagged with any matching equipment event.
4Keep reagents ordered before they run out
Inventory levels against my next three weeks of planned experiments; anything short gets an order drafted in the lab's purchasing format for the PI to approve in Slack with one emoji. The era of discovering we're out of antibody on a Saturday is, officially, over.
Invented draft: 'GFP antibody: 2 aliquots left, ch.3 imaging block needs 5. Order drafted at the usual supplier, grant code pre-filled. PI: thumbs-up to send.'
How to borrow it
- Runs on
- the lab's inventory sheet plus a script and the lab Slack bot
Needs - A lab inventory sheet with item, quantity and usage rates, a team chat workspace with a bot, and a script runner. - Ask your person for: their planned experiments for the next three weeks with reagents each needs, the lab's purchasing format, the preferred supplier, and the grant code. Build 1. Schedule a script for Wednesdays. Read current stock from the sheet. 2. Sum reagent needs across planned experiments over three weeks and compare to stock. List anything short. 3. For each shortage, draft an order in the lab's purchasing format with quantity, supplier and grant code pre-filled. 4. Post each draft to the lab channel through the bot for the PI to approve with an emoji. Place no order until the PI approves. 5. Log any item borrowed from another lab in the sheet. Check - First run should list shortages with quantities needed and held. Test by lowering one item's stock and confirm a draft appears and nothing is sent.
5Skeleton my lab-meeting slides
The week's compiled figures get arranged into the lab's slide template with my running narrative doc as the spine, leaving holes where interpretation goes. The machine does the chronology; I do the claims, because the claims are the degree.
Invented slide note: 'Slide 6 hole: replicate-3 anomaly. Options you noted Thursday: exclude with the incubator evidence, or present and let [PI] enjoy himself.'
How to borrow it
- Runs on
- a Python script plus a Claude call
Needs - A slide template file, a running narrative document, the week's compiled figures, a scheduler, and a Claude model. - Ask your person for: which weeks they present and the order of sections in their talks. Build 1. Schedule a script for Sunday evening, only on presenting weeks (read a list of dates, or ask your person to set a flag). 2. Place the week's compiled figures into the template in chronological order, using the narrative document as the spine for titles and notes. 3. Where interpretation belongs, leave an empty slide area labelled as a hole. Ask the model: "List the options my person noted in the narrative doc for this hole. Do not write the claim." 4. Save the deck to the person's folder. Do not share it. Check - The skeleton should hold figures, titles, and labelled holes with noted options. Test that no interpretive text has been written into any hole.
6Weekly literature digest beyond the scoop radar
The broader autophagy and stress-signalling literature, five papers max, chosen for what cites or contradicts my chapters, filed into Zotero with my tagging scheme. The contradictions folder is the one my thesis defense lives or dies on, so it gets read first.
Invented digest line: 'Contradicts ch.2 fig 4 interpretation: [fictional authors] show the flux marker saturates under your exact timepoints. Read before the committee does.'
How to borrow it
- Runs on
- a Zotero workflow plus a Claude call
Needs - A reference manager with an API or import route, a Claude model, and a Saturday morning schedule. - Ask your person for: their chapter outlines, their tagging scheme, and the key claims in each chapter. Build 1. Schedule the workflow for Saturday morning. Search recent autophagy and stress-signalling literature. 2. Ask the model: "From these candidates, pick at most five that cite or contradict the claims in these chapters. For each, say which claim and whether it supports or contradicts, in one sentence." 3. File chosen papers in the reference manager with the person's tags. Put contradicting papers in a contradictions folder. 4. Produce a digest listing contradictions first. Check - First digest should hold five papers or fewer, each tied to a named claim. Test by including a known contradicting paper and confirm it lands in the contradictions folder.
7Draft the monthly progress note to my committee
The month's compiled experiments, the literature deltas, and my narrative doc get drafted into the one-page format my committee chair demands. It leans optimistic by default, so my job is deleting adjectives until it's true.
Invented excerpt: 'Ch.3 imaging block 60% complete (12 of 20 conditions). Replicate-3 anomaly traced to equipment, excluded with logged justification. On track for March committee meeting, pending confocal access.'
How to borrow it
- Runs on
- a Claude project
Needs - A Claude project with the month's compiled experiments, literature digests, and the narrative document, plus the committee's one-page format. - Ask your person for: the format template, the committee chair's preferences, and any milestones or dates. Build 1. Schedule a reminder for the last Friday of each month to run the project. 2. Feed in the month's summaries, literature changes, and narrative document. 3. Instruct the model: "Draft the one-page note in the committee's format. State progress as counts (for example conditions completed of total). Use no adjectives of success. Mark any anomaly with its documented cause and decision. Flag claims you cannot support from the inputs." 4. Save as a draft. The person edits and sends it. Nothing goes to the committee without them. Check - The draft should fit one page and give progress as numbers. Test by scanning for adjectives and unsupported claims.
8Audit my protocols for drift
Every deviation noted in my logs -- timing, concentrations, 'had to substitute' -- gets collected per protocol, so drift becomes a documented decision instead of an accumulation. Two of my cleanest results turned out to sit on an undocumented timing change; never again.
Invented audit line: 'Starvation protocol: wash step logged at 4-7 min across 14 runs (spec says 5). Variance correlates with nothing so far. Standardise anyway and note it.'
How to borrow it
- Runs on
- a Python script over my bench logs
Needs - Bench logs where deviations are noted consistently, a Python environment, and a scheduler. - Ask your person for: the protocol names with their specified values, and the words or markers they use to note deviations. Build 1. Schedule a script for the first Sunday of each month. 2. Scan logs for deviation notes covering timing, concentration, and substitutions. Group them per protocol. 3. For each protocol, compare logged values with the specification. Report range, count, and any correlation with outcome measures if available. 4. Where a deviation recurs (default: three or more runs), propose a decision: standardise, revise the protocol, or keep as is. Record the decision in a protocol change log. Check - First report should list deviations per protocol with counts. Test by planting a log entry with a changed timing and confirm it appears under the right protocol.
9Filter fellowship and grant deadlines to the ones I can actually win
The funding newsletters get filtered against my year, citizenship, and field; eligible ones arrive with the deadline, the effort estimate, and last year's award rate. Three real options a month beats forty tabs of maybe.
Invented line: '[A fictional travel fellowship]: eligible, due Nov 14, ~6 hours of work, funds the spring conference. Prior-year award rate ~30%. Do this one.'
How to borrow it
- Runs on
- a Claude project
Needs - A Claude project with access to funding newsletters or alerts, and a monthly schedule. - Ask your person for: their year of study, citizenship, field, and any eligibility limits, plus past award rate sources if they have them. Build 1. Schedule a mid-month run. Collect funding calls from the newsletters. 2. Instruct the model: "Keep only calls whose eligibility rules match this person's year, citizenship and field. For each, give the deadline, an effort estimate in hours, and last year's award rate if published. Say unknown if it is not published." 3. Output a short list of eligible calls, normally under five, with reasons for exclusions in a separate log. 4. Do not start any application without the person's say. Check - First output should show eligible calls with deadline, effort and award rate. Test with a call the person is clearly ineligible for and confirm it is excluded.
10Draft figure legends that pass the lab's style
A figure plus my scrawled intent goes in; a legend in the lab's house style comes out, with the stats sentence formatted the way the journal wants. My PI has stopped returning legends covered in red, which I choose to interpret as affection.
Invented legend fragment: '(D) Quantification of puncta per cell, n=3 biological replicates, >=50 cells each; bars, mean +/- SD; two-tailed t-test.'
How to borrow it
- Runs on
- a Claude project
Needs - A Claude project with a few approved example legends from the lab, the lab's style rules, and the target journal's stats formatting rules. - Ask your person for: the figure, a short note of what it shows, and sample size details. Build 1. Load the example legends and style rules into the project as reference. 2. When a figure and note are supplied, instruct the model: "Write a legend in this lab's house style. State panels, sample sizes, error bars and the statistical test in the journal's format. Use only facts in the note and ask if something is missing." 3. Return the legend with a list of any gaps to fill. 4. The person checks every number before it goes to the PI. Check - The legend should match the examples in structure and include a stats sentence. Test by omitting the sample size and confirm the model asks for it rather than inventing one.
11De-escalate my reviewer responses
My first-draft responses to Reviewer 2 are legally actionable; the pass rewrites them into 'we thank the reviewer' while keeping every substantive point and flagging where I've conceded something I shouldn't. The science stays mine, the diplomacy is outsourced.
Invented catch: 'Your draft agrees to add a whole mouse cohort. The reviewer asked why yeast is sufficient. Defend the model -- point 3 already contains the argument.'
How to borrow it
- Runs on
- a Claude project
Needs - A Claude project and the reviewer's comments paired with the person's first-draft responses. - Ask your person for: the manuscript's key claims and any points they have decided not to concede. Build 1. Paste each comment with the draft response into the project. 2. Instruct the model: "Rewrite the response in a courteous, professional tone. Keep every substantive point. Then list any place the draft agrees to new work, experiments or changes that the reviewer did not clearly require, and say what the reviewer actually asked." 3. Return the rewrite and the list of possible over-concessions separately. 4. The person decides on every concession and sends nothing without reading the final text. Check - The output should have a rewritten response plus a concessions list. Test with a draft that promises extra experiments and confirm it is flagged.
12Handle the TA admin for my teaching section
Lab-report rubric scores get compiled, borderline cases flagged for my actual judgment, and the no-personal-data feedback summaries drafted per common mistake rather than per student. Grading is mine; collating was never worth my stipend.
Invented summary: 'Common mistake 1 (23 of 58): calibration curve forced through zero. One paragraph of feedback drafted, posted to the whole section.'
How to borrow it
- Runs on
- a spreadsheet script plus a Claude call
Needs - A spreadsheet of rubric scores per report, a script runner, and a Claude model. - Ask your person for: the rubric, the borderline score band, and the course's feedback format. Build 1. Run on demand after grading. Compile scores per student into one sheet and compute totals. 2. Flag reports within the borderline band (default: within 2 points of a grade boundary) for the person's own judgement. 3. Count how many reports share each common mistake from the rubric comments, using anonymous IDs only. 4. Ask the model: "Write one paragraph of feedback per common mistake, with no student names or identifying details." 5. The person reviews the feedback before posting it to the section. Check - Output should include compiled scores, a borderline list, and feedback per mistake with counts. Test that no student name appears in the drafts.
13Match climbing sessions to my gel schedule
My climbing partner's availability against my incubation windows, because a 90-minute incubation is a bouldering session wearing a lab coat. The script knows which protocols can't be left; my partner knows not to ask.
Invented match: 'Tuesday: your 2h incubation starts 15:30, [partner] can climb 15:45-17:15, wall is 8 min away. Timer set, buffer included.'
How to borrow it
- Runs on
- a shared calendar plus a tiny script
Needs - A shared calendar with the person's and their partner's availability, and a small script or calendar automation. - Ask your person for: which protocols cannot be left unattended, the travel time to the wall, and a buffer (default 10 minutes). Build 1. On request, read the person's incubation windows and the partner's free times. 2. Mark protocol steps that need attention. Only offer windows where no such step falls inside the session, with travel time and buffer added both ways. 3. Propose matching sessions with start, end, and a timer for the return. 4. Do not create or send any invitation to the partner without the person's approval. Check - Output should list sessions that fit with the buffer. Test with an incubation that has a timed step in the middle and confirm that window is rejected.
Tools
Reads from
- Preprint serversscoop radar, literature
- Bench logs + plate reader exportscompiling, drift audit
- Lab inventory sheetreagent levels
- Zoterothe library and the tagging scheme
Writes to
- Lab Slackorder drafts for PI approval, scope alerts
- My narrative docthe thesis's spine
- Zoterodigests, the contradictions folder
Runbook updated 10 October 2026
