Thank you for your interest in contributing to Well! We welcome contributions from developers, designers, product thinkers, and anyone who wants to improve how invoices are collected and automated.
Whether you're fixing bugs, suggesting features, creating new provider blueprints, or helping with documentation — every bit counts.
- Check the Issues tab for open bug reports.
- Look for issues labeled
good first issueorhelp wanted. - Submit a pull request with a clear title and description of the fix.
- Propose a new feature via an issue.
- Include context, user need, and possible implementation ideas.
- You're also welcome to open a PR directly if the change is small and self-contained.
- Use Contributor Mode in the Chrome extension to guide the AI through a new invoice workflow.
- Once the blueprint is generated, export it and submit it via pull request.
- Include a description of the provider and any edge cases you covered.
- Spot a typo? Want to add a helpful example? Found missing install steps?
- We love copy updates just as much as code. Submit away!
- Share feedback, questions, or improvement ideas in our Discussions.
- Upvote features you’d like to see or add comments on active issues.
We have a dedicated process for collecting and implementing improvement ideas. See our IDEAS.md for details on:
- How to submit improvement ideas
- Our prioritization process
- Monthly triage sessions
- Recognition for contributors
- Report extraction failures: Create Bug Report
- Suggest features: Create Feature Request
- General discussions: Start a Discussion
- Node.js (version 16 or higher)
- Python (version 3.8 or higher)
- Git
-
Fork the repository
git clone https://github.com/yourusername/Well.git cd Well -
Install dependencies
npm install pip install -r requirements.txt
-
Set up environment variables
cp .env.example .env # Edit .env with your configuration -
Run tests to ensure everything works
npm test python -m pytest
feature/description- for new featuresbugfix/description- for bug fixesimprovement/description- for enhancementsdocs/description- for documentation updates
type(scope): brief description
Detailed description of changes (if needed)
Fixes #issue-number (if applicable)
Types: feat, fix, docs, style, refactor, test, chore
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Write clean, readable code
- Add tests for new functionality
- Update documentation as needed
-
Test your changes
npm test python -m pytest npm run lint -
Commit and push
git add . git commit -m "feat(extraction): improve receipt field detection" git push origin feature/your-feature-name
-
Create a Pull Request
- Use the PR template
- Link related issues
- Add screenshots for UI changes
- Request review from maintainers
- Write tests for all new functions
- Maintain test coverage above 80%
- Use descriptive test names
- Test extraction workflows end-to-end
- Include various document formats
- Test error handling scenarios
- Use anonymized/synthetic test documents
- Never commit real personal/financial data
- Document test case characteristics
- Use clear, descriptive variable names
- Add comments for complex logic
- Document all public APIs
- Include usage examples
- Update installation instructions if needed
- Add new features to feature list
- Update API documentation
- Include migration guides for breaking changes
When reporting bugs or extraction failures, please include:
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, versions)
- Error messages or logs
- Document format and characteristics
- Expected extraction results
- Actual extraction results
- Anonymized sample document (if possible)
Use our bug report template for consistency.
Before submitting a feature request:
- Check existing issues and discussions
- Consider the broader impact on users
- Think about implementation complexity
- Provide clear use cases
Use our feature request template.
- Be open to feedback
- Respond to review comments promptly
- Make requested changes in separate commits
- Squash commits before final merge
- Be constructive and specific
- Focus on code quality and maintainability
- Check for security implications
- Verify tests and documentation
We use labels to organize and prioritize work:
- Type:
bug,feature,enhancement,documentation - Priority:
critical,high,medium,low - Area:
accuracy,performance,compatibility,ux,security - Status:
triage,ready,in-progress,blocked,waiting-for-review
- Use inclusive language
- Be patient with newcomers
- Provide constructive feedback
- Respect different perspectives
- Keep discussions relevant
- Use appropriate channels (issues vs discussions)
- Search before creating new issues
- Follow templates when provided
- Development → Feature branches
- Testing → Integration testing on develop branch
- Review → Code review and approval
- Staging → Deploy to staging environment
- Release → Merge to main and tag version
- Documentation → Update changelog and docs
- Questions about contributing: Use Discussions
- Technical issues: Create an Issue
- Real-time chat: Join our Discord (link in README)
- Email: contact@yourproject.com (for sensitive matters)
We appreciate all contributions! Contributors may receive:
- GitHub contributor badge
- Mention in release notes
- Feature naming rights for major contributions
- Early access to new features
- Read this CONTRIBUTING.md
- Review our IDEAS.md process
- Set up development environment
- Run tests successfully
- Read existing code to understand patterns
- Check open issues for "good first issue" labels
- Join community discussions
Thank you for contributing to making invoice and receipt extraction better for everyone! 🙏
Last updated: [Current Date]