A small, user-focused CLI for generating professional project proposal quotes (estimates) for clients, built with TypeScript.
This tool is ideal for freelancers, consultants, and small agencies who want to generate quick, consistent project estimates directly from the terminal.
Originally this tool was built as a web interface using Streamlit and Python (https://github.com/IAmTomShaw/quotation-agent), however I wanted to explore building a CLI tool using TypeScript and Node.js that could be instantly run from the terminal at any time.
This project requires the GitHub Copilot CLI to be installed and a valid GitHub Copilot subscription.
AI-driven quote generation features will not work without these prerequisites.
You will also need to configure the following when running the CLI for the first time:
NOTION_API_KEYNOTION_PAGE_IDEXCHANGE_RATE_API_KEY
These can be set using the /settings command inside the CLI.
- Generate Proposal Quote: Turn client briefs into professional, client-ready project proposals (estimates).
- List Quotes: View saved templates and previously generated quotes.
- Persistent Storage: Quotes and templates are saved locally using a lightweight file-based storage (see
lib/storage.ts).
- GitHub Copilot CLI - for AI-assisted quote generation (requires GitHub Copilot subscription)
- GitHub Copilot SDK - for integrating AI capabilities into projects using the GitHub Copilot CLI
- Notion API (FREE with a Notion account) - for accessing your pricing information (I store mine in Notion as a document)
- ExchangeRate-API (FREE) - for currency conversion when generating quotes in different currencies
Requirements:
- Node.js 18+ and npm
Install dependencies:
npm installRun in development mode (no build required):
npm run devBuild for production:
npm run buildRun the CLI directly (after building):
node ./bin/quote.jsMake the command available globally for convenience:
npm link
quote # now you can run the `quote` command anywhere
โ ๏ธ Disclaimer: You will need to set your NOTION_API_KEY, NOTION_PAGE_ID and EXCHANGE_RATE_API_KEY using/settingswhen you first run the CLI.
Usage
- Generate a new quote (example):
/create 2x short-form videos for a social media marketing campaign
# You can converse with the agent to refine the quote like a chatbot
/close # to finish and save the quote
- List available templates:
/list- Open and edit a saved quote:
/list
(Select quote from list using arrow keys + Enter).
โโโ src/ # TypeScript source
โ โโโ index.ts # CLI commands and argument handling
โ โโโ lib/ # contains small libraries (settings, storage)
โ โโโ ui/ # terminal output helpers
โ โโโ agent/ # helper agents and tools
โโโ assets/ # screenshots and images
โโโ .gitignore # git ignore rules
โโโ README.md # project documentations
โโโ tsconfig.json # TypeScript configuration
โโโ package.json # npm package configuration
Contributions are welcome. Suggested workflow:
- Fork the repository.
- Create a feature branch:
git checkout -b feat/my-feature. - Make changes, add tests if appropriate.
- Run the build:
npm run build. - Open a pull request describing your changes.
Please keep changes focused and include tests or usage examples when adding features.
This project is licensed under the MIT License.
Built with โค๏ธ by Tom Shaw
