Turn virtual meetings into actionable content.
Smoothivity connects to your Google Calendar, records Zoom and Google Meet meetings via an AI notetaker bot, and uses Google Gemini to generate follow-up emails, social media posts, and CRM updates — automatically.
- Google Calendar sync — Shows upcoming events with Google Meet or Zoom links
- AI notetaker bot — Sends a Recall.ai bot to record and transcribe meetings
- Follow-up email generation — AI-drafted summary with action items from the transcript
- Automation templates — User-defined prompts that generate platform-specific content (LinkedIn, Facebook) from each meeting
- Social posting — Copy or post generated content directly to LinkedIn or a Facebook Page
- HubSpot integration — Search contacts, get AI-suggested property updates from the transcript, and batch-update selected fields
- Multiple Google accounts — Aggregate calendar events across connected accounts
| Layer | Technology |
|---|---|
| Backend | Python 3.12+, FastAPI, SQLAlchemy 2.x (async), Alembic |
| Frontend | Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS v4 |
| Database | PostgreSQL 16 |
| Background Jobs | Celery + Redis |
| Auth | OAuth 2.0 (Google, LinkedIn, Facebook, HubSpot), JWT sessions |
| AI | Google Gemini API |
| Transcription | Recall.ai |
- Python 3.12+
- Node.js 18+
- Docker & Docker Compose (for PostgreSQL and Redis)
make setup # Starts infra, copies .env files, installs deps, runs migrations
# Fill in your API keys in backend/.env
# Then in separate terminals:
make dev-backend # FastAPI on :8000
make dev-frontend # Next.js on :3000
make dev-worker # Celery worker + beatRun make help to see all available commands.
| Command | Description |
|---|---|
make setup |
Full first-time setup (infra + env + deps + migrate) |
make infra |
Start PostgreSQL + Redis containers |
make infra-stop |
Stop containers |
make infra-logs |
Tail container logs |
make dev-backend |
Start FastAPI dev server (port 8000) |
make dev-frontend |
Start Next.js dev server (port 3000) |
make dev-worker |
Start Celery worker with beat scheduler |
make migrate |
Run all pending migrations |
make migrate-new msg="description" |
Generate a new migration |
make lint |
Run all linters (ruff + ESLint) |
make format |
Auto-format backend code |
make build |
Production build frontend |
make clean |
Remove build artifacts and caches |
Step-by-step without Make
docker compose up -dThis starts PostgreSQL (port 5432) and Redis (port 6379).
cd backend
cp .env.example .env
# Fill in your API keys and OAuth credentials in .env
python -m venv .venv
source .venv/bin/activate
pip install -e .
# Run database migrations
alembic upgrade head
# Start the API server
uvicorn app.main:app --reloadThe API will be available at http://localhost:8000.
In a separate terminal:
cd backend
source .venv/bin/activate
celery -A app.core.celery_app worker -l info -BThe -B flag enables the beat scheduler for periodic tasks (bot polling, token refresh).
cd frontend
cp .env.example .env.local
npm install
npm run devThe app will be available at http://localhost:3000.
| Variable | Description |
|---|---|
DATABASE_URL |
PostgreSQL connection string (asyncpg) |
REDIS_URL |
Redis connection string |
SECRET_KEY |
Secret for signing JWT tokens |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET |
Google OAuth credentials |
RECALL_API_KEY / RECALL_REGION |
Recall.ai API key and region |
GEMINI_API_KEY |
Google Gemini API key |
LINKEDIN_CLIENT_ID / LINKEDIN_CLIENT_SECRET |
LinkedIn OAuth credentials |
FACEBOOK_APP_ID / FACEBOOK_APP_SECRET |
Facebook OAuth credentials |
HUBSPOT_CLIENT_ID / HUBSPOT_CLIENT_SECRET |
HubSpot OAuth credentials |
| Variable | Description |
|---|---|
NEXT_PUBLIC_API_URL |
Backend API URL (default: http://localhost:8000/api) |
NEXT_PUBLIC_APP_URL |
Frontend URL (default: http://localhost:3000) |
smoothivity/
├── backend/
│ ├── app/
│ │ ├── api/routes/ # FastAPI route handlers
│ │ ├── core/ # Config, database, security, Celery
│ │ ├── models/ # SQLAlchemy ORM models
│ │ ├── schemas/ # Pydantic request/response schemas
│ │ ├── services/ # External API integrations
│ │ ├── tasks/ # Celery background tasks
│ │ └── main.py # FastAPI app entrypoint
│ └── alembic/ # Database migrations
├── frontend/
│ └── src/
│ ├── app/ # Next.js App Router pages
│ ├── components/ # Reusable React components
│ └── lib/ # API client, auth context, types
└── docker-compose.yml # PostgreSQL + Redis
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/google |
Initiate Google OAuth |
| GET | /api/auth/google/callback |
Google OAuth callback |
| POST | /api/auth/logout |
Logout |
| GET | /api/auth/me |
Get current user |
| GET | /api/calendar/events |
List upcoming events (triggers sync) |
| POST | /api/calendar/events/{id}/record |
Toggle meeting recording |
| GET | /api/meetings |
List past meetings |
| GET | /api/meetings/{id} |
Meeting detail with transcript and results |
| GET/POST/PUT/DELETE | /api/automations |
Automation template CRUD |
| POST | /api/social/linkedin/post |
Post to LinkedIn |
| POST | /api/social/facebook/post |
Post to Facebook Page |
| GET | /api/hubspot/contacts/search |
Search HubSpot contacts |
| POST | /api/hubspot/contacts/{id}/suggestions |
AI-suggested contact updates |
| PATCH | /api/hubspot/contacts/{id} |
Batch update HubSpot contact |
| GET | /api/settings |
Get user settings |
| PATCH | /api/settings/bot-preference |
Update bot join offset |
| GET | /api/settings/facebook-pages |
List Facebook Pages |
| POST | /api/settings/facebook-pages/{id}/select |
Select Facebook Page |
OAuth connect/callback routes also available for LinkedIn, Facebook, and HubSpot at /api/auth/{provider} and /api/auth/{provider}/callback.
| Job | Schedule | Purpose |
|---|---|---|
| Bot status poller | Every 3 minutes | Polls Recall.ai for completed recordings, creates meeting records, enqueues AI generation |
| HubSpot token refresh | Every 5 minutes | Proactively refreshes tokens expiring within 10 minutes |
| Calendar sync | On dashboard load | Fetches events from all connected Google accounts |
| AI content generation | On meeting completion | Generates follow-up email and automation results via Gemini |
This project is licensed under the MIT License.
