A local-first voice-to-action assistant that turns spoken meeting requests into executable function calls with low latency.
This project was built for the Cactus x Google DeepMind Hackathon.
It was part of a multi-city, one-day global hackathon organized by:
- Google DeepMind
- Cactus Compute
- AI Tinkerers
- AI Nexus
- London: #1
- Global: #5
- Total score:
99.5% - F1:
1.000 - Average latency:
16ms - On-device ratio:
100%
Meeting Autopilot has two main parts:
-
Routing engine (
main.py)- Parses requests into tool calls
- Prioritizes deterministic local parsing for speed
- Falls back to on-device FunctionGemma when needed
- Uses candidate validation/scoring to choose the best final plan
-
Web app (
meeting_autopilot_app.py)- Captures live audio from microphone
- Transcribes speech using
cactus_transcribe - Shows plan preview before execution
- Visualizes confidence-based routing stages
- Displays live metrics (latency, on-device ratio, F1-style correctness)
The hybrid flow in generate_hybrid(...) is:
- Preprocess and normalize user text
- Split multi-intent text into action chunks
- Deterministically extract tool calls/arguments
- Validate against tool schemas
- If uncertain/incomplete, run local FunctionGemma inference
- Score deterministic vs model vs merged candidates
- Return the best on-device action plan
This design gives strong correctness while keeping latency low and preserving privacy.
For a detailed walkthrough, see:
- Python
- Cactus Compute (
cactus_init,cactus_complete,cactus_reset,cactus_transcribe) - Google DeepMind FunctionGemma (on-device tool calling)
- Google Gemini (
google-genai) (optional cloud escalation path) - Flask (web server + API)
- Vanilla JS + Web Audio API (frontend + live audio capture)
main.py— hybrid routing algorithm and local/cloud orchestrationbenchmark.py— objective evaluation harnessmeeting_autopilot_app.py— Flask app API and routing endpointsmeeting_autopilot/templates/index.html— frontend pagemeeting_autopilot/static/app.js— UI logic + transcription pipelinemeeting_autopilot/static/styles.css— UI stylingHACKATHON_INSTRUCTIONS.md— original challenge instructions
git clone <your-repo-url>
cd meeting-autopilotIf you already have Cactus elsewhere, symlink it into this repo:
ln -s /Users/<you>/functiongemma-hackathon/cactus cactusIf you do not have Cactus yet, install from the official repo first.
pip install google-genai flaskFrom inside your Cactus repo:
cd cactus
source ./setup
cactus download google/functiongemma-270m-it --reconvert
cactus download openai/whisper-small
cd ..Only needed if you want Gemini fallback:
export GEMINI_API_KEY="your-key"python3 benchmark.pypython3 meeting_autopilot_app.pyOpen:
http://127.0.0.1:8090
