This is Diogo Cruz's usage of AI as of Feb 11, 2025.
Updated on Feb 13, 2025.
Mar 31, 2025: Gemini's offerings have improved somewhat, and they're no longer as bad as I make them out to be in this doc. That being said, its interface still sucks.
- I generally try to stay ahead of the curve when it comes to AI, so I make an active effort to delegate as much as possible to AI models and agents, even if it currently doesn't save me a lot of time, with the expectation that it'll save me a lot of time in the future.
- By default, I convert everything informative I run into online into a quick summary and LLM chat:
- I created a Firefox add-on that adds a shortcut to automatically copy what's on my screen to Claude and asks it to summarize it. It has different shortcuts for different summary sizes.
- Personally, Claude is what works best for me, since I don't like chatGPT and Gemini default summary styles.
- It works well for online articles, Twitter threads, Hackernews threads.
- I created a Firefox add-on that adds a shortcut to automatically copy what's on my screen to Claude and asks it to summarize it. It has different shortcuts for different summary sizes.
- Handling projects:
- For projects or non-trivial tasks, I create a Claude project, and I add all the project information I have into it (if in doubt, I add it). I rarely interface directly with the original data source. For example, if I'm applying for a grant, but I'm unsure of the deadlines, I'll ask Claude, since the information is likely contained in the Project content (if in doubt, I can ask from which document it specifically came from).
- It is very uncommon for Claude to hallucinate for these tasks, though it sometimes happens. It usually happens when the Project contains only partial information to fulfill the request, in which case Claude is likely to fill in the blanks based on the most likely explanation. If the task also requires Claude to pad the response with information the Project doesn't have, then it may also include tangentially relevant info, even if it's not necessary to the task. This is more apparent in situations where the context window is nearly full, where Claude appears to suffer more from mode collapse.
- In the rare cases where the Claude's context window is not big enough, I use the Gemini models. I generally avoid this option, as I consider them to be worse, and both the https://gemini.google.com and the https://aistudio.google.com/ interfaces hard to work with.
- Sometimes I create Claude projects just for subtasks, if the subtask is complex enough and self-contained.
- If there's info that is contained in Google Docs that are often updated, I'll add the Doc through the Drive interface instead of uploading the docx, so that Claude always has access to the up-to-date version.
- For projects or non-trivial tasks, I create a Claude project, and I add all the project information I have into it (if in doubt, I add it). I rarely interface directly with the original data source. For example, if I'm applying for a grant, but I'm unsure of the deadlines, I'll ask Claude, since the information is likely contained in the Project content (if in doubt, I can ask from which document it specifically came from).
- Other grunt work:
- I try to delegate as much grunt work as possible. Among the grunt work that is currently possible to automate:
- Provide feedback to Google Docs or articles:
- Generally a good starting point, though it requires using a good prompt. By default, Claude will stick to shallower, more general, feedback, instead of providing specific deep feedback.
- For scientific papers, asking it to play the role of a critical reviewer that is negative about the paper can sometimes provide useful feedback. Being specific about what you want the feedback to be can also help (asking for unclear sections, contradictory info, typos, etc).
- Implement feedback:
- Generally a great starting point, gets 90% of the way there. For Google Docs, a trick to give Claude access to the Doc comments is to export the Doc as html, open the html file in the browser, and print it to PDF. The html and PDF versions will contain the comments.
- If the Google Doc has important images, it might be preferable to export it to PDF and add the PDF to the Claude project. Claude processes PDFs multimodally, so it sees the images. [CHECK] I'm not sure if that is true for Docs in general.
- Generally a great starting point, gets 90% of the way there. For Google Docs, a trick to give Claude access to the Doc comments is to export the Doc as html, open the html file in the browser, and print it to PDF. The html and PDF versions will contain the comments.
- Fill out applications:
- I have a Google Doc with general info about me that I update often (or I ask Claude to update). The purpose of this doc is to contain enough information about me and my motivations, goals, worldviews, etc, that a third party could successfully apply on my behalf to applications.
- For each application, I create a project with the Application's info, and my info doc, and I ask Claude to fill it out. I also provide any additional context if necessary.
- Often, Claude will fill out applications in a way that is obviously LLM generated. I generally ask Claude to fill it out this way first, and then ask for a second pass by saying that the first pass is too technical/formal, and sounds too much like a lawyer. That usually results in a more human-sounding writing style. I haven't played too much with Claude's writing styles, so I'm not sure how effective they are.
- Screen applicants:
- If I'm screening hundreds of applicants, I upload the CSV file with all the applicants data to a Project and provide Claude with a comprehensive list of instructions and weighted factor model to judge each applicant against. If I don't have a WFM yet, I first ask it to generate one. The WFM should be comprehensive enough that little subjectivity remains in the evaluation, and it's all down to the grunt work of doing all the processing. By default, Claude processes CSV files differently from other files, and can run code to process them, so it can work with files that are much larger than its context window. So far, I've always used the web interface, and simply asked Claude to judge 10-20 applicants at a time (which is usually the most it'll do in one go before the message cutting off). Once I have the full analysis, I import it to a Google Sheet and look at the top candidates. For example, if I'm looking for 5 applicants, and I have 200, I might then look at the WFM for the top 40. I'll also do a cursory look at the full WFM, to check if Claude misunderstood some aspect of it.
- In general, when judged against humans, Claude will have a lot more false positives than false negatives. The false positives are generally due to candidates exaggerating their qualifications, or pad the application fields with too much info. They may also be LLM generated applications. The false negatives are often human generated applications where the applicant clearly undersold themselves.
- If I'm screening hundreds of applicants, I upload the CSV file with all the applicants data to a Project and provide Claude with a comprehensive list of instructions and weighted factor model to judge each applicant against. If I don't have a WFM yet, I first ask it to generate one. The WFM should be comprehensive enough that little subjectivity remains in the evaluation, and it's all down to the grunt work of doing all the processing. By default, Claude processes CSV files differently from other files, and can run code to process them, so it can work with files that are much larger than its context window. So far, I've always used the web interface, and simply asked Claude to judge 10-20 applicants at a time (which is usually the most it'll do in one go before the message cutting off). Once I have the full analysis, I import it to a Google Sheet and look at the top candidates. For example, if I'm looking for 5 applicants, and I have 200, I might then look at the WFM for the top 40. I'll also do a cursory look at the full WFM, to check if Claude misunderstood some aspect of it.
- Processing files:
- Using Cursor's composer agent mode (with Claude 3.5 Sonnet), it is relatively easy to do some straightforward file processing.
- Organizing files: example: my Downloads folder had 3000 unsorted files, I asked Composer to look at it folder, and sort the files by projects, by creating project folders and moving the files to them. It created about 20-30 folders, and honestly did a better job than I would have done.
- Mass changing files: if I need to change a lot of files at once, I can use the agent mode to either write a script that does it for me, or, if the task cannot be done algorithmically, write a detailed set of instructions which it can then follow manually to process each file.
- Programming:
- For programming, I use a mixture of Cursor's agent mode, o1-pro, and o3-mini-high (the latter has web search).
- For grunt work and simple bug fixing, I'll use agent mode with Claude. I have it configured to be as capable as possible, with Long Context enabled, yolo mode (with constraints).
- I'll generally only open the folder in Cursor that matters for that project, since Cursor indexes on it, and those are the files that agent mode sees. There's no need to confuse it by giving it access to more files.
- By default, agent mode will only look at at most 100 files in a folder. For code, it sometimes seems to look at the whole file, while other times it only looks at a portion (up to 250 lines). As a result, it is generally best not to have code files that are too long, since the agent won't have the appropriate context.
- If it tries to run bash commands or code, a common issue is not knowing that it needs to activate a specific conda environment first, which leads it to crash. Another issue is that it runs code on Powershell, and that sometimes creates issues.
- Settings changes from default:
- Yolo mode: currently set to run commands by default, unless they clearly delete files (like rm rf; even so, Cursor supposedly asks for confirmation if files are getting deleted). Quite useful to allow the agent to propose code changes to fix bugs and then automatically check if the changes worked or not, and easily iterate on it.
- Current limitations: if using conda environments, it often fails to activate the environment, and simply uses the base environment. It also seems to run commands in a Powershell environments, which sometimes fails to work as the bash terminal would.
- Long context option: in case the files are quite big. I do note a marked decrease in agentic behavior in this setup.
- Yolo mode: currently set to run commands by default, unless they clearly delete files (like rm rf; even so, Cursor supposedly asks for confirmation if files are getting deleted). Quite useful to allow the agent to propose code changes to fix bugs and then automatically check if the changes worked or not, and easily iterate on it.
- For more complex tasks, I'll use o1-pro. Unfortunately, o1-pro can't easily access files, so anything needs to be converted into a giant prompt. For github repos, I use a repo to txt converter. For other files, I either convert them using pandoc or an online website.
- For bug fixing that requires search, I ask o3-mini-high.
- Deepseek-R1+search can also be a useful middle ground between the capabilities of o1-pro and o3-mini-high.
- I generally have Cursor open on one side of the screen, quite o1-pro/o3-mini-high/Deepseek + other links are open on the other side.
- For grunt work and simple bug fixing, I'll use agent mode with Claude. I have it configured to be as capable as possible, with Long Context enabled, yolo mode (with constraints).
- For programming, I use a mixture of Cursor's agent mode, o1-pro, and o3-mini-high (the latter has web search).
- Web search:
- By default, I use chatGPT, either with GPT-4o or o3-mini(-high), depending on the complexity of the request. I rarely use Google, unless I'm looking for a specific file/website, instead of a specific piece of information. Perplexity is also good, but I currently don't use it as much.
- exa.ai works nicely for semantic search.
- For scientific research, chatGPT's o3-mini-high and Deep Research, and arxiv semantic websites like https://arxivxplorer.com work quite well as a good starting point, and specially to do literature reviews. For free options, Deepseek-R1 + Search can mimic Deep Research quite well. In my opinion, Gemini's options are currently slop, and not that usable.
- Meetings:
- There are lots of meeting note-taking AI apps. Personally, I just turn on the automatic transcript in Zoom or Google Meet and then ask chatGPT or Claude to write a meeting summary and, if appropriate, post-meeting TODOs.
- If it's a longer meeting that needs a meeting plan, then I'll have a Claude project with the project info and I'll explain the meeting rationable to Claude and ask it to produce a plan. It's much better than what I'd do in person, in practice.
- Emails:
- For emails that require a certain style of writing (certain formality, for example), I'll ask Claude to write them for me, and then adapt.
- TODO lists:
- If there are a lot of TODOs for a particular project, but the project info and details are spread out over many emails, websites, Slack, etc, then I collect everything and put in on a Claude project and ask it to generate a TODO list in Markdown, which I then import to a Google Doc.
- Copy-pasting chatGPT directly to a Google Doc seems to work well, but for Claude it's preferable to "Paste from Markdown", a Google Docs option that can be enabled in the settings. Unfortunately, that option only works in Chrome, and that is the only use-case I have for Chrome (otherwise I use Firefox).
- This issue with Claude seems to be less prevalent recently (Mar 31, 2025), copy-pasting directly now mostly works fine.
- Copy-pasting chatGPT directly to a Google Doc seems to work well, but for Claude it's preferable to "Paste from Markdown", a Google Docs option that can be enabled in the settings. Unfortunately, that option only works in Chrome, and that is the only use-case I have for Chrome (otherwise I use Firefox).
- If there are a lot of TODOs for a particular project, but the project info and details are spread out over many emails, websites, Slack, etc, then I collect everything and put in on a Claude project and ask it to generate a TODO list in Markdown, which I then import to a Google Doc.