Create a Mac OSX Excel add-in that can generate and modify Excel tables using natural language commands. This challenge is designed to test your ability to work with potentially challenging APIs, create scalable architecture, and deliver a functional product within constraints.
Time Limit: 48 hours
- Language: Python, TypeScript, or C# (note: C# may have limitations on MacOS)
- LLM Integration: Claude (key will be provided). Documentation here and tool calling here
- Platform: MacOS Excel
-
Natural Language Table Generation
- Must be able to create tables of strings (e.g., "Create a table of fire type pokemon" would yield a table with their evolves and abilities)
- Minimum table size support: 4x5
-
Formula Integration
- Must support basic Excel formulas
- Example: "Create a table of monthly temperatures and calculate the average"
- Should handle both data input and formula generation at the end
-
Command Interface
- Minimum: Terminal-based or local web interface/taskpane for natural language input
- Must provide clear feedback on command execution
- Should handle basic error cases gracefully
Choose any of these to implement based on your time and interests. You are NOT expected to implement all of these:
-
Formatting
- Cell colors, font sizes, and styles
- Context-aware formatting
- Borders and layout enhancement
-
Streaming Command Execution
- Implement progressive execution of LLM tool calls
- Execute each complete function call as soon as it's received, rather than waiting for the entire response
- Create a more interactive experience where users see changes happening in real-time
- Note: Focus on tool-call level streaming rather than character-by-character update
-
Excel-Integrated UI
- Task pane or modal dialog within Excel
- Real-time feedback
- Command history
-
Contextual Awareness
- Support for multiple sequential commands
- Ability to reference and modify existing content
- Understanding of current worksheet context
-
Data Visualization
- Basic chart generation
- Chart customization
- Multiple chart type support
-
Innovation
- Feel free to add features you think would be valuable!
- We recommend checking out the JS for Excel API by microsoft. This should have some basic functionality and will create a taskpane for you to interface with your data. It is linked here
- If you want to go above and beyond that, you could consider Applescripts, Direct XML editing, or any other technique you can find.
- Any successful implementation of Excel features not documented in the standard API will be viewed very positively
- MacOS
- Excel for Mac
- Python 3.8+ or Node.js 16+ (depending on your choice)
- Git
- Fork this repository
- Create a new branch with your name:
firstname-lastname - Install required dependencies (document in your README)
- Request Claude API key from jude@usecarousel.com
Create a clear project structure that demonstrates good code organization. Consider:
- Separation of concerns
- Clean architecture principles
- Maintainable and scalable design
- Create a new private repository using this template ("Use this template" button on GitHub)
- Name your repository:
excel-challenge-[YourName] - Add juderzzo as a collaborator
- Complete your implementation
- Ensure your repository includes:
- Clear documentation on how to run your solution
- Any known limitations or issues
- List of implemented features (both required and optional)
- Brief explanation of technical decisions
- Screenshots/recordings of the working solution (if applicable)
- Email [your email] with your repository link when complete
Your solution should be runnable with minimal setup. Include clear instructions for:
- Environment setup
- Dependency installation
- Running the application
- Example commands/usage
The most important criteria to consider is the functionality of the features you'd include. A project with only the required functionality working at 95% is a better submission that a project with all of the optional functionality working at 50%. While it might be tough to eliminate every single bug, we will first consider the robustness of any features before evaluating the breadth of optional implementations. This includes:
- Functionality of required features
- Code quality and organization
- Problem-solving approach
- Documentation quality
- Handling of edge cases
- Creative solutions to API limitations
Remember: This is an open-ended challenge. You are encouraged to use all available resources (the internet, other git repos, AI, whatever you think will help you). While there are required elements, how you approach them and what additional features you choose to implement is up to you. We're interested in seeing your problem-solving process and technical creativity.
- You are not expected to implement all optional features
- Focus on creating a robust solution for the core requirements first
- Document any assumptions you make
- Include information about testing you performed
- If you run into API limitations, document your workarounds
Feel free to reach out as often as you'd like to jude@usecarousel.com. Questions are encouraged, and will be responded to.
Good luck!