Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tomkat-cr/tech-assessment-agent
Technical Assessment Agent that provides Review Reports, drawing upon insights from software engineer and developer whiteboard and behavioral interview notes.
https://github.com/tomkat-cr/tech-assessment-agent
beautifulsoup4 gemini-ai n8n postgres pytthon supabase
Last synced: 15 days ago
JSON representation
Technical Assessment Agent that provides Review Reports, drawing upon insights from software engineer and developer whiteboard and behavioral interview notes.
- Host: GitHub
- URL: https://github.com/tomkat-cr/tech-assessment-agent
- Owner: tomkat-cr
- License: mit
- Created: 2025-01-22T18:18:59.000Z (21 days ago)
- Default Branch: main
- Last Pushed: 2025-01-28T13:45:11.000Z (16 days ago)
- Last Synced: 2025-01-28T14:39:12.175Z (16 days ago)
- Topics: beautifulsoup4, gemini-ai, n8n, postgres, pytthon, supabase
- Language: Python
- Homepage:
- Size: 29.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Tech Assessment Agent
Author: [Carlos J. Ramirez](https://www.carlosjramirez.com)
Technical Assessment Agent for the oTTomator Live Agent Studio.
It consists of a [n8n](https://n8n.io/) workflow with a Technical Assessment Agent that completing a Review Report based on provided whiteboard and behavioral type interview notes, suitable for software engineers and developers.
The "Agent" node manages conversation history itself and is compatible with the [oTTomator Live Agent Studio](https://studio.ottomator.ai).
## Core Components
1. **Webhook Endpoint**
- Accepts POST requests with authentication
- Processes incoming queries with user and session information
- Provides secure communication via header authentication2. **Input Processing**
- Extracts key fields from incoming requests:
- query: The user's question or command
- user_id: Unique identifier for the user
- request_id: Request tracking ID
- session_id: Current session identifier3. **Database Integration**
- Uses Supabase for message storage
- Records both user messages and AI responses
- Maintains conversation history with metadata4. **Chat Model**
- Uses any [OpenRouter](https://openrouter.ai/models) model5. **Response Handling**
- Structured response format for consistency
- Includes success/failure status
- Returns formatted responses via webhook## Usage
To make the workflow to be executed in the [oTTomator Live Agent Studio](https://studio.ottomator.ai), follow these steps:
1. In the `n8n` UI, create a Workflow.
2. Import the Workflow JSON file: [Technical_Assessment_Agent.json](n8n/workflow/Technical_Assessment_Agent.json).
3. Set the required credentials and other configurations in the Workflow (more information in the [Auth Credentials and other configurations](#auth-credentials-and-other-configurations) section).
4. Sign in to the [oTTomator Studio](https://studio.ottomator.ai).
5. Go to [Agent 0](https://studio.ottomator.ai/agent/0).
6. Click on the `Gear` icon.
7. Set the required data in the `Agent Zero Configuration` section:
* **Supabase Project URL**: find it on `Supabase dashboard > Project > Project API`
* **Supabase Anon Key**: find it on `Supabase dashboard > Project > Project API`
* **Agent Endpoint**: find it on `n8n UI > Home > Technical Assessment Agent > Webhook Endpoint > Production URL`
* **Bearer Token**: find it on `n8n UI > Home > Technical Assessment Agent > Webhook Endpoint > Authorization > Bearer Token`8. Click on the **Save** button.
9. Test the workflow by following the section [Chat with Agent 0](#chat-with-agent-0) instructions.
## Auth Credentials and other configurations
1. To Configure the Webhook Endpoint **Authorization Bearer token**, the credential data should be:
* `Name` will be `Authorization`.
* `Value` will be `Bearer [token]`.
For more information, check [this](https://docs.n8n.io/integrations/builtin/credentials/httprequest) documentation.
You can select any value of your choice for the `[token]`.2. OpenRouter as Chat Model
* **Add a Credential** using the endpoint: `https://openrouter.ai/api/v1` and your API Key.
* **Specify a model** check for the model name in the [Models](https://openrouter.ai/models) page, click on the model id, then double click on the `OpenAI Chat Model` node, click on `expression` and paste the model id.
3. Chat Memory with Supabase
* **Add a Credential**
1. use the `Transaction Pooler` instructions shown in the Supabase connection documentation for the database to be used with this workflow.
2. Use the password specified when you created the Supabase account.* **Configure the Key**: it must be the expression
`{{ $json.session_id }}`4. Storing Messages in the Supabase Database
* Use this SQL to create the messages table:
```sql
-- Enable the pgcrypto extension for UUID generation
-- Note: If you're using Supabase, the pgcrypto extension
-- is already enabled by default.
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE TABLE messages (
id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
session_id TEXT NOT NULL,
message JSONB NOT NULL
);
CREATE INDEX idx_messages_session_id ON messages(session_id);
CREATE INDEX idx_messages_created_at ON messages(created_at);
```* Enable `realtime updates` for testing (with Agent 0) by running this SQL command:
```sql
alter publication supabase_realtime add table messages;
```Find more information about the database integration on the [oTtomator Studio documentation](https://studio.ottomator.ai/guide)
## Chat with Agent 0
Click on **New Conversation** in the **Agent 0** UI.
If you need a template for the interview notes, ask: **give me the notes template**
If you need to know the interview types, ask: **give me the interview goals**
If you want to know the default seniority levels, ask: **give me the seniority levels**
When you are ready with all the required information, provide the notes from the technical review.
If there are missing required data, the agent wil ask for it.
Once all the required data is provided, the agent will generate the report.
## Local Development environment
To run the workflow locally, follow these steps:
1. Go to the `n8n` directory: `cd n8n`
2. Create the `.env` file:
```bash
cp .env.example .env
vi .env
# set the variables according to your needs.
```3. Start the n8n local server: `make run`
4. Open the `n8n` UI in your browser: `http://127.0.0.1:5678`
5. The first time it will ask for a new administrator user and password.
6. Follow the rest of the instructions in the [Usage](#usage) to set credentials, other configurations, and test the workflow with the Agent 0 UI.
To access the PG Admin UI, go to: `http://127.0.0.1:8765`
To restart the local server, run: `make restart`
To stop the local server, run: `make stop`
To shutdown the local server, run: `make down`
To check the local server logs, run: `make logs`
To update the local server containers, run: `make update`
## License
This project is open-sourced software licensed under the [MIT license](LICENSE).
## Credits
This project is developed and maintained by Carlos Ramirez. For more information or to contribute to the project, visit [Tech Assessment Agent Node on GitHub](https://github.com/tomkat-cr/tech-assessment-agent).
Happy Coding!