Drafting / Auto-labelling
Every inbound email gets read once and turned into structure: sender type, status, labels, and a reply draft waiting in the composer. Micro's labels sync back into Gmail, so the classification is visible wherever you read mail. The hard part isn't the model — it's that Needs Response is a Gmail label anyone can toggle, so work is armed on every observation and collapsed by a debounced queue rather than run at ingest.
PostgresLLM APIsGmail API
Meetings
A bot joins from your calendar, streams transcript in under a second to anyone watching live, and files everything afterward. The transcript is one shared document; summaries are one per person. Same words, your copy — so editing or regenerating doesn't rewrite someone else's. Prep lands before you join: who's attending, what you last discussed. The interesting constraint is Recall's — sub-second transcription requires committing to a language, so live and multilingual are mutually exclusive.
LLM APIsPostgres
Follow-up
The system reads inbound email and LinkedIn and writes down what you owe people — as a real task, held in a suggested state. Muted, dashed, with accept and dismiss as the only controls. Accept promotes it; dismiss deletes it. The gate matters because some suggestions are automations with schedules attached, so they're created closed — nothing fires until you say yes. Every task carries a verbatim quote from the source, or it's dropped.
LLM APIsGmail APILinkedIn
Agent Runtime
I worked on persistent chat threads, reconnectable agent runs, and durable workflow steps with retries and cancellation. A browser tab can close while the work continues; later messages and results return to the same thread. Stable run identities let us detect duplicate deliveries and resume the right work.
MastraInngestTypeScript
Prism
Our query layer over the object graph. Objects are almost empty; everything real lives in typed property tables, edges included, with values scoped per app, team, and user. Every node a query touches has to answer two independent questions: which value wins for you, and whether you can see it at all. Answer the second one in two places and you don't have a permissions system, you have two that agree for now.
PostgresGraphQLTypeScript